2.6 KiB
2.6 KiB
Architecture Overview
This repository contains both the active legacy PHP game and an in-progress TypeScript rewrite. The legacy engine remains the source of truth while the monorepo plan is prepared alongside it.
Project Naming
- Official name: 삼국지 모의전투 HiDCHe
- Common nicknames: 삼모, 삼모전, 힏체섭
- Short forms in code/docs: sammo, hidche
- TypeScript rewrite working name: sammo-ts
Layers
- Legacy runtime: PHP entry points under
legacy/andlegacy/hwe/ - Legacy engine core: domain logic under
legacy/hwe/sammo/ - Legacy frontend: Vue/TypeScript under
legacy/hwe/ts/ - Rewrite (in progress): pnpm workspace monorepo under
packages/andapp/
Current Implementation Notes
packages/infrais live with Prisma/Postgres connectors used by game services.app/game-engineimplements an in-memory turn daemon with DB flush hooks and Redis control transport.app/game-apiexposes tRPC endpoints for reserved turns, messages, and battle sims, communicating with the daemon via Redis.- Gateway/game frontends are still placeholders (not part of current runtime).
Legacy Data Migration Policy
- Data under
legacy/is migration-only and not used by the rewrite at runtime. - After DB migration completes, legacy data is no longer required.
Data and State
- PHP engine owns authoritative gameplay state today
- Scenario and unit pack data are loaded from
legacy/hwe/scenario/ - Deterministic RNG is required for gameplay outcomes
- Build/runtime profiles are server+scenario pairs; scenario selection is required because it drives unit sets and DB settings.
Legacy Docs
- Legacy entities and DB schema overview:
docs/architecture/legacy-entities.md - Legacy engine map:
docs/architecture/legacy-engine.md - Postgres schema proposal (rewrite):
docs/architecture/postgres-schema.md
Cross-Cutting Policies
- No ad-hoc randomness for gameplay; use deterministic RNG
- External JSON/data inputs must be validated with zod; name zod schemas with a
zprefix. - Keep domain logic independent of endpoints or UI
- Prefer clear Korean comments in core gameplay logic for maintainers
- Test strategy and layering:
docs/testing-policy.md
Runtime Processing (Outline)
This document links to detailed runtime behavior in docs/architecture/runtime.md.
Use that document for turn daemon scheduling, API request handling, and
persistence sequencing.
The turn daemon lifecycle and control contract are documented in
docs/architecture/turn-daemon-lifecycle.md.
Documentation TODOs
- Pending follow-ups:
docs/architecture/todo.md.