FactorioはMod作成を簡単に行えるようになってて、ゲームのModを始めて作成したい人にもオススメ。
FactorioがMod作成を簡単に行える理由
FactorioのModは全てゲームのModディレクトリに生かzipの状態で配置される。そのため、人のModの中身を見てコードを参考にする事がとても簡単。中身が見れないModはない。人にソースコードが見られる事が前提なので、Githubでpublicに公開されているModも多い。
他のゲームでは、コンパイルされたパッケージで配置されるものも多い。そのようなゲームだと人のコードを参考にする事は難しくなるし、非公開が前提なのでGithubに上げている人も少なくなる。
Luaで公式のAPIを使用するだけでModが作れる。そのため、ゲーム自体とテキストエディタだけでMod作成は完結する。Mod作成にUnityやUnreal Engineの使用が必要になるゲームも多いが、まずその利用方法を勉強するだけでも大変そう。
開発支援系のツールが便利。FactorioのModにはMod作成を便利にするModがある。後述。Visual Studio Codeには、FactorioのMod作成支援用の拡張機能がある。
Mod作成時に便利なリンク集
Visual Studio Codeのデバッグ拡張機能
APIのドキュメントがVScodeから確認できたりデバッグボタン押せばFactorioが起動したり、ブレークポイントも使える。
Mod作成支援Mod
Lua API Event Trace
ゲーム内でEventを出力させるもの。Eventをトリガーにして機能を追加したい時など、実際に発生しているEventを確認できるので便利。
Lua API global Variable Viewer (gvv)
各Modの永続化したいデータはglobalというテーブルの中に設定できる。それらをゲーム内で表示できるようにするもの。表示させたいModのcontrol.luaの最後に if script.active_mods["gvv"] then require("__gvv__.gvv")() end
を追加することで、そのModの変数を確認できるようになる。参考にしたい他人のModのcontrol.luaにもとりあえずこれを突っ込むとコードを理解しやすくなってオススメ。
その他のリンク
- Factorioのディレクトリの構造
- Modの構造
- Mod作成のチュートリアル
- Prototypeの一覧
- API ドキュメント
- GitHub - wube/factorio-data: Tracks changes of the lua prototype definitions in factorio inbetween releases.
- Data.raw - Factorio Wiki
Modの翻訳
Modの作成とはちょっとズレルけど。
FactorioのModの翻訳は、locale/ja/*.cfg
のようなパスにiniに似た形式で配置する。
他人のModを翻訳したい場合の主な2パターンは、GithubやsourcehutにPRを送る方法。あと翻訳プラットフォームのcrowdinに対応しているModもある。このcrowdinのプロジェクトには複数のModが登録されていて、ここに訳を追加すると週一ぐらいで自動的にGithub側へPRが飛ばされる。割と多くのModがこのプロジェクトに対応させてたりするので、まずはここで探してみるのがいい。
FactorioのMod作成で難しいところ
グラフィックを追加する事は難しい。Factorioは3Dのスプライト画像を2Dのアニメーションに変換してる。特にアニメーションが必要なグラフィックはそれを作る事自体が大変。特にキャラクターの見た目を入れ替えるのはかなりの労力。簡素なスタイルで簡単にグラフィックを追加できるRimworld等とは対照的。
個人的なMod開発環境の紹介
自分はWindowsのゲーミングPCを持っているが、ゲーム以外の開発や基本的なパソコンの用途ではMacを使っている。
Modを作成しているときはデバッグなどのために、そのModを実際にゲームに追加してテストプレイしながら作成する形になるが、それに使うFactorioのゲーム自体は、開発用のセーブファイルだけがある状態のFactorioを使いたいため、通常プレイのFactorioとは別なものにしたい。
Facotorioが良いのは、まずWindowsに加えてMacとLinuxに対応している点とsteam以外にも、公式で単体販売がされている点。自分は通常のプレイではWindowsでsteamのFactorioをプレイしているが、Mod作成時は、公式サイトで買った単体のFactorioを起動して使っている。MacでSteam版を動かしてもいいが、Steamクラウドを切ったりしておかないとWindowsの方と同期して面倒なことになる。完全な通常プレイと開発環境の分離ができて便利。