シナリオシステム
シナリオシステムでは、セーブデータをもとにしたMODを作成することができるため、MODを別途インストールする必要はない。これにより、サーバーサイドでスクリプトを作成したり、バニラのフリープレイとは別の目的を提供したりすることができる(実際はチュートリアルキャンペーンのようなシナリオになる)。
シナリオは、実績を隔離するためのMODとみなすことができる。
作成
シナリオ作成は、マップエディタから始まる。マップエディタでは、作者が作成したマップをシナリオとして保存することができる。これにより、プレイヤーはシナリオに特別なスクリプトを追加することができる。
シナリオを作る方法は2つある。
- マップエディタから。
- scenariosフォルダ内に新しいフォルダを作り、control.lua を追加する。
シナリオ・セーブデータ・MODの違い
シナリオ・セーブデータ・MODには若干異なるところがある。ある意味、シナリオは両方の要素を取り入れている。
- シナリオは、MODと異なり、ゲームにプロトタイプを追加することはできない。シナリオで許可されるスクリプトは、control.luaに記述するスクリプトのみである。
- シナリオは、供給シナリオのように、マップを事前に作成できるが、フリープレイのようにマップ生成でマップを作り出すこともできる。
- シナリオは、MODと異なり、クライアント側にインストールする必要がない。これにより、参加プレイヤーにMOTDを表示するなど、サーバー側でゲームプレイに小さな変更を加えることができる。
- シナリオは、通常のセーブデータと異なり、異なるフォルダに保存できる。
- シナリオは、キャンペーンがそうだったように、物語を作ることができる。
シナリオを遊ぶ
ゲームには最初からいくつかシナリオが付属している。シナリオを遊ぶには、シングルプレイ -> ニューゲーム をクリックし、ユーザーシナリオか、基本ゲームやMODに付属するシナリオを選ぶ。
遊ぶシナリオを選択し、セーブを行うと、通常のセーブデータが作成される。このセーブデータには、マップ本体と、シナリオが提供するcontrol.Luaスクリプトが含まれる。これは、script.datとcontrol.Luaを削除することで、通常のセーブに戻すことができる。シナリオとセーブの絡み具合によっては、セーブデータが壊れてしまう可能性があるので、自己責任で行うこと。
シナリオのインストール
他のプレイヤーが作ったシナリオは、プレイヤーのユーザデータディレクトリ内の、scenarios フォルダにインストールできる。これで、シナリオメニューから選択して遊ぶことができる。
MODによって追加されたシナリオも、シナリオメニューに表示される。
シナリオのファイル構造
シナリオはデータライフサイクルの設定段階とデータ段階にアクセスできない。つまり、control.luaファイルによるランタイムスクリプティングに完全に依存している。シナリオには description.json を含めて、マルチプレイヤー対応にすることもできる。
MODにシナリオを込める
MODポータルで配布するには、シナリオをMODに込める必要がある。
MOD内に "scenarios" フォルダを追加し、そのフォルダにシナリオをコピーする。マップエディタでシナリオを作成していた場合、ユーザデータディレクトリ内の scenarios フォルダに保存されている。
description.json
シナリオフォルダ内のJSONファイルで、以下のフィールドを持てる。
例
{
"multiplayer-compatible": true,
"order": "d"
}
シナリオ名と説明の翻訳
シナリオ名と説明は、シナリオ内のロケールファイルを使って翻訳されて、「新しいゲームを開始」のシナリオ選択に表示される。キーは scenario-name
と description
であり、ともに [カテゴリ]は使わない。freeplay/locale/ja/freeplay.cfg は以下のようになっている。
scenario-name=フリープレイ description=あなたの任務はロケットを宇宙に打ち上げることです。何もないところから始めて、自動化を用いて準備を進めましょう。\n現住生物から身を守ることも忘れないでください。\n[font=default-bold]これは、Factorioの一般的なプレイモードです。[/font]