@bmad/bmad-game-dev-studio 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.markdownlint-cli2.yaml +35 -0
- package/.nvmrc +1 -0
- package/.prettierignore +9 -0
- package/LICENSE +26 -0
- package/README.md +119 -0
- package/eslint.config.mjs +152 -0
- package/package.json +91 -0
- package/prettier.config.mjs +32 -0
- package/src/_module-installer/installer.js +110 -0
- package/src/_module-installer/platform-specifics/claude-code.js +23 -0
- package/src/_module-installer/platform-specifics/windsurf.js +18 -0
- package/src/agents/game-architect.agent.yaml +40 -0
- package/src/agents/game-designer.agent.yaml +45 -0
- package/src/agents/game-dev.agent.yaml +49 -0
- package/src/agents/game-qa.agent.yaml +63 -0
- package/src/agents/game-scrum-master.agent.yaml +56 -0
- package/src/agents/game-solo-dev.agent.yaml +49 -0
- package/src/agents/tech-writer/tech-writer.agent.yaml +45 -0
- package/src/gametest/qa-index.csv +18 -0
- package/src/module-help.csv +26 -0
- package/src/module.yaml +65 -0
- package/src/teams/default-party.csv +12 -0
- package/src/teams/team-gamedev.yaml +29 -0
- package/src/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +26 -0
- package/src/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
- package/src/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
- package/src/workflows/2-design/gdd/game-types.csv +25 -0
- package/src/workflows/2-design/gdd/workflow.yaml +101 -0
- package/src/workflows/2-design/narrative/workflow.yaml +77 -0
- package/src/workflows/3-technical/game-architecture/architecture-patterns.yaml +507 -0
- package/src/workflows/3-technical/game-architecture/decision-catalog.yaml +340 -0
- package/src/workflows/3-technical/game-architecture/engine-mcps.yaml +270 -0
- package/src/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
- package/src/workflows/3-technical/game-architecture/workflow.yaml +101 -0
- package/src/workflows/4-production/code-review/instructions.xml +226 -0
- package/src/workflows/4-production/code-review/workflow.yaml +64 -0
- package/src/workflows/4-production/correct-course/workflow.yaml +65 -0
- package/src/workflows/4-production/create-story/instructions.xml +345 -0
- package/src/workflows/4-production/create-story/workflow.yaml +61 -0
- package/src/workflows/4-production/dev-story/instructions.xml +410 -0
- package/src/workflows/4-production/dev-story/workflow.yaml +27 -0
- package/src/workflows/4-production/retrospective/workflow.yaml +58 -0
- package/src/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/workflows/4-production/sprint-planning/workflow.yaml +54 -0
- package/src/workflows/4-production/sprint-status/workflow.yaml +35 -0
- package/src/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/workflows/document-project/workflow.yaml +30 -0
- package/src/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/workflows/gametest/automate/workflow.yaml +50 -0
- package/src/workflows/gametest/e2e-scaffold/workflow.yaml +145 -0
- package/src/workflows/gametest/performance/workflow.yaml +48 -0
- package/src/workflows/gametest/playtest-plan/workflow.yaml +59 -0
- package/src/workflows/gametest/test-design/workflow.yaml +47 -0
- package/src/workflows/gametest/test-framework/workflow.yaml +48 -0
- package/src/workflows/gametest/test-review/workflow.yaml +48 -0
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
# Architecture Patterns - Common patterns identified from game design requirements
|
|
2
|
+
# Used during Step 4 (decisions) to match GDD keywords to architectural needs
|
|
3
|
+
#
|
|
4
|
+
# ⚠️ CRITICAL: All version/feature info MUST be verified via WebSearch during workflow
|
|
5
|
+
# This file only provides: triggers, relationships, and pattern identification logic
|
|
6
|
+
|
|
7
|
+
requirement_patterns:
|
|
8
|
+
realtime_multiplayer:
|
|
9
|
+
triggers:
|
|
10
|
+
- "real-time multiplayer"
|
|
11
|
+
- "online multiplayer"
|
|
12
|
+
- "networked gameplay"
|
|
13
|
+
- "PvP"
|
|
14
|
+
- "co-op"
|
|
15
|
+
- "competitive"
|
|
16
|
+
- "synchronous multiplayer"
|
|
17
|
+
decisions_needed:
|
|
18
|
+
- networking_model
|
|
19
|
+
- netcode_solution
|
|
20
|
+
- server_authority
|
|
21
|
+
- state_synchronization
|
|
22
|
+
- lag_compensation
|
|
23
|
+
- matchmaking
|
|
24
|
+
suggested_stack:
|
|
25
|
+
- "Dedicated servers or relay for authoritative gameplay"
|
|
26
|
+
- "Client-side prediction with server reconciliation"
|
|
27
|
+
- "UDP-based transport (ENet, LiteNetLib, or engine-native)"
|
|
28
|
+
- "Matchmaking service (engine-native, PlayFab, or custom)"
|
|
29
|
+
|
|
30
|
+
turn_based_multiplayer:
|
|
31
|
+
triggers:
|
|
32
|
+
- "turn-based"
|
|
33
|
+
- "asynchronous multiplayer"
|
|
34
|
+
- "hotseat"
|
|
35
|
+
- "play-by-mail"
|
|
36
|
+
- "card game"
|
|
37
|
+
- "board game"
|
|
38
|
+
decisions_needed:
|
|
39
|
+
- session_persistence
|
|
40
|
+
- turn_validation
|
|
41
|
+
- game_state_storage
|
|
42
|
+
- player_notification
|
|
43
|
+
- reconnection_handling
|
|
44
|
+
suggested_stack:
|
|
45
|
+
- "REST or WebSocket API for turn submission"
|
|
46
|
+
- "Server-side turn validation and state management"
|
|
47
|
+
- "Database-backed game state (SQLite, PostgreSQL, or cloud)"
|
|
48
|
+
- "Push notifications for turn alerts"
|
|
49
|
+
|
|
50
|
+
physics_simulation:
|
|
51
|
+
triggers:
|
|
52
|
+
- "physics"
|
|
53
|
+
- "rigid body"
|
|
54
|
+
- "collision"
|
|
55
|
+
- "ragdoll"
|
|
56
|
+
- "destruction"
|
|
57
|
+
- "vehicle simulation"
|
|
58
|
+
- "fluid simulation"
|
|
59
|
+
decisions_needed:
|
|
60
|
+
- physics_engine
|
|
61
|
+
- simulation_fidelity
|
|
62
|
+
- determinism_requirements
|
|
63
|
+
- collision_layer_strategy
|
|
64
|
+
- physics_tick_rate
|
|
65
|
+
suggested_stack:
|
|
66
|
+
- "Engine-native physics (PhysX, Jolt, Godot Physics)"
|
|
67
|
+
- "Fixed timestep simulation decoupled from rendering"
|
|
68
|
+
- "Collision layer matrix for performance"
|
|
69
|
+
- "Physics materials system for surface interactions"
|
|
70
|
+
|
|
71
|
+
procedural_generation:
|
|
72
|
+
triggers:
|
|
73
|
+
- "procedural"
|
|
74
|
+
- "randomly generated"
|
|
75
|
+
- "roguelike"
|
|
76
|
+
- "roguelite"
|
|
77
|
+
- "infinite terrain"
|
|
78
|
+
- "wave function collapse"
|
|
79
|
+
- "dungeon generation"
|
|
80
|
+
- "world generation"
|
|
81
|
+
decisions_needed:
|
|
82
|
+
- generation_algorithm
|
|
83
|
+
- seed_management
|
|
84
|
+
- chunk_streaming
|
|
85
|
+
- content_validation
|
|
86
|
+
- generation_pipeline
|
|
87
|
+
suggested_stack:
|
|
88
|
+
- "Seeded PRNG for reproducibility"
|
|
89
|
+
- "Chunk-based or room-based generation depending on scope"
|
|
90
|
+
- "Constraint-based validation passes"
|
|
91
|
+
- "Async generation with loading strategies"
|
|
92
|
+
|
|
93
|
+
rpg_systems:
|
|
94
|
+
triggers:
|
|
95
|
+
- "RPG"
|
|
96
|
+
- "character stats"
|
|
97
|
+
- "inventory"
|
|
98
|
+
- "skill tree"
|
|
99
|
+
- "leveling"
|
|
100
|
+
- "experience points"
|
|
101
|
+
- "equipment"
|
|
102
|
+
- "loot"
|
|
103
|
+
- "crafting"
|
|
104
|
+
decisions_needed:
|
|
105
|
+
- stat_system_design
|
|
106
|
+
- inventory_architecture
|
|
107
|
+
- progression_model
|
|
108
|
+
- save_data_schema
|
|
109
|
+
- effect_and_buff_system
|
|
110
|
+
suggested_stack:
|
|
111
|
+
- "Data-driven stat and item definitions (JSON, YAML, or ScriptableObjects)"
|
|
112
|
+
- "Component or ECS-based character system"
|
|
113
|
+
- "Serializable save system with versioning"
|
|
114
|
+
- "Observer pattern for stat change propagation"
|
|
115
|
+
|
|
116
|
+
platformer_mechanics:
|
|
117
|
+
triggers:
|
|
118
|
+
- "platformer"
|
|
119
|
+
- "2D physics"
|
|
120
|
+
- "jumping"
|
|
121
|
+
- "side-scrolling"
|
|
122
|
+
- "metroidvania"
|
|
123
|
+
- "precision movement"
|
|
124
|
+
decisions_needed:
|
|
125
|
+
- character_controller_type
|
|
126
|
+
- camera_system
|
|
127
|
+
- level_design_tools
|
|
128
|
+
- animation_system
|
|
129
|
+
- input_buffering
|
|
130
|
+
suggested_stack:
|
|
131
|
+
- "Custom character controller (not physics-driven rigidbody)"
|
|
132
|
+
- "Coyote time and input buffering for feel"
|
|
133
|
+
- "Tilemap or modular level construction"
|
|
134
|
+
- "State machine for character states"
|
|
135
|
+
|
|
136
|
+
strategy_rts:
|
|
137
|
+
triggers:
|
|
138
|
+
- "strategy"
|
|
139
|
+
- "RTS"
|
|
140
|
+
- "4X"
|
|
141
|
+
- "base building"
|
|
142
|
+
- "unit management"
|
|
143
|
+
- "resource management"
|
|
144
|
+
- "fog of war"
|
|
145
|
+
- "tower defense"
|
|
146
|
+
decisions_needed:
|
|
147
|
+
- pathfinding_solution
|
|
148
|
+
- unit_selection_system
|
|
149
|
+
- ai_architecture
|
|
150
|
+
- fog_of_war_approach
|
|
151
|
+
- resource_economy_model
|
|
152
|
+
suggested_stack:
|
|
153
|
+
- "A* or flow field pathfinding depending on unit count"
|
|
154
|
+
- "Spatial partitioning for unit queries (quadtree, spatial hash)"
|
|
155
|
+
- "Command pattern for unit orders"
|
|
156
|
+
- "ECS or data-oriented design for large unit counts"
|
|
157
|
+
|
|
158
|
+
puzzle_mechanics:
|
|
159
|
+
triggers:
|
|
160
|
+
- "puzzle"
|
|
161
|
+
- "logic game"
|
|
162
|
+
- "match-3"
|
|
163
|
+
- "word game"
|
|
164
|
+
- "brain teaser"
|
|
165
|
+
- "sokoban"
|
|
166
|
+
decisions_needed:
|
|
167
|
+
- puzzle_state_representation
|
|
168
|
+
- undo_redo_system
|
|
169
|
+
- hint_system
|
|
170
|
+
- difficulty_progression
|
|
171
|
+
- solution_validation
|
|
172
|
+
suggested_stack:
|
|
173
|
+
- "Immutable state snapshots for undo/redo"
|
|
174
|
+
- "Rule engine for move validation"
|
|
175
|
+
- "Data-driven puzzle definitions"
|
|
176
|
+
- "Analytics-informed difficulty tuning"
|
|
177
|
+
|
|
178
|
+
open_world:
|
|
179
|
+
triggers:
|
|
180
|
+
- "open world"
|
|
181
|
+
- "sandbox"
|
|
182
|
+
- "seamless world"
|
|
183
|
+
- "large map"
|
|
184
|
+
- "exploration"
|
|
185
|
+
- "survival"
|
|
186
|
+
- "crafting"
|
|
187
|
+
decisions_needed:
|
|
188
|
+
- world_streaming
|
|
189
|
+
- lod_strategy
|
|
190
|
+
- persistence_model
|
|
191
|
+
- ai_budget_management
|
|
192
|
+
- day_night_cycle
|
|
193
|
+
suggested_stack:
|
|
194
|
+
- "Chunk-based world streaming with async loading"
|
|
195
|
+
- "Multi-level LOD for terrain, objects, and AI"
|
|
196
|
+
- "Zone-based save system with dirty tracking"
|
|
197
|
+
- "Spatial partitioning for active entity management"
|
|
198
|
+
|
|
199
|
+
narrative_driven:
|
|
200
|
+
triggers:
|
|
201
|
+
- "story"
|
|
202
|
+
- "dialogue"
|
|
203
|
+
- "branching narrative"
|
|
204
|
+
- "visual novel"
|
|
205
|
+
- "quest system"
|
|
206
|
+
- "cutscenes"
|
|
207
|
+
- "choices matter"
|
|
208
|
+
decisions_needed:
|
|
209
|
+
- dialogue_system
|
|
210
|
+
- narrative_scripting_tool
|
|
211
|
+
- quest_tracking
|
|
212
|
+
- branching_logic
|
|
213
|
+
- localization_pipeline
|
|
214
|
+
suggested_stack:
|
|
215
|
+
- "Dialogue graph tool (Yarn Spinner, Ink, or custom)"
|
|
216
|
+
- "Event-driven quest state machine"
|
|
217
|
+
- "Flag/variable system for world state tracking"
|
|
218
|
+
- "Localization table with string keys"
|
|
219
|
+
|
|
220
|
+
mobile_casual:
|
|
221
|
+
triggers:
|
|
222
|
+
- "mobile"
|
|
223
|
+
- "casual"
|
|
224
|
+
- "free-to-play"
|
|
225
|
+
- "F2P"
|
|
226
|
+
- "hyper-casual"
|
|
227
|
+
- "idle game"
|
|
228
|
+
- "touch controls"
|
|
229
|
+
decisions_needed:
|
|
230
|
+
- monetization_model
|
|
231
|
+
- session_design
|
|
232
|
+
- save_and_sync
|
|
233
|
+
- performance_budget
|
|
234
|
+
- input_abstraction
|
|
235
|
+
suggested_stack:
|
|
236
|
+
- "Lightweight engine or framework (Unity Mobile, Godot, or custom)"
|
|
237
|
+
- "Cloud save with offline-first design"
|
|
238
|
+
- "Ad mediation SDK and IAP integration"
|
|
239
|
+
- "Aggressive memory and draw call budgeting"
|
|
240
|
+
|
|
241
|
+
vr_xr:
|
|
242
|
+
triggers:
|
|
243
|
+
- "VR"
|
|
244
|
+
- "virtual reality"
|
|
245
|
+
- "AR"
|
|
246
|
+
- "augmented reality"
|
|
247
|
+
- "XR"
|
|
248
|
+
- "mixed reality"
|
|
249
|
+
- "motion controls"
|
|
250
|
+
- "room-scale"
|
|
251
|
+
decisions_needed:
|
|
252
|
+
- xr_runtime
|
|
253
|
+
- interaction_system
|
|
254
|
+
- locomotion_method
|
|
255
|
+
- comfort_settings
|
|
256
|
+
- performance_target
|
|
257
|
+
suggested_stack:
|
|
258
|
+
- "OpenXR for cross-platform headset support"
|
|
259
|
+
- "Engine XR toolkit (XR Interaction Toolkit, XR Tools)"
|
|
260
|
+
- "Fixed foveated rendering and LOD for performance"
|
|
261
|
+
- "Comfort options (vignette, snap turn, teleport)"
|
|
262
|
+
|
|
263
|
+
fighting_action:
|
|
264
|
+
triggers:
|
|
265
|
+
- "fighting game"
|
|
266
|
+
- "action combat"
|
|
267
|
+
- "combo system"
|
|
268
|
+
- "hitbox"
|
|
269
|
+
- "frame data"
|
|
270
|
+
- "hack and slash"
|
|
271
|
+
- "beat-em-up"
|
|
272
|
+
decisions_needed:
|
|
273
|
+
- combat_system_architecture
|
|
274
|
+
- hitbox_hurtbox_system
|
|
275
|
+
- animation_canceling
|
|
276
|
+
- frame_data_model
|
|
277
|
+
- input_handling
|
|
278
|
+
suggested_stack:
|
|
279
|
+
- "Frame-based combat state machine"
|
|
280
|
+
- "Data-driven hitbox/hurtbox definitions"
|
|
281
|
+
- "Input buffer with command parsing"
|
|
282
|
+
- "Deterministic simulation for rollback netcode"
|
|
283
|
+
|
|
284
|
+
racing_vehicle:
|
|
285
|
+
triggers:
|
|
286
|
+
- "racing"
|
|
287
|
+
- "driving"
|
|
288
|
+
- "vehicle physics"
|
|
289
|
+
- "kart"
|
|
290
|
+
- "flight sim"
|
|
291
|
+
- "space sim"
|
|
292
|
+
decisions_needed:
|
|
293
|
+
- vehicle_physics_model
|
|
294
|
+
- track_design_tools
|
|
295
|
+
- camera_system
|
|
296
|
+
- ai_racing_line
|
|
297
|
+
- replay_system
|
|
298
|
+
suggested_stack:
|
|
299
|
+
- "Custom vehicle physics or engine-provided vehicle controller"
|
|
300
|
+
- "Spline-based track and AI path definition"
|
|
301
|
+
- "Ghost replay via input or transform recording"
|
|
302
|
+
- "Multiple camera modes (chase, cockpit, replay)"
|
|
303
|
+
|
|
304
|
+
# Quality attribute patterns
|
|
305
|
+
quality_attributes:
|
|
306
|
+
high_framerate:
|
|
307
|
+
triggers:
|
|
308
|
+
- "60 FPS"
|
|
309
|
+
- "120 FPS"
|
|
310
|
+
- "low latency"
|
|
311
|
+
- "performance critical"
|
|
312
|
+
- "competitive"
|
|
313
|
+
- "VR"
|
|
314
|
+
architectural_needs:
|
|
315
|
+
- frame_budget_allocation
|
|
316
|
+
- profiling_pipeline
|
|
317
|
+
- object_pooling
|
|
318
|
+
- batching_strategy
|
|
319
|
+
- gc_pressure_management
|
|
320
|
+
|
|
321
|
+
cross_platform:
|
|
322
|
+
triggers:
|
|
323
|
+
- "cross-platform"
|
|
324
|
+
- "PC and console"
|
|
325
|
+
- "mobile and desktop"
|
|
326
|
+
- "multi-platform"
|
|
327
|
+
- "Nintendo Switch"
|
|
328
|
+
- "Steam Deck"
|
|
329
|
+
architectural_needs:
|
|
330
|
+
- input_abstraction_layer
|
|
331
|
+
- resolution_scaling
|
|
332
|
+
- platform_capability_detection
|
|
333
|
+
- build_pipeline_per_platform
|
|
334
|
+
- platform_specific_apis
|
|
335
|
+
|
|
336
|
+
scalable_multiplayer:
|
|
337
|
+
triggers:
|
|
338
|
+
- "MMO"
|
|
339
|
+
- "hundreds of players"
|
|
340
|
+
- "massively multiplayer"
|
|
341
|
+
- "persistent world"
|
|
342
|
+
- "server scaling"
|
|
343
|
+
architectural_needs:
|
|
344
|
+
- server_fleet_management
|
|
345
|
+
- interest_management
|
|
346
|
+
- database_sharding
|
|
347
|
+
- zone_instancing
|
|
348
|
+
- load_balancing
|
|
349
|
+
|
|
350
|
+
mod_support:
|
|
351
|
+
triggers:
|
|
352
|
+
- "modding"
|
|
353
|
+
- "user-generated content"
|
|
354
|
+
- "UGC"
|
|
355
|
+
- "mod support"
|
|
356
|
+
- "workshop"
|
|
357
|
+
- "custom content"
|
|
358
|
+
architectural_needs:
|
|
359
|
+
- data_driven_architecture
|
|
360
|
+
- asset_loading_abstraction
|
|
361
|
+
- scripting_api
|
|
362
|
+
- sandboxed_execution
|
|
363
|
+
- content_validation
|
|
364
|
+
|
|
365
|
+
accessibility:
|
|
366
|
+
triggers:
|
|
367
|
+
- "accessibility"
|
|
368
|
+
- "colorblind"
|
|
369
|
+
- "subtitles"
|
|
370
|
+
- "remappable controls"
|
|
371
|
+
- "difficulty options"
|
|
372
|
+
- "assist mode"
|
|
373
|
+
architectural_needs:
|
|
374
|
+
- input_remapping_system
|
|
375
|
+
- text_scaling_and_narration
|
|
376
|
+
- color_palette_alternatives
|
|
377
|
+
- difficulty_modifier_system
|
|
378
|
+
- settings_persistence
|
|
379
|
+
|
|
380
|
+
# Game service integration patterns
|
|
381
|
+
integration_requirements:
|
|
382
|
+
player_services:
|
|
383
|
+
common_choices:
|
|
384
|
+
- "Steam API - PC standard (achievements, leaderboards, matchmaking)"
|
|
385
|
+
- "PlayFab - cross-platform backend services"
|
|
386
|
+
- "Epic Online Services - free cross-platform (auth, lobbies, voice)"
|
|
387
|
+
- "GameSparks or AccelByte - full-featured game backend"
|
|
388
|
+
- "Engine-native (Unity Gaming Services, Unreal Online Subsystem)"
|
|
389
|
+
considerations:
|
|
390
|
+
- platform_requirements
|
|
391
|
+
- cross_platform_needs
|
|
392
|
+
- cost_at_scale
|
|
393
|
+
- feature_completeness
|
|
394
|
+
|
|
395
|
+
monetization:
|
|
396
|
+
common_choices:
|
|
397
|
+
- "Steam IAP - PC purchases and DLC"
|
|
398
|
+
- "Platform stores - console-mandated (PSN, Xbox, Nintendo)"
|
|
399
|
+
- "Unity IAP or Godot IAP plugins - mobile"
|
|
400
|
+
- "Custom storefront - web-based games"
|
|
401
|
+
considerations:
|
|
402
|
+
- platform_revenue_share
|
|
403
|
+
- regional_pricing
|
|
404
|
+
- refund_policies
|
|
405
|
+
- receipt_validation
|
|
406
|
+
|
|
407
|
+
analytics_telemetry:
|
|
408
|
+
common_choices:
|
|
409
|
+
- "Unity Analytics or Unreal Insights - engine-native"
|
|
410
|
+
- "GameAnalytics - free tier, game-focused"
|
|
411
|
+
- "Amplitude or Mixpanel - product analytics"
|
|
412
|
+
- "Custom telemetry with time-series database"
|
|
413
|
+
considerations:
|
|
414
|
+
- privacy_compliance
|
|
415
|
+
- data_granularity
|
|
416
|
+
- real_time_vs_batch
|
|
417
|
+
- cost_per_event
|
|
418
|
+
|
|
419
|
+
voice_chat:
|
|
420
|
+
common_choices:
|
|
421
|
+
- "Vivox - industry standard (Unity/Unreal integration)"
|
|
422
|
+
- "Discord SDK - community-focused"
|
|
423
|
+
- "Photon Voice - Photon ecosystem"
|
|
424
|
+
- "Epic Online Services voice"
|
|
425
|
+
considerations:
|
|
426
|
+
- platform_compatibility
|
|
427
|
+
- spatial_audio_support
|
|
428
|
+
- moderation_tools
|
|
429
|
+
- bandwidth_overhead
|
|
430
|
+
|
|
431
|
+
cloud_saves:
|
|
432
|
+
common_choices:
|
|
433
|
+
- "Steam Cloud - PC standard"
|
|
434
|
+
- "Platform cloud (PSN, Xbox, iCloud)"
|
|
435
|
+
- "PlayFab or custom backend - cross-platform"
|
|
436
|
+
- "Engine services (Unity Cloud Save)"
|
|
437
|
+
considerations:
|
|
438
|
+
- conflict_resolution
|
|
439
|
+
- save_size_limits
|
|
440
|
+
- offline_support
|
|
441
|
+
- migration_between_versions
|
|
442
|
+
|
|
443
|
+
anti_cheat:
|
|
444
|
+
common_choices:
|
|
445
|
+
- "Easy Anti-Cheat - widely adopted, free for some engines"
|
|
446
|
+
- "BattlEye - AAA standard"
|
|
447
|
+
- "Custom server authority - indie/small scale"
|
|
448
|
+
- "VAC - Steam-integrated"
|
|
449
|
+
considerations:
|
|
450
|
+
- server_authority_level
|
|
451
|
+
- client_trust_model
|
|
452
|
+
- performance_impact
|
|
453
|
+
- platform_support
|
|
454
|
+
|
|
455
|
+
# Decision heuristics
|
|
456
|
+
decision_rules:
|
|
457
|
+
engine_selection:
|
|
458
|
+
if_requirements_include:
|
|
459
|
+
- 3d_high_fidelity: "Unreal Engine"
|
|
460
|
+
- 2d_focused: "Godot or Unity"
|
|
461
|
+
- cross_platform_mobile: "Unity or Godot"
|
|
462
|
+
- open_source_priority: "Godot"
|
|
463
|
+
- aaa_pipeline: "Unreal Engine"
|
|
464
|
+
- rapid_prototype: "Godot"
|
|
465
|
+
- web_browser_target: "Godot (HTML5), Phaser, or PlayCanvas"
|
|
466
|
+
- vr_xr: "Unity (XR Toolkit) or Unreal (OpenXR)"
|
|
467
|
+
|
|
468
|
+
networking_model:
|
|
469
|
+
if_requirements_include:
|
|
470
|
+
- competitive_pvp: "Dedicated servers with rollback or server reconciliation"
|
|
471
|
+
- cooperative_pve: "Host-migration capable peer-to-peer or listen servers"
|
|
472
|
+
- turn_based: "Client-server REST/WebSocket with authoritative state"
|
|
473
|
+
- mmo_scale: "Dedicated server fleet with spatial partitioning"
|
|
474
|
+
- local_multiplayer: "Shared-screen input splitting (no networking)"
|
|
475
|
+
|
|
476
|
+
physics_solution:
|
|
477
|
+
if_requirements_include:
|
|
478
|
+
- standard_3d: "Engine-native physics (PhysX, Jolt, Godot 3D)"
|
|
479
|
+
- deterministic_required: "Custom fixed-point or deterministic physics library"
|
|
480
|
+
- 2d_platformer: "Custom character controller with raycasts"
|
|
481
|
+
- vehicle_sim: "Specialized vehicle physics (engine-provided or custom)"
|
|
482
|
+
- destruction: "Engine destructibles or Chaos (Unreal) / custom solution"
|
|
483
|
+
|
|
484
|
+
audio_solution:
|
|
485
|
+
if_requirements_include:
|
|
486
|
+
- simple_sfx: "Engine-native audio system"
|
|
487
|
+
- adaptive_music: "FMOD or Wwise middleware"
|
|
488
|
+
- spatial_3d_audio: "Engine spatial audio or middleware (Wwise Spatial)"
|
|
489
|
+
- large_sound_library: "FMOD or Wwise for memory management and streaming"
|
|
490
|
+
- procedural_audio: "Custom DSP or middleware with scripting"
|
|
491
|
+
|
|
492
|
+
ai_approach:
|
|
493
|
+
if_requirements_include:
|
|
494
|
+
- simple_enemies: "Finite state machines"
|
|
495
|
+
- complex_behaviors: "Behavior trees"
|
|
496
|
+
- emergent_ai: "Utility AI or GOAP (Goal-Oriented Action Planning)"
|
|
497
|
+
- large_scale_rts: "Hierarchical AI with strategic and tactical layers"
|
|
498
|
+
- companion_npcs: "Behavior trees with context awareness"
|
|
499
|
+
- open_world_npcs: "Scheduler-based AI with daily routines"
|
|
500
|
+
|
|
501
|
+
save_system:
|
|
502
|
+
if_requirements_include:
|
|
503
|
+
- simple_progress: "Key-value storage (PlayerPrefs, config files)"
|
|
504
|
+
- complex_world_state: "Serialized scene graph with versioned schema"
|
|
505
|
+
- cloud_sync: "Platform cloud saves with local fallback"
|
|
506
|
+
- roguelike_runs: "Run state snapshot with permadeath logic"
|
|
507
|
+
- sandbox_world: "Chunk-based world serialization"
|