- Factorioは工場を作って作り直して作り直して作り直すゲーム
- "作り直したくない"って思わないように設計しよう。
- "作り直したくない"って思わないようにするにはどうするか?
- 新しいのを作って乗り換えるのを簡単にする
- "既存の工場を使い回す"のが常に選択肢になるように設計する。
- よくある形じゃん
- Main busの鉄道版じゃん
-
工場の位置の自由度
- →"作り直し"のコスト軽減
- Main bus:
- Bad: ベルトには上流下流の概念
- Cost: ベルトを敷き直さないといけない, 工場の位置関係がそれなりに制約される
- Railway MSA:
- Good: 線路には上流下流の概念がない
- 複線にすれば、もう自由自在
-
新工場への移行(Migratability)
- →"作り直し"のコスト軽減
- Main bus:
- 上流下流が変わるとベルトの敷き直しがいる
- Railway MSA:
- 列車の停車駅を変更するだけ。
-
流量調節が容易
- →運用の自由度
- Main bus:
- 下流にアイテムが行きにくい
- Mapから流量調節ができない(splitterの優先順位が変えられない)
- Railway MSA
- だいたい均等に行き渡る
- 回路でダイヤを制御すると優先順位付けられる
- ダイヤはMapから変えられる。(回路はできないけど)
- 交換可能性 (Optimizing for replceability)
- 簡単に建替えができるから、最初は最適解を意識しないでもよい。
- →工場長の設計に対する心理的ストレスの軽減
- 簡単に建替えができるから、最初は最適解を意識しないでもよい。
- 合成可能性 (Composability)
- 「とりあえず動けばいい」が可能
- 既存の工場の使い回しができる。既存の実装の隠蔽化。
- スケール (Scaling)
- 生産量が足りないと思ったら工場コピペして駅を作るだけ。
- 気分が乗れば特化工場を作っても良い
- 列車がたくさん走っててMapが楽しい
- 🚋💨🚋💨🚋💨
- デバッグが難しい (Debuggability)
- 「XXXが生産されない、なぜ?何が足りない?」の調査が難しい。
- 工場間の依存グラフを脳内に入れる必要。
- Alertを雑に設定した場合、"クリスマスツリー現象"が発生する
- 雑記: クリスマスツリー現象って英語文献で見ないんだけど何って言うんだろ…?
- Suggestion: 全体の依存関係を理解し死活/流量監視を行うSupervisor
- 列車だらけになってダイヤ管理が超大変
- Suggestion: Buffer駅の作成, O(NM)をO(N+M)にしよう。
- 広い敷地が必要
- 各加工工場の稼働率を100%未満にすべきので、デッドスペースがどうしてもできる。
- 駅って意外とスペース食うのよね。
- 在庫を大量に持つので汚染がやばい
- 渋滞
- 🚋💦🚋💦🚋💦
- 轢死
- 🏃💥🚋💨
- 鉄道までmain bus方式でしのぐ
- Main busを列車IO駅に接続
- 列車IO汎用工場を作成
- 再利用可能な形で設計
- 技術解禁とともに新たな列車IO工場を作成し、古いのを陳腐化(deprecate)
- ex. 電気炉
- 電気炉ができた
- 電気炉の列車IO精錬場を作成
- Main bus駅発着をやめて電気炉精錬場駅に変更
- Main bus駅の撤去
- 最適化がしたくなったら、汎用工場を使わない専用工場の作成
- とりあえず動く、が常にできる
- Done is better than perfect.
- 飽き防止
- 気分が乗れば特化工場を作って最適解を目指せる
- めんどくさければ汎用工場でいい