2012/08/15

スカイリム室内装飾ガイド【考察編】

前回のスカイリム室内装飾ガイド【実験編】で、スカイリムのセル内でアイテムを捨てると一部のアイテムは見た目上の位置と座標が合わない状態になる、ということを実際に見ていただいたわけなんですが……今回はその現象がなぜ起きるのか、ということについて考察してみたいと思います。
…と、その前にですね、前回の実験の続きがあるのです。
記事をまとめるためにいろいろ考えていたら、いくつか疑問に思うことが出てきまして……その疑問を確かめるために再び実験をしたら、また新たな発見があったんですね。
先にその実験結果をご報告したいと思います。


前回、ジョルバスクル居住区の「デイドラの心臓」は、どうやら初めから見た目上の位置と座標が一致しているようだ、ということがわかったんですが……その後、試しに手持ちのインベントリの中から、「デイドラの心臓」をその場に捨ててみたんです。

ヴィルカスさんの足元にあるのが元からあった「デイドラの心臓」で、
コドラクさんの足元にあるのが、おばちゃんが捨てた「デイドラの心臓」。

そしたらですね……おばちゃんの予想では、捨てた方の心臓は、見た目上の位置と座標が合ってない状態だろう、と思ったんですね。
廃屋でさんざんテストした時には、セルの外でロードを挟まない限り、「デイドラの心臓」はどんなに動かしても、あるいは「setpos」で強制座標指定なんかしちゃったりしても、ずっと位置と座標が合っていない状態をキープしていたからです。

ところがこの「ジョルバスクル居住区」では……何と捨てた方の「デイドラの心臓」もしっかり見た目上の位置と座標が連動する状態になっていたのです。


どちらの「デイドラの心臓」も「z:7.40」……共に床付近の正確な座標を示しています。

これはいったいどういうことでしょう……
おばちゃんは、アイテムを捨てた場合に位置と座標が連動するか・しないか、というのは、アイテムによって予め決まっているのかと思っていました。
つまり、「デイドラの心臓」は最初から「位置と座標が連動しないタイプのアイテム」という決まりがあるのかと思っていたんです。
このアイテムはどこで捨てても同じく「連動しない」状態になるんだろう、と。
少なくともブリーズホームやその辺の街中でポイっと捨てた時は、廃屋の時と同じで、見た目上の位置と座標が一致していない状態だったからです。
しかし、ここ「ジョルバスクル居住区」では、「デイドラの心臓」は初めから連動する状態にになっている……
その時、ふと、思い出しました。
最初にね、このアイテムの不思議な挙動に出くわした時に、いったいどのアイテムが位置と座標が初めから連動する奴で、どれが連動しないのか、手持ちのアイテムの中からいくつか選んでざっと床にばらまいてみたんですよね。
そうしたらまず、武器類は全部、位置と座標が連動するようなものばかりだったんですが、防具類は鎧だろうが服だろうが装飾品だろうが、どれも連動しませんでした。
まあ、でもこれはね……わからないでもないなあ、と思ったんですよね。
武装解除のシャウトで、武器はよく落っことしますからね。
もし落とした武器の位置と座標が連動せずに、ロードを挟むと全く別の場所に出現するような状態だったら、後で拾いに行こうと思った時、探すのが大変です。
だから武器類はデフォルトで最初から座標と位置が連動するようになっているのかなあ、と。まあ、全部の武器を調べたわけじゃないんで、わからないですけどね……
一方、防具は、着ている鎧や服を戦闘中に吹き飛ばされてしまったり、勝手に脱いで落としてしまったり、なんてことはありません。
いや、Modだったらあるかもしれないですけど。
防具の場合は、せいぜいプレイヤーが持ちきれなくなって荷物を捨てた時くらいでしょう?
それだったら、位置と座標が連動してなくても問題はなかろう、という判断なんだろうと……まあ、あくまで想像ですけどね。本当のところはどうかわかりません。

しかし、問題は、食べ物や錬金素材やその他の雑貨類など……です。
これって、本当にまちまちで、法則性がさっぱりわからなかったんです。
キャベツやジャガイモは連動するのに、トマトやニンジンは連動しない。
ワインやチーズ、牛の肉は連動するのに、マンモスの鼻やホーカーの肉は連動しない。

いったいどういう決まりで、「座標が連動する・しない」に分かれるんだろう……と、ずーっと不思議に思っていたんですが……この「ジョルバスクル居住区」で「デイドラの心臓」が座標連動する、という結果を見て、「わかったッ!」と思わず声を上げてしまいました。

おばちゃんが最初に、アイテムをばらまいて座標が連動しているかどうか調べたのは……全部家具を揃えた初期状態での「ブリーズホーム」、だったんです。
「ブリーズホーム」にキャベツやジャガイモは最初から置いてありますが、ニンジンやトマトはないですよね?(樽や袋の中には入ってるかもしれませんが)
お肉類も、牛の肉や鹿の肉は置いてありますが、ホーカーの肉やマンモスの鼻はありません。もちろん「デイドラの心臓」もありません。
これは……予めセル内に置いてあるアイテムと同じアイテムは、最初から座標連動するようになっているのではないでしょうか。
もしかして……「ジョルバスクル居住区」だけではなく「廃屋」でも、一度ロードを挟んで位置と座標が連動するようになった「デイドラの心臓」があれば、次に「デイドラの心臓」をばら撒いた時は、位置と座標が連動する状態になっているのでは??


そんなわけで、試してみました。

最近おばちゃんは「デイドラの心臓」が妙に愛しく思えてきました……

やはり、最初からセル内に配置されたものではない、プレイヤーが持ってきて捨てたアイテムでも、一度ロードを挟んで位置座標が連動するような状態になった一個(長いので、長男と呼びましょう)が存在すれば、その後、そのアイテムを捨ててもずっと位置座標が連動する状態になるようです。
長男がいれば、後は弟たちが何匹バラまかれようと、全員、位置と座標が一致している状態をキープしています。

宝箱の上にいるのが「デイドラの心臓」の長男です。


が、しかし……この「デイドラの心臓」の長男、なんですが。
こいつを拾って再びインベントリに入れてしまうと、なんと、その次から捨てた「デイドラの心臓」はまた、位置と座標が合っていない状態になってしまうんです。
長男がいる時に、バラまかれた弟たちについては大丈夫です。
ちゃんと位置座標連動状態をキープしています。
しかし長男が消えてから、捨てられた弟の「デイドラの心臓」は、再び位置と座標が合っていない状態になってしまうんです。不思議ですね。

そして……長男が消えた後、再びセルの外に出てロードを挟んでみたらどうなるか。
一番最初の長男はもういないわけですが……ロードを挟めば、「デイドラの心臓」の位置と座標は、初めから連動する状態に戻っているでしょうか?
結果は……まあ、当然といえば当然なんですが、ロード後は、ちゃんと座標が連動する状態になっていました。
ちなみにおばちゃんの予想では、セル外でのロードを挟むと、残された弟たちの誰かが『長男』になってるんじゃないかと思うんですよね。
そこで、調べてみました。
上記のスクリーンショットみたいに沢山バラまいた状態だとさすがに探すのが大変なので5人兄弟にしてやり直してみましたよ。
そうしたら、今度は三番目に捨てた「デイドラの心臓」が長男になっていました。
(そいつを拾ってしまうと、また「デイドラの心臓」の座標が連動しなくなります)
どうやら、複数個のアイテムがセル内にある場合は、どれか一つが長男になって、そのセル内のアイテムの「座標連動する・しない」のフラグを左右するようです。


さて、そろそろ考察に入りましょうかねえ……
いったいこの摩訶不思議な現象は、どういう仕組みで起きるのか。
おばちゃんなりに色々考えてみたんですが、スカイリムのセル情報っていうのは、いろんなデータがレイヤー状に重なり合っているんじゃないかな、と思うんです。


