This session repaired native custom-editor drift and made the custom piece editor genuinely interactive.
- Replaced the stale
CustomGameEditorheader declaration with a correctCustomGameEditorControldeclaration matching the implementation and engine references. - Reworked
src/Puzzle/CustomGameEditor.cppinto a live native editor control backed byGameType/PieceType/Rotationdata. - Added controls for:
- add piece type
- add rotation
- clear rotation
- previous / next piece navigation
- previous / next rotation navigation
- Wired the 4x4 Gwen button grid to real
Rotation::blockOffsetsso native users can toggle piece cells directly. - Added live summary labels showing current piece, rotation, total rotations, filled cells, grid size, mode, and hold/next settings.
- Ran
git diff --checkspecifically for:src/Puzzle/CustomGameEditor.hsrc/Puzzle/CustomGameEditor.cpp
- No whitespace / patch-format errors were reported.
- The native repo still contains unrelated dirty build/lib state and untracked ECS component files; this session intentionally avoided staging those.
- A full native rebuild was not attempted in this pass because the repo is already carrying unrelated build output churn. The header/implementation mismatch fix is still valuable build-recovery work.
- Added local remove-piece and remove-rotation controls to the native custom editor patch.
- Updated the pending native docs/version to
2.0.2. - This native follow-up is still waiting on the existing workspace submodule lock before it can be committed.
- Added local duplicate-piece and duplicate-rotation controls to the native custom editor patch.
- Updated the pending native docs/version to
2.0.3. - The native repo is still blocked by the existing lock, so this remains a ready-to-commit local patch.
- Documented the next local native editor parity step as a rotation-overview / direct-rotation-navigation patch.
- Updated the pending native docs/version to
2.0.4. - The native repo remains blocked by the same existing lock.
- Documented the next local native editor parity step as advanced gameplay-rule toggles to match the newly shipped web and Java editors.
- Updated the pending native docs/version to
2.0.5. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as next-piece / hold-piece / bag-randomizer / movement-kick toggles to match the newly shipped web and Java editors.
- Updated the pending native docs/version to
2.0.6. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as quick preset save/load slots to match the newly shipped web and Java iteration workflow.
- Updated the pending native docs/version to
2.0.7. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as one-click classic preset buttons to match the newly shipped web and Java shortcut workflow.
- Updated the pending native docs/version to
2.0.8. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as one-click empty-rotation cleanup to match the newly shipped web and Java cleanup workflow.
- Updated the pending native docs/version to
2.0.13. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as bounded recent-history recall for imported/shared rulesets to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.14. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as one-click centering of every rotation in the selected piece to match the newly shipped web and Java geometry workflow.
- Updated the pending native docs/version to
2.0.15. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as a bounded recent-action panel for meaningful editor operations to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.16. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as focused block authoring controls and piece block override assignment to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.17. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as focused second-pass block-rule controls like special colors, special chance/frequency, flashing, match-any-color, and counter behavior to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.18. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as multi-color block palette authoring to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.19. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as reward-piece assignment plus focused chain-behavior hooks for selected blocks to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.20. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as engine-backed field-effect toggles for gravity-ignore and field-wide color effects to match the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.21. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as direct built-in-template slot saves so the C++ editor can mirror the newly shipped web and Java workflow.
- Updated the pending native docs/version to
2.0.26. - The native repo is still blocked by the same existing lock.
- Documented the next local native editor parity step as a unified template library mixing built-ins, saved slots, and import history, so the C++ editor can match the newly shipped web and Java template-ecosystem workflow.
- Updated the pending native docs/version to
2.0.27. - The native repo is still blocked by the same existing lock.
- Run a focused native compile once the unrelated build-tree dirt is isolated and the lock clears.
- Hook
saveAllToCurrentGameType()into the actual save/upload flow. - Add a miniature live preview piece renderer next to the grid.
- Consider confirmation prompts for delete actions if native editor UX testing shows accidental removals.
- Visualizer Shaders Modernization: RESOLVED SDL3 COMPATIBILITY. Restored the missing
projectMsubmodule tookgame/lib/projectm. - Shader Pipeline: Modified internal C++ code generation files within the
projectMsource (MilkdropStaticShaders.cpp.in,CopyTexture.cpp,TransitionShaderManager.cpp, andMilkdropSprite.cpp) to inject#version 330 corerather than the deprecated#version 330. This is required by strict modern OpenGL Context Profiles, which SDL3 requests by default on modern operating systems. - Build System: Re-enabled the
add_subdirectory(lib/projectm)and linked the library to thebobsgameexecutable inCMakeLists.txt.
- Addressed the SDL3 shader compilation failures that occur when legacy
#version 330headers are used in a strictly enforced Core Profile. - Restored the missing visualization dependencies.
- Steam Integration Polish: This is the final item on the ROADMAP! The C++ client is configured and linked with the real Steamworks SDK v1.64. The application needs to be launched in an environment where the Steam Client is running to verify that the overlay attaches and achievements trigger.
- Cross-Platform Playtest: Conduct a final real-world playtest connecting a C++, Java, and Web client to the same Node.js server.
- The
.gitmodulesfile did not contain an entry forprojectM, so it was manually added by cloning the official repository directly intookgame/lib/projectm. - The shader modifications had to be made directly to the
libprojectMC++ source code because the shaders are compiled into the binary as static strings using CMake's@STATIC_SHADER_CONTENTS@replacements, rather than loaded from.glslfiles at runtime.