Modding

提供:Noita Wiki
ナビゲーションに移動 検索に移動
This article is a stub. You can help Noita Wiki by expanding it.

現在MOD製作に関しては日本語の情報が殆ど無く、MOD制作者の編集者もいないため、英語版ページen:Moddingの閲覧をオススメします。
また、NoitaのDiscordサーバー(英語)にもModdingチャンネルが存在するため、併せてご参照下さい。

はじめに

まず、"Noita\tools_modding\READ_ME_FIRST.txt"を見つけてください。
READ_ME_FIRST.txtの指示に従い、"data_wak_unpack.bat"を実行すると最終的にNoitaのリソースが出力されたAppDataのフォルダが開きます。
"Noita\mods"フォルダに作成されたexample modと展開されたリソースを参考にmod作成を行ってください。


"data_wak_unpack.bat"と一緒にコピーした"noita_dev.exe"を実行することでログ出力ありのデバッグ環境で試すことができます。
メニューから"Mods (experimental)"を選択して、作成したmodを有効にして"Start a new game with mods active"を選択してください。


スクリプトはluaで書かれており、変数はXMLに保存されています。
modの作成には、luaの完全な理解が必要です。

基本情報

ファイル構成

最低限、mod.xmlが必要です。mods/mod_id/mod.xmlとなるように配置します。
mod.xmlに記載した内容がゲーム画面のMod選択時に表示されるテキストになります。
mod.xmlと同じディレクトリにinit.luaが存在する場合、実行されます。OnPlayerSpawned()などいくつかのイベント関数が定義されています。

mods/data/以下に配置されたファイルは、ゲームのデフォルトのファイルを上書きします。
主に画像ファイルや音楽ファイルなどを置き換えたいときに使用します。

"data_wak_unpack.bat"を実行した際に作成されるexample modや標準modのstarting_loadouts modを参考にしてください。


イベント定義

以下のイベントが定義されています。

  • function OnModPreInit()
  • function OnModInit()
  • function OnModPostInit()
  • function OnWorldInitialized()
  • function OnWorldPreUpdate()
  • function OnWorldPostUpdate()
  • function OnPlayerSpawned()

イベントは、ゲームを途中でセーブして再開するときなどに二重に呼ばれるのを防ぐために、適宜GameHasFlagRun・GameAddFlagRunを利用してください。

他ファイルを呼び出す

ゲーム標準の関数を呼び出したり、処理を複数ファイルに分割したりするために以下の関数が定義されています。

  • dofile
  • dofile_once

できるだけdofileよりdofile_onceを利用してください。

ルールを置き換える

変数の変更や属性の追加、関数の上書きを行うために以下の関数が定義されています。

  • ModDevGenerateSpriteUVsForDirectory
  • ModLuaFileAppend
  • ModMagicNumbersFileAdd
  • ModMaterialsFileAdd
  • ModRegisterAudioEventMappings

ModLuaFileAppend("data/scripts/a.lua", "mods/mod_id/scripts/b.lua")とすると、b.luaの内容がa.luaの最後に追記されます。

外部リンク