00000000000000000000000000000000000000000000000

第15章 正確な図面を作成する


前章で大きく前進したが、まだまだ問題がある。
各INDEXの正確な座標やサイズがわからないのである。
それがわからないと、ゲーム画面を見た時に「どちらがX方向」で「どっちがY方向」がすぐに判断できず、また距離感も掴めないため、カメラ位置や焦点位置を変更をする作業をしたい時に、かなり戸惑うのである。
このため、だいたいの当たりをつけて数字を変更してみて、どうなるか確認し、サイズ感や距離感を自分の感覚でつかみ、それを元に各数値を変更していく必要があります。
これでは、とてもやりにくいのです。

これを解決するためためには、ある種の「図面のような設計図」が必要なのです。

図面を作るとしたらば、知りたいのは「各INDEXの正確な座標」とそれぞれのサイズです。
これが判明すれば、その数値とカメラの位置座標と焦点位置座標を元に図面を作れるであろうと考えらます。

つまり「第7章 あなたは試練を与えたの?」で作成した初心のおおよその下記のような図面をもっと正確に作れるはずである。

初心のJ's BAR見取り図。座標やサイズが不明なため不正確な図面である
初心のバー見取り図

上記のような図は、今現在の設定がどのようになっているかが、わかりやすい。
カメラアングルを変更したい場合に、上記のような図面があると作業効率が良くなるのです。


前回作った動画は、「対峙3の最初の戦いのエリア」だけです。そこはFILE1の零下のボスバトルで使われるエリアです。
その形状を真上から手書きで描くと、下記のような感じです。




しかし、これを見た時にどちらの方向が起点のX=0,Y=0の場所であるのかが、わかりません。
X=0,Y=0の方向を絵の左上にした場合、下記の4パターンの図面が考えられます。

これが「どっちがX?どっちがY?の問題」です。

A
B
C
D


そしてそれら各INDEXの座標やサイズなどの情報は、まだ不明である下記エリアにどこかに格納されていると思われます。

不明のデータ内にINDEXの座標やサイズなどが
含まれているハズ

まずは、この不明な場所のデータ値を確認していき、何処が何を示しているのか判定していくしかありません。
座標は、今までの形式でX,Z,Yの順番で、各符号付きの4バイトの単位で格納されていることがわかっています。

HEXデータとしては00000000H〜FFFFFFFFHの値であり、それをマイナス符号付きの10進数に現わすと、-2,147,483,648 〜 2,147,483,647の範囲です。
そしてINDEXのサイズは座標の値が大きい値であっても、そのX方向,Y方向のサイズは、それほど大きくありません。
またZ座標は高さを表しているので、これも極端に大きな値ではありません。
この条件で不明であったデータを確認したところ、次のように分類できました。

不明のデータ内を分析した結果

上記のような結果になった。
下記は、対峙3のはじめのボス戦のINDEX0の座標ぽい値です。
すでに「カメラ位置1,2と焦点1,2のそれぞれのX,Z,Yの機能については、すでに判明しています。
それ以外を考察すると次の結果となりました。

OFFSET値
ID
+00H
+04H
+08H
考察
X値
Z値
Y値
+0024H
P0
1315
-5
465
INDEX0の4角の立方体の底辺の座標と思われる。
+0030H
P1
1315
-5
1135
+003CH
P2
1735
-5
1135
+0048H
P3
1670
-5
465
+0054H
P4
1315
395
465
INDEX0の4角の立方体の上辺の座標と思われる。
+0060H
P5
1315
395
1135
+006CH
P6
1735
395
1135
+0078H
P7
1670
395
465
+0084H
不明座標1
1315
194
799
今のところ用途不明な座標。
なにかの中間的な座標にも見える。
+0090H
不明座標2
1702
194
799
+009CH
カメラ位置1
2065
345
614
すでに判明しているカメラ位置の座標である。
+00A8H
カメラ位置2
2270
345
614
+00B4H
カメラ焦点1
1375
195
784
すでに判明しているカメラの焦点の座標である。
+00C0H
カメラ焦点2
1595
190
784
+00CCH
不明座標3
1315
194
799
今のところ用途不明な座標。
なにかの中間的な座標にも見える。
+00D8H
不明座標4
1792
194
799

この結果によって、各INDEXは、不当辺の四角の立方体であることが判明しました。
そしてそれは、P0〜P7までの8種類の座標でその形がデータとして納められていることが分かった。
この座標点を立体的に描くと次のようになります。

P0〜P7の座標を立体的に描画する

上記のような立方体でINDEXの領域のデータが格納されていることが判明し、その形は各INDEXによって様々である。
しかし、3次元の立方体でそれを描くと複雑な形状になってしまい、直感的に理解しにくい。
そこでやはり、真上から見た平面図に描くことにする。
真上から見た平面図は、下記のようになる。

P0〜P3の座標(立方体の底辺)を
2次元の平面図で描画する

これで一つのINDEXの座標とそのサイズがわかるようになった。
次は、ツールを作り、RDTファイルを読み込み解析し、INDEX毎にその座標データをExcelのシートに一覧出力するにするプログラムを作成し、その座標データをもとに全てのINDEXを2次元表示する機能を持たせます。

RDTファイルを自動解析し、各INDEX毎に座標データをExcelのシートに自動出力をする
上記座標一覧を自動で2次元の平面図に出力すると…

備考:
INDEX10は、零下、対峙1,対峙3開始時、G変異体が出現するカットシーンのINDEX。
INDEX11は、G変異体に勝利して、倒れるカットシーンのINDEX。
INDEX5は、FILE1の零下で使用できるINDEXで、タイムカウント中にハンターなどから隠れる場所でよく使われるエリア。対峙1,対峙3では未使用エリア。
INDEX7は、FILE1の零下で電車をレバーで動かす時のカットシーンで使用されるINDEX。対峙1,3では未使用のINDEXである。


こんな感じでエリアの各INDEXが表示され、その形が明確に見えるようになります。

つまりこの形が見えて、INDEXでどのように
区分けされていることがわかる。

このように対峙3のはじめのエリアの形が見えて、かつINDEXがどのように配置されていて、その座標やサイズが視覚的に見えるようになるわけです。
これによって、「どっちがX?こっちがY?」の問題と「数値とその距離感がわからない」の問題が解決できるようになります。

それには、さらにこの自作ツールをもっと良い形にする必要があります。


次章に続く