본문으로 건너뛰기
cccskills
무료GitHub에 공개

game-engine-choice

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Unity
설치 방법 보기

포함된 파일(1)

  • SKILL.md8.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Game Engine Choice

Overview

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.

Step 1 — read what the repository already says

SignalEngineVersion lives in
ProjectSettings/ProjectVersion.txtUnitym_EditorVersion: 6000.3.xf1
project.godotGodotconfig/features=PackedStringArray("4.7", ...); a .csproj beside it means Godot .NET
*.uprojectUnreal Engine"EngineAssociation": "5.6" (a GUID means a source build)
package.json with phaser, pixi.js, three, @babylonjs/core, playcanvas, excalibur, kaplayweb enginethe lockfile's resolved version
Cargo.toml with bevyBevyCargo.lock — the minor version is the API
game.projectDefold[project] / bob.jar version in CI
.csproj referencing MonoGame.Framework.*MonoGamethe package version
pygame / pygame-ce in pyproject.toml / requirements.txtpygamethe 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.

Step 2 — only for a new game

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"];
}

Decision table

NeedStrong fitWatch out for
2D, small-to-mid scope, desktop + mobileGodot (GDScript), Unity, DefoldGodot console ports go through third-party porting partners
2D in the browser, instant loadPhaser (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 browserthree.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 reachUnity (URP)Build size; per-platform texture compression
High-fidelity 3D, consoles, large teamsUnreal Engine 5C++ build times, editor weight, no web export
Cross-platform incl. consoles, C# teamUnityConsole SDKs need platform-holder developer accounts
Data-heavy simulation, thousands of entitiesUnity DOTS, Bevy, Unreal MassECS raises the cost of simple gameplay code
Code-first Rust, open sourceBevyA breaking release every few months — pin the minor and budget migrations
C# without an editor, full controlMonoGameYou build tooling (levels, UI) yourself
Teaching, jams, Python teampygame / pygame-cePerformance ceiling; web only through pygbag

Platform reach (verify against the pinned version's docs)

EngineWebMobileDesktopConsole
Unity 6Yes (Web build, heavy first load)YesYesYes, with platform-holder access
Godot 4 GDScriptYes (single-threaded export avoids cross-origin isolation headers)YesYesThrough third-party porting partners
Godot 4 C# (.NET)No — still unsupported in 4.7; choose GDScript for browser targetsYesYesAs above
Unreal Engine 5No official web exportYes (heavier)YesYes, with platform-holder access
Phaser / PixiJS / three.js / Babylon.js / PlayCanvasNativeMobile browsers; wrap with Capacitor if a store build is neededElectron/Tauri wrapperNo
Bevywasm32 (WebGL2 / WebGPU)ExperimentalYesNo official support
DefoldStrong HTML5YesYesSome consoles on request
MonoGameNo first-class webYesYesYes, for registered console developers

Licensing, at a high level

Not legal advice — read the current terms before committing a team to an engine, and name the terms you read in the decision.

  • Unity: subscription seats; a free tier below a revenue threshold. The per-install Runtime Fee was cancelled in 2024.
  • Unreal Engine: free to start; a royalty (5% of gross revenue above a lifetime threshold per title, US$1M at the time of writing) for games.
  • Godot (MIT), Bevy (MIT/Apache-2.0), three.js, Phaser, PixiJS, KAPLAY (MIT), Babylon.js (Apache-2.0), Excalibur (BSD-2), PlayCanvas engine (MIT; its hosted editor is a commercial service): no royalties.
  • MonoGame (Ms-PL), pygame (LGPL — fine when linked dynamically as usual), Defold (free, Defold License).

Language and team

  • C# team → Unity, Godot .NET (no web), MonoGame.
  • C++ team or Blueprint designers → Unreal.
  • Scripting-friendly, small team → Godot GDScript.
  • TypeScript web team → Phaser / PixiJS / three.js / Babylon.js / Excalibur / KAPLAY.
  • Rust team → Bevy.

Record 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.

Hard rule

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.

Common Mistakes

  • Choosing by preference when the repository already answered the question.
  • Godot C# for a game whose task lists the browser as a target.
  • Opening a Unity or Unreal project in whatever editor is installed instead of the pinned version.
  • Bevy without an exact minor pin, then breaking on the next cargo update.
  • PixiJS for a game that needs physics, scenes and audio, then rebuilding Phaser by hand.

Red Flags

  • A choice whose only reason is "it's popular" or "I know it best".
  • Two engines' packages in one package.json, or a .uproject beside ProjectSettings/.
  • An engine version bump in a diff for a task that never asked for one.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

makifbaysal/tasktrooper1172026년 10월 18일 업데이트

makifbaysal의 스킬 모두 보기

이 스킬의 문제 신고