すみません; 無駄にデカイ画像で……
えーと、どういう風に説明したらいいかな。
まず、プレイヤーが新しい場所に行って、初めてそのセルを訪れたとしますね。
その場合、そのセル内にどんなアイテムが落ちてて、どんな家具や装飾があるか、みたいな情報は、当たり前なんですが、Skyrim.esmとかUpdate.esmとか、その他Modを入れてるならespとか、そういったゲームのベースとなってるデータ(ゲームデータ)から読み込まれてセル情報が構築されます。
そのセル情報が入る、キャッシュ上のデータベースのような場所が、上の図の赤いレイヤーの本セルデータです。
(あ、名前は便宜上、勝手におばちゃんが付けたものなので、ご了承くださいね。)
この本セルデータのセル情報は、ゲーム内でプレイヤーが行動をするたびにその都度、更新されていきます。
小銭入れを取った、とか、置いてあった釜を蹴っ飛ばして転がした、とか、プレイヤーの行動によって変化したアイテム情報が逐一、書き込まれていくわけです。
そして「セーブ」という行動を行うと、この本セルデータの情報が、セーブデータに書き込まれます。
また、セーブデータを「ロード」すると、今度は逆にセーブデータの情報が本セルデータに書き込まれ、さらにプレイヤーの視界にも反映されます。
一方、単なる「ロード」……街の外に出る時や、ファストトラベルなんかで、自動的にロード画面が挟まれるような場合です……は、本セルデータ上の情報を読み取って、プレイヤーの視界に反映する、というような仕組みです。
かなり端折ってますが、ざっくり説明するとそんな感じです。


さて、それではプレイヤーがインベントリからアイテムを捨てた場合の状況について、考えてみましょう。
プレイヤーがアイテムを捨てると、もちろん、そのアイテムの情報はセル内に存在するオブジェクトとして、即座に本セルデータに情報が書き込まれます。
しかし元々、そのセルに同じ種類のアイテムが無い場合、一部のアイテム(武器とか)を除いては、本セルデータの方に、そのアイテムの情報を収納するスペースが確保できないんじゃないかと思うのです。
そこでどうするかというと、本セルデータの上のレイヤー層に一時的なセルデータが生成されるんじゃないか、と思います。

一時的なセルデータに情報の受け皿が用意されたアイテムは、リアルタイムの位置情報を、そちらに書き込んでいきます。
それでですね……おそらく「getpos」や「setpos」など、コンソールのコマンドは、この一時的なセルデータの方ではなく、本セルデータの方にアクセスして情報を取得してるんだと思うんですよね。
だから、廃屋に捨てた「デイドラの心臓」をいくら移動しても、「getpos」で得られる座標はセル内に発生した時のままで、見た目上の位置と座標が連動しない、という状況なんじゃないかと思うんです。
「デイドラの心臓」の実際の位置情報は、一時的なセルデータの方に書き込まれているため、コンソールの「getpos」では正確な座標を取得できなかったんですね。


「ロード」すると、位置が変わってしまうのも同じ理由です。
「ロード」が参照するセル情報は、本セルデータ(あるいはセーブデータ)なので、そちらの位置座標でアイテムが生成されるんですね。
前回の実験で、宝箱の上から脱走していた「デイドラの心臓」は、ロード後に本セルデータの座標……つまりプレイヤーのインベントリから捨てられた直後の座標で再生成され、その後、床の上に落ちて転がったのでしょう。
ちなみにセル外で「ロード」を挟むと、位置座標が連動するようになるのは、たぶんロード時にようやく、本セルデータにそのアイテムのスペースが確保されるから、なんじゃないかと思います。
本セルデータにスペースさえ用意されていれば、今度はそちらにリアルタイムの情報を書き込んでゆくようになり、その結果「getpos」で正確な座標を取得できるというわけです。
ただ、プレイヤーがセル内にいる場合のロードでは……どうしてなのかはわかりませんが本セルデータのスペースが拡張できないんじゃないでしょうか。
それでまた、一時的なセルデータの方に位置情報を書き込むことになり、「getpos」の座標と連動しなくなる、という仕組みではないのかなあ、と思います。


また、長男のアイテムを拾ってしまうと、その後に捨てたアイテムが再び位置座標が連動しなくなる件について、ですが。
これはですね、たぶん本セルデータにデータを書き込む際に、『長男』がテンプレートのような役割を果たしているからじゃないかと思うんですよね。
このテンプレートを消されてしまうと、本セルデータにどんな風に情報を書き込めばいいのかわからなくなって、それで再び一時的なセルデータに情報が書き込まれるようになってしまうんじゃないかと思うんです。
つまり、一時的なセルデータというのは、困ったときの神頼みというか、とりあえずよくわかんないものは入れとけ的な扱いで作られてるんじゃないかと思います。
たぶん、そういった突発的な情報やイレギュラーな情報を、逐一本セルデータの方に書き込んでいると、快適なプレイがしにくくなるんじゃないでしょうか。
まあ、この考察自体、おばちゃんの想像でしかないので、真相はわからないのですけれど……こんな風に考えてみたら、つじつまが合うんじゃないかなあって、勝手に思ってるだけです。

そんなわけで、「それはおかしいんじゃない?」とか「これはこうなんじゃない?」とか、思うところがありましたら、ぜひツッコミをお待ちしております。


【関連記事】
スカイリム室内装飾ガイド【実験編】
ディスプレイマーカー【自作Mod配布】
スカイリム室内装飾ガイドの続きの話


2012/08/14

スカイリム室内装飾ガイド【実験編】

皆さんはスカイリムの世界で、どんなお家に住んでいますか?
ブリーズホーム? 隠れ家的な洞窟? Modの超豪邸?
あるいはCKで自作したオリジナルホーム?

…まあ、楽しみ方は人それぞれなんですが、おばちゃんが思うに、マイホームの醍醐味って、自分のこだわりのアイテムや拾ってきた物などを並べて、好きなように飾りつけすることだと思うんです。
最初から綺麗にディスプレイされているModのお家や、自分でCKを使って飾りつけをした家も、それはそれで素敵なんですけども、それってもう、ゲーム内では弄る余地が無い感じがして、いまいちつまらないんですよね。
やはり、プレイしている中でゲットしたものや、思い出のあるアイテムなどを、その都度、自分ん家に持ち帰って並べたいです。
そうやって思い入れのある記念品や装飾品が増えてゆくと、ようやく『我が家』だなあ、という気がします。
床にお肉を置いたお皿を置いてワンコの餌をやったり、花カゴの中にお弁当を詰めておいたり……ロールプレイするのにも、やはりその都度、自分でアイテムを並べないと気分が出ませんしね。
しかし、そういったささやかな飾り付けを行うのにも、とてつもない忍耐力を要求されるのがスカイリムの世界です。
テーブルの上にただカップを置きたいだけなのに……せっかく並べた食事をひっくり返してしまったり、おたまが吹っ飛んでいってしまったり。
また、綺麗に並べて「これで完璧!」とか思っても、ちょっと外出して戻ってくるとめちゃめちゃになっていたり。
もうね……マゾっ気がないとやってられないです。
アイテムの飾り付けこそ、「VERY EASY」モードが欲しかった……。


さて、この超ベリーハードな室内装飾クエストをどうこなすか……なんですが。
これはちょっとチートではあるのですが、PC版スカイリムの特権である「コンソール」を使うと、かなりラクになります。
↓コンソール画面

「Altキー」を押しながら「半角/全角」を押すと、画面が一時停止状態になり、
画面下部に黒い部分ができてコマンドを入力できるようになります。
(何度かキーを押さないとコンソール画面にならない場合もあります)

使用するコマンドは主に「getpos」「getangle」「setpos」「setangle」の4つです。
「getpos」はアイテムの位置(座標)を取得するのに使います。
「getangle」はアイテムの傾き(角度)を取得するのに使います。
また、「setpos」「setangle」はそれぞれ、指定した座標や角度に変更したい時に使います。

つまり、これらのコマンドを使って、飾りつけを行いたい場所の座標を調べ、並べたいアイテムの位置や傾きをコンソールで直接、数値で指定してしまうのです。

例えば、掴んだ途端、なぜか裏返ってしまうパンの半切れとか……

「setangle x 0」「setangle y 0」「setangle z 90」と打てば……
華麗にひるがえって配膳完了~。
※実際には「setpos」で座標を指定する必要があります。

