見えるラインと確認できる生産ルールで、オリジナルのファクトリーゲームを始めましょう。架空のリードメサ工房では、エクストラクターがプレスに生タイルを供給し、プレスは完成したパネルをクレードックに送ります。遅いプレスは最終的に入力キューを埋め、エクストラクターを停止させます。
ラインを6ティック実行し、プレスのスケジュールのみを変更します。以下の2つのトレースは、最初のクレートが到着するタイミング、アイテムがどこで待機するか、そしてより高速な処理が結果をどのように変えるかを示しています。
短い生産ラインを配置する

Coffee StainはSatisfactoryを、コンベアネットワークを備えた一人称視点の工場建設ゲームと説明しています。ご自身のプロジェクトでは、生産段階を接続するという広いアイデアを用いて、独自の設備、設定、ルールを持つ小さな空間パズルを作成してください。
グリッド位置(0, 0)に抽出機、(2, 0)にプレス機、(4, 0)にクレードックを配置します。ベルトAで抽出機とプレス機を、ベルトBでプレス機とドックを接続します。各ベルトはグリッド2ユニットにまたがります。抽出機に生材タイル8枚、その他の場所にアイテムがない状態で開始します。
バッファとティックフェーズを定義する
各ベルトは最大2つのアイテムを保持でき、1ティックあたり最大1つのアイテムを配送できます。各受信マシンには2アイテム分の入力バッファがあります。プレス機が動作し、ベルトに空きがある場合、生材タイル1枚を消費し、パネル1枚をベルトBに載せます。ドックは1ティックあたり最大1枚のパネルを消費し、完成したクレートを記録します。
| フェーズ | アクション | 待機条件 |
|---|---|---|
| 1. 抽出 | ベルトAに生材タイルを最大1枚載せます。 | 生材の在庫がないか、ベルトAがすでに満杯の場合。 |
| 2. 配送 | 各ベルトは、ティック開始時にその上にあったアイテムを最大1つだけ配送します。 | 受信側の入力バッファが満杯です。 |
| 3. 圧縮 | 稼働ティックにおいて、生タイルを1つ消費し、ベルトBにパネルを1つ配置します。 | 入力がない、ベルトBが満杯、またはプレスがアイドル状態にスケジュールされています。 |
| 4. ドッキング | ドッキング入力から最大1つのパネルを消費し、完成品クレートを1つ追加します。 | ドッキング入力にパネルがありません。 |

ベルトの配送は同時に適用されます。現在のティック中にベルトに追加されたタイルは、後のティックまで配送できません。フェーズ2中にプールの入力に配送されたタイルは、同じティックのフェーズ3で処理可能です。フェーズ2中にドッキング入力に配送されたパネルは、フェーズ4で利用可能です。これにより、フェーズの順序が再現可能になります。バッファが満杯でもアイテムは削除されません。ベルトはそれを保持し、上流のマシンの出力ベルトが満杯になると待機します。
ボトルネックを追跡する
ベースラインでは、プレスは奇数ティックでのみ動作します。テーブルには各ティック後の状態が記録されています。ベルトとバッファの列は、それらの場所に現在存在するアイテム数を数え、クレートは累積の完成品出力数を数えます。
| ティック | 原材料在庫 | ベルト A | プレス入力 | ベルト B | クレート |
|---|---|---|---|---|---|
| 1 | 7 | 1 | 0 | 0 | 0 |
| 2 | 6 | 1 | 1 | 0 | 0 |
| 3 | 5 | 1 | 1 | 1 | 0 |
| 4 | 4 | 1 | 2 | 0 | 1 |
| 5 | 3 | 2 | 1 | 1 | 1 |
| 6 | 3 | 1 | 2 | 0 | 2 |
ティック6の開始時点で、ベルトAは満杯です。フェーズ2で後に1タイルがプレスバッファに移動されるにもかかわらず、エクストラクターはフェーズ1で待機します。そのため、原材料在庫は3のままになります。エクストラクターの横にその待機理由を表示することで、単一の出力カウンターよりもバックログを診断しやすくなります。

