メインコンテンツへスキップ

2025年のゲーム開発 エンジンなしってどうなの?

·3 分
2025/05 ゲーム開発 プログラミング ゲームエンジン 開発ツール ライブラリ

2025年のゲーム開発 エンジンなしってどうなの?

引用元:https://news.ycombinator.com/item?id=44038209

samiv 2025/05/20 07:58:02

5年くらい自作2Dエンジン作ってて思ったんだけどさ、みんな気づいてないかもしれない大事なことがあるんだよね。エンジン本体って、実は簡単な方なんだわ。
マジで大変なのは、その周りのツールとか、素材をゲームに使えるようにするパイプラインなんだよ。
考えてみて?色んな形式のデータ読み込むとこから始まって、エディタアプリ作って、データいじれるように表示とか操作する部分、データまとめるやつとか…これ全部やらないとエンジンなんて使えないんだよ。
これ全部終わると気づくけど、実際のゲームエンジン(ゲーム動かすとこ)ってシステム全体のごく一部なんだよね。だからゲームスタジオって、エンジン担当は少なくて、ツール担当がいっぱいいるんだよ。これがマジで大事な仕事だからね。

NotGMan 2025/05/20 08:20:56

これな。自作エンジンやってると、見た目のエディタ作りに時間の90%費やす感じになるよ。みんな気づいてないけど、エンジンの開発に95%使って、ゲーム本体は5%くらいになるの。
まあ、これで飯食おうと思ってないなら全然良いんだけどさ。でも、Factorioみたいにマジで特別なニーズがある場合を除けば、自作エンジンは商業的にはヤバいと思うよ。

jeffhuys 2025/05/20 08:25:24

Factorioだって、最初から全部自作じゃなくて、定評のあるライブラリから始めた後、主に最適化のために離れたんじゃないっけ?

corysama 2025/05/20 14:17:18

前いたインディーズのスタジオでは、エンジン経験ある人がいたから、3Dエンジンとパイプラインをゼロから作ったんだ。でも、エディタ作る予算はなかったのね。
だから素材パイプラインをホットリロードできるようにしたんだよ。Mayaからのモデルとかシーン、Photoshopからのテクスチャ、WAVsの音声とか。Luaでスクリプト、XMLでUI配置。素材ファイル変えればゲームがライブで変わるようにしたんだ。
そんで「ExcelからLuaとしてエクスポートされる状態マシン」も追加した。行が状態、列がイベント、セルにLuaコード書く感じ。これで巨大な状態マシンも管理しやすくなったよ。
うちのゲームは統計データ多めでデザイナーがExcel好きだったから、「ExcelからLuaのグリッドとしてエクスポートされる動的データソース」も新しく追加したんだ。普通にExcelシートに入力するんだけど、セルの中身が全部評価可能なLuaコードなの。文字列も数値も真偽値も関数も全部Luaの値だからね。これでデザイナーがExcelからゲームの状態に応じてシーンとかUIに動的にデータを入れることができたんだ。
このシステムで複数のゲームを同じ実行ファイルでリリースしたよ。アーティストは3Dシーンと2D UIを配置して、そこにLuaから制御できるフックを用意して。デザイナーはExcelから動的にシーンやUIにデータを入れられた。プログラマーは主にC++でゲームに依存しない機能作ったり、Luaでゲーム固有のスクリプトの重い部分をやってたかな。
余談だけど、Luaは動的型付けだから大規模開発には向かないね。でもteal-language.orgみたいなTypeScript-For-Luaみたいなのあるかも。試したことないけど。あと、zero integrationで動くLuaデバッガーで、古のunknownworlds/decodaより新しいのあるのかな?Decodaは実行ファイルのpdbさえあれば、Luaライブラリを通るスクリプトは全部自動でデバッグできたんだけどね。
最終的には会社の都合でUnityに乗り換えたんだ。カスタムエンジンの主要開発者としては、乗り換えは全体的に良かったと思う。うちの小さいエンジンチームでできる範囲をゲームが超え始めてたからね。アーティストはUnityのエディタではちょっと生産性落ちたって言ってた。俺はUnityの未ドキュメントのバグ探しと、それのワークアラウンド作る役になったんだ。その後、リリースノートに載らずに修正されたバグを見つけてワークアラウンド消す役になって。会社がUnityに乗り換えたのと同じ理由で燃え尽きるまでの数年間はマジで退屈だったよ笑

dismalaf 2025/05/20 15:48:24

ビジュアルエディタなんて時間の無駄だよ。2DならTiledみたいな解決策たくさんあるじゃん。3DならBlenderをエディタとして使えるし。
エンジンなしで上手くやる秘訣は、マジで自分が本当に必要なものだけ作ることだよ。

xandrius 2025/05/20 08:30:56

そうそう、最適化を早まりすぎるなっていう開発の基本中の基本を忘れちゃうんだよね。特にゲームみたいに複雑なものは。
超シンプルにしなきゃ、そのゲームは絶対完成しないよ。

Llamamoe 2025/05/20 12:40:38

誰か、エンジンに依存しないOSSのエディタで、他のどんなエンジン/フレームワーク/とかにも簡単に適応できるように設計されたやつを作る価値ってあると思う?

agentultra 2025/05/20 13:41:44