フフフ……すごく簡単そうでしょう?
実はこのコンソールで数値指定する方法は、それ自体はすごく簡単なのですが……その前段階として、セルの法則を理解していないと、わけのわからんことになったりします。
なにしろスカイリムの世界では、目の前にある筈のアイテムが、実はその場には無いという禅問答みたいな現象があったりしまして……
「getpos」で座標を取得しても、果たしてこの座標は一体どこの座標なのか、といったところから悩むはめになったりするんですよね。
まあ、とりあえず、スカイリムのセルの法則を調べるために、ちょっとした実験をしてみましょう。


ちなみに以下の実験は、英語版1.7バージョン(日本語化、DLC無)のマルカルスの『廃屋』で行っております。(番人ティラヌスさんは排除済み)
また、実験を始める前に、「廃屋」に入る前、扉のすぐ手前のマルカルス街中で、念のため一度セーブして、すぐにそのセーブデータをロードしています。
その状態で改めて、「廃屋」に入室。
また、オートセーブはすべて切った状態にしています。
もしかしたら、ゲームのバージョンや設定などの環境によって、結果に違いが出るかもしれません。予めご了承ください。


さて、それでは実験を始めましょう。
まずは基準となる廃屋の床の高さを調べておきます。
廃屋に入ってすぐ目の前にある宝箱の近くの、平らな床の上に立った状態で、
「player.getpos z」とコンソールコマンドを入力します。


すると、「GetPos: Z >> -16.00」という答えが返ってきました。
(Z座標は高さについての位置を示している座標です)
これで今、プレイヤーが立っている辺りの床の高さは「z:-16」ということがわかりました。

次に、アイテムのインベントリ画面を開いて、手持ちの「鋼鉄のインゴット」と「デイドラの心臓」を目の前に捨てて落とします。

↑これはアイテムを捨てた瞬間の画像ですが……もちろんこの後、インベントリ画面を閉じるとアイテムは落下して床の上に転がります。
床の上に落ちた「鋼鉄のインゴット」と「デイドラの心臓」を、それぞれクリックして、同じように「getpos z」で現在の高さを調べてみます。
床にちゃんと接するように落ちていれば、床の高さの「-16」近辺の数値が出る筈です。


「getpos z」で調べてみると、「鋼鉄のインゴット」は「GetPos: Z >> -12.15」
「デイドラの心臓」は「GetPos: Z >> 76.66」 と出ました。

あれ?おかしいですね……「鋼鉄のインゴット」の「z:-12.15」はまだ許容範囲ですが、「デイドラの心臓」の「z:76.66」は明らかに数値が高すぎます。
ちなみに「鋼鉄のインゴット」のz座標と床のz座標の誤差は、インゴットの座標が床に設置している面ではなく、塊の中心部の基点の座標を取るようになっているために起こるズレかと思われます。

それでは今度は、この二つのアイテムをつかんで移動してみましょう。
近くにある宝箱の上に乗っけて、再びZ座標を取得してみます。

「鋼鉄のインゴット」……「GetPos: Z >> 30.06」
「デイドラの心臓」……「GetPos: Z >> 76.66」

また「デイドラの心臓」の高さがおかしいですね。
「z:76.66」って……さっきとまったく数値が変わっていません。
一方、「鋼鉄のインゴット」の高さの「z:30.06」は、宝箱の上に乗った時の高さと考えて良さそうです。わかりやすく図にしてみると、こんな感じでしょうか↓


勘の良い方なら、この図を見ただけで、ピンと来たかもしれません。
実はこの、まったく変動のない「デイドラの心臓」のz座標の数値は、プレイヤーがアイテムを捨てた瞬間の高さ……「デイドラの心臓」がこの廃屋のセルに出現した瞬間のz座標なのです。
だからスニーク状態のしゃがんだ体勢で捨てたり、捨てる時にカーソルを下の方に向けていたりする場合は、もっと低い座標になります。
しかしどうして「鋼鉄のインゴット」は、見た目通りの位置の座標に変わったのに、「デイドラの心臓」はまったく座標が動かないのでしょうか。
まあ、疑問はさておき……とりあえず実験を続けましょう。


さて今度は、宝箱の上に「鋼鉄のインゴット」と「デイドラの心臓」を乗せた状態のまま、廃屋のセルの外に出て、もう一度入ってみます。
ちなみにこの出入りの時、ロード画面は挟みません。
セルの移動だけを行うようにします。
(おばちゃんの環境では、廃屋に入室する前に「セーブ&ロード」をしておけば、中でアイテムを少々弄って外に出ても、ロード画面は発生しません)
すると……わざわざスクリーンショットを載せる程でもないので画像は割愛しますが、「鋼鉄のインゴット」も「デイドラの心臓」も先ほどと同じ、宝箱の上の位置にちゃんといました。
試しに「デイドラの心臓」のZ座標を調べてみましたが、先程と同じ「z:76.66」のままです。
セルの移動だけでは、アイテムの座標・位置に変化は起こらないようです。
(※正確に言うと、セル移動のタイミングで物理演算は働くので、アイテム同士が重なっていたり、空中に浮いたままだったりすると、以前とは別の位置に移動したりします)


次は廃屋のセルの外に出てから「ロード画面」を挟んでみることにします。
ロード画面を挟む方法としては、街の外まで出てみるとか、一度セーブしてロードするとか……です。
さてそうやってセルの外で「ロード」という行為を挟んでから、廃屋に戻ってみると……


あっ、「デイドラの心臓」が脱走しています……!
これですね、せっかく綺麗に並べたのに、外出して戻ってきたらめちゃめちゃになっているという、心が折れそうになる現象の犯人は……!!


しかし今度は「デイドラの心臓」のZ座標が変化しています。
「getpos z」で調べてみると、「GetPos: Z >> -14.98」……床の高さの近辺です。
試しに掴んで宝箱の上に乗せてみたり、棚の上に移動させてみたりしましょう。
数値の詳細は省略しますが、今度は「鋼鉄のインゴット」のように、移動する毎に座標の値がしっかり変わってくれました。
再びセルの外に出てロードを挟んでも、今度は脱走する気配はありません。
どうやらロードを挟んだことで、「デイドラの心臓」は大人しくなった様子です。


さて、それではこの廃屋のセル内にプレイヤーがいる状態で、ロードしてみたらどうなるでしょうか。
すでに大人しくなった「デイドラの心臓」では実験する意味がないので、もう一度アイテムを拾ってインベントリの中に入れ、再び捨てて座標が実際の位置とは合っていない最初の状態に戻します。


今回は少し高めの位置でアイテムを捨てたので、「デイドラの心臓」のz座標は「z:119.10」と高い数値になりました。
一方、「鋼鉄のインゴット」は「z:-12.17」と前回とさほど変わらぬ値をキープ。
そして今回は2つのアイテムを、宝箱の上ではなく、隣の棚の中段に並べてみました。
念のため、「デイドラの心臓」のz座標を調べて見ましたが、もちろん最初の数値の「z:119.10」のままです。


それでは、このアイテムの並んだ陳列棚の前で「セーブ」&「ロード」!

ずっと目を離さないで見張っていたのに、ロード画面から復活した瞬間、「デイドラの心臓」は煙のように消え失せていました。
どこへ行ったのかと探してみれば……ウルフリック氏の足元に転がっています。
まあ、前回もロードを挟むと脱走していましたからね。


しかし座標を調べてみると、今回は座標が全く変化していませんでした。
陳列棚にあった時と同じ……いやその前に床の上に捨てた時と同じ……この「デイドラの心臓」がこのセル内に発生した瞬間の座標のままです。
もちろんこの状態の「デイドラの心臓」を掴んでどこかに移動しても、座標はまったく動かないので、ロードを挟んだ瞬間、また脱走します。
いったいこれはどういうことでしょうか。
前回はロードを挟むと、実際の位置と座標の数値がちゃんと連動するようになったのに、今回は最初の座標のまま……プレイヤーがセル内に居るのと居ないのとで、どうしてこのような違いが出るのでしょう。


…引き続いて、この座標がまったく変化しない「デイドラの心臓」を、「setpos」で強制的に座標指定したらどうなるか、やってみます。


まずは棚の中段に置かれた「鋼鉄のインゴット」の座標を取得して、それを「デイドラの心臓」の座標として直接数値指定したいと思います。
「鋼鉄のインゴット」をクリックし、「getpos x」「getpos y」「getpos z」でx軸、y軸、z軸の座標をゲット。
座標を取得したら、「鋼鉄のインゴット」は邪魔になりますので、とりあえず床の上にでも移動していただきましょう。