スケジュールを1つ変更して再実行する
在庫、ベルト、バッファ、ティックカウンター、完成品クレートをリセットします。操作するのはPressのみで、各ティックごとに実行します。ティック1から6までの完成品クレートの数は、それぞれ0、0、1、2、3、4です。原材料の在庫は2で終了し、ベルトAには1タイル、Pressの入力は空、ベルトBには1パネル保持されています。
ベースラインでは2個のクレートで完了し、修正後のスケジュールでは4個で完了します。両方の結果は、この架空の6ティックのフィクスチャにおけるルールに従っています。疑わしいバグを切り分けるには、2つのトレースが初めて異なるティックを比較してください。ティック2では、修正後のPressはフェーズ2で届けられたタイルを消費し、フェーズ3でパネルをベルトBに配置できます。
AIにファクトリーフィクスチャを与える
ビルダーには、初期状態とフェーズの順序、およびビジュアルレイアウトを提供します。以下のプロンプトには、両方の受け入れ実行が含まれています。
ブラウザで動作するオリジナルのファクトリーゲーム「Reed Mesa」を作成してください。
抽出機(Extractor)を座標 (0,0) に、プレス機(Press)を (2,0) に、ドック(Dock)を (4,0) に配置します。
ベルトAで抽出機とプレス機を、ベルトBでプレス機とドックを接続します。
各ベルトはグリッド2ユニットの長さをもち、2個のアイテムを保持でき、1ティックあたり最大1個を配送します。
各受領マシンには容量2の入力バッファがあります。
抽出機に生材タイル8個、ベルト・入力・出力は空の状態で開始します。
各ティックについて:まず、スペースと在庫が許せば、ベルトAに生材タイルを最大1個載せます。
次に、ティック開始時にベルト上に存在したアイテムから、各ベルトごとに最大1個を、宛先マシンに空きがあれば同時に配送します。
その後、スケジュールとスペースが許せば、プレス機は入力1個を消費し、パネル1個をベルトBに載せます。
最後に、ドックは入力からパネルを最大1個消費し、完成したクレート1個を記録します。
ベルトに新たに追加されたアイテムは、同じティック内で配送できません。
フェーズ2でマシンの入力に配送されたアイテムは、同じティック内のそのマシンの後続フェーズで使用可能です。
ブロックされたマシンはアイテムを削除せずに待機します。各待機理由と時系列の状態ログを表示してください。
ベースラインのプレス機は奇数ティックのみ動作します。毎ティック動作するオプションを提供してください。
各ティックごとに、生材在庫、ベルトA、プレス機入力、ベルトB、完成クレートをログに記録してください。
ベースラインの期待される行:(7,1,0,0,0), (6,1,1,0,0), (5,1,1,1,0), (4,1,2,0,1), (3,2,1,1,1), (3,1,2,0,2)。
毎ティック動作時の期待される行:(7,1,0,0,0), (6,1,0,1,0), (5,1,0,1,1), (4,1,0,1,2), (3,1,0,1,3), (2,1,0,1,4)。
在庫、すべてのキュー、出力、ベースラインスケジュールを復元するステップ制御とリセット機能を含めてください。
オリジナルのメサ工房アートと、読みやすくキーボード操作可能なコントロールを使用してください。
リセットから両方の実行をステップ実行してください。最終的なクレート総数だけでなく、各ティックでのベルトの個数とプレス機の入力を確認してください。初回ビルドガイドを使用してフィクスチャを調整してください。SEELE AI Game MakerでReed Mesaを構築し、さらにマシンを追加する前にそのログを検証してください。
よくある質問
最初のファクトリーゲームには何台のマシンを含めるべきですか?
ソース、プロセッサ1台、出力ドックから始めます。接続ベルト2本により、待機中のアイテムを観察できる意味のある場所が得られます。Reed Mesaのフィクスチャは3台の機械と6ティックのランを使用するため、レイアウトを拡張する前にすべての状態を確認できます。
生産のボトルネックをどのように表示すればよいですか?
各バッファとベルトの数を、機械の現在の状態と並べて表示します。満杯のベルトがソースをブロックした場合、アイテムを保持し、待機理由を表示します。ティックごとに待機中アイテムの位置を比較し、バックログを生み出しているステージを特定します。
シミュレーションフェーズの順序をなぜ定義するのですか?
フェーズの順序は、新しく生産されたアイテムがすぐに移動できるか、それとも後のティックまで待たなければならないかを決定します。固定された順序により、トレースを再現可能にし、エッジケースのデバッグを容易にします。各ティックの開始時に存在していたアイテムを指定してください。
より高速な機械スケジュールをどのようにテストすればよいですか?
すべてのバッファとカウンターをリセットし、プロセッサのスケジュールのみを変更して、同じ数のティックを実行します。アップグレードや新しいリソースを追加する前に、完全なトレースを比較します。架空のフィクスチャでは、2つのスケジュールはティック6までに異なるクレート数を生み出します。


