Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when a game task could run on more than one engine or the repository has no engine yet - read the repo's engine and pinned version, and only for a brand-new game pick one from platforms, 2D/3D, team language, scale and licensing.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Choosing an engine is a one-way door: assets, scenes, scripts, editor tooling and the team's skills all bind to it. On an existing project there is nothing to choose — the engine and the exact editor version in the repository are the answer. The choice only opens for a brand-new game (or when the analiz task explicitly decides it), and then it is made from the target platforms first, not from preference.
Core principle: The repository's engine and pinned version win. For a new game, the platform list decides most of the choice before taste gets a vote.
| Signal | Engine | Version lives in |
|---|---|---|
ProjectSettings/ProjectVersion.txt | Unity | m_EditorVersion: 6000.3.xf1 |
project.godot | Godot | config/features=PackedStringArray("4.7", ...); a .csproj beside it means Godot .NET |
*.uproject | Unreal Engine | "EngineAssociation": "5.6" (a GUID means a source build) |
package.json with phaser, pixi.js, three, @babylonjs/core, playcanvas, excalibur, kaplay | web engine | the lockfile's resolved version |
Cargo.toml with bevy | Bevy | Cargo.lock — the minor version is the API |
game.project | Defold | [project] / bob.jar version in CI |
.csproj referencing MonoGame.Framework.* | MonoGame | the package version |
pygame / pygame-ce in pyproject.toml / requirements.txt | pygame | the pin |
Found one? Stop here and use it. Never open the project in a different editor version: Unity and Unreal re-serialize assets on open and Godot rewrites project.godot and import files, producing a diff nobody asked for.
digraph e {
"Repo already has an engine?" [shape=diamond];
"Use it, at its pinned version" [shape=box];
"Console or high-end 3D required?" [shape=diamond];
"Unreal (AAA-style 3D) or Unity" [shape=box];
"Browser is the main target?" [shape=diamond];
"Web stack: Phaser / PixiJS (2D), three.js / Babylon.js / PlayCanvas (3D)" [shape=box];
"Rust team, code-first, accepts churn?" [shape=diamond];
"Bevy" [shape=box];
"Godot (2D or mid-scope 3D) or Unity (mobile, broad platform reach)" [shape=box];
"Repo already has an engine?" -> "Use it, at its pinned version" [label="yes"];
"Repo already has an engine?" -> "Console or high-end 3D required?" [label="no"];
"Console or high-end 3D required?" -> "Unreal (AAA-style 3D) or Unity" [label="yes"];
"Console or high-end 3D required?" -> "Browser is the main target?" [label="no"];
"Browser is the main target?" -> "Web stack: Phaser / PixiJS (2D), three.js / Babylon.js / PlayCanvas (3D)" [label="yes"];
"Browser is the main target?" -> "Rust team, code-first, accepts churn?" [label="no"];
"Rust team, code-first, accepts churn?" -> "Bevy" [label="yes"];
"Rust team, code-first, accepts churn?" -> "Godot (2D or mid-scope 3D) or Unity (mobile, broad platform reach)" [label="no"];
}
| Need | Strong fit | Watch out for |
|---|---|---|
| 2D, small-to-mid scope, desktop + mobile | Godot (GDScript), Unity, Defold | Godot console ports go through third-party porting partners |
| 2D in the browser, instant load | Phaser (framework), PixiJS (renderer only), KAPLAY / Excalibur (small games), Defold (HTML5 export) | PixiJS gives you no scenes, physics, input or audio — you add them |
| 3D in the browser | three.js (largest ecosystem), Babylon.js (batteries included, Havok physics, NullEngine for tests), PlayCanvas (editor-centred) | Download size and mobile GPU limits; WebGPU only where the repo opts in |
| Mobile 3D with broad device reach | Unity (URP) | Build size; per-platform texture compression |
| High-fidelity 3D, consoles, large teams | Unreal Engine 5 | C++ build times, editor weight, no web export |
| Cross-platform incl. consoles, C# team | Unity | Console SDKs need platform-holder developer accounts |
| Data-heavy simulation, thousands of entities | Unity DOTS, Bevy, Unreal Mass | ECS raises the cost of simple gameplay code |
| Code-first Rust, open source | Bevy | A breaking release every few months — pin the minor and budget migrations |
| C# without an editor, full control | MonoGame | You build tooling (levels, UI) yourself |
| Teaching, jams, Python team | pygame / pygame-ce | Performance ceiling; web only through pygbag |
| Engine | Web | Mobile | Desktop | Console |
|---|---|---|---|---|
| Unity 6 | Yes (Web build, heavy first load) | Yes | Yes | Yes, with platform-holder access |
| Godot 4 GDScript | Yes (single-threaded export avoids cross-origin isolation headers) | Yes | Yes | Through third-party porting partners |
| Godot 4 C# (.NET) | No — still unsupported in 4.7; choose GDScript for browser targets | Yes | Yes | As above |
| Unreal Engine 5 | No official web export | Yes (heavier) | Yes | Yes, with platform-holder access |
| Phaser / PixiJS / three.js / Babylon.js / PlayCanvas | Native | Mobile browsers; wrap with Capacitor if a store build is needed | Electron/Tauri wrapper | No |
| Bevy | wasm32 (WebGL2 / WebGPU) | Experimental | Yes | No official support |
| Defold | Strong HTML5 | Yes | Yes | Some consoles on request |
| MonoGame | No first-class web | Yes | Yes | Yes, for registered console developers |
Not legal advice — read the current terms before committing a team to an engine, and name the terms you read in the decision.
The closing message (and the README's first lines on a new repository) states: engine, exact version, the two alternatives considered, and the reason the winner won, tied to the task's platforms. Pin the version the same run: ProjectVersion.txt, config/features, EngineAssociation, an exact package.json range plus lockfile, or bevy = "0.N" plus Cargo.lock.
Never introduce a second engine (or a second renderer, physics, input or networking stack) into a project that has one. A web game that "needs a bit of 3D" uses the 3D capability of its own stack or a scoped canvas inside it — it does not gain a parallel engine on your initiative. A genuine engine change is a comment for the architect.
cargo update.package.json, or a .uproject beside ProjectSettings/.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.