「デイドラの心臓」をクリックして、さきほど取得した「鋼鉄のインゴット」の座標を入力。
「setpos」で座標を指定すると、その途端に「デイドラの心臓」は瞬間移動するので、場合によっては消えたように見えるかもしれませんが、x、y、z座標のすべてを入力すれば、先程「鋼鉄のインゴット」がいた辺りに出没します。
ちなみに取得したままの座標だと、「デイドラの心臓」が軽く棚板にめりこんでいるように見えたので、z座標だけ「setpos z 50」と指定し直しました。

コンソール画面を抜けると、どうやら指定したz座標では高すぎたのか、「デイドラの心臓」がちょろっと下に落ちてズレたように見えました。
しかし「getpos z」でz座標を調べてみても、指定した「z:50」のままです。
あれ?さっき動いたように見えたんだけど……気のせいだったのかな?
では、今度は思いっきり「デイドラの心臓」をつかんで、移動させてやりましょう。
「デイドラの心臓」の座標は、ちゃんと見た目通りの位置に変化してくれるでしょうか。


あれ~、おかしいですね。
床の上に置いているのに、z座標は先程指定した棚の中段の位置の「z:50」のままです。
初期の出現位置から座標は変わっても(強制的に変えたんですが)、見た目上の位置と座標が一致しない状態なのは、相変わらずのようです。
また、この状態で、セルの外に出て「ロード」を挟んで戻ってきてみると、床の上にいた筈の「デイドラの心臓」は、ちゃっかり棚の中段に戻っていました。
う~む。
いったいこれはどういうことでしょうか。


長くなりましたが……最後にもう一つだけ検証することにしましょう。
(ホント毎回長いですよね……ごめんなさい!)
セル内に発生した瞬間の座標からまったく動かない、という奇妙な振る舞いをみせる「デイドラの心臓」ですが、もしこのアイテムが、セル内に初めから配置されたオブジェクトだった場合はどうなるのでしょう?

「デイドラの心臓」が初めから置いてある場所はいくつかありますが、今回はホワイトランの「ジョルバスクル居住区」、コドラクの部屋の前に置いてある「デイドラの心臓」を見に行ってみることにします。
ちなみにこのセーブデータでは、まだ同砲団のクエストはやっていないどころか、「ジョルバスクル」にも一度も入ったことがない状態です。

ジョルバスクル居住区にある「デイドラの心臓」。
お皿になんか盛っちゃって……おつまみにするつもりなんでしょうか。

サイドテーブルのお皿の上に置かれた「デイドラの心臓」のz座標は「z:69.36」でした。
それでは、間違って盗んだりしないように、そーっと持ち上げて床に落としてみます。


おや……数値が変化しました。
床に落ちた「デイドラの心臓」のz座標は「z:7.29」です。
試しにプレイヤーのz座標を取得して床の高さを調べてみると、「z:0.95」でした。
どうやらこの「デイドラの心臓」の座標はきちんと床付近の座標になっているようです。
初めからセル内に配置されている場合は、アイテムの座標は見た目上の位置ときちんと連動するようになってるみたいですね。



■実験のまとめ~スカイリムのセルの法則~
  • (1) プレイヤーが捨てたアイテムの中には、見た目上の位置と座標が一致しないものがある。(一致していない場合、『つかんで移動』しても、ロードを挟むと座標の位置に戻ってしまう)
  • (2) 見た目上の位置と座標が一致しないアイテムは、そのアイテムのセルの外で「ロード」を挟むことで、位置と座標が一致するようになる。
  • (3) プレイヤーがセル内に存在する時に「ロード」を行っても、座標が一致しないアイテムはそのまま、見た目上の位置と座標が一致しない状態を保持する。
  • (4) 見た目上の位置と座標が連動しないアイテムを、「setpos」で座標指定しても、セルの外で「ロード」を挟まない限り、見た目上の位置と座標が一致しない状態は変わらない。
  • (4) プレイヤーがインベントリから捨てると座標が一致しなくなるアイテムでも、セル内に初めからある状態ならば、最初から見た目上の位置と座標が一致している。
……そんなわけで、お家の飾りつけを行う時は、以上の法則を頭に入れて置かなければなりません。
要は、アイテムの見た目上の位置と座標が一致している状態なのかを確認して、もし一致していないようだったら、一度そのセルの外に出て「ロード」画面を挟んで戻ってくる必要があるということです。
このことさえ注意していれば、インテリアを弄るのには十分なので、あえてこれ以上、長々と無駄話を続ける意味はないのですが……

でもね、どうしてこんな現象が起きるのか、って不思議に思いません?

そもそも「鋼鉄のインゴット」は初めから座標が連動するのに、なぜ「デイドラの心臓」は連動しないのでしょう。
どうしてロードを挟むと、座標が連動するようになるの??
初めから置いてあるものは座標が連動するのに、インベントリから出すとアイテムの座標がおかしくなるのは何故???
……などなど。


いいかげん、長くなりましたので、続きは別記事にしたいと思います。

【関連記事】
スカイリム室内装飾ガイド【考察編】
ディスプレイマーカー【自作Mod配布】
スカイリム室内装飾ガイドの続きの話


2012/08/12

レイロフ君の初恋の人~ヴィロッドさん

最近レイロフ君を構いすぎて全然Dawnguardが進んでないんですが……まあ、よくあることですよね。
本来進むべきクエストの途中で、気になる箇所を発見して、つい寄り道しちゃうのって。
寄り道の、またさらに寄り道なんかして、どんどん元のクエストからは外れていって、ふと我に返って「あれ?今って何をしてるんだっけ?」とか思うの。
ゲーム本体だけじゃなく、CK(クリエイションキット)をいじっていても似たような迷子状態になるんだから……スカイリムは本当に奥の深い作品です。

ところで、レイロフ君なんですが。
前回、無事に社会復帰を果たして真面目に働くようになったので、おばちゃんは彼にお嫁さんでも世話してあげようかなと思ったわけなんですが、そこでふと思い出したんです。
そういえば、レイロフ君って昔、好きな子がヘルゲンにいたんだよね。
ゲームのオープニングのしょっぱなで、ヘルゲンの町に馬車が到着すると、レイロフ君が唐突に思い出話を始めるのですが……覚えてますか?


ちなみにこのシーン、これから首を切られるってのに、昔の恋バナなんて悠長にしてる場合じゃないだろう、とおばちゃんは少々不自然に思ってたんですけど、英語の音声にしてみるとちょっと印象が変わりました。
英語版のレイロフ君の声優さんの喋り方は、日本語版の感情豊かな声優さんと違って、もっとボソボソとした、独り言みたいな喋り方なんですよね。
だからこそ、これから処刑されるという今の自分の状況に途方に暮れてるような感じが伝わってきます。
……遠い昔、少年だったあの頃と、この町、ヘルゲンの様子は少しも変わらない。
昔はこの町の壁が、帝国軍が駐在している砦の存在が頼もしく思えたのになぁ……
それなのに自分は今、その同じ町にいるのが不安でたまらない(たぶん処刑されるから)。
どうして自分はこんなところにいるんだろう。
この町の女の子に夢中になってたあの頃から、なんて遠くまで来てしまったんだろう。
……みたいな。


さて、このレイロフ君の恋バナの後日談ですが、ヘルゲン脱出後、廃墟となったヘルゲンに山賊の皆様が沸くようになると、ちょっとしたレアアイテムが出現します。


落ちてる場所は、ヘルゲンの元・宿屋の二階です。
ヘルゲンから脱出する時、最初に塔の階段を駆け上がって向かいの家の二階に跳び移ったかと思いますが、同じようにして二階に侵入すると辺りに5本ばかり散らばっています。
心憎い演出ですよね。
『ジュニパーベリー入りのハチミツ酒』だけだと何のことか思い出せなくて素通りしてしまうかもしれませんが、その前に塔から向かいの宿屋に飛び移る、という最初の時と同じ動作をさせてから発見させるのです。
ああ、あの時の……レイロフは今、何やってんのかなあ、と懐かしく思う筈。
どうせここまでやるのなら、この『ジュニパーベリー入りのハチミツ酒』をレイロフに届けるクエストまで用意して欲しかったなあ。
再会を祝してこのハチミツ酒で乾杯するだけの、ちょっとしたミニクエストでいいから。


