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配布】
スカイリム室内装飾ガイドの続きの話


3 件のコメント:

  1. いやぁオモシロイです!
    ぼくも600時間以上プレイしてきましたが、こだわり方が浅かった>< お姉さまを見習って精進したいと思います。これからもこだわりのブログを楽しみにしております。

    返信削除
  2. コメントどうもありがとうございます。
    「こだわり」がたまに明後日の方角に突っ走っていってしまうことがあるんですが……楽しんでいただけると嬉しいです。
    それにしてもセルの法則は考えれば考えるほど新たな疑問が出てきます……
    続きをまとめるのに苦労してます。

    返信削除
  3. とても詳しくてわかりやすかったです、部屋に物を飾る時に謎の儀式をしなければならない理由かようやくわかりました
    僕は今PS3版にハマっているのですが死体を家に持ち帰り賞金首の布告を入れ椅子に座らせたりして飾っているのですがロードを挟むとかなりの確率で死体の位置がズレるのですよね...それも何か原因があるのでしょうか、他にもレイクビュー邸で元からあるリスポーンしてしまう器等を移動させて物を飾ってもしばらくしたら元からあるアイテムの位置が元に戻っていて飾った物が吹き飛んだりしてます...

    スカイリムの室内装飾の道は険しいですね...

    返信削除