Mount&Blade

http://www.taleworlds.com/

チャンバラに持ち込む前に槍や斧や石を投げたり、騎兵で集団からはぐれた歩兵を蹂躙したり、罪のない一村落に徴発を迫ったり焼き払ったり、戦果として人質をとって奴隷として売り払ったり、敗走する敵を夜通し追いかけ続けたり、レーダーじゃなくて鬨の声のあがってる方角から戦闘の起きている位置を知って駆けつけたり、馬に乗ってグズグズしてるところを歩兵に囲まれて引き摺り下ろされてリンチされたり、重税にあえぐ村民の蜂起を武力で鎮圧したり、人の借金に首をつっこんだり、
そういうガリア戦記のような鬼畜な体験ができるよいゲームだ。

prefwindowの伸縮

内のエレメントの内容が折り返されて複数行になったときトップレベルウィンドウが追従してスペースを拡張せずに下の内容が切れてしまうという現象に悩まされてる。解決策を探索中ここ https://bugzilla.mozilla.org/show_bug.cgi?id=283697 でのfixとして3.0a9で突っ込まれたwindow.sizeToContent()が先のこけてる個所であることを偶然見つけたりして。それはいいとして、内に配置されるコンポーネントの文字列が折り返されてコンポーネントの高さが変わってもトップレベルウィンドウが追随して伸張しないというのは未だ放置されている不具合のようである。( https://bugzilla.mozilla.org/show_bug.cgi?id=394793 )

描画時の動的なレイアウトに頼らず高さを固定で決め打ちしておくにしても、ローカライズするとなれば言語によっては相当に長さが変わることが考えられる。そのため開発中の見た目より倍近い十分な高さを空けておくなどという情けない対策をとらざるを得ない。なんとかならないか試行錯誤した末、以下のようなhackに行き着いた。

<prefpane onpaneload="onpaneload();">
<vbox id="descbox">
<description id="desc" width="300">改行されるくらい長い文字列</description>
</vbox>
</prefpane>

<script>
function onpaneload()
{
  setTimeout(function(){
    var h = document.getElementById("desc").boxObject.height;
    document.getElementById("descbox").setAttribute("height",h);
    window.sizeToContent();
  },1);
}
</script>

なんらかの原因によってsizeToContentが複数行になりうるコンポーネントの高さを一律一行であるとみなして全体の高さを計算してしまっているようなので、文字列のサイズとは無縁なboxで囲んであげた。DOMInspectorで見たところboxObject.heightはコンポーネントが改行した後の高さを保持してくれているようなので、これを後からboxへ伝えてやる。然る後、sizeToContentし直してあげているという仕組みである。

これでbabelzillaで訳を短くするよう努めてくれなんて注意書きをしなくて済むというものだ。

日記

  • extensionがrejectされたとのメール。プロパティウィンドウをあけた時エラーがでるので、とのこと。
  • Minefieldでテストしてるとのことなのでインストールして試してみるがエラーがでない。
  • こちらではエラーが確認できないので他のプラットフォームでもテストした結果を教えてくれと要求する。
  • が、向こうは深夜だったので半日放置されてやきもき。
  • #addonsで冤罪でrejectされたらどうすればいいの?とかと厨発言してしまっているとメールが届く。
  • 異なるOS上で共通してバージョン3.0a9からエラーが出るようになっていることが報告されるが肝心のreleasenoteは404
  • そんな折、君々真新しいプロファイルでテストしてくれたまえよ?ちなみに俺はconsole^2を入れてるんだけどね、とメール。
  • console^2を入れたら件のエラーが表示された。
  • prefwindow関係のライブラリがprefwindow初期化時に呼んでるsizeToContent()が失敗している。
  • console^2がありもしないエラーをでっち上げてるならレビューに使うなよと言わなくてはならないところだが、
  • そうではなかった。これを入れなくてもsizeToContent()が失敗していることを確認した。
  • であればこれは特定のXULの記述で生じる問題だ!直されなくてはならない!bugzillaに報告だ!
  • XULの解釈中に実行されるjavascriptでprefpaneの中の要素をgetElementByIdをするとその後行われるsizeToContentが失敗する。
  • これは不具合にあたるのか?
  • 他のバグフィックス具合を見てみると、別にどんな記述がされていてもエラーを吐かない事が至上というわけでもなく
  • 悪質なスクリプト、無茶なタイミングでの呼び出しには、エラーが出るのは問題ない。
  • むしろしょーもない書き方をしてるユーザー側にあわせる形でブラウザの実装が条件分岐を増やすことはない。
  • という方針のようである。これは同意できる。
  • 例えばXULの解釈中にwindow.sizeToContent();するとエラーが起きるが、そのままにされている。
  • だが今回のこれも悪質なユーザー側のスクリプトにあたるのかは正直いってわからない。
  • どうもgetElementByIdが成功した時点でXULの解釈そのものが切り上げられている様子で、
  • そのために後のsizeToContentが失敗しているようにも見える。
  • bugzillaに上げないとちょっとわからないが、そういう利用の仕方でいいんだろうか、IRCの方が適当だろうか。
  • とりあえず新しいバージョンがレビューに今度こそパスすればどうでもいいか。