ところでこの『ジュニパーベリー入りのハチミツ酒』の生産者であるヴィロットさんなんですが……、なんですよね。
最初に「あれ?」と思ったのは、ヘルゲンでの処刑シーンです。
ストームクロークで一番最初に処刑された人……『恐れを知らず生き、恐れを知らず逝った』の人……が殺された後、処刑の様子を見ていた町の人から野次が飛んでくるのですが、字幕をONにしているとその野次を飛ばした声の主が「ヴィロッド」と表示されます。
「え?ヴィロッドって……レイロフ君の好きだった娘じゃない?」
…そうは思うものの、「裁きだ!」という野次の声は完全に男。
今までは、このゲームによくある名前が被ってるキャラなんだろう、とか思って深く考えなかったのですが、この機会に徹底的に調べてみることにしました。
だって……好きだった女の子は実は男でした、という話なんだったら、紹介するお嫁さんのタイプを、よくよく考えないといけなくなるじゃないですか。


それではメインクエストMQ101『解放』に登場するヘルゲンの町の人々を改めて見てみましょう。
この町の人たちは最初の処刑シーンのみに登場するNPCなので(ハミングを除く)、普通はあまり馴染みがないかと思いますが、何度も繰り返してゲームを遊んでいると、オープニングの破壊前のヘルゲンは下手な街より訪れることになります。
なので、何となく見覚えがある方が多かったり。

ヘルゲンの人々

まずは一番左上のグンナールさんですが、この方はアルドゥインの襲撃の際、ハドバルさんから名指しでハミング君を託されるシーンがあるので、比較的印象に残りやすい方だと思います。
ちなみにこのグンナールさんは、CKでRelationshipsを見てみると、ファルクリースの鍛冶屋さんのロッドさんのお兄さんのようなんですよね。
(ロッドさんは、バルバス犬を見つけてくれと依頼してくる人です)
ゲーム中ではこんな設定、まったくどこにも活かされてないような気がするのですが……グンナールさんはアルドゥインの襲撃からは無事に逃げたんでしょうから(ハミング君が無事に祖父の家に辿り着いているので)、後日、ファルクリースのロッドさんの家で再会、とかいう展開があっても不思議じゃなかったんですけどね。
味のあるおじいちゃんなのに、もったいないです。


次はハミング親子……この二人も印象に残りやすい専用のシーンを持ったNPCです。
馬車がヘルゲンの街中に入ると、宿屋のデッキで外の様子を眺めていたハミング君は、隣にいたトロルフさんに、「パパ、あの人達は誰?どこへ行くの?」と尋ねます。
するとトロルフさんは「中に入ってみてくれ」と言いますが……まあ、これは「中に入りなさい」という方が自然ですよね。
ハミング君は、「どうして?兵士達を見たいんだけど」と口答えをしますが、トロルフさんに、「家の中だ。急げ」(これもちょっと不自然)と言われて、「うん、パパ」と素直に従います。
…なんてことはない会話ですが、あとほんの小一時間後に悲しい親子の別れが待っているかと思うと、せつなさで胸がしめつけられるシーンです。
しかもトロルフさんがかなりイケメンなだけに(吐息)……遠目から見たんじゃわかりませんが、近くでよく見てみたらえらい美男子だったんですよ、この方。
ハミング君も成長したら、こんなイイ男になるんでしょうかね。

アルドゥインの襲撃を受けると、この親子は何故か宿屋の隣の家の前あたりにいます。
(吹っ飛ばされたのでしょうか?)
トロルフさんは負傷したらしく、道の真ん中に倒れて動けない様子。
ハミング君は無傷ですが、傷ついたお父さんの側から離れられないでいます。
塔から宿屋に飛び移って大急ぎで駆けつけると、この親子の最後の会話を聞くことができますが、タイミングが難しいのでなかなか全部は聞き取れません。
CKでこのシーンを覗いてみると、以下のようなセリフがあるようです。

ハミング 「起きて、パパ!起きてったら!」
トロルフ 「若いの、もう駄目だ。行け、逃げろ!」
(ハミングがハドバルに呼ばれてアルドゥインの前から逃げる)
トロルフ 「よくやったぞ。お前は誇りだ」
ハドバル 「トロルフ!何て事だ……みんな下がれ!」

若いのって…… 何でトロルフさんのセリフだけ、毎回こうも不自然なのでしょう。
まあ、それでも泣けてくるシーンですが。
それにしてもハドバルはグンナールさんだけじゃなくて、ハミング親子とも親しかったんですね。
もしかするとハドバルは、前々からヘルゲンの部隊に所属していて、街の人達全員と付き合いがあったのかもしれません。
ハドバルの上官の女隊長は、ヘルゲン砦の責任者っぽいですしね。


ちなみに宿屋のデッキにはもう一人、処刑の様子を最後まで眺めていた人がいます。
彼女はマトララさんと言いますが、この方はどういう人なのか、ハミング親子とどういう関係があるのか、よくわかりません。
顔のデータを見てみると、「SkinFemaleNordComplexion_Age50」がついているので、50代のようなのですが……ハミング君のお母さんにしては少々年を取りすぎていますよねえ。
この方も、アルドゥイン襲撃後、元いた筈の宿屋からはとんでもなく遠れた場所に倒れています。


テュリウス将軍と帝国軍の兵士がアルドゥインと交戦しているところを抜けて、ヘルゲン砦に向かう道の途中あたり……宿屋から100メートルくらいは離れているんじゃないかと思うんですが、もしかしたらアルドゥインの爪にでも引っ掛けられて運ばれたんでしょうか。
まあ、何にせよ、この傷では助からなかっただろうと思います。


さて、最後は問題のヴィロットさんと、その連れ合いのイングリッドさんです。
彼らは囚人を乗せた馬車が止まるあたりの横の家、宿屋とは塔を挟んで隣の家の前にいます。
どうやらこの二人は熱心な帝国軍のシンパらしく、自分の家の目の前で無残な首切りシーンが始まったというのに、目を背けるどころか、興奮して、
ヴィロッド「裁きだ!」 イングリッド「ストームクロークに死を!」
…と野次を飛ばしてきます。(後ろを振り向けないので、プレイヤーの位置からは、野次ってる二人の姿は見えません)
まあ、ヘルゲンの街の人は今までヘルゲン砦に常駐している帝国軍にずっと守られてきたんだから、帝国派なのはしょうがないですよね。
きっと商売なんかも、帝国軍の人達がお得意様だったりしたんでしょうし。


アルドゥインの襲撃後、ヴィロッドさんはテュリウス将軍と部下の帝国軍の兵士たちが固まって交戦している辺りにいます。
(上の画像で、負傷して地べたに座り込んでいるのがヴィロットさん。小さいですが、その奥に倒れているのが前述のマトララさんです)
どうやらヴィロッドさんは勇敢にも帝国軍の兵士たちと共にアルドゥインに立ち向かって戦っていたようです。

帝国軍兵士「傷が深いぞ、ヴィロッド!出血を止められない!」
ヴィロッド「家族には、勇敢に戦ったと伝えてくれ」
帝国軍兵士「どうした。手を貸してくれ。ここから連れ出してやる」
ヴィロッド「もう遅い。かまうな。お前は生き延びろ」

例のごとくCKで覗いてみると、ヴィロッドさんと帝国軍兵士は混戦の最中、こんな会話を交わしていました。
帝国軍兵士のセリフから察するに、やはり彼らとヴィロッドさんは前々から親しい付き合いがあったようです。
家族ってのはイングリッドさんのことかな?
彼女の姿は見えませんが、果たして無事でいるのか……
それにしても民間人のくせに、なんて勇ましくて思い切りのいいヴィロッドさん。
衛生兵ーッ!衛生兵ーッ!援護するから早くこの人を助けてやって!
(ちなみにこの辺りで長居をしていると、アルドゥインの攻撃を結構食らうのでヘタすると死んだりします。ベリーハードモードだとかなりシビアなので要注意です)