自分の”エンジン”を書く時って、あらゆる種類のゲームに対応できるくらい汎用的にする必要なんてないってこと、忘れずにね。自分のゲームに必要なものだけでいいんだよ。
UIとか圧縮とか、取り込めるライブラリやフレームワークはたくさんあるしね。imGUIみたいな、ゲーム内エディタ作るのに最適な小さくて優れたUIライブラリもあるしさ。
その道を選ぶ時、”全てのゲームのためのエンジン”を作ってるわけじゃないんだ。だから、やるべきことは大量にあるわけじゃないんだよ。

nico 2025/05/20 14:47:29

Vibecodingっていうのがたぶんこの業界全体を席巻すると思うよ
すでに最大の市場はタブレット/スマホの小さなゲームだし
今、そういうゲーム作るのが指数関数的に速く簡単になってる
Robloxなんて、みんなが自分でゲームをサクッと作れるようにして、すでに大ヒットしたじゃん。今はその体験がAIでもっと超ヤバくなるよ。

lukan 2025/05/20 15:23:57

結構大変だよ。
楽するために外部ライブラリ使うと、来年にはabandonedになるかも。
そうなるとリリースどころか、動かなくなった機能の作り直しに時間を取られることになるね。

nico 2025/05/20 15:15:38

なんかhostileなコメントって言われちゃった。
ただ会話を開きたかっただけだよ。snarkとかaggressiveなname callingは要らないでしょ。
記事はエンジンなしでvideo games作る話で、トップコメントはvideo games作りの難しさについてだよね。
俺のコメントは、そういうのが今どう変わってるか、publicがどう反応してるかについて言ってるんだ。

ms-menardi 2025/05/20 08:42:47

ゲームによってはある程度のscaleが必要で、そういうゲームはpre-planning stageでoptimizeすべきだよ。

zoky 2025/05/20 12:51:30

問題は、作るゲームによって必要なassetsの種類がものすごく変わることだね。
2D pixel-art platformer、multiplayer FPS、top-down strategy sim、puzzle gameは全部全く違う種類のassetsとuniqueなdesign requirementsが必要になる。
なんでもできるツールなんて、既存のspecialized toolsにはprobably敵わないでしょ。
でも、Blenderでほとんどできるかもって考えると、そういうtoolはalready existsなのかも。

Narishma 2025/05/20 20:41:22

「動かなくなった機能の作り直しに時間を取られる」
それ変だよ。
ライブラリがabandonedになっても、いきなり動かなくなるわけじゃないでしょ。

johnnyanmac 2025/05/20 22:19:16

「3DはBlenderをeditorにできる」
これはteam size、composition、gameによるかな。
dedicated programmerじゃないdesignersがいるなら、Blenderは難しいと思うよ。

dismalaf 2025/05/21 18:37:32

???
Blenderにはscriptingあるけど、それはartists向けでしょ…
ArtistsがBlenderでmovies作ってるじゃん…
何十人もartistsが関わるscenesがあるmoviesとか…

nkrisc 2025/05/20 09:47:58

こないだredditで、作ってるgameのarrayからitemをefficientlyに削除する方法について質問してる人を見たんだ。
そしたらCSの大論争になって、「arrayのsizeは?」「どのくらいの頻度でitemsをremoveするの?」って聞いたら、OPはgameのlevel listだから20個もなくて、5~10分に1回くらいしか修正しないって…
20個のarrayから5~10分に1回itemをefficientlyにremoveするために、丸一日game開発の時間をwastedしたんだぜ。

iFire 2025/05/20 16:08:55

たとえgame engineをvibe codeするとしても、最高のLLMでもworld classなtechnical team 12人分くらいの仕事が必要だよ。
そのdatasetを見つけるのに10~20 teams必要だろうし、1回runするのにa few million usdかかるね。

Supermancho 2025/05/20 18:13:44

Visual editingってUIデザインでは必須だよ。時間の無駄じゃなくて、プロトタイプ作る最初の段階でめっちゃ使うんだ。開発が進むにつれて出番は減るけどね。プロトタイプからEditorで動くUIに落とし込んで、必要に応じて状態を書き換えるって流れは、ゲームに限らずどんなソフト開発でも同じだし。

jayd16 2025/05/21 15:17:49

Excelの使い方、ヤバすぎてマジで笑えるんだけど。っていうか、笑い止まんないくらい呪われてる(curse)よ。raw memory address look upしてるだけじゃん、余計な手順踏んでさ。Excelファイルってどうやってマージしたの?ソース管理とかしてたわけ?
状態遷移ならシートもまあ許せるかもだけど、遷移のビジュアライズを気にしないならね…でも、cell参照するよりソースファイルに名前付き関数置けば、構文解析も簡単にできたじゃん。それならマージも超楽だよ。型を緩くしたいなら良いのかもだけど、型安全とかlintとか、他の言語機能やツールを使えるのに、ただのグローバル変数ファイルにしちゃうなんてさ。マジで意味わかんない。

whstl 2025/05/20 17:27:42

それナイスアイデアだね。Blenderのスクリプトはあんまり経験ないんだけど、BPY APIでカスタムパネルを追加できるみたいだし、「entities」にmetadataを追加したり、exportのワークフローをシンプルにしたりするのは、かなり現実的だと思うよ。それができれば、ほぼeditorみたいな感じになるんじゃないかな。

wsc981 2025/05/20 14:58:08

