~/pixelsprout $ cat projects/rocco/README

rocco

A 3D game engine in Odin that runs games written in Roc. Source onGitHub.

~/pixelsprout $ rocco status --roadmap
stage 3/7one leaf per milestone
  • [x]M1one source tree, three desktop targetsgrown
    • [x] Linux link spike in Docker
    • [x] Replace the MSL shader string with a sokol-shdc build step
    • [x] Add the three platform files
    • [x] Roc build script and Windows input script
    • [x] Add ROCCO_EXIT_AFTER_FRAMES to the host
    • [x] Run bodies on Linux in Docker
    • [x] Build and run bodies on Windows by hand
    • [x] Rewrite the roadmap and README for three targets
    • [x] Fix GL clip-space depth with sokol-shdc fixup_clipspace
    • [x] Pin sokol as a git submodule
  • [x]M2the platform stops naming the gamegrown
    • [x] Audit and extend the roc-odin-glue spec for the generic platform
    • [x] Write the host side of Scene and link examples/entity-game
    • [x] Link examples/cards end to end on the generic platform
    • [x] Update the build script and checks; delete bodies and docs/examples
    • [x] Write the camera package in packages/camera/
    • [x] Add the allocation report and scripts/alloc-check.sh
    • [x] Check both games on x64win by hand
    • [x] Fix the nine glue review nits
  • [x]M3mesh handles and the manifestgrown
    • [x] Give the renderer a mesh table indexed by id
    • [x] Build the manifest from the mesh table
    • [x] Draw every Scene entry with its own mesh and transform
    • [x] Add the Meshes package and port the three games to it
  • [~]M4geometry from diskgrowing
    • [ ] Pick a mesh format and load positions, normals, indices
    • [ ] Load every file in assets/meshes/ into the level arena at startup
    • [ ] Add each mesh file to the manifest under its file stem
    • [ ] Add a generation to mesh ids before level meshes unload
  • [ ]M5entities in Rocseed
    • [ ] Move entities into the game's Model as List(Entity)
    • [ ] Implement parenting as a parent : U64 field and a fold
  • [ ]M6collision as dataseed
    • [ ] Compute swept AABB contacts on the host
    • [ ] Add List(Contact) as a third argument to step
    • [ ] Let the game decide what a contact means
  • [ ]M7one gameplay verbseed
    • [ ] Add one verb as a stage in the step pipeline with a test
    • [ ] Add a win state to the Model and a Scene that shows it
  • [ ]sideBeside the milestones: opportunistic workseed
    • [ ] Alpha: GitHub Actions CI matrix over the three targets
    • [ ] Debug drawing: lines, wireframe, text
    • [ ] Audio via saudio, returned as data
    • [ ] Shader loading and reload
    • [ ] The allocation pool behind roc_alloc and roc_dealloc
    • [ ] Debug and speed parity for allocator counters
    • [ ] Alpha: publish the platform with roc bundle
    • [ ] Command list: pure requests for host-side lifetime
    • [ ] Simplify the macOS sysroot script to keep the SDK layout
  • [x]sideShared code for gamesgrown
    • [x] Spike: expose the vocabulary types from the platform to games
    • [x] Research: give games named sokol key codes
    • [x] Grill: where the vocabulary types and key codes live
    • [x] Add pf.Vocabulary and port the three games to it
    • [x] Generate pf.Key from sokol and port the three games to it
~/pixelsprout $ git log devlog --oneline -- rocco

nothing published yet