スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

たむたむす~るにオリジナルマップを追加する方法

たむたむす~るへのオリジナルマップ追加の方法です。

概要
自作マップをMDLデータに変換して、たむたむす~るのビューワモードとフリーHの背景に登録します。


用意するもの
・MQO(ver 2.2互換)データで製作したモデル
・OrientalDarkFlight


手順
1. たむたむす~るのデータ管理から、MQOファイルを適当なオブジェスロットに読み込みます。

2. インポートしたデータが \data\MapObj\Model\edit_* の対応するスロットに読み込まれているので、フォルダごと \data\Map フォルダにコピーし、適当な名前にリネーム。

3. \data\Map\MapList.dat 内に、下記にならって記述を追加。他の設定値は、他のマップファイルを参考に。

[MapData_Start]
80001 #他の設定ファイルから参照されるID
[ModelFile_Base]
1 #mqoファイル内のオブジェクト数
Map/tam_chapel/tam_chapel_01.mdl #mqoのオブジェクト毎にmdlがひとつ生成される
[MapData_End]

4. ビューワモードへの追加は \data\EditData\BG_Models.dat に下記に習って項目追加。 *要復号化&再暗号化

チャペル 80001 0,0,0,0
#リストに表示される名前/MapListのID/XYZ座標とY軸回転
#X軸が画面向かって右、Y軸が画面向かって上、Z軸が画面向かって奥

5. フリーHへの追加は \data\EditData\BG_H_Pos.dat に項目追加。 *要復号化&再暗号化


補足
ver.4ではmqoのマテリアルの透明度は反映されません。透過させたい場合は、テクスチャマップをTGAファイルに変更し、アルファチャンネルを加工。さらに、MDLファイルをテキストエディタで開いて、該当部分のTransparentを1に書き換えてください。

かわいそうなおとうさんさんのチャペルをこちらの方法で登録してみました。

tech_0335.png

コメントの投稿

非公開コメント

更新お疲れ様です

久々の更新お疲れ様です。またこちらには長らくご無沙汰いたしておりました。

私はMap関係をいじったことはMDLの書き出しくらいしかないので、これを機にMapやMDLの情報が出てきてくれるといいかな~と、ちょっと期待を抱いてしまいました。情報埋もれてしまってるので。

[CollisionModel]とか一度調べようとしたのですが、途中で諦めたのでした。

気付いた点を1つ。「MQO(ver.4)データで製作したモデル」とありますが、す~るで読めるのはMQOファイルフォーマットだと1.0、ファイル保存の選択肢だと2.2互換までだったと思います(画像掲示板の144からのスレッドでおとうさんにそう答えているので)。最近のMetasequoiaで保存の選択肢がどうなってるかは存じておりませぬ。

Re: 更新お疲れ様です

長らく更新してませんでしたすみませんw

あ、verのところミスしてますね。現行がver5だと勘違いしてしまいました。たむたむす~る病ですw
修正しておきます。

テスト

コメント失礼します。こちらでは初めましてでしょうか?
早速ここに書いてあるとおりにやってみましたが無事に追加することができました、ありがとうございます。

それから、HやビュワーができるならこっちもできるだろうとFINAL!のフリーバトルの方にもマップを追加してみたのですが、とりあえず表示には成功したものの、着地できずにバトルが終了したり、敵が床の中、壁の中にいたりなどの不具合がありました。
ただ、色々読み込んだ中で 恋するステージmqo(焼き付け版) のみ今のところそういったものはなく階段も普通に登る事が可能でした。
この辺はどうなってるかわからないので、原因がわかればいいなと思っております。

Re: テスト

馬さん、いらっしゃいませ。

FINALのフリーバトルはあまり触った事が無いので詳しくわかりませんが、MDL中のポリゴンメッシュに当たり判定があるようですね。

初期位置で落下し続ける場合は、プレイヤーキャラの出現位置のY方向を少し上げてみるとかすればよいかもしれません。尤も、メッシュの仕様によって当たり判定の有無が決まっているのであれば、そちらを解明しないといけないと思います。

敵が埋まっているのは、敵の初期位置のずれの問題だと思います。マップには確か、mdl情報とは別にマップ情報が存在しているので、もしかするとそちらに敵の初期位置の記載があるかもしれません。

やってみた

追試の範囲を超えるものではありませんが、やってみたので色々と。基本的にす~るv.5/らぶデスFINAL!でのみ試してます。環境はWin10Home64bit。

まず失敗から。す~るv.5のMap\MapList.datに

[MapData_Start]
990001
[ModelFile_Base]
1
Map/x_TamChapel/TamChapel.mdl
[MapData_End]

