チュートリアル: 初めてのハック - Rickisthe1/CoilSnake-m2-basic GitHub Wiki

最初のハック

プログラミングを学ぶとき、多くのプログラマーが最初に書く標準的なプログラムは「Hello World」で、画面に「Hello World!」と表示させるものです。ワクワクしますよね?

でも、実際にはつまらないものです。

なので、今回はそれを少し工夫して、もっとやりがいのあるものにしましょう。

ハックの計画

計画なしのハックは、ハンドルのない電車のようなものです。動くことは動きますが、もし電車の進行方向を決めるレバーや操作方法がなければ、どこへ向かっているのか分からないという状況になります。結局、どこへ行くのか分からず、長期的には楽しめないことに気づくかもしれません。だから、まずは少し考えましょう。

注記: こちらの[JHackチュートリアル](http://starmen.net/pkhack/tutorials/prototype/section1.php)には、役立つアドバイスがいくつか書かれています。JHackは古くなっていますが、その中でも特に「ルール3」は今でも有用です。

MOTHER 2はRPGですから、画面に「Hello World」と表示するのではなく、NPCが「Hello World」と言うシーンを作るのが良いでしょう。つまり、ゲーム内のどこかでキャラクターにこのセリフを言わせる必要があります。これ自体は簡単です...単にセリフを差し替えるだけです。しかし、それでは面白くありません。代わりに、そのキャラクターが本来いるべきではない場所にいるとしたらどうでしょうか?例えば、ゲームの最初でネスの家にいるロボットネス?これでいきましょう。

さて、やるべきことは以下の通りです:

  • ROMをデコンパイルする
  • ロボットネスのスプライトを持ったNPCを作成し、そのNPCにセリフを追加する
  • セリフをCCScriptファイルに書く
  • Nessの寝室にそのスプライトをマップエディタ(EbProjEdit)で追加する
  • 変更を新しいROMにコンパイルする

簡単そうでしょ?それでは、始めましょう!

プロジェクトの作成

まず、まきへびドライをインストールし、MOTHER 2のROMを用意する必要があります。ROMの取得方法についてはお教えできませんが、インターネットで簡単に見つかるでしょう。ただし、怪しい広告やリンクをクリックしないようにしましょう。

  1. まきへびドライを開いて「Decompile」タブを選択します
  2. ROM:の横にある「Browse...」ボタンをクリックします
  3. MOTHER 2のROMを選択します
  4. 「Output Directory:」の横にある「Browse」ボタンをクリックします
  5. プロジェクトを保存したい場所を選択します(ここにプロジェクトのすべてのファイルが保存されます。良い場所を選んでください!)
  6. 「Decompile」ボタンをクリックします

これらの手順を説明するビデオウォークスルーはこちらです:[動画リンク](https://youtu.be/qxIq2JK-4Ms)。

まきへびドライプロジェクトとは?

まきへびドライは、ROMを直接変更するのではなく、コンピュータ上のファイルとして保存されたプロジェクトを使って作業します。各まきへびドライプロジェクトには専用のフォルダがあり、以下のファイルが含まれます:

  • Project.snake(まきへびドライが内部で使用するファイル。これを編集する必要はありません)
  • .ymlファイル(ゲームからのデータを含んでおり、テキストエディタで編集可能)
  • .ccsファイル(ccscriptサブフォルダ内で、ゲームのスクリプト言語にテキストを挿入するためのMOTHER 2専用フォーマット。テキストエディタで編集可能)
  • .pngファイル(ゲーム内のグラフィックを含み、画像エディタで編集可能。多くは「インデックス化」されており、インデックス画像として保存できるエディタが必要)

ゲームのリソースをこれらのファイルにデコンパイルすることで、個別に編集できます。さらに、まきへびドライだけがROMにアクセスするため、ハッキングツールによってROMが破損して進行状況を失う心配もありません(古いハッキングツールではよくあった問題です)。

ファイルの編集

ほとんどのファイルはテキストファイル(.yml、.ccs)ですので、これらを編集するにはテキストエディタが必要です。Notepadでも編集できますが、Notepadは使い勝手が悪いため、プログラマ向けのテキストエディタ(Notepad++など)をインストールすることをお勧めします。Wordのような文書エディタは使用しないでください。これらはテキスト編集に適しておらず、かなり苦労することになります。

NPCの差し替え

すべてのNPCはnpc_config_table.ymlで設定されており、ID番号で識別されます。このテーブルに新しいエントリを追加することはできませんが、既存のエントリを変更することは可能です。マップエディタ(後述)では「新しいNPC」を作成しても、このテーブルのエントリへの新しい参照が作成されます。

現在使用されているNPCはすべて使い回すことができ、ゲーム内で複数の同じNPCを配置しても問題ありません。1度に同じNPCが複数表示されなければ大丈夫です。

npc_config_table.ymlをテキストエディタで開き、NPC #744のエントリを探して以下のように変更します:

744:
  Direction: down
  Event Flag: 0x274
  Movement: 708
  Show Sprite: when event flag set
  Sprite: 195
  Text Pointer 1: $c7db3f
  Text Pointer 2: $0
  Type: object

次のように変更します:

744:
  Direction: down
  Event Flag: 0x0
  Movement: 605
  Show Sprite: always
  Sprite: 5
  Text Pointer 1: robot.hello_world
  Text Pointer 2: $0
  Type: person

いくつかの変更点について説明します:

  • イベントフラグは0x0に設定しました。これにより、スプライトの表示をイベントフラグで切り替える必要がなくなります(もちろん、必要ならイベントフラグで切り替えることもできます)。
  • 「Show Sprite」を「always」に設定しました。これでスプライトは常に表示されます。
  • 移動コードを605に設定し、ロボットはその場で立ち止まります。
  • スプライトを5に設定しました。ロボットネスのスプライトは005.pngなので、この設定です。
  • NPCの「Type」を「person」に設定しました。これにより、「person」タイプのNPCは話しかけることができるようになります。「object」タイプのNPCは「チェック」しなければなりません。
  • 最後に、Text Pointer 1は新しいCCScriptファイルであるrobot.ccshello_world部分を指します。

変更後は、テキストエディタでファイルを保存してください。保存しないと、まきへびドライやEB Project Editorは変更を認識しません。

NPCの準備ができたので、マップに配置します!

マップの編集

このステップにはEB Project Editorが必要ですが、最初のハックでは完全に使いこなす必要はありません(後で詳しく説明します)。まきへびドライの「Tools」メニューからEB Project Editorを開くことができます。このツールはJava Runtime Environment(JRE)が必要で、まきへびドライには含まれていないため、別途インストールする必要があります。

初めて開くと、小さな初期画面が表示されますが、何もできません。まず、フォルダアイコンをクリックして、プロジェクトのProject.snakeファイルを開きます。すべてが読み込まれるまで少し時間がかかりますが、準備