新訳

<新訳>ガリア戦記

<新訳>ガリア戦記

今このタイミングでわざわざ新訳が出版されてるからガリア戦記はあなどれない。早速借りてきてみた。一から書き起こされた解説の量がわりとあって、簡潔で詳しいのはいいんだけど、なぜか振り仮名ついていてこれが邪魔で、さらにいちいち漢字使えばいいところがひらがなになってて読みにくい。こんな残酷な遠征記録を小学生に読ませてどうするんだと。手元においとくなら岩波のがいいみたいだ。やはり機能美。

もしかして振り仮名とひらがな多用は他の言語への翻訳元となることを想定してる・・・とか?いや知りませんけどね。

statistics

https://addons.mozilla.org/en-US/firefox/statistics/addon/5846
こりゃおもしろい。Tシャツも結構かもしれんが、こういうのも一つのcontributorに対する報酬だよなあ。
今何人使ってるかってのは定期的にブラウザがAMOのサーバに情報送ったりしてるんだろうか。

読んでるもの

ガリア戦記 (岩波文庫 青407-1)

ガリア戦記 (岩波文庫 青407-1)

ホントに剣とか投石しか武器がなくて城塞都市に立てこもったり、幸運のこととかまじめに考えて、同じ人間だけども部族が違うだけでモンスター並の恐れ方をしてた頃のことを読まないことにはファンタジーのことも考えられんし真似もできないんじゃないの?ということで難解でもなんとか理解してやるぜと意気込んで手にとってみたんだが。

こんな読み易くておもしろい本だったとは。描写は簡潔だし、的確だし。キャラをたたせるための演出とかはないからちょっと固有名詞に気をつける必要があるのと、素気なく書かれてる距離とか高さの数値をちゃんと把握することだけできれば、二千年の時を隔てて大遠征を共有できる。

以下メモ。

  • 意外に装備とか人数よりも陣をどこに築いて荷物をそこへおくかが大事みたい。遠征では。
  • そういう意味でも行軍途中での襲撃はかなりきついみたい。
  • 荷物をかかえてうだうだやってるとこを攻められて荷物を置いてる間に戦闘終了とかelonaやってるとあるけど、敵がそういう状態のときはないからフェアな仕様ではないな。
  • 陣がばらばらになって各個に敗走をはじめた敵は伏兵の可能性が考えられなければどこまでも追いかけて殲滅するのが基本ね。ドラクエとかとはえらいちがい(笑)そういう意味ではガンパレはリアルだったのかね。
  • で、そういう敗残兵処理のかわりに対部族の場合は人質をとって担保とするという選択肢も。それでも襲撃されちゃったりすることもあったりして。
  • 背水の陣とかいうが補給が川を渡ってくるなら普通に有利なんだな。
  • やっぱり士気が及ぼす影響はかなり大きい。braveとかいう数値を扱ったゲームもあったにはあったがこれは…どうなんでしょ、すくなくとも数値は適当でないとは思う。
  • ものすごい大きなスケールで正面で部隊を対峙させつつ、相手の裏の補給線を断つ位置を取り合うみたいなのって、そういうのを実現してるゲームって聞いたことがないな。
  • 近接攻撃役(笑)な人もとりあえず石とか槍投げまくり、相手の投げたのも投げ返す。

皆殺しとかやってるのに観点がゲーム的だって?カエサルがそういう書き方してるからだよ。俺のせいじゃないよ。