2012/08/15

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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


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

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


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


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


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

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


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


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

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


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


4 件のコメント:

  1. 続編キタコレ! 本セルデータと一時的なセルデータの2層構造なんですね。フムフム。(実はよく理解できていない)
    お姉さまは、コンピュータ関係のオシゴトをされていたんでしょうか。そうでなくても理科系ですよね。論理的推論がスゴイです。ぼくはヴィロットさんの考察なんかもスキです。

    返信削除
  2. いえいえ、おばちゃんはちょっとゲームが好きなだけの普通のおばちゃんです。
    論理的というより、無理やり話をこじつけて理由を捏造してるだけのような気がするんですが……わからないことをそのままにしておけない、やっかいな性分なんですよね。
    また、変な屁理屈をこねる記事を上げるかと思いますので、良かったら覗きにいらして下さい。

    返信削除
  3. なるほど…この考察が正しければ、すべての部屋等にすべてのアイテムを有ることにしておけば(アイテム透明接触不可化、進入禁止エリアを設定しそこにすべてのアイテムを置く、等)持ち込みアイテムがそれに関連付けされて位置がずれない…?
    私は最近始めたのでゲーム遊ぶだけで手一杯ですが、おばちゃんさんにおかれましては、がんばって新世界の事象実験を掲載していただけると私が腹筋を喪失してゲームができなくなりそうで楽しみです。

    返信削除
  4. この記事読んでから、家の飾りつけがグッと楽になりました!
    今までお皿に焼いた鹿肉とリーキのグリルを乗っけるだけで1時間かかってたのが
    たったの15分でできるようになりました!感謝です。

    返信削除