Local Lua Debugger [0] ってのがあるよ。decodaと比べてどうかわかんないけど、先週末ちょっと実験してみた感じ、かなり良いと思う。VS Codeにうまく統合されてるのが便利だね。

[0]: https://github.com/tomblind/local-lua-debugger-vscode

xandrius 2025/05/20 19:36:20

統計的に言っちゃうと、99%のゲーム開発者はそんなゲーム作らないと思うよ。もし作るとしても、多分作る前から「あ、これエンジンなしで作るやつだ」って分かってるんじゃないかな。

slippy 2025/05/22 09:52:57

Luau - Robloxのオープンソースで型付きのLua - 試したことある? VS Codeに差し込んで使えるdebuggerを誰かが作ったんだよ。
https://github.com/luau-lang/luau/
https://github.com/sssooonnnggg/luau-debugger
僕は今C++、Luau、OpenGLでengine作ってて、まだ始めて2ヶ月弱かな。MIT licenseのオープンソースにするつもりだけど、まだ公開するには早すぎるね。準備できたら、GitHubリンクと一緒にShow HNに投稿する計画だよ。

flohofwoe 2025/05/20 13:08:42

editor作るアプローチは基本的に2つあるんだ。
1つ目は、汎用性があって拡張できるUIツールを作る。中心には3Dシーンビューアー、object outliner、asset browserがあって、VS Codeが「ほぼテキストデータ」用のツールなのと同じ感じ。その他はエンジン固有のpluginsとして実装するの。Blenderもそのツールになり得るけど、モデリングとかアニメーションの機能は全部UIから外すくらいの大改修が必要かも。
2つ目は、editor UIをengineに直に統合するの。Dear Imguiとか使えば結構簡単だよ。ただ、ここで難しいのが、ゲームの状態データって編集用と実行時性能用で整理方法が違うんだ。両方混ぜるのは良くないね(moddabilityが優先なら別だけど)。
10年くらい前なら多分1つ目のアプローチを選んだと思うけど、最近は2つ目の方に寄りがちかな。

nico 2025/05/20 16:42:35

それってどんなユースケースなの? なんでそんな全部必要になるの? 個人が子供と簡単なゲーム作りたいだけなら、エンジンもワールドクラスのテクニカルチームも巨大なデータセットもいらないでしょ。
ChatGPTとか、もっと簡単なopenjam.aiとか、特化してるrosebud.aiとか使えば良いんじゃない?
多分rosebud.aiの人たちは、彼らのplatformを作るためにあなたが提案してるようなことやってるのかもね。

insraq 2025/05/20 08:29:59

最近、続編ゲームのためにエンジンを書き直したんだけど、この記事にすごく同意するよ。
僕のpostmortem[1]でも書いたんだけどさ、「game engine」って多くの人はゲームの実行ファイルと一緒に配布されるコードのことだって思うでしょ?でも、それは半分だけなんだよね。もう半分、むしろこっちの方が大事だと思うんだけど、ゲームと一緒に配布されないコードのことなんだ。level editorsとかcontent pipelines、debugging/profiling tools、development workflowsとかね。
toolsを作るのって、engine書くより地味で退屈だし面倒で、だからこそカスタムengineでゲーム作る系のプロジェクトって、そこで頓挫することが多いんだよね[1] https://ruoyusun.com/2025/04/18/game-sequel-lessons.html

whstl 2025/05/20 13:48:08

なんかpath #1もリアルタイム編集が必要になったら、path #2と同じ問題にぶつかる気がするんだよね。

JKCalhoun 2025/05/20 11:49:58

これは2年くらい前に俺がやったことと基本同じだね[1]。SDL2と少しのC++で”sprite”クラスとかcollisionコードを作ったんだ。
俺が作ったのが”エンジン”かって言われたら、”ペダルアシスト自転車”みたいなもんかな。
俺がよく思うのは、”エンジン”ってプロジェクトを”主導”しがちってこと。つまり、エンジンに合わせてゲームを書くことになるんだ。
だから俺はUnityみたいなハイレベルなエンジンを避けてるんだよね。ああいうのは、みんなが書いてるような同じゲームを書くように誘導される気がするんだ、アセットが違うだけで。
それと、エンジンを学ぶのに時間をかけすぎて、ゲーム本体を書く時間がなくなっちゃうのも問題だと思うんだ。確かにSDLを使うのにも学習曲線はあったけど、それは緩やかだったし、SDLを知ってることは他のクロスプラットフォームプロジェクトにも使えるから、より普遍的に役に立つ知識だと思ったよ。
[1] https://store.steampowered.com/app/2318420/Glypha_Vintage/

oliverdzedou 2025/05/20 07:41:10

スクラッチでエンジン作るの時間がかかりすぎだってよく言われるよね。でも、UnrealとかUnityをアイデアをゲームにスムーズにできるレベルまで”ちゃんと”学ぶのにどれくらいかかる?
おそらく、一度自分のエンジンができちゃえば、そのレベルの専門知識は”即座に”手に入るわけだから、これはものすごい時間節約になると思うんだ。俺の意見だと、エンジニアとしての経験が豊富であればあるほど、時間的な観点から見て、自分でやる方が有利になる。
自分のゲームがユニークでニッチであればあるほど、これは当てはまるね。Unrealの酷いUIを3ヶ月さまよった挙句、やりたかったことがエンジンの汎用性ゆえに”かろうじて可能”なだけだと気づくのは良い経験じゃない。一方で、ハイパーリアルなオープンワールドRPGを作りたいなら、自分でやるのは多分良いアイデアじゃない。
効率的ではないとしても、自分で作った専門的なエンジンで制約を設けることで、創造性が本当に刺激されると思うし、結果としてゲームは、たとえ一番高度ではなくても、はるかにユニークになると思う。