さて、こんな専用のシーンが用意されていたヴィロッドさんですが、この方、CKで見てみると、他の使い捨て(失礼)のNPCとは違って、普通の街の人として作られていた名残のような設定があるのです。


これはヴィロッドさんの所属しているFactionの設定タブ。
「TownHelgenFaction」というのは、イングリッドさんやハミング親子など他の人達にも設定されているヘルゲン市民用のFactionですが、ヴィロッドさんはそれに加えて、「CrimeFactionFalkreath」「JobInnkeeperFaction」「JobMerchantFaction」という多彩なFactionを持っているのです。

「CrimeFactionFalkreath」というのは、誰かに暴力を振るわれた場合、相手にファルクリース領内での犯罪が加算されるように付けられるFaction。
ヘルゲンの街はファルクリースホールドに属していますので、ヴィロッドさんに付いてても別におかしくはないFactionなんですが、他の人達には付いていません。
なぜかヴィロッドさんだけ。
「JobInnkeeperFaction」は宿屋の経営者、または従業員に付けられるFaction。
「JobMerchantFaction」は、商人に限らず、物を売買する行為が可能な人物に付けられるFactionです。
これは……
もしかすると、ヘルゲンで宿屋を経営していたのはヴィロッドさんだったのでは?


ヘルゲンの宿屋の二階には『ジュニパーベリー入りのハチミツ酒』が落ちていました。
そして、ヘルゲンのヴィロットさんは、宿屋の関係者だった形跡がある……。
レイロフ君が話していた『ヴィロット』さんとは、間違いなく、この人のことでしょう。
つじつまが合いすぎているので、名前が被っているだけの別キャラ、というわけではなさそうです。
では、やはり、レイロフ君の好きだった子は男だったのか……?

こんなタイプが好みなのかあ……面食い、ではないんですね。

いや、ちょっと待てよ……これだけ伏線のあるレイロフ君の元カノが実は男だった、とかいうオチなんだったら、UESPWikiにデカデカと取り上げられている筈です。
そこでUESPでVilodさんの説明を探してみると……ちゃんとありました。
説明を読むと、やはりUESPでもヘルゲンのヴィロットさんは、レイロフ君が語っていたヴィロットさんのことだと書いてあります。

しかしレイロフ君が昔、好きだった、とはどこにも書かれていません。
う~む。
これは……レイロフ君の好きだった子と、ヴィロットさんは、全く関係ない……のか?

Ralof : This is Helgen. I used to be sweet on a girl from here. Wonder if Vilod is still making that mead with juniper berries mixed in.

おばちゃんは英語がからきしダメなので、これは当てずっぽうでしかないのですが……
もしかすると英語のセリフだと、レイロフ君の『好きだった子』と『ヴィロッド』は全く違う人物である、というのが明確なんじゃないでしょうか。
たとえば日本語だと、こんな感じ↓に聞こえるような。

『ヘルゲンだ……昔、ここに好きだった女の子がいたなあ。そういえば、ヴィロッドは今でもジュニパーベリー入りのハチミツ酒を作ってるんだろうか?』

好きだった女の子の話をされて、何の接続詞も挟まずにヴィロットさんの話をするもんだから、エアリーディングに長けた日本人としてはつい、『好きだった子』=『ヴィロット』という風に解釈してしまいましたが、英語だとそんな風には思わないんじゃないかしら。
好きだった女の子の話をしたついでに、ジュニパーベリー入りのハチミツ酒を作ってたヴィロッドさんのことも思い出した……実際のところはどうなのかわかりませんけど、おばちゃんにはそちらの線の方が濃厚のような気がしてきました。

まあ、別にヴィロットさんが初恋の相手だったとしても構わないんですけどね。
レイロフ君のお見合い相手は、細目で少々タレ目のエラの張った勇敢なノルド、で探すことにしましょう(笑)

【関連記事】
レイロフを働かせる
ロキールを救え

2012/08/10

レイロフを働かせる

先日、レイロフとジャルデュルさん家を改造した折、何気なくレイロフのUse Infoを覗いてみたのですが、彼のセリフの中にこんな一文を見つけました。


これはおそらく……内戦クエスト中に使われる会話でしょうか。
ウルフリックには気に入らないところがあるがって……
ふうん。キミ、ウルフリック首長のこと、気に入らなかったんだ。
処刑される前、「光栄です。ウルフリック首長」とか言ってたくせに。
あれは単に上司にゴマ擦ってただけだったんですね。
ふうん……可愛くないなあ。


テクスチャ差し替えてると無駄にイケメンなのが悔しい。
コイツとロキールだけはバニラの小汚い面のままでいいのに…


そんなわけでレイロフ君を強制的に働かせてやることにしました。
一日中家でダラダラしてるの、おばちゃんは許さんよ。
だいたい姉ちゃんの家にやっかいになってる間、家業の手伝いくらいするのは当たり前でしょうが。
気が向いた時に鍋かきまわしてるくらいで、手伝ってるつもりなら大間違いです。
食費くらい入れてもらわなきゃ、ジャルディルさん家だって生活ラクじゃないんだからね。


レイロフ君を働かせるにあたって、行動パターンの参考にしたのは、リバーウッドの愛すべきエルフ、ファエンダル氏のAIパッケージです。
製材所の従業員のお手本として、まるっとコピーさせていただきましょう。
それにしても、改めてファエンダルのスケジュール見てみたら驚きました。

<ファエンダルの一日>
4:00 起床。リバーウッドの外れを徘徊する。
7:00 カミラさんをストーキング(金の爪クエスト完了後)
9:00 製材所で薪割りのお仕事開始
11:00 割った薪を運ぶ
12:00 お昼休み。切り株の辺りで昼食をとる。
13:00 午後のお仕事開始
15:00 割った薪を運ぶ
17:00 再び薪割りにいそしむ
19:00 お仕事終了。再びリバーウッドを徘徊する。
22:00 帰宅。晩ご飯を食べる
23:00 就寝

ダルちゃん、朝早い!(しかも早朝から徘徊……爺さんかい)
それに、なんて働き者なんでしょう。
肉体労働なのに1日9時間も働いてます。
ホント、どこぞのニートに爪の垢でも煎じて呑ませてやりたいです。
それにしても確かカミラさんに手紙を渡すクエストで、ダルちゃんから「工場で働いて貯めた金だ」と言って渡されたお礼のお金って、25ゴールドぐらいでしたよね。
ジャルディルさん、もうちょっとお給料あげてやってよ!
こんなに真面目に働いてるのに……ブラックすぎます。


一方、レイロフ君のAIパッケージはデフォルトではこんな感じです。
(※見やすいように中間の項目を端折ってます)
一番上の「CWHangoutInRiverwoodInn」ってのは、内戦クエがある程度進むと、リバーウッドの宿屋でダラダラするようになるという行動パターンのパッケージです。
(ハドバルも同じパッケージがついてますね)
二番目の「MQ102RalofSandboxInGerdursHouse」というのが、ジャルディル家でのニート生活のパッケージです。
これは「MQ102B」のクエストのステージ52以上、という条件がついています。
具体的に言うと、ヘルゲンを脱出後、レイロフと共にリバーウッドを訪れるとジャルディルさん一家とレイロフの会話が始まりますが、そのシーンの終了後です。
その条件以外が一番下の「DefaultSandboxCurrentLocation256」……誰にでも付けることのできる基本的な動作のパッケージです。
まあ、要するに内戦クエストを進めようが進めまいが、レイロフ君は一生ダラダラしてるということです。
せめて家の外に出てリバーウッド内を徘徊するパッケージだけでも、デフォルトで付けておいてくれたら、ドラゴンが襲ってきた時なんかに役に立ってくれるんですけどねえ。
しかもあのヒマ人は、無駄にEssentialなんですよ。
所帯持ちのアルヴォアさんが果敢にドラゴンに突っ込んで行って毎回お亡くなりになっているのに、どうして不死身の独身男がいつもずっと家に篭ってるだけなのでしょう。
自宅を警備してないで、リバーウッドを警備してちょうだいよ。


