appiq-solution 1.3.3 → 1.4.3
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/#Tools/APPIQ-METHOD/.bmad-config.json +13 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/analyze.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/appiq.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/help.md +27 -0
- package/#Tools/APPIQ-METHOD/.cursor/commands/story.md +27 -0
- package/#Tools/APPIQ-METHOD/CHANGELOG.md +119 -173
- package/#Tools/APPIQ-METHOD/DEVELOPMENT_GUIDE.md +855 -0
- package/#Tools/APPIQ-METHOD/NPM-README.md +138 -0
- package/#Tools/APPIQ-METHOD/SMART_WORKFLOW_GUIDE.md +401 -0
- package/#Tools/APPIQ-METHOD/activate-appiq.js +81 -0
- package/#Tools/APPIQ-METHOD/appiq-solution/README.md +226 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-flutter-mobile.yaml +114 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-fullstack.yaml +11 -1
- package/#Tools/APPIQ-METHOD/bmad-core/agents/analyst.md +7 -3
- package/#Tools/APPIQ-METHOD/bmad-core/agents/architect.md +6 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-orchestrator.md +0 -84
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-smart-launcher.md +170 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/dev.md +31 -12
- package/#Tools/APPIQ-METHOD/bmad-core/agents/pm.md +10 -4
- package/#Tools/APPIQ-METHOD/bmad-core/agents/qa.md +17 -0
- package/#Tools/APPIQ-METHOD/bmad-core/agents/sm.md +8 -3
- package/#Tools/APPIQ-METHOD/bmad-core/agents/ux-expert.md +8 -3
- package/#Tools/APPIQ-METHOD/bmad-core/bmad-core/user-guide.md +0 -0
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/security-validation-checklist.md +332 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/backend-services-integration.md +686 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/shadcn-ui-integration.md +388 -0
- package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +147 -1
- package/#Tools/APPIQ-METHOD/bmad-core/enhanced-ide-development-workflow.md +43 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-flutter-story.md +197 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/intelligent-epic-creation.md +234 -0
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/smart-project-analysis.md +289 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +330 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-story-tmpl.yaml +376 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-ui-spec-tmpl.yaml +415 -0
- package/#Tools/APPIQ-METHOD/bmad-core/templates/fullstack-architecture-tmpl.yaml +12 -5
- package/#Tools/APPIQ-METHOD/bmad-core/user-guide.md +10 -9
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-fullstack.yaml +15 -1
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-fullstack.yaml +49 -5
- package/#Tools/APPIQ-METHOD/bmad-core/working-in-the-brownfield.md +56 -44
- package/#Tools/APPIQ-METHOD/commands/README.md +28 -0
- package/#Tools/APPIQ-METHOD/commands/analyze.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/appiq.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/help.md +27 -0
- package/#Tools/APPIQ-METHOD/commands/story.md +27 -0
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +2 -0
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +2 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +2 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +0 -111
- package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +2 -111
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agent-teams/flutter-mobile-team.yaml +23 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-cubit-agent.md +133 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-data-agent.md +160 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-domain-agent.md +153 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-ui-agent.md +122 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/agents/shared-components-agent.md +161 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/checklists/flutter-story-dod-checklist.md +194 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/config.yaml +41 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/data/flutter-development-guidelines.md +551 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/templates/flutter-mobile-architecture-tmpl.yaml +530 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev/workflows/flutter-ui-first-development.yaml +220 -0
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/#Tools/APPIQ-METHOD/install-appiq.sh +41 -0
- package/#Tools/APPIQ-METHOD/package-lock.json +631 -0
- package/#Tools/APPIQ-METHOD/package.json +20 -69
- package/#Tools/APPIQ-METHOD/tasks/todo.md +275 -0
- package/#Tools/APPIQ-METHOD/tools/appiq-installer.js +2714 -0
- package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +5 -7
- package/#Tools/APPIQ-METHOD/tools/cli.js +3 -3
- package/#Tools/APPIQ-METHOD/tools/epic-solution-installer.js +538 -0
- package/#Tools/APPIQ-METHOD/tools/flattener/main.js +570 -0
- package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +15 -14
- package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +28 -2
- package/#Tools/APPIQ-METHOD/tools/installer/package-lock.json +906 -0
- package/#Tools/APPIQ-METHOD/tools/installer/package.json +1 -1
- package/#Tools/APPIQ-METHOD/tools/setup-ide-commands.js +345 -0
- package/#Tools/APPIQ-METHOD/tools/smart-installer.js +589 -0
- package/package.json +20 -69
- package/tools/appiq-installer.js +2714 -0
- package/tools/bmad-npx-wrapper.js +5 -7
- package/tools/cli.js +3 -3
- package/tools/epic-solution-installer.js +538 -0
- package/tools/flattener/main.js +570 -0
- package/tools/installer/bin/bmad.js +15 -14
- package/tools/installer/lib/installer.js +28 -2
- package/tools/installer/package-lock.json +89 -89
- package/tools/installer/package.json +1 -1
- package/tools/setup-ide-commands.js +345 -0
- package/tools/smart-installer.js +589 -0
- package/#Tools/APPIQ-METHOD/appiq_start.md +0 -232
- package/#Tools/APPIQ-METHOD/deployment/DEPLOYMENT_GUIDE.md +0 -426
- package/#Tools/APPIQ-METHOD/deployment/GITHUB_RELEASE_GUIDE.md +0 -326
- package/#Tools/APPIQ-METHOD/deployment/README.md +0 -331
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-all.yaml +0 -14
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-fullstack.yaml +0 -18
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-no-ui.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/analyst.md +0 -81
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/architect.md +0 -84
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-master.md +0 -108
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-orchestrator.md +0 -234
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/dev.md +0 -76
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/pm.md +0 -79
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/po.md +0 -76
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/qa.md +0 -69
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/sm.md +0 -62
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/ux-expert.md +0 -66
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/architect-checklist.md +0 -443
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/change-checklist.md +0 -182
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/pm-checklist.md +0 -375
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/po-master-checklist.md +0 -441
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-dod-checklist.md +0 -101
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-draft-checklist.md +0 -156
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/bmad-kb.md +0 -803
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/brainstorming-techniques.md +0 -36
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/elicitation-methods.md +0 -134
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/technical-preferences.md +0 -3
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/advanced-elicitation.md +0 -117
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-epic.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-story.md +0 -147
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/correct-course.md +0 -70
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-brownfield-story.md +0 -304
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-deep-research-prompt.md +0 -289
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-next-story.md +0 -112
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/document-project.md +0 -341
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/index-docs.md +0 -179
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/kb-mode-interaction.md +0 -75
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/review-story.md +0 -145
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/shard-doc.md +0 -187
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/validate-next-story.md +0 -134
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/architecture-tmpl.yaml +0 -650
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -293
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -206
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -805
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/market-research-tmpl.yaml +0 -252
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/prd-tmpl.yaml +0 -202
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/project-brief-tmpl.yaml +0 -221
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/story-tmpl.yaml +0 -137
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/user-guide.md +0 -250
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-fullstack.yaml +0 -297
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-service.yaml +0 -187
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-ui.yaml +0 -197
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-fullstack.yaml +0 -240
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-service.yaml +0 -206
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-ui.yaml +0 -235
- package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/working-in-the-brownfield.md +0 -361
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/README.md +0 -3
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -71
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -78
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -64
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -201
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +0 -8
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -254
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -651
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -111
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -216
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -613
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -343
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -253
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -175
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -14
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +0 -80
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +0 -77
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +0 -78
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +0 -65
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -396
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -203
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -201
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -132
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/config.yaml +0 -6
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -776
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -590
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -111
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -151
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -184
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -200
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -1030
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -705
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -256
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -175
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/README.md +0 -147
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -71
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -484
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/config.yaml +0 -9
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +0 -308
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -160
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -154
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -424
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -629
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +0 -22
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +0 -20
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +0 -13
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +0 -20
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +0 -1487
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +0 -279
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +0 -649
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +0 -339
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +0 -622
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +0 -1027
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +0 -1451
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +0 -490
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/config.yaml +0 -54
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +0 -292
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +0 -483
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +0 -645
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +0 -489
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +0 -437
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +0 -408
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +0 -555
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +0 -336
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +0 -345
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +0 -281
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +0 -283
- package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +0 -404
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/appiq.md +0 -273
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/claude-appiq.md +0 -294
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/cursor-appiq.md +0 -516
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/universal-appiq.md +0 -448
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/windsurf-appiq.md +0 -698
- package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/start.md +0 -211
- package/#Tools/APPIQ-METHOD/deployment/build-release.sh +0 -449
- package/#Tools/APPIQ-METHOD/deployment/create-release.sh +0 -196
- package/#Tools/APPIQ-METHOD/deployment/dist/appiq_installer.sh +0 -678
- package/#Tools/APPIQ-METHOD/deployment/docs/main_prd.md +0 -36
- package/#Tools/APPIQ-METHOD/deployment/init_appiq.sh +0 -805
- package/#Tools/APPIQ-METHOD/deployment/init_appiq_v2.sh +0 -678
- package/#Tools/APPIQ-METHOD/deployment/installers/appiq-global.sh +0 -91
- package/#Tools/APPIQ-METHOD/deployment/installers/claude-integration.sh +0 -281
- package/#Tools/APPIQ-METHOD/deployment/installers/cursor-integration.sh +0 -257
- package/#Tools/APPIQ-METHOD/deployment/installers/terminal-integration.sh +0 -645
- package/#Tools/APPIQ-METHOD/deployment/installers/windsurf-integration.sh +0 -350
- package/#Tools/APPIQ-METHOD/deployment/package-v2.sh +0 -97
- package/#Tools/APPIQ-METHOD/deployment/package.sh +0 -363
- package/#Tools/APPIQ-METHOD/deployment/quick-install.sh +0 -57
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +0 -1530
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +0 -322
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +0 -692
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +0 -382
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +0 -665
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +0 -1070
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +0 -1494
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +0 -15613
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +0 -22
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +0 -20
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +0 -13
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +0 -20
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +0 -1487
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +0 -279
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +0 -649
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +0 -339
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +0 -622
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +0 -1027
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +0 -1451
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +0 -490
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/config.yaml +0 -54
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +0 -292
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +0 -483
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +0 -645
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +0 -489
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +0 -437
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +0 -408
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +0 -555
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +0 -336
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +0 -345
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +0 -281
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +0 -283
- package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +0 -404
- package/#Tools/APPIQ-METHOD/package-bmad-backup.json +0 -78
- package/#Tools/APPIQ-METHOD/slash-commands/appiq.md +0 -273
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/claude-appiq.md +0 -294
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/cursor-appiq.md +0 -516
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/universal-appiq.md +0 -448
- package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/windsurf-appiq.md +0 -698
- package/#Tools/APPIQ-METHOD/slash-commands/start.md +0 -211
- /package/#Tools/APPIQ-METHOD/{deployment/build/bmad-core/core-config.yaml → bmad-core/core-config.yaml.bak} +0 -0
@@ -1,651 +0,0 @@
|
|
1
|
-
# Game Development Guidelines
|
2
|
-
|
3
|
-
## Overview
|
4
|
-
|
5
|
-
This document establishes coding standards, architectural patterns, and development practices for 2D game development using Phaser 3 and TypeScript. These guidelines ensure consistency, performance, and maintainability across all game development stories.
|
6
|
-
|
7
|
-
## TypeScript Standards
|
8
|
-
|
9
|
-
### Strict Mode Configuration
|
10
|
-
|
11
|
-
**Required tsconfig.json settings:**
|
12
|
-
|
13
|
-
```json
|
14
|
-
{
|
15
|
-
"compilerOptions": {
|
16
|
-
"strict": true,
|
17
|
-
"noImplicitAny": true,
|
18
|
-
"strictNullChecks": true,
|
19
|
-
"strictFunctionTypes": true,
|
20
|
-
"noImplicitReturns": true,
|
21
|
-
"noUnusedLocals": true,
|
22
|
-
"noUnusedParameters": true,
|
23
|
-
"exactOptionalPropertyTypes": true
|
24
|
-
}
|
25
|
-
}
|
26
|
-
```
|
27
|
-
|
28
|
-
### Type Definitions
|
29
|
-
|
30
|
-
**Game Object Interfaces:**
|
31
|
-
|
32
|
-
```typescript
|
33
|
-
// Core game entity interface
|
34
|
-
interface GameEntity {
|
35
|
-
readonly id: string;
|
36
|
-
position: Phaser.Math.Vector2;
|
37
|
-
active: boolean;
|
38
|
-
destroy(): void;
|
39
|
-
}
|
40
|
-
|
41
|
-
// Player controller interface
|
42
|
-
interface PlayerController {
|
43
|
-
readonly inputEnabled: boolean;
|
44
|
-
handleInput(input: InputState): void;
|
45
|
-
update(delta: number): void;
|
46
|
-
}
|
47
|
-
|
48
|
-
// Game system interface
|
49
|
-
interface GameSystem {
|
50
|
-
readonly name: string;
|
51
|
-
initialize(): void;
|
52
|
-
update(delta: number): void;
|
53
|
-
shutdown(): void;
|
54
|
-
}
|
55
|
-
```
|
56
|
-
|
57
|
-
**Scene Data Interfaces:**
|
58
|
-
|
59
|
-
```typescript
|
60
|
-
// Scene transition data
|
61
|
-
interface SceneData {
|
62
|
-
[key: string]: any;
|
63
|
-
}
|
64
|
-
|
65
|
-
// Game state interface
|
66
|
-
interface GameState {
|
67
|
-
currentLevel: number;
|
68
|
-
score: number;
|
69
|
-
lives: number;
|
70
|
-
settings: GameSettings;
|
71
|
-
}
|
72
|
-
|
73
|
-
interface GameSettings {
|
74
|
-
musicVolume: number;
|
75
|
-
sfxVolume: number;
|
76
|
-
difficulty: "easy" | "normal" | "hard";
|
77
|
-
controls: ControlScheme;
|
78
|
-
}
|
79
|
-
```
|
80
|
-
|
81
|
-
### Naming Conventions
|
82
|
-
|
83
|
-
**Classes and Interfaces:**
|
84
|
-
|
85
|
-
- PascalCase for classes: `PlayerSprite`, `GameManager`, `AudioSystem`
|
86
|
-
- PascalCase with 'I' prefix for interfaces: `IGameEntity`, `IPlayerController`
|
87
|
-
- Descriptive names that indicate purpose: `CollisionManager` not `CM`
|
88
|
-
|
89
|
-
**Methods and Variables:**
|
90
|
-
|
91
|
-
- camelCase for methods and variables: `updatePosition()`, `playerSpeed`
|
92
|
-
- Descriptive names: `calculateDamage()` not `calcDmg()`
|
93
|
-
- Boolean variables with is/has/can prefix: `isActive`, `hasCollision`, `canMove`
|
94
|
-
|
95
|
-
**Constants:**
|
96
|
-
|
97
|
-
- UPPER_SNAKE_CASE for constants: `MAX_PLAYER_SPEED`, `DEFAULT_VOLUME`
|
98
|
-
- Group related constants in enums or const objects
|
99
|
-
|
100
|
-
**Files and Directories:**
|
101
|
-
|
102
|
-
- kebab-case for file names: `player-controller.ts`, `audio-manager.ts`
|
103
|
-
- PascalCase for scene files: `MenuScene.ts`, `GameScene.ts`
|
104
|
-
|
105
|
-
## Phaser 3 Architecture Patterns
|
106
|
-
|
107
|
-
### Scene Organization
|
108
|
-
|
109
|
-
**Scene Lifecycle Management:**
|
110
|
-
|
111
|
-
```typescript
|
112
|
-
class GameScene extends Phaser.Scene {
|
113
|
-
private gameManager!: GameManager;
|
114
|
-
private inputManager!: InputManager;
|
115
|
-
|
116
|
-
constructor() {
|
117
|
-
super({ key: "GameScene" });
|
118
|
-
}
|
119
|
-
|
120
|
-
preload(): void {
|
121
|
-
// Load only scene-specific assets
|
122
|
-
this.load.image("player", "assets/player.png");
|
123
|
-
}
|
124
|
-
|
125
|
-
create(data: SceneData): void {
|
126
|
-
// Initialize game systems
|
127
|
-
this.gameManager = new GameManager(this);
|
128
|
-
this.inputManager = new InputManager(this);
|
129
|
-
|
130
|
-
// Set up scene-specific logic
|
131
|
-
this.setupGameObjects();
|
132
|
-
this.setupEventListeners();
|
133
|
-
}
|
134
|
-
|
135
|
-
update(time: number, delta: number): void {
|
136
|
-
// Update all game systems
|
137
|
-
this.gameManager.update(delta);
|
138
|
-
this.inputManager.update(delta);
|
139
|
-
}
|
140
|
-
|
141
|
-
shutdown(): void {
|
142
|
-
// Clean up resources
|
143
|
-
this.gameManager.destroy();
|
144
|
-
this.inputManager.destroy();
|
145
|
-
|
146
|
-
// Remove event listeners
|
147
|
-
this.events.off("*");
|
148
|
-
}
|
149
|
-
}
|
150
|
-
```
|
151
|
-
|
152
|
-
**Scene Transitions:**
|
153
|
-
|
154
|
-
```typescript
|
155
|
-
// Proper scene transitions with data
|
156
|
-
this.scene.start("NextScene", {
|
157
|
-
playerScore: this.playerScore,
|
158
|
-
currentLevel: this.currentLevel + 1,
|
159
|
-
});
|
160
|
-
|
161
|
-
// Scene overlays for UI
|
162
|
-
this.scene.launch("PauseMenuScene");
|
163
|
-
this.scene.pause();
|
164
|
-
```
|
165
|
-
|
166
|
-
### Game Object Patterns
|
167
|
-
|
168
|
-
**Component-Based Architecture:**
|
169
|
-
|
170
|
-
```typescript
|
171
|
-
// Base game entity
|
172
|
-
abstract class GameEntity extends Phaser.GameObjects.Sprite {
|
173
|
-
protected components: Map<string, GameComponent> = new Map();
|
174
|
-
|
175
|
-
constructor(scene: Phaser.Scene, x: number, y: number, texture: string) {
|
176
|
-
super(scene, x, y, texture);
|
177
|
-
scene.add.existing(this);
|
178
|
-
}
|
179
|
-
|
180
|
-
addComponent<T extends GameComponent>(component: T): T {
|
181
|
-
this.components.set(component.name, component);
|
182
|
-
return component;
|
183
|
-
}
|
184
|
-
|
185
|
-
getComponent<T extends GameComponent>(name: string): T | undefined {
|
186
|
-
return this.components.get(name) as T;
|
187
|
-
}
|
188
|
-
|
189
|
-
update(delta: number): void {
|
190
|
-
this.components.forEach((component) => component.update(delta));
|
191
|
-
}
|
192
|
-
|
193
|
-
destroy(): void {
|
194
|
-
this.components.forEach((component) => component.destroy());
|
195
|
-
this.components.clear();
|
196
|
-
super.destroy();
|
197
|
-
}
|
198
|
-
}
|
199
|
-
|
200
|
-
// Example player implementation
|
201
|
-
class Player extends GameEntity {
|
202
|
-
private movement!: MovementComponent;
|
203
|
-
private health!: HealthComponent;
|
204
|
-
|
205
|
-
constructor(scene: Phaser.Scene, x: number, y: number) {
|
206
|
-
super(scene, x, y, "player");
|
207
|
-
|
208
|
-
this.movement = this.addComponent(new MovementComponent(this));
|
209
|
-
this.health = this.addComponent(new HealthComponent(this, 100));
|
210
|
-
}
|
211
|
-
}
|
212
|
-
```
|
213
|
-
|
214
|
-
### System Management
|
215
|
-
|
216
|
-
**Singleton Managers:**
|
217
|
-
|
218
|
-
```typescript
|
219
|
-
class GameManager {
|
220
|
-
private static instance: GameManager;
|
221
|
-
private scene: Phaser.Scene;
|
222
|
-
private gameState: GameState;
|
223
|
-
|
224
|
-
constructor(scene: Phaser.Scene) {
|
225
|
-
if (GameManager.instance) {
|
226
|
-
throw new Error("GameManager already exists!");
|
227
|
-
}
|
228
|
-
|
229
|
-
this.scene = scene;
|
230
|
-
this.gameState = this.loadGameState();
|
231
|
-
GameManager.instance = this;
|
232
|
-
}
|
233
|
-
|
234
|
-
static getInstance(): GameManager {
|
235
|
-
if (!GameManager.instance) {
|
236
|
-
throw new Error("GameManager not initialized!");
|
237
|
-
}
|
238
|
-
return GameManager.instance;
|
239
|
-
}
|
240
|
-
|
241
|
-
update(delta: number): void {
|
242
|
-
// Update game logic
|
243
|
-
}
|
244
|
-
|
245
|
-
destroy(): void {
|
246
|
-
GameManager.instance = null!;
|
247
|
-
}
|
248
|
-
}
|
249
|
-
```
|
250
|
-
|
251
|
-
## Performance Optimization
|
252
|
-
|
253
|
-
### Object Pooling
|
254
|
-
|
255
|
-
**Required for High-Frequency Objects:**
|
256
|
-
|
257
|
-
```typescript
|
258
|
-
class BulletPool {
|
259
|
-
private pool: Bullet[] = [];
|
260
|
-
private scene: Phaser.Scene;
|
261
|
-
|
262
|
-
constructor(scene: Phaser.Scene, initialSize: number = 50) {
|
263
|
-
this.scene = scene;
|
264
|
-
|
265
|
-
// Pre-create bullets
|
266
|
-
for (let i = 0; i < initialSize; i++) {
|
267
|
-
const bullet = new Bullet(scene, 0, 0);
|
268
|
-
bullet.setActive(false);
|
269
|
-
bullet.setVisible(false);
|
270
|
-
this.pool.push(bullet);
|
271
|
-
}
|
272
|
-
}
|
273
|
-
|
274
|
-
getBullet(): Bullet | null {
|
275
|
-
const bullet = this.pool.find((b) => !b.active);
|
276
|
-
if (bullet) {
|
277
|
-
bullet.setActive(true);
|
278
|
-
bullet.setVisible(true);
|
279
|
-
return bullet;
|
280
|
-
}
|
281
|
-
|
282
|
-
// Pool exhausted - create new bullet
|
283
|
-
console.warn("Bullet pool exhausted, creating new bullet");
|
284
|
-
return new Bullet(this.scene, 0, 0);
|
285
|
-
}
|
286
|
-
|
287
|
-
releaseBullet(bullet: Bullet): void {
|
288
|
-
bullet.setActive(false);
|
289
|
-
bullet.setVisible(false);
|
290
|
-
bullet.setPosition(0, 0);
|
291
|
-
}
|
292
|
-
}
|
293
|
-
```
|
294
|
-
|
295
|
-
### Frame Rate Optimization
|
296
|
-
|
297
|
-
**Performance Monitoring:**
|
298
|
-
|
299
|
-
```typescript
|
300
|
-
class PerformanceMonitor {
|
301
|
-
private frameCount: number = 0;
|
302
|
-
private lastTime: number = 0;
|
303
|
-
private frameRate: number = 60;
|
304
|
-
|
305
|
-
update(time: number): void {
|
306
|
-
this.frameCount++;
|
307
|
-
|
308
|
-
if (time - this.lastTime >= 1000) {
|
309
|
-
this.frameRate = this.frameCount;
|
310
|
-
this.frameCount = 0;
|
311
|
-
this.lastTime = time;
|
312
|
-
|
313
|
-
if (this.frameRate < 55) {
|
314
|
-
console.warn(`Low frame rate detected: ${this.frameRate} FPS`);
|
315
|
-
this.optimizePerformance();
|
316
|
-
}
|
317
|
-
}
|
318
|
-
}
|
319
|
-
|
320
|
-
private optimizePerformance(): void {
|
321
|
-
// Reduce particle counts, disable effects, etc.
|
322
|
-
}
|
323
|
-
}
|
324
|
-
```
|
325
|
-
|
326
|
-
**Update Loop Optimization:**
|
327
|
-
|
328
|
-
```typescript
|
329
|
-
// Avoid expensive operations in update loops
|
330
|
-
class GameScene extends Phaser.Scene {
|
331
|
-
private updateTimer: number = 0;
|
332
|
-
private readonly UPDATE_INTERVAL = 100; // ms
|
333
|
-
|
334
|
-
update(time: number, delta: number): void {
|
335
|
-
// High-frequency updates (every frame)
|
336
|
-
this.updatePlayer(delta);
|
337
|
-
this.updatePhysics(delta);
|
338
|
-
|
339
|
-
// Low-frequency updates (10 times per second)
|
340
|
-
this.updateTimer += delta;
|
341
|
-
if (this.updateTimer >= this.UPDATE_INTERVAL) {
|
342
|
-
this.updateUI();
|
343
|
-
this.updateAI();
|
344
|
-
this.updateTimer = 0;
|
345
|
-
}
|
346
|
-
}
|
347
|
-
}
|
348
|
-
```
|
349
|
-
|
350
|
-
## Input Handling
|
351
|
-
|
352
|
-
### Cross-Platform Input
|
353
|
-
|
354
|
-
**Input Abstraction:**
|
355
|
-
|
356
|
-
```typescript
|
357
|
-
interface InputState {
|
358
|
-
moveLeft: boolean;
|
359
|
-
moveRight: boolean;
|
360
|
-
jump: boolean;
|
361
|
-
action: boolean;
|
362
|
-
pause: boolean;
|
363
|
-
}
|
364
|
-
|
365
|
-
class InputManager {
|
366
|
-
private inputState: InputState = {
|
367
|
-
moveLeft: false,
|
368
|
-
moveRight: false,
|
369
|
-
jump: false,
|
370
|
-
action: false,
|
371
|
-
pause: false,
|
372
|
-
};
|
373
|
-
|
374
|
-
private keys!: { [key: string]: Phaser.Input.Keyboard.Key };
|
375
|
-
private pointer!: Phaser.Input.Pointer;
|
376
|
-
|
377
|
-
constructor(private scene: Phaser.Scene) {
|
378
|
-
this.setupKeyboard();
|
379
|
-
this.setupTouch();
|
380
|
-
}
|
381
|
-
|
382
|
-
private setupKeyboard(): void {
|
383
|
-
this.keys = this.scene.input.keyboard.addKeys("W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT");
|
384
|
-
}
|
385
|
-
|
386
|
-
private setupTouch(): void {
|
387
|
-
this.scene.input.on("pointerdown", this.handlePointerDown, this);
|
388
|
-
this.scene.input.on("pointerup", this.handlePointerUp, this);
|
389
|
-
}
|
390
|
-
|
391
|
-
update(): void {
|
392
|
-
// Update input state from multiple sources
|
393
|
-
this.inputState.moveLeft = this.keys.A.isDown || this.keys.LEFT.isDown;
|
394
|
-
this.inputState.moveRight = this.keys.D.isDown || this.keys.RIGHT.isDown;
|
395
|
-
this.inputState.jump = Phaser.Input.Keyboard.JustDown(this.keys.SPACE);
|
396
|
-
// ... handle touch input
|
397
|
-
}
|
398
|
-
|
399
|
-
getInputState(): InputState {
|
400
|
-
return { ...this.inputState };
|
401
|
-
}
|
402
|
-
}
|
403
|
-
```
|
404
|
-
|
405
|
-
## Error Handling
|
406
|
-
|
407
|
-
### Graceful Degradation
|
408
|
-
|
409
|
-
**Asset Loading Error Handling:**
|
410
|
-
|
411
|
-
```typescript
|
412
|
-
class AssetManager {
|
413
|
-
loadAssets(): Promise<void> {
|
414
|
-
return new Promise((resolve, reject) => {
|
415
|
-
this.scene.load.on("filecomplete", this.handleFileComplete, this);
|
416
|
-
this.scene.load.on("loaderror", this.handleLoadError, this);
|
417
|
-
this.scene.load.on("complete", () => resolve());
|
418
|
-
|
419
|
-
this.scene.load.start();
|
420
|
-
});
|
421
|
-
}
|
422
|
-
|
423
|
-
private handleLoadError(file: Phaser.Loader.File): void {
|
424
|
-
console.error(`Failed to load asset: ${file.key}`);
|
425
|
-
|
426
|
-
// Use fallback assets
|
427
|
-
this.loadFallbackAsset(file.key);
|
428
|
-
}
|
429
|
-
|
430
|
-
private loadFallbackAsset(key: string): void {
|
431
|
-
// Load placeholder or default assets
|
432
|
-
switch (key) {
|
433
|
-
case "player":
|
434
|
-
this.scene.load.image("player", "assets/defaults/default-player.png");
|
435
|
-
break;
|
436
|
-
default:
|
437
|
-
console.warn(`No fallback for asset: ${key}`);
|
438
|
-
}
|
439
|
-
}
|
440
|
-
}
|
441
|
-
```
|
442
|
-
|
443
|
-
### Runtime Error Recovery
|
444
|
-
|
445
|
-
**System Error Handling:**
|
446
|
-
|
447
|
-
```typescript
|
448
|
-
class GameSystem {
|
449
|
-
protected handleError(error: Error, context: string): void {
|
450
|
-
console.error(`Error in ${context}:`, error);
|
451
|
-
|
452
|
-
// Report to analytics/logging service
|
453
|
-
this.reportError(error, context);
|
454
|
-
|
455
|
-
// Attempt recovery
|
456
|
-
this.attemptRecovery(context);
|
457
|
-
}
|
458
|
-
|
459
|
-
private attemptRecovery(context: string): void {
|
460
|
-
switch (context) {
|
461
|
-
case "update":
|
462
|
-
// Reset system state
|
463
|
-
this.reset();
|
464
|
-
break;
|
465
|
-
case "render":
|
466
|
-
// Disable visual effects
|
467
|
-
this.disableEffects();
|
468
|
-
break;
|
469
|
-
default:
|
470
|
-
// Generic recovery
|
471
|
-
this.safeShutdown();
|
472
|
-
}
|
473
|
-
}
|
474
|
-
}
|
475
|
-
```
|
476
|
-
|
477
|
-
## Testing Standards
|
478
|
-
|
479
|
-
### Unit Testing
|
480
|
-
|
481
|
-
**Game Logic Testing:**
|
482
|
-
|
483
|
-
```typescript
|
484
|
-
// Example test for game mechanics
|
485
|
-
describe("HealthComponent", () => {
|
486
|
-
let healthComponent: HealthComponent;
|
487
|
-
|
488
|
-
beforeEach(() => {
|
489
|
-
const mockEntity = {} as GameEntity;
|
490
|
-
healthComponent = new HealthComponent(mockEntity, 100);
|
491
|
-
});
|
492
|
-
|
493
|
-
test("should initialize with correct health", () => {
|
494
|
-
expect(healthComponent.currentHealth).toBe(100);
|
495
|
-
expect(healthComponent.maxHealth).toBe(100);
|
496
|
-
});
|
497
|
-
|
498
|
-
test("should handle damage correctly", () => {
|
499
|
-
healthComponent.takeDamage(25);
|
500
|
-
expect(healthComponent.currentHealth).toBe(75);
|
501
|
-
expect(healthComponent.isAlive()).toBe(true);
|
502
|
-
});
|
503
|
-
|
504
|
-
test("should handle death correctly", () => {
|
505
|
-
healthComponent.takeDamage(150);
|
506
|
-
expect(healthComponent.currentHealth).toBe(0);
|
507
|
-
expect(healthComponent.isAlive()).toBe(false);
|
508
|
-
});
|
509
|
-
});
|
510
|
-
```
|
511
|
-
|
512
|
-
### Integration Testing
|
513
|
-
|
514
|
-
**Scene Testing:**
|
515
|
-
|
516
|
-
```typescript
|
517
|
-
describe("GameScene Integration", () => {
|
518
|
-
let scene: GameScene;
|
519
|
-
let mockGame: Phaser.Game;
|
520
|
-
|
521
|
-
beforeEach(() => {
|
522
|
-
// Mock Phaser game instance
|
523
|
-
mockGame = createMockGame();
|
524
|
-
scene = new GameScene();
|
525
|
-
});
|
526
|
-
|
527
|
-
test("should initialize all systems", () => {
|
528
|
-
scene.create({});
|
529
|
-
|
530
|
-
expect(scene.gameManager).toBeDefined();
|
531
|
-
expect(scene.inputManager).toBeDefined();
|
532
|
-
});
|
533
|
-
});
|
534
|
-
```
|
535
|
-
|
536
|
-
## File Organization
|
537
|
-
|
538
|
-
### Project Structure
|
539
|
-
|
540
|
-
```
|
541
|
-
src/
|
542
|
-
├── scenes/
|
543
|
-
│ ├── BootScene.ts # Initial loading and setup
|
544
|
-
│ ├── PreloadScene.ts # Asset loading with progress
|
545
|
-
│ ├── MenuScene.ts # Main menu and navigation
|
546
|
-
│ ├── GameScene.ts # Core gameplay
|
547
|
-
│ └── UIScene.ts # Overlay UI elements
|
548
|
-
├── gameObjects/
|
549
|
-
│ ├── entities/
|
550
|
-
│ │ ├── Player.ts # Player game object
|
551
|
-
│ │ ├── Enemy.ts # Enemy base class
|
552
|
-
│ │ └── Collectible.ts # Collectible items
|
553
|
-
│ ├── components/
|
554
|
-
│ │ ├── MovementComponent.ts
|
555
|
-
│ │ ├── HealthComponent.ts
|
556
|
-
│ │ └── CollisionComponent.ts
|
557
|
-
│ └── ui/
|
558
|
-
│ ├── Button.ts # Interactive buttons
|
559
|
-
│ ├── HealthBar.ts # Health display
|
560
|
-
│ └── ScoreDisplay.ts # Score UI
|
561
|
-
├── systems/
|
562
|
-
│ ├── GameManager.ts # Core game state management
|
563
|
-
│ ├── InputManager.ts # Cross-platform input handling
|
564
|
-
│ ├── AudioManager.ts # Sound and music system
|
565
|
-
│ ├── SaveManager.ts # Save/load functionality
|
566
|
-
│ └── PerformanceMonitor.ts # Performance tracking
|
567
|
-
├── utils/
|
568
|
-
│ ├── ObjectPool.ts # Generic object pooling
|
569
|
-
│ ├── MathUtils.ts # Game math helpers
|
570
|
-
│ ├── AssetLoader.ts # Asset management utilities
|
571
|
-
│ └── EventBus.ts # Global event system
|
572
|
-
├── types/
|
573
|
-
│ ├── GameTypes.ts # Core game type definitions
|
574
|
-
│ ├── UITypes.ts # UI-related types
|
575
|
-
│ └── SystemTypes.ts # System interface definitions
|
576
|
-
├── config/
|
577
|
-
│ ├── GameConfig.ts # Phaser game configuration
|
578
|
-
│ ├── GameBalance.ts # Game balance parameters
|
579
|
-
│ └── AssetConfig.ts # Asset loading configuration
|
580
|
-
└── main.ts # Application entry point
|
581
|
-
```
|
582
|
-
|
583
|
-
## Development Workflow
|
584
|
-
|
585
|
-
### Story Implementation Process
|
586
|
-
|
587
|
-
1. **Read Story Requirements:**
|
588
|
-
|
589
|
-
- Understand acceptance criteria
|
590
|
-
- Identify technical requirements
|
591
|
-
- Review performance constraints
|
592
|
-
|
593
|
-
2. **Plan Implementation:**
|
594
|
-
|
595
|
-
- Identify files to create/modify
|
596
|
-
- Consider component architecture
|
597
|
-
- Plan testing approach
|
598
|
-
|
599
|
-
3. **Implement Feature:**
|
600
|
-
|
601
|
-
- Follow TypeScript strict mode
|
602
|
-
- Use established patterns
|
603
|
-
- Maintain 60 FPS performance
|
604
|
-
|
605
|
-
4. **Test Implementation:**
|
606
|
-
|
607
|
-
- Write unit tests for game logic
|
608
|
-
- Test cross-platform functionality
|
609
|
-
- Validate performance targets
|
610
|
-
|
611
|
-
5. **Update Documentation:**
|
612
|
-
- Mark story checkboxes complete
|
613
|
-
- Document any deviations
|
614
|
-
- Update architecture if needed
|
615
|
-
|
616
|
-
### Code Review Checklist
|
617
|
-
|
618
|
-
**Before Committing:**
|
619
|
-
|
620
|
-
- [ ] TypeScript compiles without errors
|
621
|
-
- [ ] All tests pass
|
622
|
-
- [ ] Performance targets met (60 FPS)
|
623
|
-
- [ ] No console errors or warnings
|
624
|
-
- [ ] Cross-platform compatibility verified
|
625
|
-
- [ ] Memory usage within bounds
|
626
|
-
- [ ] Code follows naming conventions
|
627
|
-
- [ ] Error handling implemented
|
628
|
-
- [ ] Documentation updated
|
629
|
-
|
630
|
-
## Performance Targets
|
631
|
-
|
632
|
-
### Frame Rate Requirements
|
633
|
-
|
634
|
-
- **Desktop**: Maintain 60 FPS at 1080p
|
635
|
-
- **Mobile**: Maintain 60 FPS on mid-range devices, minimum 30 FPS on low-end
|
636
|
-
- **Optimization**: Implement dynamic quality scaling when performance drops
|
637
|
-
|
638
|
-
### Memory Management
|
639
|
-
|
640
|
-
- **Total Memory**: Under 100MB for full game
|
641
|
-
- **Per Scene**: Under 50MB per gameplay scene
|
642
|
-
- **Asset Loading**: Progressive loading to stay under limits
|
643
|
-
- **Garbage Collection**: Minimize object creation in update loops
|
644
|
-
|
645
|
-
### Loading Performance
|
646
|
-
|
647
|
-
- **Initial Load**: Under 5 seconds for game start
|
648
|
-
- **Scene Transitions**: Under 2 seconds between scenes
|
649
|
-
- **Asset Streaming**: Background loading for upcoming content
|
650
|
-
|
651
|
-
These guidelines ensure consistent, high-quality game development that meets performance targets and maintains code quality across all implementation stories.
|