もっとコメントを表示(1)
npinsker 2025/05/20 07:53:31

Unrealは詳しくないけど、Unityはスクラッチでプログラミングするより断然速いよ、楽に10倍以上。
分かりやすい例は物理挙動だね。これは1分足らずでゲームに追加できるけど、自作エンジンだと外部ライブラリをちゃんと組み込むのに1日か2日はかかるだろうね。Noelさんがここで見せてる内部状態の可視化は、Unityだとデフォルトで全部入ってるんだ。
バウンディングボックスを描画したり修正したりする良いツールもあるし、エンジンの挙動だけじゃ足りない稀なケースでも、拡張性がすごく高い(ImGuiとか、俺が好むUnityのYogaベースのCSSエンジンを使ったりして)。
Unityにはこういう機能が無数にあるんだ。洗練されたパーティクルエディタ、膨大な複雑さを抽象化して「一度書けばどこでも動く」高レベルなシェーダー言語、モジュラーデータをストリーミングして追跡するシステム、その他にもたくさんたくさん。
理想の世界なら、こういうのは自分で書きたいんだけど、時間は刻々と過ぎていくし、残念ながらゲームを早く完成させることを優先したいと思ってるんだ。

jon-wood 2025/05/20 07:48:10

過去に2Dゲームを作るのに手を出した経験があったんだけど、Unrealでゲームを作るのに、チュートリアルとアセット作成のドキュメントを数日かけてこなしたら、アセット制作がボトルネックになるレベルになったよ。Godotなら、数時間でひどいゲームを作れるようになるポイントに到達したね。
モダンなゲームエンジンがどれだけ多くのことを代わりにやってくれるかは驚異的だよ。既存のエンジンでゲームを実装するより、スクラッチでエンジンを書く方が速いと主張する人は、自分を欺いてるだけだと思う。

Sander_Marechal 2025/05/20 07:55:56

この時点では、Unity以外のエンジンを使うのが何でもマシだね。Unityは信用できないって何度も示してきたし、彼らをベースにゲーム(やビジネス)を構築することはできないよ。

kgeist 2025/05/20 07:59:07

>スクラッチでエンジン作るの時間がかかりすぎだってよく言われるよね。でも、UnrealとかUnityをアイデアをゲームにスムーズにできるレベルまで”ちゃんと”学ぶのにどれくらいかかる?
>おそらく、一度自分のエンジンができちゃえば、そのレベルの専門知識は”即座に”手に入るわけだから、これはものすごい時間節約になると思うんだ。
一度、自分のゲームエンジンを作る実験をしたことがあるんだ。構築と学習に約1年かかったよ(試行錯誤で、最初は多くの行き止まりがあった)。
ゲームに通常あるようなたくさんの機能(ベルとホイッスル全部付きの3Dレンダリング、flexboxに触発された適応型UIフレームワーク、スケルタルアニメーション、セーブファイル形式、スマートオブジェクトシステム、パスファインディング、スクリプト言語、オーディオ、物理などなど)を備えてた。
具体的には、Braidのシステム(それが存在することを知らずに)を再現しようとしたんだ。これは、ゲームを任意の時点に巻き戻せるってもの。スクリプト、物理など、エンジンの全てのサブシステムからのサポートが必要だった。
自分のゲームエンジンのあらゆる細かい詳細を知ってるのは、確かにプラスだったね。エンジンが”だいたい”完成した後、どんなに野心的な機能でも追加するのはせいぜい数時間くらいだったよ。何か動かない時も、何が起こってるか正確に分かった。
ただし、1年構築した後、多少燃え尽きて、続けるモチベーションが全部消えちゃったんだ :)

Arwill 2025/05/20 08:53:29

>一方で、ハイパーリアルなオープンワールドRPGを作りたいなら、自分でやるのは多分良いアイデアじゃない。
俺はそれとは正反対だと思うね。そのジャンルなら、自分のエンジンをロールするか、オープンソースを選ぶのがベストだよ。俺が直接経験した問題のリスト:
エンジンにはたくさんの機能やオプションがあるけど、それら全部を同時に使えるわけじゃない。ある機能は別の機能を無効にするんだ。エンジンができる全ての素晴らしいものリストを見るんだけど、ある時点で、”絶対に”必要なことができない(あるいは効率的にできない)と気づくんだ。あの素晴らしく見えるグラフィックは全部、実際には使えない、単にパフォーマンスが出ないか、互換性がなくて使えないんだ。
”ベイク”モードでしか動かない機能がある。”ベイク”はエンジンのエディタで行って、ゲーム実行時にそれを変える方法がない。Unrealはこの点で最も制限があるけど、Unityも大差ない。一部のゲーム開発者は、実行時に機能の挙動を変えるために、Unityの内部アセット形式をヘックスエディタでリバースエンジニアリングしてるくらいだよ。その時点では、自分でエンジンをロールする方が理にかなってる。俺が見た例の一つは、開発者がライトプローブグループのアセットファイルをリバースエンジニアリングして、実行時に新しいライトプローブグループを追加できるようにした例だね。
エンジンのAPIはバージョンごとに劇的に変わる。全てのコードとスクリプトは、常にリファクタリングが必要になる。致命的なバグに遭遇して、唯一の解決策がアップグレードだけど、アップグレードはコードベース全体を壊すことを意味する。
エンジンの抽象化を通る必要があって、それが効率的にできない場合は運が悪い。これの例:Unity HDRPはスクリーン空間アンビエントオクルージョン(他のエフェクトと共に)を適用する。これは画面全体にエフェクトを適用するんだ。キャラクターの三人称視点が近いか、一人称の手/武器がレンダリングされてる場合、それらの上にも適用される。その結果、一人称の手/武器の周りに白いハローができて、見た目が悪くなる。カスタムエンジンなら、解決策はシンプルだ。一人称の手がレンダリングされる前にフルスクリーンエフェクトを適用し、その後エフェクトなしで手を描画する。これは、数行のコードの順番を切り替えるだけの問題だよ。
解決策はgithubと、BSD/MIT/Apacheライセンスのゲームエンジンやライブラリだね。