編集しなおしたレイロフ君のAIパッケージスタック。
朝7:00 起床。ジャルディルさん家で朝ご飯を食べる。
8:00 出勤タイム。製材所で薪割りのお仕事。
12:00 お昼休み。他の従業員と一緒に切り株で昼食。
18:00 帰宅。おうちでご飯を食べる。
19:00 自由時間。ハチミツ酒を飲みながら「帝国の犬め」とか呟いたりする。
23:00 就寝。

どうです?この健康的な生活。
よく寝てよく働き、3食きっちり食べて、1日4時間も自由時間がある……
これであとはお風呂にさえ入ってくれれば、もう何も言うことはありません。

お仕事は薪割り専門にしました。薪を運ぶのはダルちゃんがいるし、スクリプトつけなきゃいけないようだし……薪割りだけでもランダム行動取るみたいだから、これ以上複雑にしなくてもいいでしょう。
もちろん追加するパッケージは発生条件をMQ102Bクエのステージ52以降にして、レイロフ専用パッケージとして新規作成しました。
さて、これでうまく動いてくれるかどうか、ゲームを起動して検証してみます。



リバーウッドに駆けつけてみると……あっ、ホッドさんと一緒にレイロフ君がジャルディルさん家から出てきました。無事にニート卒業です。


ちゃんと仕事に行くのか心配で、つかず離れずこっそり後を付いていきます。
もはや母親の心境です。
あのバカ息子はきちんと働いてくれるのかなあ……心配で目が離せません。


どこに向かうのかと思ったら、切り株に腰掛けてパンを食べ始めました。
時間を確かめると……12時を回っています。
そうか、この時間帯はお昼休みでしたね。
ダルちゃんも後からやってきました。


微妙にきまずい雰囲気の昼食タイム……
ダルちゃん、お願いだからこのダメ息子と仲良くしてやってね。
久しぶりに外に出たので挙動不審になるかもしれないけど、急に暴れたりはしないはず。

13時になると、二人ともすくっと立ち上ちあがりました。
おお、ついにお仕事開始ですか。


レイロフが真面目に働いてる……あらやだ、目に涙が。
こうやって勤勉に働く姿を見てると、今度はお嫁さんでも探してあげたくなります。
お嫁さんを貰ったら、どこか空き地に家でも建ててあげないとなあ。
おばちゃんは最近、スカイリムとシムズの区別がつかなくなってきました。


新人に仕事を取られて、手持ち無沙汰のダルちゃん。
ごめんなさいね。今日はゆっくりサボっててください。


こら!アンタはサボるんじゃないの。
小難しい顔をして机に手をついて何かを考えるフリをしていますが、ぼうっとしてるだけです。少し斧を振り回しただけで、疲れたみたいです。
それにしてもこの製材所付近で働く行動パターンって、結構いろんな動作をするものなんですね。


こんな手紙を取り出して読んだりするの、初めて見たなあ。
薪の発注書か何かを確認しているのでしょうか。
それにしてもレイロフ君は何かにつけて仕事をサボります。
そんな白紙の紙きれをいつまでも眺めてないで、薪を割りなさい、薪を。


試しにドラゴンのヴォルジョツナークさんを呼んでみましたが、勤務中でもしっかりドラゴンを退治してくれました。
小金を稼ぐだけでなく、地元の皆さんのためにも役立つことができるなんて……なんて充実した生活でしょう。
レイロフ君もきっと、外に出た喜びをかみしめているに違いありません。


というわけで、ここまでは大成功なレイロフ君の初出勤でしたが、ひとつ、原因不明の不具合が発生いたしました。
夕方六時……仕事から上がってジャルディルさん家でご飯を食べる時間ですが、レイロフ君は棒立ちになったっきり、その場から動こうとしません。
時間を経過させたり、別セルに移動して戻ってくれば動き出すんですが、そのまま待っていても一時間くらいぼーっとしたままなんですよね。
何が悪いんだろうといろいろ弄ってみたんですが、原因はよくわからず。
ちなみに18時から、切り株のところでご飯を食べるパッケージにすると、18時ぴったりに移動してご飯を食べてくれるんですが……どういうわけかジャルディルさん家を指定すると食べてくれないのです。
何なんだろう。ジャルディルさん家を改造してるのが影響してるのかな。
原因が分かり次第、追記したいと思います。


ようやく棒立ち状態から覚醒して、トボトボと帰路に着くレイロフ君。
辺りはもう真っ暗です。
それなのに、途中でニワトリに進路を邪魔されて、鳥の観察を始めました。
ニワトリはいいから、早くウチに帰りなさい!


ようやくジャルディルさん家に辿りついた……と思ったらロフトに直行。
えええ?まさか、もう寝るの? まだ九時だよ!?


撃沈。

よっぽど、初出勤がこたえたのでしょうか……
なんだかリアルすぎて笑ってしまいました。
頭が枕にめりこんでますがな。

【関連記事】
レイロフ君の初恋の人~ヴィロッドさん

2012/08/06

fontconfig.txtについて

スカイリムのゲーム内で表示されるフォントは、フォントデータの埋め込まれたFlashファイル(swf)さえあれば、基本的にはフォントの設定ファイル(fontconfig.txt)で自由に変更できるような仕様になっています。

どなたかの作ったフォントを導入する場合、同梱のfontconfig.txtやその他UI系のswfなどを、そのままData/Interfaceフォルダに入れてしまう、ということが多いかと思いますが、文字化けなど問題が起こった際に対処できるようにするためにも、基本となるfontconfig.txtの設定をしっかり理解しておきましょう。

※当ブログでもスカイリムで使用できるカスタムフォントデータを配布中です。
お手数ですがこちら日本語化に関する記事Indexより、お探しください。


■fontconfig.txtの弄り方
日本語版のSkyrim - Interface.bsaから取り出した「fontconfig.txt」はデフォルトでは以下のような設定になっています。

fontlib "Interface\fonts_console.swf"
fontlib "Interface\fonts_jp.swf"
map "$ConsoleFont" = "Arial" Normal
map "$StartMenuFont" = "Skyrim_JP_EveryFont" Normal
map "$DialogueFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereBoldFont" = "Skyrim_JP_EveryFont" Normal
map "$EverywhereMediumFont" = "Skyrim_JP_EveryFont" Normal
map "$DragonFont" = "Dragon_script" Normal
map "$SkyrimBooks" = "Skyrim_JP_BookFont" Normal
map "$HandwrittenFont" = "Skyrim_JP_HandWriteFont" Normal
map "$HandwrittenBold" = "Skyrim_JP_HandWriteFont" Normal
map "$FalmerFont" = "Falmer" Normal
map "$DwemerFont" = "Dwemer" Normal
map "$DaedricFont" = "Daedric" Normal
map "$MageScriptFont" = "Mage Script" Normal
map "$SkyrimSymbolsFont" = "SkyrimSymbols" Normal
map "$SkyrimBooks_UnreadableFont" = "SkyrimBooks_Unreadable" Normal
map "$CreditsFont" = "Futura Condensed" Normal
validNameChars " `1234567890-=!@#$^&():_+QWERTYUIOP[]ASDFGHJKL;ZXCVBNM,./qwertyuiop{}asdfghjkl;zxcvbnm?|"

まず最初の二行、「fontlib~」の部分は、フォントが埋め込まれたFlashのファイル(swf)をゲーム内で使えるようにするための記述です。

一行目で読み込まれている「fonts_console.swf」は、コンソール画面(※Altキー+半角/全角キーで表示されるコマンド入力画面)で使用する「Arial」のフォントが埋め込まれたファイルで、英語版も日本語版も共通の物がSkyrim - Interface.bsaの中に圧縮されて入っています。(なので日本語化する時に、わざわざ解凍して差し替える必要はありません)
もっとも欧文フォントの「Arial」だと日本語表示できないので、コンソール表示用のフォントは日本語フォントに変更(後述)した方がいいですね。
その場合、「fonts_console.swf」の読み込みは必要なくなります。

二行目の「fonts_jp.swf」は、日本語化でお馴染みのファイルです。
「fonts_jp.swf」は英語版の「fonts_en.swf」のローカライズ版として、日本語版スカイリムに標準装備されている基本フォントデータセットです。
ゲーム内で使用する特殊なオリジナルフォント7種に、スカイリムの標準書体のFutura Condensed Medium、それに日本語のデフォルト3書体をプラスした計11書体の構成になっています。

