Roadmap & Status
Easy3D / Guide / Roadmap & Status
This roadmap is intentionally conservative. Easy3D grows only as far as Galaxy Eggbert actually needs it. If a feature is not needed soon, it is not built. Anything not listed here is out of scope until explicitly approved.
Phase 0 — Scaffold done
- Build system (CMake, C++23,
easy3dstatic library target). - Documentation (
README.md, architecture/roadmap/questions docs, contribution rules). - Minimal helper classes (compilable stubs) and a self-contained test.
Phase 1 — Camera helpers done
Easy3D::Camera3D— position/target/up + FOV/aspect/near/far, producing CNA view and projectionMatrixvalues.Easy3D::OrbitCamera— target + yaw/pitch/distance orbit camera.Easy3D::FollowCamera— smoothed follow camera (target + offset + smoothing).
Phase 2 — Data-side batching and atlas helpers done
Non-rendering, CPU-side data storage — no GPU work, no draw calls.
Easy3D::TextureAtlas— named sub-rectangles + UV lookup, plusAddGrid(spritesheet grid insertion) andGetUvOrDefault(non-throwing lookup).Easy3D::BillboardBatch— queuesBillboardItem(position, size, UV, origin, rotation) for camera-facing quads.Easy3D::CubeBatch— queuesCubeItem(center, size, UV) for cubes / tiles.Easy3D::DebugDraw— queuesDebugLine/DebugBoxfor development overlays.
Phase 3 — CPU-side vertex builders in progress
Turn queued BillboardItem / CubeItem / DebugLine / DebugBox data into vertex/index arrays (CPU-side geometry only) — still no GPU calls, no GraphicsDevice, no shaders.
- Done:
AppendCubeMesh/BuildCubeMesh—CubeBatchitems → plainstd::vectorvertex/index arrays. - Remaining: billboard and debug-line vertex builders.
Phase 4 — CNA renderer adapters future
Consume the Phase 3 vertex/index data and actually issue CNA draw calls (GraphicsDevice, BasicEffect/SpriteBatch, vertex/index buffers). This is the first phase that requires a concrete CNA draw-path decision.
Phase 5 — Galaxy Eggbert support future
- Render Blupi as a billboard using existing Mobile Eggbert animation frames.
- Render simple cube / tile terrain.
- Provide debug drawing (lines, boxes) for development.
- Keep all Eggbert-specific logic outside Easy3D — Easy3D supplies generic billboard/cube/atlas/debug helpers only; the meaning of tiles, animation tables, and gameplay live in Galaxy Eggbert.
Phase 6 — Optional future no implementation yet
- Lua: discussion only. Lua is currently undecided and intentionally out of scope. If it ever happens it would be an optional, separate module (working name
easy3d-lua), and only after explicit approval. No Lua code before then. - Possible later: simple HUD/2D helpers (
Easy3D::Hud2D), and a discussion about whether Easy3D should ever load 3D models (vs. staying billboard / cube / tile only).
Current build & test status
| Configuration | Builds | Tests |
|---|---|---|
| Default (headers-only) | libeasy3d.a + CNA-free tests + compile-only checks of the CNA-dependent tests/example | basics, texture_atlas pass |
CNA-linked (-DEASY3D_LINK_CNA=ON) | SHARP_RUNTIME + backend + CNA + easy3d + camera example + all test executables | basics, texture_atlas, camera, batches, cube_mesh pass |
See Testing for how the two-tier test setup works.
Hard limits (do not cross without explicit approval)
No ECS, physics, navigation, networking, editor, asset database, resource cache, model importer, MeshCraft import, plugin system, or PBR renderer. The reasoning is on Design Principles.