oliverdzedou 2025/05/20 08:14:10

人の好み、経験、専門知識、哲学を考慮せずに、”妄想カード”に手を伸ばすのは全く不誠実で、ゲーム開発を全体的に見ていないことを示してるね。確かに、既存のエンジンは特に3Dレンダリングや物理に関して多くのことを代わりにやってくれる。でも、物理のないゲームはどう?あるいは、予想とは全く異なる物理を持つゲームは?
アセットがボトルネックだって言ってたけど、アセットを全く使わないゲームはどう?3Dが解決されてるのは素晴らしいけど、もしゲームが4Dをエミュレートしようとしてたら?あるいは、GUIがただ嫌いで、それが作業を遅くするだけなら?
もっと具体的な議論をしよう。Unrealをチュートリアルで学ぶのに数日かかったとも言ってたけど、それは”超基本的な理解”について話してる場合を除いて、確かに不可能だよ。同じように、OpenGLの上に基本的なエンジンを作るのに数日かかることもあり得るんだ。

interludead 2025/05/20 08:30:00

もし君のビジョンが変わってたりニッチだったりするなら、最初からそれに特化したツールセットを作る方が長い目で見れば全然効率良いことあるよ。

npinsker 2025/05/20 07:58:34

時として信用できない相手とも取引しなきゃいけないんだ。エンジンに競争相手がほぼいない多くの種類のゲームにとって、「全部かゼロか」のアプローチを取るのは未熟だし現実的じゃないね。

jayd16 2025/05/20 15:49:44

武器にもポストエフェクトがかかるように、別のポストエフェクト設定を持ったレンダリングレイヤーを用意するのが多分いいと思うよ。これコード変えなくてもエディターのGUI設定でできるはず。
確かSRP全部C#で、「ソースコード利用可能」なオープンソースだから編集できるよ。
https://github.com/Unity-Technologies/Graphics/tree/master/P

herbst 2025/05/20 12:31:33

信用できない相手にビジネスを完全に依存するなんて、ちょっとおかしな話に聞こえるね。

krige 2025/05/20 08:27:05

まあさ、開発スピードに関する全く間違った主張に反論しようとして、君は個人的な好みや「もしこうだったら?」みたいな話を持ち出してるけど、それが君の立場を正しいとは限らないんだ。例えば、もし俺のゲームが4Dをエミュレートしようとしてるとしても、俺自身のエンジンはそれ以外の全部、グラフィックとか入力とかオーディオとか物理とかもやらなきゃいけないんだよ。Godotで4D作るのと、自作エンジンで4D”と”グラフィック”と”入力”と”オーディオ”と”物理”と…を作るのとじゃ話が違うってこと。

Jyaif 2025/05/20 09:35:39

>特に、ゲームを任意の時点に巻き戻せるBraidのシステム(存在は知らなかったけど)を再現しようとしたんだ。それはエンジンの全サブシステム──スクリプト、物理なんかの巻き戻し──のサポートが必要だった。
いや、必ずしもそうじゃないよ。
君は自分の「スナップショット可能なアロケーター」を書けるんだ。それを使えば、たとえ修正してないサードパーティライブラリやインタープリターの状態だって巻き戻せる(それらが君のアロケーターを使うように設定できればね)。
これについてhttps://www.jfgeyelin.com/2021/02/a-general-state-rollback-t…に書いたよ。

maccard 2025/05/20 11:58:05

AntichamberみたいなゲームはUnreal (3)で非ユークリッド空間とレンダリングをやってるし、Enera(開発中のアクションゲーム)はUnrealで時間巻き戻し(Braidみたいな)を実現してる。SuperhotはUnityだしね。
一番良いツールは君が知ってるツールだよ、たとえ君のビジョンが変わってたりニッチだったりしてもね。結局のところ、Unityが提供するあれこれを全部無視して、MonoBehaviourスクリプトでカスタムロジックを書いて、それをプラットフォームツールキット、入力ハンドラー、コンテンツパイプライン、スクリプタブルエディター、レンダラーとして使うことだって常にできるんだ。特に長い目で見れば、そこから得られる機能には言うべきことがたくさんあるよ。

some-guy 2025/05/20 19:51:42

