銀河連邦のお部屋

管理人の雑記に等しいブログ。

2018.8.18~
ユニーク訪問者数: 036612
ページアクセス数: 057915

RTMアドオンの作り方(0) ~前提知識を身につけよう!~

Minecraft

2019-09-06 19:30:00 公開 2019-09-06 19:25:17 最終更新


Minecraftの中にリアルな鉄道を走らせることができるRealTrainMod。そのアドオンの作り方が意外と解説書が少ないので、この際作ってみることにしました。是非ともご覧ください。わかりやすくしたつもりです。


どうもご無沙汰しております、銀河連邦です。前回の記事投稿から実に半年が経過してしまうという事態となっています。仕方ないですね。ほかにもいろいろやっていたもので。

さて、今回はMCreatorからはいったん離れまして、RealTrainModに関する記事となります。

詳しいことは公式のガイドラインにもあります

いきなりこんなこと言うのもなんですが、RTMの製作者様が公式でアドオンの作成ドキュメントを製作されています。…と言いたいところなんですが、掲載サイトのデータベースが落ちているらしく現在アクセスできない状況となっております。というわけで、「ガイドライン見てわかんなかったらこっち見てね~」というスタイルが通用しません!!!!! 悲しい

そうやって解説をおろそかにすると誰もわからないダレトク案件な記事になりかねないので、ゆったりのんびりしっかり解説していきましょう。

モデルパックの構成について

インターネットに散らばるパックは大体…というかすべて「ZIPファイル」で提供されていますよね? つまり、モデルパックを作る際は最終的にZIPファイルにする必要があるのです。逆を言えば、ZIPファイルが作れるハードウェアなら「たとえスマホであってもモデルパックを作ることができる」わけです。夢が膨らみますね。

さて、モデルパックは使う際はZIPファイルを「Mods」フォルダにぶち込んで終わり!! ちゃんちゃんといった感じになりますが、その中の構成は見たことがないはずです。まあ改造している方は見ていらっしゃるとは思いますが、そんな方は前提知識なんてわかっているも同然なはずなのでほかの記事をご覧ください。

で、肝心のパックの構成は必ず以下のようになっていると思います。というかこうでないと認識しません

まず、ZIPファイルをルートディレクトリとして、その子に「Assets」フォルダを作ります。AssetsフォルダはJavaでModdingしたりリソパを作ったことある方ならなじみありそうな気がしますが、リソースの保存場所となります。

そのフォルダの子に、「minecraft」というフォルダを作ります。「このリソースはMinecraftのものです」と宣言しているわけですね。余談ですがJavaでModdingするときはここを自分のMod名にします。

ここまではリソパとして認識されるために「必要最低限」やっておくものです。この子供に、「models」や「textures」、「sounds」…などを作成するとそれを認識してくれます。

models

このフォルダには、信号機や電車、線路などの3Dオブジェクトファイルとそれを定義するJSONファイルをぶち込みます。JSONに関しては後述します。

textures

このフォルダには、使用するテクスチャをぶち込みます。テクスチャはさらにサブフォルダとして「信号機」「電車」「標識」などに分かれます。これはそのアドオンを作成する際に改めて記します。

sounds

遮断器などで音を出したい場合に使用します。この中にoggファイルを入れることにより認識します。また、この中にsound.jsonという定義ファイルを作らないと認識しませんが、もうめんどくさいのでこの辺りはここでは割愛します。


ほかにも「scripts」とかあるんですが、ここの記事をご覧いただいている方にはまだまだ上級者過ぎる機能なので(僕自身も理解していません)割愛させていただきます。とりあえず開発環境を整えるために、適当な場所にこのようなファイル構成を作っておくことをお勧めします。

対応している仕様について

いきなり作り出して「ダメじゃん動かないじゃんなんだよこれ」とか文句をたらたら言われる前に、先に仕様を説明してしまいます。ざっくりしか書かないので、詳しくはそれぞれの詳細で改めて確認してください。

モデルパックの仕様

モデルパックについてですが、3Dモデルとして認識できるものはMQO、OBJ、NGTなんたらとなっています。僕はメタセコイアを使用しているので、MQO形式における制約をいくつかご紹介します。

その他の形式についてはわかりかねますが、MQOファイルは新版で保存しないと、旧バージョンでは認識しないことが多いです。これらを意識してモデリングをしてみてください。


※不確定情報: おおむねMQOの場合は80くらいで1ブロックの量になるっぽいです

テクスチャの仕様

これはRTMの仕様というか、Java自体の仕様ですが、テクスチャのサイズは2の累乗で作成しておくと幸せになります。この方がメモリ展開しやすく、重くなることをやや防げます。もちろんですが、あまりにも大きすぎるテクスチャだと落ちます。512くらいがベストなのかしら。

また、拡張子は「PNG」のみ対応です。アルファチャンネルにも対応しているので、透過されたテクスチャも読み込むことができます…が使うのかしら。

テクスチャがおかしいと、魔の市松模様になるのでご注意ください。

サウンドファイルの仕様

OGGであれば特に問題はないようです。サンプリングレートとかビットレートとかはわかりません。

