Kohara's Blog

KoharaKazuya
職業はプログラマーです。趣味がプログラミングです。Web 技術が好きで、中でもフロントエンドの JS, HTML, CSS が好きです。得意なのは TypeScript, CSS, AWS, シェル芸です。

Factorio でバッテリー式機関車の MOD を作った

そこそこ前から Factorio というゲームにハマっている。

このゲームの追加コンテンツを作り、公開した。

作ったもの

Battery Locomotive というバッテリー式機関車を追加する MOD (日本語での説明)。

プレイ画面のショートムービー

詳しい内容や作ったモチベーションなどはリンク先に書いている。

作り方

公式で MOD の基盤が用意されている (すごい)。

MOD の作り方・チュートリアルは Factorio 公式 Wiki の Modding ページ に詳しく書かれており、わかりやすい内容となっている。 オシャレな感じのドキュメントではないが、テキストの内容は一流のドキュメントだいう風に感じた。

Lua というプログラミング言語を使って MOD を書く。Factorio 用の API が公開されている。

MOD はただの 1 つのディレクトリ、またはそれを ZIP 化したものであり、特定のディレクトリに配置するだけで作れる。 ディレクトリ内に特定のファイル名で配置すると Factorio によって読み込まれる。

完成した MOD は Factorio MOD Portal にアップロードすることで公開できる。 公開した MOD はゲーム内の MOD メニューからインストールできる。

作った感想

実のところ「Factorio の MOD を作るか〜」という感じで、MOD を作ること自体を目的に始めたので、何を作るかという部分で割といろいろ考えた。 Factorio というゲーム、それ自体がよくできていて足りないとか変えたい部分が無さすぎる。 MOD のアイデアは 4 つほど出したがそのうち 3 つはボツになった。

公式・コミュニティーのサポートが手厚くてかなり簡単に作れた。 昔 Minecraft で MOD を作っていたことがあったが、あちらに比べると公式が MOD サポートしているというのはやはり大きい。Minecraft の方も Forge のおかげでかなり楽になったが……。

ドキュメントとして チュートリアルMOD 構成Lua APIプロトタイプデータ あたりを押さえておけばほぼどんなものでも作れる気がする。

Lua というプログラミング言語は慣れておらず若干戸惑う部分もあるが、すぐに慣れた。 割と素直だと思う。リストの扱いがちょっと変わっているが。

Lua は速いらしいが、スクリプト言語側で 60 fps で呼び出される処理を書くのは抵抗感があった。16 ms といえば結構長いが、当然全部使っていいわけもなく速い方がいい。 自分が MOD で遊んでる感じ特別重いという気はしなかったので、まあ問題ないのだろう。

VS Code でデバッグ環境を整えると楽。これ 作った人凄い。

ゲーム内のデバッグメニュー (F5) とか Prototype Explorer (Ctrl+Shift+E) とか活用すると便利。

英語を書くのがちょっと億劫だった。通じてるんだか通じてないんだかわからない。 でも流石に MOD Portal で公開するなら英語にしておかなきゃな、と思って書いた。

MOD の内容としては、機能はシンプルで、わかりやすく、Factorio 自体に馴染んだ感じのものができたので満足している。