これに関して、開発者の振り返り記事とかある? Cities: SkylinesやOvercookedはすぐ思い浮かぶ例だけど、俺のお気に入りのゲームの中にはUnityで作られたのがいっぱいあるし、それらのゲームを全然失敗作だなんて呼ばないけどね。

Narishma 2025/05/20 20:53:22

>そこにはゲームによくあるものがたくさん含まれてた(3Dレンダリングに全ての飾り付け、flexboxに触発された適応型UIフレームワーク、スケルタルアニメーション、セーブファイル形式、スマートオブジェクトシステム、パスファインディング、スクリプト言語、オーディオ、物理などなど)。
でも、本当にそれ全部必要だった?

interludead 2025/05/26 07:27:05

俺が言いたかったのは、もし君のビジョンがそういうエンジンの「普通」の流れから大きくかけ離れてるなら、時として自分で作った方が摩擦が少ないってことかな。

maccard 2025/05/20 11:46:10

「エンジン自作は時間かかるって言うけど、Unreal/Unityをアイデアすぐ形にできるレベルで学ぶのは?」って二つの質問だね。適当なアイデアでも数時間で形に。UnrealはBlueprintで”ほぼゲーム完成”ってとこまでいける。Unityはプログラミング要るけどね。
ほら、この10分の動画[0]でSuper Hexagonみたいなのが10分でプロトタイプできて、ツールの強力さが分かるでしょ。
動画にUnity特有なのはコンポーネントくらいで、他は”gamedev agnostic”(ゲーム開発全般に共通)。
俺Unreal使いだけど、Unityでも1時間くらいで同じプロトタイプ作れると思うよ。[0] https://www.youtube.com/watch?app=desktop&v=p8MzsDBI5EI

xandrius 2025/05/20 08:35:36

「エンジンができたら」って? 多分永遠にできないんじゃないかな?
GameObject.Instantiate(myPrefab, Vector3.zero)みたいな基本操作一つ理解するのと、それをちゃんと実装するのに必要な全部やるのとじゃ、かかる時間ケタ違いだよ。
2D/3D physics、shaders、platform supportとかになったらもっと大変。
目標がエンジン作る事なら作ればいい。ゲームを完成させる事なら、ゲームを作りなよ。

jayd16 2025/05/20 13:52:35

「アイデアをすぐゲームにできるレベルでUnreal/Unityを学ぶのにどれくらい?」
エンジン作れるくらいのゲーム開発知識があるなら…本気で、プロトタイプ作り始めるまでたぶん1日くらいだよ。
マスターするのはすごく時間かかるけど、ゲームを完成させるのが目標なら、かかる時間は全然違うレベルじゃない?

coffeebeqn 2025/05/20 14:54:53

えーと、俺は2008年からUnity使ってるよ。他のツールとかSaaS会社よりは長く存続するって信じてるかな?たとえいくつか微妙なビジネス判断をしててもね。

archagon 2025/05/20 22:03:18

少なくともplatformersに関しては、physics feelが体験全体にとってめちゃくちゃ重要で、エンジンに任せると君のゲームが”cookie-cutter”(金太郎飴みたい)な感じになっちゃう可能性高いよ。

Arwill 2025/05/20 17:32:23

GUI設定は結果が分かりにくくて副作用もあるから、設定いじりは生産的じゃない。
SRPやshaders置き換えも選択肢だけど、SRPには疑問も。Forward+のライトソートみたいに、少数ライトだとjob system通すのが無駄に見える。
これはスケール向け最適化で、俺のケースには合わないかもって。
SRP置き換えがC++でエンジン組むのと比べて、労力とパフォーマンスに見合うか?
エンジンに超特化したコードになるから、asset file formatsリバースよりはマシだけど、これも大変なコミットメントだよ。

jbverschoor 2025/05/20 07:54:36

ゲーム、Graphics、Physicsエンジンには重複があるから誤解があると思う。
Graphics(2D/3D, shaders, scene graphなど)、Physics、Game logic/triggers、ui、resource management、ai。
これ全部がエンジンなんだ。異なるアーキテクチャで自作するのはエンジンの仕組み学ぶには最高だけど、全ての詳細を一人でやるのは多分量が多すぎる。
Unreal Engineにどれだけ詰まってるか見たら驚くよ。

spencerflem 2025/05/20 08:03:52

大きなエンジン使うとタダで手に入る良いものたくさんあって、自作だと面倒くさいんだよね。特にUnity storeとか。
個人開発はLibGDX好きだけど、締切大事な本格開発だとdialog trees、UIとか、そのまま使えてedge casesも洗練されてるのが超いい。
コンソールcross platformも自作はめちゃくちゃ大変で、これ結構デカい。
そういうところがSlay the Spireが続編でUnity/Godotに乗り換えた理由だと思うよ。

kgeist 2025/05/20 09:59:22

raw C++ memoryのスナップショットはいじるのはヤバそう(落とし穴自分で挙げてたじゃん)。
俺のスナップショットはscripting runtimeレベルでやった。そこならwell-definedで分かりやすい。
VM heap, green threads stack/pointerとか手動でスナップショット。定義済みファイルフォーマットだから壊れたsavefileでもsegfaultせず安全に検証できた。
time-travel snapshotter/savefile format両方いけた。
これは危険でremote execution attackにつながると思う(ネットワーク越し交換の話)。
physics/audioはmotion vectors/playback timeとか復元必要。君のと同じく、textures, 3D models, audio, UIは別allocatorで確保すべき。