という項目だけ追加して試したところ(EditData\BG_Models.datのエントリーは追加してある)、ビューワーモードで追加マップを選択するとす~るが落ちました。ここで「コレだけじゃ項目足りないのね」と思えば良かったのですが、す~るv.4でもやってみるとこっちは落ちないのです。なので何がいけないのか結構悩みました。

結局の所、

[CollisionModel]
Map/x_TamChapel/TamChapel.mdl

の2行を[MapData_End]の前に追加することで無事マップを読み込めるようになりました。どうやらこれがす~るv.5での最低構成のようです。なお

[CollisionModel]
Map/FlatFloor/FlatFloor.mdl

でも動作したので、取り敢えずは存在してるMDLファイルが指定されてればいいようです。

マップのフォルダ名やMDLファイル名は「たむたむちゃぺる」みたいな2バイト文字(だけ)でも問題ありませんでした。


フリーHでも表示させてみましたが、EditData\BG_H_Pos.datへのエントリー追加に加えてdef\MapSelectフォルダへのアイコンファイルの追加が必要でした。

(IDの数字).bmp

という名前のBMPファイルになります。これが無いと場所の選択時に表示されません。

なおマップ選択時のアイコンは、MapList.datやBG_H_Pos.datの登録順に関係無くIDの順で並んでるようです。


あとフリーバトルでも表示させてみました。登録対象の設定ファイルは

quest\ArenaData.dat

だけのようです(暗号化された状態で置いてありますが、編集後再暗号化しなくても支障出てません)。これに

<A>
ID:990001
Name:x_TamChapel/arena.dat
</A>

のようにエントリーを追加します。次に

quest\Map

フォルダの下にArenaData.datに書いた「x_TamChapel」というフォルダを作り、その中に「arena.dat」というファイルを置きます。arena.datは適当なものをコピーしてきてもいいのですが、試しに

[RootPoint]
0

[Area]
0

[EventPoint]
0

としてみました。これで問題無いようです。敵も出ます。

arena.datを入れてあるフォルダは、追加マップデータが入っているMapフォルダ配下のフォルダと同じ名前にしてあります。違ってても大丈夫みたいなんですが、同じ名前のフォルダが無いときにす~るが落ちたことが(一度ですが)あったので、一応揃えた方が良いと思います。

アイコンファイルが無いとマップが選択できないのはフリーHの時と同じで、こちらは

def\ArenaMapSelect

フォルダに追加します。ファイル名も同じ「(IDの数字).bmp」です。なおPNGファイルではアイコンと認識されませんでした。JPEGは試してません。(def\MapSelectフォルダの方はBMP以外確認してません。)


幾つかの追加マップでプレイしたところ、「たむたむちゃぺる」「たむたむ神社」「恋するステージ(焼き付け版)」では床・階段・壁等がそのまま機能していました。が、「例のプール」ではプレイヤーが落下してゆきます。敵はサイズが大きいときは落ちないようなので、プールの壁が全く機能してない訳じゃなさそうです。

一応[CollisionModel]に指定するファイルを、「[ModelFile_Base]と同じファイル」「FlatFloor.mdl」の2パターンで試してみたのですが、特に違いは見られませんでした。例のプールはBG_Models.datの出現位置を多少上げてみましたが、やはり落下していくのでバトルモードに適用されてるかよくわかりません。

[CollisionModel]に指定するファイルで当たり判定を行ってるのはほぼ間違いないと思います。ゲーム附属のデータを見ると壁や床の色がみんな共通なので、色味で判断してるのかもしれません。実験してみないと何とも言えませんが。

あと、街のマップなどで[CollisionModel]のMDLファイルを見ると壁でぐるっと囲まれてます。ちゃぺるみたいな閉所はいいですが、神社などではこれが無いとマップの端から落下し放題になります。なのでフリーバトルに使うなら何らかの当たり判定用MDLファイルを用意すべきかなと思います。(らぶデス4のマップデータなんかはその辺全て揃ってるので、コンバートして登録してみようかなー)


以上、長々と失礼しました。

落ちなくなった

例のプールで当たり判定用のMDLファイルをでっち上げてみたところ、無事機能しました。

「例のプールB.mqo」をベースに床に相当しそうなものを「geo_floor_map_001_01」、それ以外を「geo_wall_map_001_01」というObjectにそれぞれまとめ、水面のObjectを消去したものです(ほぼ)。材質設定は既存の当たり判定用MDLを参考に

"geo_floor_map_001_01" col(1.000 0.502 0.502 1.000) dif(1.000) amb(1.000) emi(0.000) spc(0.000) power(51.20)
"geo_wall_map_001_01" col(0.502 1.000 0.502 1.000) dif(1.000) amb(1.000) emi(0.000) spc(0.000) power(51.20)

としました。色はRGBだと(255, 128, 128)と(128, 255, 128)になります。このMQOファイルをす~るでMDLに変換、マップデータのフォルダにコピーしてMapList.datの[CollisionModel]に指定したところ、プレイヤーキャラも敵キャラも落下せずプールの底を歩くようになりました。