JSONについて

さて、モデルパックの設定に関して一番死にそうになるだろう「JSON」ファイルに関する説明を簡単にします。ここをガチで解説しようとするとWikiPediaのようになるので、ざっくりとしかしません。これでわからなかったらあきらめてググってください。

JSONのルール

JSONは以下のルールによってデータを設定します。

  1. 始まりと終わりは「{}」で囲む。
  2. データは「"項目名": データ,」と入力する。ただし最終行の場合のみ「,」を省略する。
  3. 文字列は「""」で囲む。

これだけなんです。実際見てみれば簡単です。ただ1文字でも間違えるとエラーを吐き出すので、慎重に見ていかなければなりません。JSONを作成する際は「Windowsのメモ帳」とかでやると詰むので、テキストエディタを入れましょう。WindowsならSublime Text Notepad++ Atomなどがおすすめ。Androidの場合は「Jota++」をお勧めしています。iOSはiEditorとかがありますが今もあるのかどうかは不明です。

JSONでよく発生する間違い

絶対打ち間違いとかでいろいろなエラーが発生します。そんな陥りやすい原因を少しずつ見ていきましょう。

最終行なのに「,」をつけてしまう

これではJSONが永遠に終わりません。JSONを解析するシステムは馬鹿なので 臨機応変な対応ができないので、文法に少しでも誤りがあると「これはJSONじゃなーい」とエラーを吐き出して仕事放棄してしまいます。

JSONでは「,」をデータの区切りとして使いますが、これを省略した行を見つけると「あ、ここで終わりなんだね。」と判断して読み込みを終了し、JSONの終わりを判断します。ですが「,」が最後まで挿入されていると、システムは「まだ続きがあるのね」とファイルの最後までデータを探し続けます。もちろんありません。したがって最後までたどり着いた時点でシステムに「終わりがないのに終わりを迎えたぞどういうこっちゃ」とエラーを吐かれ怒られます。

カッコがない

これはJSONではないただのテキストファイルです。

JSONであるためには、最初と最後を必ず「{}」で囲まないといけません。囲まれていないファイルはただのテキストファイルです。JSONだということをそもそも認識してくれません。必ずカッコは対応させましょう。

文字列を囲んでいない

文字列は絶対に「"」で囲みましょう。プログラムの世界では囲まない場合は命令として処理されたり、定数として処理されますが、JSONではこれは「予約語」として認識されます。もちろんappleなんて予約語は存在しないので「なんじゃこれ」と怒られます。

カッコをつけすぎ

これはRTMのアドオンを作る場合には遭遇しないと思いますが、JSONファイルを作る際に気を付けてほしいことです。この「ネスト」というのは、「カッコの中にカッコの中にカッコの中にカッコの中に(以下略)」という状況のことを指します。ネストはある程度必要なこともありますが、何個も何個も付けてしまうとみにくくなるばかりかカッコの付け忘れエラーが頻発します。過度なネストはやめましょう。どうしてもしたい場合は、せめてインデントをつけてわかりやすくしましょう。(インデントはいわばTABキーを押して段落分けする感じです)


と、JSONについてのブログ記事でほとんど終わってしまいました。次回はRTM篇の場合「信号機の追加」についてやろうと思っています。…え?「電車の作り方を教えろ」…?

電車作ったことないのでわかりません。

というか電車を作るにも電車に関しては「これはとーかいどーせんだね!!」くらいしかわからないので今のデフォルトアドオンで事足りるんですよね()

というわけで、電車に関してはほかの方のものとか、公式のガイドラインをご参考ください。


それでは、次回の記事をお楽しみに♬ わかんないことがあれば、コメントか「@Gingarenpo」(Twitter)までどうぞ。


コメント


コメントを残しませんか?

※コメントを残す際にはいくつか注意事項があります。

削除キーは現時点では意味を成しませんが、将来意味を成したときに使いますので4桁で入力してください。

送信確認画面は表示されないので、しっかり確認してから投稿してください。間違えたりした場合は管理人に連絡するか新規にコメントで間違った旨の記述をしてください。管理人が見次第、削除・修正していきます。

現状1スレッドに1返信しか返せません。つまり、2重以上の入れ子ができない仕様となっています。お手数ですが親スレッドの「返信」をクリックして返信するようにお願いいたします。またページの先頭に戻ってしまいますが、更新しない限りそのスレッドに対する返信を入力できるので(見出しが変わっているはずです)、普通にコメント欄に入力して送信すると返信したことになります。なんかおかしかったら管理人へ。

名前:

コメント:

削除キー:

最新の記事

RTMアドオンの作り方(0) ~前提知識を身につけよう!~ 公開日: 2019-09-06 19:30:00

最新のコメント

muさんが記事「【Mcreator】Mcreatorの使い方(1) ~ブロックを作ってみよう!」に2019年10月27日 7時28分21秒にコメントを投稿しました。

カテゴリー

カテゴリーなし (1)

Minecraft (4)

PC周辺 (0)

管理人の戯言 (1)

その他 (0)

広告だ~よ~