Alt-F4 #65 - Unreal Engine 5でのFactorio可視化ツール
(alt-f4.blog)- Factorioの基地を新たにプレイするためのツールではなく、既存の2D基地の動作をUE5の3D空間で見て回る実験プロジェクト
- アセット制作はゲームスプライトを基準に、Cinema4Dでのモデリング、Photoshopでのテクスチャ制作、FBX書き出し、UE5でのシェーダー適用という順で進行
- FUE5 exporter modがFactorio内部データをJSONとして書き出すと、FUE5が建物の種類・向き・ケーブル接続を読み取り、基地を視覚的に再構成
- ベルト・列車・物流ロボットはUE5のブループリントとスプラインを活用し、列車はFactorioが事前計算した経路を取り込んで移動
- 大規模な基地ではFPS低下とブループリントイベントの不安定さが発生するため、ポリゴン、テクスチャ、パーティクル、on-tick更新、LODを削減して30〜60 FPSを目標に最適化
FUE5の目的
- FUE5はFactorio in Unreal Engine 5の略で、Factorioの2D世界を3D空間で可視化する実験プロジェクト
- 3DアーティストのHurricaneとFactorioモッダーのNukeが2023年1月10日から約5か月かけて制作
- Factorioの基地を取り込み、動作を視覚的に再現する3D可視化環境であり、ゲームプレイは含まれない
- ユーザーは自分の基地の周囲を3D空間で飛び回りながら見て回れる
アセット制作とUE5統合
- Factorioの組立機械やインサータのようなアセットは、ゲームスプライトを基準に3Dモデルとアニメーションを新たに作る必要があった
- 制作パイプラインは次の順で構成される
- Cinema4Dで3Dモデリング
- Adobe Photoshopでテクスチャ制作
- Cinema4DからFBX形式で書き出し
- Unreal Engine 5に取り込んだ後、ガラス、金属、煙突の煙といったシェーダーを適用
- ベルト、列車、物流システムのような中核ロジックは、UE5標準のブループリントノードシステムで実装
- 動く列車やベルト上のアイテムの整列を合わせるには正確なサイズの3Dモデルが必要だったため、モデリングの大半を終えてからシステムロジックを作成
- Factorioの基地をゲームから直接書き出してUnreal Engine環境へ取り込めるようになり、UE5内で手作業で基地を作る時間が大幅に減少
FactorioデータをFUE5へ取り込む方法
- 構造物システムは、Factorio内で建物を配置する方法に近い形で構造物を生成
- FUE5 exporter modがゲーム内部データを読み取り、JSONファイルとして書き出す
- 建物の種類
- 建物の向き
- ケーブル接続
- FUE5はこのJSONファイルを読み込み、実際の基地の構造と車両の動きを視覚的に複製
ベルト、列車、物流システム
-
搬送ベルト
- 個々の搬送ベルトの3Dモデルだけでなく、アイテムがベルトに沿って動く仕組みも必要だった
- 搬送ベルトはスプラインで表現される
- FUE5 exporterが基地を書き出す際、接続された搬送ベルトがトンネルで終わる、単独で終わる、あるいはループを形成する連続区間は、それぞれ独立したシステムとして処理される
- FUE5は各区間ごとにスプラインを作成し、アイテムは実際のゲームと同じ経路をたどって移動する
-
列車
- 列車スケジュール、信号、機関車の経路探索を直接複製するのは難しいため、Factorio標準の経路探索システムを利用
- FUE5で列車を生成して動かすには、基地を書き出す前に目的地を設定し、青信号を与えておく必要がある
- その後、Factorioが事前計算した列車経路を読み取ってスプライン化し、FUE5内で列車の移動を制御
-
物流ロボット
- 建設ロボットは対象外で、建物生成はUE5標準のConstruction Scriptシステムで処理
- その代わり、ある程度発展したFactorio基地で重要な視覚要素となる物流ロボットの実装に注力
- 各roboportは一定確率で物流ロボットのクラスターをランダム生成
- 各ロボットは周囲の物流チェストを探してその間を飛び回り、資源輸送を視覚的に再現
- 搬送作業が終わると最も近いroboportの位置へ移動してから消える
性能問題と最適化
- 大規模な基地をFUE5に取り込むとFPSが大きく低下し、ブループリントイベントの結果も不安定になった
- 30〜60 FPSで動作させるため、次の要素を削減する最適化が必要だった
- ポリゴン数
- テクスチャ解像度
- パーティクル
- on-tick更新数
- 初期の多くのカクつきは搬送ベルトシステムで発生しており、この部分を削減する形で性能を改善
- 構造物のアニメーション部品はLODを調整してさらにFPSを確保
- 例: 遠心分離機の回転シリンダー
- 例: 組立機械の屋根にあるギアとピストン
- Factorio開発元のWube Softwareの承認も必要で、非商用利用に限るという条件でプロジェクト公開が許可された
トレーラーとビジュアル演出
- 制作開始から最初の2か月で基本アイデアと大半のプロトタイピングが固まり、その後はさまざまなFactorioアセットやシステムの複製が容易になった
- その後は、全体のビジュアル完成度とメインリリーストレーラー制作へと重点が移った
- トレーラーでは、FUE5 exporterで作成した大規模基地と、FUE5環境で可能なさまざまな要素が示されている
- Factorioゲーム内の基地をそのまま書き出すだけでは、整った映画的な結果にはならなかったため、カメラに合わせて多くの部分を手作業で調整した
- 高いSPMを目指して単一の建物を長く並べた構造よりも、複雑に絡み合ったスパゲッティ基地のほうが視覚的に面白かった
利用条件と公開計画
- FUE5はゲームではなくユーザーインターフェースもないため、利用には基本的なUE5の知識が必要
- 利用方法はGitHubページにまとめられている
- 基本手順は、UE5をインストールしてプロジェクトを実行した後、書き出したい基地チャンクを選んでFUE5へエクスポートする形
- 詳しい手順はhow-to guideで確認できる
- プロジェクトはGitHubを通じてオープンソースで共有されており、Factorioコミュニティが慣れ親しんだ世界を新たな次元で体験し、新しい成果物を生み出せるようにすることを目的としている
- 既存システムをより使いやすくし、大規模基地でもうまく動作するよう磨き上げる作業が進行中で、今後はModコンテンツ追加も検討されている
1件のコメント
Hacker Newsのコメント
Factorio ではロケットを打ち上げれば勝利だが、Space Exploration はそこからさらに続く。太陽系の複数の惑星にまたがって基地を作り、各惑星固有の資源を活用して太陽系を開発し、その後は恒星間空間や別の太陽系へと拡張していく。
途中に「4分の1地点」の勝利画面はあるが、既知の宇宙全体にまたがる謎を探索し、かなりの数学知識まで要求される別の勝利画面もある。何百時間も遊べる内容で、完成度も高い。
星や太陽系のマップを使って惑星間を宇宙船で行き来できるようにゲームを作り変えているが、全体として非常によく機能している。ただし バイターをかなり減らすこと を勧める。このMODは忍耐を要するのに、戦闘の激しさがその流れにあまり合わず、MOD自体も開始時のポップアップでバイターを減らすよう案内してくる。
次の段階へ進むために作る必要のある工場や生産ラインの数がひたすら増えていく。100時間近く遊んだ頃になってようやく、次の科学段階に必要な製品2系統を別の惑星から持ち込むところまで到達した気がする。
追加の助言としては、科学コストを上げること を勧める。次の段階への拡張には何時間もかかるのに、先に研究するものが尽きやすく、実際には工場にやることがなくなって止まったような状態になりがちだった。
SE は素晴らしいが、とてつもない時間泥棒でもある。Factorio を3500時間以上遊んでいるが、何かおかしい気もする。
それでも、Factorio を3Dで見るのは本当にクールで印象的だった。
pyanodons は非常に現実的な鉱石処理チェーン、石油化学プロセス、発電メカニズム、電子部品の再構成、さらに植物や動物を含む農業要素を追加する。主開発者の pyanodon は本業が化学工学者だ。
py 一式のプレイは簡単に1500時間を超える。バニラのプレイヤーの大半にとって特別楽しいものではないかもしれないが、Space Exploration や Nullius のようなMODが好きなら楽しめるはずだ。
[0]: https://mods.factorio.com/user/pyanodon
そして「これってどうして合法なんだ?」と思った人のために引用しておくと: 「この作業の合法性について尋ねたところ、Factorio 側は大きな理解を示し、商業目的で使わないという条件でプロジェクトの公開を認めた」
原典ソースコードを見た立場から言えば、コードは比較的しっかりしているが、とくに驚異的というほどではない。多重継承を使う C++ で、ゲームオブジェクト同士が何段階にもわたってメソッドを呼び合い、「最善ではないかもしれないが動くし今は変えない」類いのコードもかなりある。
それでも全体がうまく回っているのは、包括的な自動テスト と、最適化の足りないコードで PR を出すと Rseding がすぐ正してくれる文化のおかげだ。面白いのはアルゴリズムの部分で、それは Friday Facts で扱われている。
それと https://old.reddit.com/r/factorio/comments/13bsf3s/technical... もとても興味深く読める。二重連結リストや多重継承を使っているといった話が出てくる。
https://www.factorio.com/blog/
https://physics.highpoint.edu/~bbarlow/courses/phy2100/docum...
オレンジ色、そして「GUI」表示では灰色のタイルも出てくる
序盤の遅いテンポとやや生気のない2Dアイソメトリックグラフィックがどうにも合わなかった。でもブログ記事は興味深かったし、人々がずっと絶賛していたので、4回目にインストールしたときは踏ん張って実際にある程度進めてみることにした
今では史上最高のゲームの1つだと思っている。技術的にありえないほど印象的で、列車・ベルト・ロボット・インサーターなどで埋め尽くされた超巨大な基地でも60FPSで動かせる。クラッシュもしないし、とてつもなく面白くて中毒性も高い。Modも素晴らしく、コミュニティも良い
拡張パックが本当に楽しみだ。最初からFactorio並みに磨き込まれていると期待してよさそうだ
立ち上がりがもっと早く、現実世界の工程を扱い、地形変更もあり、あらゆる面でFactorioより優れていると思う。Factorioはジャンルを定義したゲームだと思うし、SatisfactoryとDyson Sphere Programもそれをほぼ超えかけたが、3Dの性質上パズルがより解きやすい
Captain of Industryは次元が多いにもかかわらず、Factorio並みにパズルを難しくし、管理すべき資源もはるかに多い
何らかのUE5版Factorio風戦闘システムが出てきそうだ
工場を運営して保守しなければならないゲームを想像するといい。同時にPvPの一人称シューティングのプレイヤーたちが工場内を走り回って戦い、補給線を絶えず破壊してくるので、それを修理しなければならない。工場保守チームに入ることもできるし、PvPプレイヤーになって敵をなぎ倒しつつ相手チームの工場補給線も破壊できる
もちろん3Dプリント用モデルはちゃんとしたUVマッピングやテクスチャリングが必要ないので、自分の作業のほうがずっと簡単だったのは確かだ
一部のツールはかなり良くなっている。たとえばテクスチャリング用のSubstance 3Dは、特に自動UVが使える結果を出してくれるならかなり助かる。ただ、基本的な3Dモデリングツールそのものは本質的には昔と大きく変わっていない
スクリーンショットのモデルもトポロジーが密に見えるので、かなり作業量が多かったはずだ
3週間狂ったように遊んで、無理やりやめなければならなかった。本当に唯一無二のゲームだ