今回床と壁とに一応分けましたが、材質設定が1つだけの当たり判定用ファイルもあったと思うので、Object全部一まとめでもいいのかもしれません。FlatFloor.mdlの色を変えたものとかで実験すると良いかもと思いついたのですが、今できないので、できる状況になったら続きやろうかと思います。もちろん、どなたか実験してみて下さる方がいらっしゃるなら大歓迎です。

当たり判定追記

らぶデスFINAL!で新規追加されたマップでは、当たり判定用MDLの材質の色は白と言うかグレート言うか要するにRGB全て同じ値になってました。オブジェクトの分け方も(名前も)カレマチカノジョ以前とは違っていて、「全体で1つ」とか「マップにあるオブジェクトと追加した壁」みたいな感じです。どうも今までカレカノ以前のマップばかり見ていたようで、気付いておりませんでした。

マップのMDLをそのまま[CollisionModel]に指定してるものもありました(map_room)。これのObjectの材質の色は全部白(255,255,255)になってます。

まだ実験できてないのですが、材質設定で色を付けてなければ、マップのMDLそのままで[CollisionModel]に指定すると当たり判定として機能するように思えます。もちろんテクスチャ設定を省いたりオブジェクトを1つにまとめた方が軽くなると思いますし、これは機械的な作業でできると思います。あとはマップの外周をぐるっと囲む壁を用意してやれば当たり判定用MDLとして必要な要件が揃うんじゃないでしょうか。閉じた部屋のマップなら床だけでもOKっぽいです。

実験中

FlatFloor.mdlの材質の色設定を変えてみてるけど、プレイヤーキャラが落下し続ける(モンスターは落ちるものと落ちないものがある)。ここまで書いてきたことはまだ何か足りないようです。

実験終了?

取り敢えず順番に書いてゆきます。フリーバトルです。

MapList.datでFlatFloor.mdlに対する当たり判定用MDL([CollisionModel]に指定するMDLファイル)として材質をグレーにしたり赤にしたり緑にしただけのFlatFloor.mdlの改変物を指定しみてたのですが、いずれの場合もプレイヤーキャラが落下しました。対戦相手は通常キャラだと落下、モンスターは悪魔、ジャイアント、犬が落下してそれ以外は残ります。

で、色が赤(RGBで255, 128, 128)のやつの外周に壁を追加してみたところ、キャラクター出現時は落下するのですが、落下状態から復帰するとそのまま床(板)の上を歩けるようになりました(今までは復帰した途端再び落下してた)。悪魔などは一緒に落下してそのまま終了となります。色は赤以外でも大丈夫と思いますが試してません。

次にarena.dat(quest\Map\FlatFloor\arena.dat)の[EventPoint]に0だけ指定したところを、

[EventPoint]
1
0.000000,5.100000,0.000000 0.000000,0.000000,0.000000 2 0

の様に書き換えてみました。最初の

0.000000,5.100000,0.000000

がキャラクターの出現ポイントと予測してのことです。すると、プレイヤーキャラクターは落下せずに床の上に出現。ただ相手のモンスター(悪魔とか犬とか)は相変わらず出現と同時に落ちてゆきます。

次にarena.datの[EventPoint]の項目を

2
0.000000,5.100000,0.000000 0.000000,0.000000,0.000000 2 0
100.000000,5.100000,100.000000 0.000000,0.000000,0.000000 2 1

としたところ、今度は相手も落下せずに出現するようになりました。ただ対戦相手1体でしか確認してないので、複数体の場合は[EventPoint]の項目を増やす必要があるのかもしれません。まあとにかく、FlatFloor.mdlが対戦フィールドとして使えるようになりました。

その後Y座標と思われる値を5.1から0にしてみましたが、プレイヤーキャラ・相手とも落下しませんでした。ただ5以上に設定されてるマップが多いようなので、5以上である意味が有るのかもしれません。

ということで、開放状態のマップでは当たり判定が壁で囲まれてる必要がありそうです。また、arena.datも適当に設定されてる必要がありそうです。たむたむ神社ではどちらも無しで大丈夫で、どの辺に境界があるのか判りませんが、基本的には必要なんだと思います。

馬さんの疑問に答えきれてるとは言えないと思いますが、とりあえずこんなところ(当たり判定マップはObjectを1つにまとめて色は赤にする、部屋の中でなかったら壁で囲む、arena.datを適当に用意する)でフリーバトルに使えるようになるかなと。

Re: 実験終了?

のぞく人さん、検証ありがとうございます!

私も他のマップを参考に少し触ってはみたのですが、これはパラメータを端から弄って切り分けするしかなかったですね。おつかれさまでした!
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。