59nadir 2025/05/21 06:34:03

任意の2D spritesとか、そのレベルとか、何でも1日でレンダリングできるエンジンなら君のために用意できるよ。Game Jamで君が話してるより面白くて高度なもの作ってる人たちいるし。
単に2D spritesを詰め合わせるっていう仕組み自体は、たとえエンジンをゼロから書いても大した作業じゃないんだ。そこから実際に面白くて興味深いものを作るのが時間と労力かかるんだよ。

aleph_minus_one 2025/05/20 12:30:53

現代のゲームエンジンはめちゃくちゃ大変なことやってくれてるから、ゼロから作るより既存エンジンの方が絶対早いって言うのは、標準的なゲームなら合ってるかもね。でも、一般的な構造から離れるほど、そうとも言えなくなるんじゃない?

maccard 2025/05/21 07:40:49

Unrealはよく知らないけど、Unityはゼロから作るより断然速いよ、たぶん10倍とかそれ以上。ただUnrealのEditorはめちゃくちゃ重くて、Unityよりリソース食うのは注意ね。UnrealのBlueprintはゲームロジック書くのにすごく良いよ。C++とかC#知らなくても大丈夫だし、非同期とかイベント駆動のコードの抽象化にも便利。個人的には入門にマジでおすすめ。

johnnyanmac 2025/05/21 00:12:23

技術的には問題ないんだけどね、ここ数年のライセンスの遡及変更とか、怪しい買収とか、主要なサブシステムのサポートが何年も放置されてるように見えたりとか、そういうので結構不安定な印象なんだよね。ちなみに、元Unityの社員だったよ。

iFire 2025/05/20 20:21:36

友達がGodot Engineで4次元のデモを見せてくれたんだけど、めっちゃ面白かったんだ。これ見て→
https://github.com/godot-dimensions/godot-4d

もっとコメントを表示(2)
danielbarla 2025/05/20 06:50:58

なんでもできる巨大エンジン無しの方が、ゲーム作りは楽で楽しいし、オーバーヘッドも少ないって正直思うよ。そんな”なんでも”ゲーム作ってないし、エンジンの機能の9割は要らないんだもんね。←これに対して:
その意見、そういうゲームならもちろんエンジン要らないね。でも、UnrealのIKとかAnimation blendingみたいな特定機能を掘り下げてみると、”マジでゼロから自分で書かなくてよかった~”って毎回思うんだ。ミニマリズムとか無駄省きも確かにいいけど、エンジンが人気なのは、ホントに大変な部分を肩代わりしてくれるからなんだよ。

monkeyelite 2025/05/20 14:04:28

Inverse kinematicsとかAnimation blendingのことね。
それがゲームの中心機能なら、自分で書く価値はあるよ。そうじゃないなら、ただの技術的な無駄になるだけで、必要ないんじゃない?

gyomu 2025/05/20 08:08:51

”マジでゼロから自分で書かなくてよかった~” ←この意見に対して:
もしOPみたいにインディー開発者として何十年もやっていくのが目標なら、数週間かけて
a) そのトピックを深く理解すること、b) 自分が深く理解してて100%所有してて、将来のプロジェクトで再利用できるソースコードを持つこと、
これって、何の問題があるの?むしろ将来への投資でしょ?

billfruit 2025/05/20 07:35:23

エンジンを使うと、インフラ作るのに大量の時間を使わずに済むから、プロジェクト自体を先に進められるんだよね。車輪の再発明って、多くの人にとってはそんなに面白くないでしょ。

jayd16 2025/05/20 14:15:31

最近の3Dアニメーションでは、これはもう最低限必要なものなんだよね。アニメーションがパッと切り替わるのって結構恥ずかしいし、もっと複雑な使い方じゃなくても、Look IKくらいは絶対欲しいはずだよ。

pjc50 2025/05/20 08:40:16

逆にさ,ゼロから作るの楽しむ人っていっぱいいるんだよ.それってさ,めんどくさいクリエイティブな選択とか,ゲームを完成させて出すリスクを避けるためなんだよね.

monkeyelite 2025/05/20 17:10:52

> 3Dアニメーションならこれくらい基本でしょ
君のインディーゲームで3Dスケルタルアニメーションやるの? どれくらいの数のスケルトンとアニメーション作るつもり? そしてそれは主要な機能じゃないって思ってるの?

monkeyelite 2025/05/20 17:11:48

それか,インディープロジェクトにどれだけ時間があるかってことに対して,単純に非情になれてないだけじゃない?

jayd16 2025/05/20 17:19:32

アニメーションやるならブレンドとかIK欲しいでしょ.自分で作るとそれが主要機能になっちゃって他の機能作れなくなるよ.エンジン使えば,わざわざ自分で作らなくても簡単に使えるんだ.2.5Dプラットフォーマーでもブレンドや足IKは欲しい機能だよ.

andrewflnr 2025/05/20 19:12:32

そういう機能は「あったらいいね」くらいで,もし手間がかからないならやる価値あるって考え方もできる.例えば,エンジンがやってくれるとかね.でも現実ってそんな簡単じゃないし,ゲームの「ポリッシュ(完成度)」ってすごく重要なんだよ.

ido 2025/05/20 08:29:14

