Ship
Ship #2
first off super star project!! yippie :O
for anyone new: obliberry is a fallout-inspired isometric game engine for hex-grid games, written in C++20 + OpenGL, with a visual editor, an ECS core, its own scripting language (ObSL), and single-file project packaging…
since ship 1 it’s been a bunch of devlogs and ~170 hours.
i think the engine went from “usable enough” to now that it’s running an actual (teeny-tiny) game on it now.
changes
new systems
-
post processing : ping-pong effect chain with a full editor UI, custom fragment shader import, built-in ColorGrading / FilmGrain / Vignette, and a shader
#includesystem with helper libs -
3D collision : GJK-based detection, box/sphere/cylinder/rect/circle colliders, triggers, 32 layers + masks, billboard colliders so sprites can have colliders that line up with what you see, and script callbacks (
on_collision_enter,on_trigger_exit, …). hex movement respects colliders now -
sprite animation : animation assets with multiple named clips and per-frame durations, a full editor with live preview,
SpriteAnimatorscripting (Play/Pause/Stop…) -
asset system : project-wide
assets.jsoncatalog instead of assets baked into every scene, lazy loading with dependency resolution, safer scene switching, and a migrator tool for old projects -
saves : generic key/value save data (
save_set/save_get/save_list…) stored per project, atomic writes -
persistent entities :
SetPersistent(true)and it survives scene changes
scripting (ObSL)
-
Prop/PropEntity/PropUI: script properties that show up in the inspector per entity. no moreFind()spaghetti -
Send/Broadcast/on_message: scripts can talk to each other now -
SetTimeout, collision-awareTransform.TryMoveTo, map editing from scripts, sounds that persist across scene changes,IsEditor() - script wrappers are uuid-bound now so recycled entity ids can’t make a wrapper point at the wrong thing
editor
- deleting entities is undoable now !!! full subtree snapshot + restore, and all undo commands are uuid-based so they survive ids being recycled
- map editor overhaul: brush sizes 1–8, Rect/Circle shapes, multi-select with bulk editing, actual hotkeys
- tons of UI gizmo fixes
- separate Logs / ObSL panels, camera focus on F, recent projects, live theme editor with font management
- exports now build a dependency manifest by walking the ObSL AST, so packages only contain what the project actually uses
stability (less explosions, hopefully)
- unit test suite (GoogleTest + CTest) and ASan/UBSan builds. unsurprisingly this found bugs. many bugs
- 16-byte
Core::UUIDeverywhere, safer entity destruction withon_destroyordering, failed scene loads no longer nuke the scene you’re in, render-thread resource lifetime fixes, a thread-safety pass, and an audio engine cleanup with RAII - genberally just a TON of bug fixes since last ship (including various crashes etc)
DEMO!!!!!
- i made a tiny game demo in the engine and it has been the single best bug finder in existence most of the gizmo, pathing and audio fixes above happened because the demo tripped over them… try it out!!!
I have learnt tons from this project… a lot of this has been fun and painfull… but it’s working!!!
thank you all for reading :D !!!
- 41 devlogs
- 173h
- 19.81x multiplier
- 3424 Stardust