デフォルト以外のフォントデータを使用したい場合は上記の記述にならって、fontconfig.txtでフォントデータの読み込みを記述します。 たとえば、「fonts_skyMin.swf」というフォントデータを追加する場合は、

fontlib "Interface\fonts_console.swf"
fontlib "Interface\fonts_jp.swf"
fontlib "Interface\fonts_skyMin.swf"
map "$ConsoleFont" = "Arial" Normal
map "$StartMenuFont" = "Skyrim_JP_EveryFont" Normal
………

このように記述を追加します。
もちろん追加したフォントデータのswfファイルは、Data/Interface内にきちんと入れてくださいね。


次に三行目以降の「map~」以下の部分は、ゲーム内のテキストのどの箇所にどの書体を使うか、というフォント指定を行う記述となっています。
スカイリムではゲーム上のあらゆる表示を、Flashで作られたインターフェイス用のデザインデータを通して表示させています。
そのデータ内ではテキストをどんなフォントで表示するか、というフォントの種類の指定は、先頭に「$」のついた変数名のようなもの……正確に何と呼ばれるのかはわからないのですが仮に「フォント変数」と呼ぶことにします……で行っています。
その「フォント変数」が、実際にどの画面のどの箇所で使われているか…というのは、さすがに全部は把握しきれていないのですが、おばちゃんが調べた限りでは、だいたいこんな感じです。

■フォント変数一覧(太字がフォント変更すると良さげな箇所)
$ConsoleFont……コンソール画面のテキストで使用
$StartMenuFont……どこで使われているのか不明
$DialogueFont……どこで使われているのか不明
$EverywhereFont……スタートメニューやシステムの説明など、少し雰囲気の変わる場所のテキスト
$EverywhereBoldFont……重量や金額、レベル名といった、変動のあるスペック関連の値のテキスト
$EverywhereMediumFont……字幕のテキストなどゲーム中の八割以上のテキストで使われている
$DragonFont……「グジャランド首長の要塞に関する調査報告書」で使用
$SkyrimBooks……一般的な書籍の本文で使用
$HandwrittenFont……誰かの日記や手紙など、手書き風のテキスト1
$HandwrittenBold……誰かの日記や手紙など、手書き風のテキスト2
$FalmerFont……「ガルス・デシデニウスの日記(暗号化)」で使用
$DwemerFont……「ドゥーマーの調査書」で使用
$DaedricFont……「評論・ザルクセスの神秘の書」などで使用
$MageScriptFont……「達人の幻惑術の書」で使用
$SkyrimSymbolsFont……どこで使われているのか不明
$SkyrimBooks_UnreadableFont……「オラフ王の詩歌」で使用
$CreditsFont……クレジット表示画面で使用

フォント変数に指定してやる「フォント名」は、フォントデータが埋め込まれたswf内に記述されているフォントの定義名です。
どなたかの作ったフォントデータの場合、通常はreadme.txtや同梱のfontxonfig.txtなどに「フォント名」が書いてあると思います。

文字化け等、テキストがうまく表示できない方は、
(1)Data/Interfaceフォルダにフォントデータ(swfファイル)が入っているか
(2)fontconfig.txtの「fontlib~」の指定で、(1)のフォントデータを読み込んでいるか
(3)fontconfig.txtの「map~」の指定で、正しいフォント名を指定しているか
以上の3点について、確かめてみてください。



(日本語版デフォルトのゴシック書体を他のフォントに変えたい場合)
$EverywhereFont、$EverywhereBoldFont、$EverywhereMediumFontをデフォルトの「Skyrim_JP_EveryFont」の指定から、使用したいフォント名に書き換えます。
たとえば日本語版デフォルトのゴシック書体の代わりに書籍の本文に使われている楷書体のフォントを使用する場合は、下記のように指定します。

………
map "$EverywhereFont" = "Skyrim_JP_BookFont" Normal
map "$EverywhereBoldFont" = "Skyrim_JP_BookFont" Normal
map "$EverywhereMediumFont" = "Skyrim_JP_BookFont" Normal
………

(↓クリックすると拡大します)

ちょっと古めかしい雰囲気になりますが、
なかなか悪くないと思うのですがいかがでしょう?



(書籍のフォントを変更したい場合)
$SkyrimBooksのフォント指定を変更。
(メモや日記などで使われている手書き文字風のフォントを変更したい場合)
$HandwrittenFont、$HandwrittenBoldの指定を変更。

日本語版のSkyrim - Interface.bsaの中から取り出した「book.swf」では、本来「$SkyrimBooks」で指定されているはずのテキストフィールドが直接「Skyrim_JP_BookFont」(デフォルトの楷書体のフォント)の指定になっているため、フォント変更することができません。
書籍のフォントを変えたい場合は、日本語版オリジナルのものではない、修正を施した「book.swf」を別途導入する必要があります。

*配布されているフォントデータの中には、書籍のフォント変更ができるように修正を施した「book.swf」が同梱されている場合もあります(readme.txtなどの説明をお確かめください)。



(コンソール画面で使用するフォントを変更)
日本語版のデフォルトの設定では、コンソール画面で使用する書体が欧文フォントの「Arial」になっています。
コンソールをまったく使用しない人は必要ありませんが、このままの設定だと日本語のアイテム名や地名、クエスト名などが化けてしまうので、日本語フォントに変更しておいた方が良いでしょう。(フォントはお好きなものをお使いください)
map "$ConsoleFont" = "Skyrim_JP_EveryFont" Normal
「$ConsoleFont」の指定を日本語フォントに変更した場合、「Arial」のフォントデータが入っている「font_console.swf」の読み込みは必要ありません(上記参照)。
※別にそのまま読み込ませていても何の支障もないですが。



その他の箇所、「$DragonFont」「$FalmerFont」「$DwemerFont」「$DaedricFont」「$MageScriptFont」「$SkyrimSymbolsFont」「$SkyrimBooks_UnreadableFont」は、スカイリムのオリジナルフォントが指定されている特殊なフォント変数です。
これらのオリジナルフォントのデータは、「font_jp.swf」もしくは英語版のSkyrim - Interface.bsa内に入っている「font_en.swf」の中に入っています。
fontconfig.txtを自分で編集する場合、これらのオリジナルフォントを埋め込んでいる「font_jp.swf」、あるいは「font_en.swf」の読み込み指定を忘れないようにしてください。

せっかくなので、上記の特殊なスカイリムオリジナルフォントを紹介します。

■"Dragon_script"(フォント指定箇所:$DragonFont)

スカイリムといえばこのフォント……ドラゴン文字。
書籍「グジャランド首長の要塞に関する調査報告書」で使用されている他、たぶん「魔法」のシャウト画面でも使われているんじゃないかと思われます。

■"Falmer"(フォント指定箇所:$FalmerFont)

ファルマー文字。盗賊ギルドクエでお目にかかります。
それから先日、『Dawnguard』のDLSTRINGSを覗いてたら、いくつかこのフォント指定があるのに気づきました。
ファルメル関係で何か追加のクエがあるんでしょうかね?

■"Dwemer"(フォント指定箇所:$DwemerFont)

ドゥーマー文字。「ドゥーマーの調査書」シリーズで使われています。
よく見るとこのフォント、いろんなところでドゥーマー製品のモチーフになっていそうですね。
なんとなく見覚えが……

■"Daedric"(フォント指定箇所:$DaedricFont)

オブリビオンでおなじみのデイドラ文字。
「評論・ザルクセスの神秘の書」などで使われています。
深遠の暁……懐かしかったです。

■"Mage Script"(フォント指定箇所:$MageScriptFont)

調べてみると「達人の幻惑術の書」で使用されているらしいのですが、おばちゃんは未だゲーム内でお目にかかったことがありません。
達人魔法、ひとつも極めてないからなあ。

■"SkyrimSymbols"(フォント指定箇所:$SkyrimSymbolsFont)

SkyrimSymbols
フォントというより素材パーツ集。実際にゲーム中のどこに使われているのかは不明。

■"SkyrimBooks_Unreadable"(フォント指定箇所:$SkyrimBooks_UnreadableFont)

SkyrimSymbols
吟遊詩人大学クエの「オラフ王の詩歌」で使用。
まさか棒読みで朗読するとは思わなかったですよねえ。