俺も15年ゲーム開発で飯食ってるよ(Noelよりは下だけど).色々なエンジン使ったけど,自分でゼロから作ろうとした時は後悔したな.時間と労力をたくさん損したよ.俺はエンジンじゃなくてゲームを作りたいんだ.Epic GamesとかUnityとかで何千年もの人が費やした時間ってすごい量だから,たとえ全部使わなくても一部だけでもありがたいんだよ.

monkeyelite 2025/05/20 18:42:58

アニメーションブレンドやIKは主要機能なら良いシステム作るのに時間かけてもいいかもね.でもIKがない3Dゲームはいっぱいあるし,プロシージャルアニメーションなんてあったらそれがメイン機能でしょ? エンジンにあるかどうかにかかわらず,機能にはコストがかかるんだ.たいていのゲームでは,IKのためにリグ調整しても製品は良くならないよ.

pjmlp 2025/05/20 08:02:10

俺の卒業論文はさ,NeXTSTEP/Objective-CからWindows 95/Visual C++に,OpenGLベースで,マーチングキューブみたいなサンプル付きで,パーティクル可視化エンジンを移植することだったんだ.これってさ,今のエンジンだと機能リストのたった1つの項目なんだよね.

monkeyelite 2025/05/20 19:23:15

確かに,俺は価値判断とかデザインの好みで話してるんだ.永遠の真実じゃないよ.で,原則として,俺は最も重要な機能に労力をかけたいんだ.そうすれば,君の最高の機能はUnityで適当に寄せ集めるよりも良くなるはずさ.

rishflab 2025/05/20 07:04:33

アニメーションブレンドはそんなに悪くないよ.もし四元数と位置のリストとして2つのポーズがあるなら,四元数の間をslerpして,位置の間をlerpするだけでいいんだ.FABRIK IKアルゴリズムはだいたい100行くらいの関数だよ.

bob1029 2025/05/20 09:39:31

これってどこでも起こる話だよね。多くのB2B SaaS製品なんて、MSSQLのT-SQLスクリプト一つとかで済むのに。開発者の多くは、進捗や方向性のなさへの合理的な批判をそらすために、イデオロギーに頼ってる気がするな。UnityとかUnrealは、ちゃんとしたアイデアがあって、できるだけ早く多くの顧客に届けたいっていう熱意があるなら、絶対強力なツールだよ。

gyomu 2025/05/20 08:11:33

で、一度自分でやってみたなら、多分その何分の一かの時間でもっといいものが作れるんじゃない?

jayd16 2025/05/22 15:21:04

コンテンツを見栄え良くするために手間がかかる。インディーゲームにとってそれは重要なリソースだ
まさにこれがエンジンを使う目的だよ。ユニークじゃない機能のコーディングじゃなくて、コンテンツに時間を使えるんだ。そしたら急に多くの種類のコンテンツがずっとお手軽になる。

aleph_minus_one 2025/05/20 12:25:53

俺のゲームアイデアは多くの既製エンジンには合わないことが多いんだ。だから、俺が作りたいゲームのためなら、自分でゲームエンジンを書く方が、多分ずっと良い選択肢になるって確信してるよ。

iFire 2025/05/20 16:34:13

俺、V-SekaiってFOSSソーシャルVRプロジェクトやってんだけど、何年もツールの開発(アセット、IK、アニメーションとか)に費やして、ゲーム自体は進んでないんだ。
予算ゼロでUnityやUnreal並みのプロレベルのツールを自分で書くのが超大変。安定したコンストレインツとかマジ難しい。V-Sekaiのdiscordで話そうぜ。俺はiFire。

danielbarla 2025/05/20 07:49:05

同意。でもその理解に至るまでが時間かかるんだよね。あと、ソロ開発者ならどんな助けでも喜んで受けるべきだっていう似たような話題は文字通りいっぱいあるよ。オーディオとか入力、パスファインディング、AIの意思決定ツリー、物理とかも、同じように簡単だって思ってるんでしょ、多分。

yakcyll 2025/05/20 08:51:52

自分でエンジン作るかどうか決める時、これもトレードオフだって覚えておこうぜ。俺、物理エンジン自分で手作りしたんだけど、コード全部理解できるメリットはあるけど、プロが作ったものには全然及ばないってすぐ分かった。物理開発ってマジで変なこと起こりやすいんだわ。
今のでもは動いてるし誇りだけど、まだ色々調整に時間かかりそう。
仕組みに興味あるならいいけど、『ゲーム作りたいならエンジン作るな』って言う通り、エンジン作るのには時間かかるし、全部自分で責任負うことになる。
既製エンジンのルール内でやる方が良い時もあるんだよ。

andrewflnr 2025/05/20 20:07:03

それは、寛大に言っても、俺が考えられるどの実用性にも対応しない、かなり極端でニッチな価値判断だな。現実世界には『重要な機能』のスペクトルと、それに対応する正当化される努力のスペクトルがあるんだよ。もしそれが君の芸術的誠実さのアイデアなら、勝手にやればいいけど、他の誰かにとっては多分ナンセンスだよ。

raincole 2025/05/20 14:51:11

それただ間違ってるよ。こういうのってすごく標準化されてるし、大抵の人はみんなが使ってる普通のやつが欲しいだけなの。ほとんどの場合、これを自分で書くってのは、自分のSHA256を自作するみたいなもんだよ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。