|
| 1 | +# 📜 Histórico de Desenvolvimento |
| 2 | + |
| 3 | +> Artefatos de desenvolvimento comprimidos — fases, roadmaps, planos e revisões. |
| 4 | +> Para documentação técnica real da engine, consulte o [`README.md`](README.md). |
| 5 | +
|
| 6 | +--- |
| 7 | + |
| 8 | +## Fases de Desenvolvimento |
| 9 | + |
| 10 | +O projeto foi estruturado em 6 fases progressivas. Abaixo, o resumo de cada fase e seu status atual. |
| 11 | + |
| 12 | +| Fase | Nome | Descrição | Status | |
| 13 | +|:----:|------|-----------|:------:| |
| 14 | +| 0 | Setup & Docs | Infraestrutura, repositório, CI, documentação base | ✅ Completo | |
| 15 | +| 1 | Fundação Atômica | Core types, custom allocators, containers, math library | ✅ Completo | |
| 16 | +| 2 | Concorrência | Timer, Job System, Game Loop, Input, Debug Tools | 📅 Pendente | |
| 17 | +| 3 | RHI & 2D | RHI (SDL_GPU), Batch Renderer, Camera 2D, Asset Manager | 📅 Pendente | |
| 18 | +| 4 | ECS & Sistemas | ECS Archetype, Scene, Events, Physics, Animation, Audio, UI | 📅 Pendente | |
| 19 | +| 5 | Transição 3D | Quaternions, Mesh Loading, Camera 3D, Spatial Partitioning | 📅 Futuro | |
| 20 | +| 6 | Caffeine Studio | Embedded UI (ImGui), Scene Editor, Asset Pipeline, Scripting | 📅 Pendente | |
| 21 | + |
| 22 | +### Fase 0 — Setup & Documentação |
| 23 | +- Repositório GitHub, estrutura de branches, CI (GitHub Actions) |
| 24 | +- Build system CMake com testes |
| 25 | +- Documentação: MASTER.md, ROADMAP.md, SPECS.md, architecture_specs.md |
| 26 | +- Style guide e convenções de código |
| 27 | + |
| 28 | +### Fase 1 — Fundação Atômica |
| 29 | +- Tipos de largura fixa (`u8..u64`, `f32`, `f64`, `usize`) |
| 30 | +- Custom allocators (Linear, Pool, Stack) com interface `IAllocator` |
| 31 | +- Containers (Vector, HashMap, StringView, FixedString) |
| 32 | +- Math library (Vec2, Vec3, Vec4, Mat4) |
| 33 | +- Testes: `test_core.cpp` (8), `test_allocators.cpp` (16+3), `test_containers.cpp` (14+1), `test_math.cpp` (18) |
| 34 | + |
| 35 | +### Fase 2 — Concorrência *(planejado)* |
| 36 | +- High-Resolution Timer com precisão de microssegundos |
| 37 | +- Job System com work-stealing, lock-free queue, 3 níveis de prioridade |
| 38 | +- Fiber-based jobs (jobs podem suspender sem bloquear OS thread) |
| 39 | +- Game Loop com fixed timestep (60 updates/s) + interpolação |
| 40 | +- Input System com action mapping remapável |
| 41 | +- Debug Tools: LogSystem, Profiler, DebugDraw |
| 42 | + |
| 43 | +### Fase 3 — RHI & 2D *(planejado)* |
| 44 | +- RHI: abstração sobre SDL_GPU com triple buffering |
| 45 | +- Batch Renderer: 50K sprites em 1 draw call |
| 46 | +- Texture Atlas com bin-packing |
| 47 | +- Camera 2D com follow e shake |
| 48 | +- Asset Manager com async loading e hot-reload |
| 49 | +- Formato `.caf` (Caffeine Asset Format) — zero-parsing, zero-copy |
| 50 | + |
| 51 | +### Fase 4 — ECS & Sistemas *(planejado)* |
| 52 | +- ECS Archetype-based com cache locality |
| 53 | +- Command Buffer diferido (create/destroy seguro durante iteração) |
| 54 | +- Scene Manager com hierarquia parent/child e serialização `.caf` |
| 55 | +- Event Bus pub/sub com `Event<T>` tipado |
| 56 | +- Physics 2D (AABB/circle collision, rigid body) |
| 57 | +- Animation 2D (sprite clips, state machine) |
| 58 | +- Audio System (SDL_AudioStream, spatial 2D) |
| 59 | +- UI System retained mode (widgets ECS, bindValue) |
| 60 | +- Scripting bindings iniciais (Lua/AngelScript) |
| 61 | + |
| 62 | +### Fase 5 — Transição 3D *(futuro distante)* |
| 63 | +- Quaternion + SLERP para rotações 3D |
| 64 | +- Mesh loading (.obj, .gltf) via Asset Manager |
| 65 | +- Shader system (HLSL/GLSL) |
| 66 | +- Octree para spatial partitioning + frustum culling |
| 67 | +- Camera 3D (perspectiva, lookAt, FPS e orbital) |
| 68 | +- Skeletal Animation (bones, skinning, blend trees) |
| 69 | + |
| 70 | +### Fase 6 — Caffeine Studio IDE *(planejado)* |
| 71 | +- Dear ImGui integrado ao SDL3 |
| 72 | +- Scene Editor com drag-and-drop, inspector, hierarchy |
| 73 | +- Transform gizmos (Translate/Rotate/Scale) |
| 74 | +- Asset Pipeline CLI (PNG/WAV/OBJ → `.caf`) |
| 75 | +- Scripting (Lua/AngelScript, hot-reload) |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## Convenções e Padrões de Desenvolvimento |
| 80 | + |
| 81 | +Extraído de `SPECS.md` — regras que guiaram o desenvolvimento: |
| 82 | + |
| 83 | +### Princípios |
| 84 | +- **DOD** — Data-Oriented Design: dados organizados para cache locality |
| 85 | +- **YAGNI** — You Ain't Gonna Need It: não implementar o que não é necessário |
| 86 | +- **KISS** — Keep It Simple, Stupid: simplicidade acima de tudo |
| 87 | +- **Lock-free** onde possível, mutex onde necessário |
| 88 | +- **Zero-dependency**: reduzir ao máximo dependência da std, criar stdlib própria |
| 89 | + |
| 90 | +### Convenções de Código |
| 91 | +- C++20, namespaces aninhados (`Caffeine::Module`) |
| 92 | +- Nomenclatura: PascalCase para tipos, camelCase para métodos/membros |
| 93 | +- Headers com documentação Doxygen |
| 94 | +- Sem `new`/`delete` soltos — usar custom allocators |
| 95 | +- Sem RTTI, sem exceções, sem virtual em hot paths |
| 96 | + |
| 97 | +### Fluxo de Trabalho (R.I.C.O.) |
| 98 | +1. **Research** — Pesquisar padrões e referências |
| 99 | +2. **Idea** — Propor solução |
| 100 | +3. **Conflict** — Debater trade-offs |
| 101 | +4. **Order** — Implementar e documentar |
| 102 | + |
| 103 | +--- |
| 104 | + |
| 105 | +## Planos e Revisões Anteriores |
| 106 | + |
| 107 | +Documentos de planejamento detalhado e revisões foram mantidos durante o desenvolvimento. Estão disponíveis no histórico do git. |
| 108 | + |
| 109 | +--- |
| 110 | + |
| 111 | +> ℹ️ Este documento substitui os antigos `ROADMAP.md`, `SPECS.md`, templates e READMEs de fase. |
| 112 | +> Para documentação técnica atualizada, consulte os diretórios funcionais em [`docs/`](README.md). |
0 commit comments