fc2ブログ
2017/09/18

エミュ鯖で新規MAP実装について考えてみる 。

スレの流れが氷河期に入ったようなので(元々か)ちょっとここいらで起爆剤を投入したいと思います。まずスレで出ている情報は下記の通り。

ネトゲ廃人@名無し:2017/02/26(日) 00:45:29.37 ID:kYnYhhCYT[1/2]
twmって単純にマップの座標ごとのフラグで埋め尽くしただけのファイルじゃないか?
0x0000で通行可能 0x0002で通行不能な感じっぽいような
頭の11はヘッダで続いてxとyの範囲とかかなりシンプルな構造してる予感
マップの画像の上に白黒で通行可否だけの二値画像作って
簡易的に対応したデータ作成出来るんじゃないかとか妄想

1933 :ネトゲ廃人@名無し:2017/02/26(日) 01:54:28.08 ID:bwhr9C8zD[1/2]
>>1932
なるほど。
x,yの範囲指定で
、 試しにExcelかなんかで自分で作ってみればわかるのかも。
影の塔とかは使い回し元のをコピればいけそう。
沼はマップ複雑過ぎるなぁ。

1934 :ネトゲ廃人@名無し:2017/02/26(日) 04:53:03.13 ID:kYnYhhCYT[2/2]
ttp://i.imgur.com/HSDeYJx.jpg
122番(シノプ1)のtwmを可視化してみた
上に書いたよりもう少し面倒なフォーマットしてたけど多分判明

1935 :ネトゲ廃人@名無し:2017/02/26(日) 13:25:49.13 ID:bwhr9C8zD[2/2]
>>1934
おーこうなってるのか。
338byte毎?にある0x0D0Dが何を表してるかわからないけど、
これを無視して考えれば、x,yの範囲分ありそうだ。

1936 :ネトゲ廃人@名無し:2017/02/26(日) 14:37:40.37 ID:br3bfAqX8
http://i.imgur.com/Ua2c8Dy.jpg
蔵の右下MAP画像を縦に倍>45度回転>twmのサイズから32ドットずつ引いたサイズに縮小
これと上に貼った可視化した通行可能フラグの画像を合わせてみた図

twmの構造はヘッダに11 x4バイト y4バイト
その次にマップブロック1 x2バイト y2バイト x*yのブロックデータ
以降ブロック2~と同様な構造でブロックサイズは可変
ブロック1個は基本13*13で長辺を13で割った数の2乗に分割しているっぽい
シノプ1だと8*8の64ブロック
短辺側は最後の方を細切れにして長辺と合うようにブロック数水増ししている様子

これらを踏まえてtwmファイルを解析してみる。複雑なMAPで解析するよりも簡単なMAPの方が解析しやすいと思うので・・・今回の研究対象は旗取り待機室とします。

旗取り待機室のMAP番号は446番で参照するtwmファイルは337番のようです。MAP番号は今回の解析とは関係ありませんが影の塔など既存のMAPを使いまわす場合にMAP.jtalesにて丸コピしてMAP番号だけ変えるだけでできると思います。(まだ試してない)

それで本題のtwmファイルですが0337.twmをFavBinEditなどのバイナリエディタで開くと下記のようになっています。(太字までを便宜上ヘッダ部分と呼びます)

11 42 00 00 00 42 00 00 00 0d 00 0d 00 02 00 02 ・・・・・・・

1936氏によると太字にした8バイトがそれぞれxとyになるらしい・・・ですがこのxとyって幅?座標?電卓を叩いてみると42は10進数で66のようですが・・・。ちょっとこの件についてはひとまず置いておいて実際に待機室を走り回ってみます。下記画像はMAPの端の座標で、数値的に見ると始点にあたると思われます。

siten.jpg

先程のバイナリをもうちょっと踏み込んでみます。ヘッダ部分の次の4バイトはマップブロック1のx*yのブロッグデータだそうで0D 00 0D 00となってます。電卓を叩くと0Dは10進数で13となり13*13のブロックデータとなるようです。1936氏の13*13がブロックサイズの基本サイズになると一致してます。

ところで待機室端から端まで走り回って気付いたんですが・・・

TWCI_2017_9_18_20_14_59.jpg

ここらへん歩行不可になってました。本鯖の待機室も同様になっていたので設定ミスではないと思います。始点からy座標変えずにx座標変えていくと終点のx座標は135です。またまたバイナリとにらめっこ・・・・

う~ん・・・・?自分の予想では0D 00 0D 00から02 00 02 00 が79回続いたら02 00じゃなくなると思っていたのですがどうやら違うようです。ワケワカメ。

ちなみに1935氏も言っていましたが338バイト毎にブロックサイズの0D 00 0D 00が記述されていますが・・・ 頭が痛くなってきたので本日のエミュ鯖座談はここまで。





明日は休日なので温めてた修練の石焼き芋をイソレットさんに食わせます!



もしよろしければ私のモチベーションアップの為にチャンネル登録お願いします!

コメント

非公開コメント