TES V: Skyrim 1.3

7th Dec に Steam 経由で 1.3 への update が行われた。Update 内容は:

  • General stability improvements
  • Optimize performance for Core 2 Duo CPUs (PC)
  • Fixed Radiant Story incorrectly filling certain roles
  • Fixed magic resistances not calculating properly
  • Fixed issue with placing books on bookshelves inside player purchased homes
  • Fixed dragon animation issues with saving and loading
  • Fixed Y-look input to scale correctly with framerate

となっていて、確かに stability と、CPU load が特定の core に偏っていたのが若干改善された感じ。ただしもともと threads は 2 threads 位しか無いようなので別段 8 core (with HT) すべて使ってくれる… と言うわけではない。

Stability は確かに向上したけれど、どうも 1.3 に update してから微妙な進行上の問題が起きるようになったので process を debug しながら進めてみると random に background で動作するはずの script が動かない場合がある感じだ。

具体的にいうと、例えば最初に High Hrothgar を訪れると PC が cell に入るのに合わせて Master Angier が PC の方に歩いてくるのと同時に他の 3 名の greybeards がそれぞれ所定の位置に移動してくるんだけれど、ここでそれが正常に行われず quest の進行が不可能になる、という事態が起きてしまった。

後は 1.3 で最初から start すると Whiterun で最初の Dragon 退治が終わった後に生成されて登場するはずの Lydia が出てこない… という問題にも遭遇してしまった。

これらは、必ず再現できるわけではなくて、何かの timing に依存して起きてしまう感じだ。ただし、一度起きてしまうと recovery の方法が無いので quest line がそこから先に進まなくなるなどの問題に該当の save では悩まされることになるだろう。

そうすると結局のところ 1.3 では 1.2 でおかしくなった問題を修正しているのに加えてより深刻な問題が起きてしまうので、現状では 1.3 は使わない方が良いだろう。

そう考えると、今日の段階では 1.1 の方がまだまし、という結論になってしまう。

ここで binary を 1.1 に戻すと bed を選択して E で休息できないとか、いろいろ interface 上の問題が出てしまって、ちょっと悩んだけれど backup を確認すると interface.bsa/update.esm も 1.2, 1.3 で更新されているので、これも original に戻さないと問題が起きるようだ。

interface.bsa に関しては正しい組み合わせで無いと、まともに操作すること自体が出来なくなるので直ぐに気づくだろう。

Multibyte support?

先日 twitter の timeline を眺めていたら Skyrim が multibyte support をしている、とかいう発言が流れてきて首を傾げてしまった。

聞いてみると、なんでも表示が出来るのだとか。表示が出来るだけで multibyte support というのは computer science 系の教育を受けたか、あるいは software engineer として現に働いている professional な人から見ると ? というところ。

とりあえず、日本語で play することは無いので気にしないでおいたけれど、あまりに 1.3 の挙動がおかしいのでその辺を調べてみるついでに、内部での encoding handling がどうなっているか推測してみた。

基本的にその辺は 1.1 – 1.3 を通じて全く換わっていなくて、process そのものは OEM CP で動作する 32 bit ANSI application だ。従って OEM CP が日本語 (CP 932) である環境で動作させれば、それなりに日本語の処理程度には問題は無いだろう。

MultiByteToWideChar が 1.3 では call されているから、multibyte support という話もあるようだけれど、これ自体も 1.1 の時点で import されている。

Registry の read/write などは ANSI 用の API call しか行われていなかったりするけれど、何故か file I/O は A/W 両方 import されていたり、と中々微妙なところだ。ただし、MBCS の lead byte か tale byte などか等の判定は行われている形跡はどこにも見つけられないので、現状としては「表示できている」だけであって、multibyte support とは到底いえない状態と言うところだろうか。多分 Bethesda 自身も MBCS characters が表示出来るか出来ないか、という部分には全く関心を払っていないだろう。

もちろん、表示だけ出来れば file path 関連や MBCS tale byte に特定の code を持つ文字が正しく表示できない、という問題さえきちんと認識して対処できればどうにかなるだろう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中