UI Updates
Part 1: UI
- Settings actually work now, supports sliders and switches
- Made this cool inventory UI (Went through a few iterations)
- Bottom left shows status effects (Active potions, friend bonuses, whatnot)
- Ascension Tracker on top! Now you do not need to travel to the board just to see your progress
- Bottom GUI circles (To open things like inventory, looks kind of bad right now, I’m gonna fix soon)
Part 2: Onboarding (WIP)
Motivation:
- When a player joins the game, the first experience is the most important, since it decides whether the player is retained OR leaves within the first 5 minutes.
- In my first game, the tutorial was merely a giant piece of text… and the results of that is reflected.. (see the image of the graph) Lesson learned!
This onboarding system features a spotlight masking, which was weird to implement since Roblox does not have a native feature to punch a shape-shaped hole out of a UI overlay (no CSG/boolean cutout support), so the spotlight had to be faked using a UICorner-and-oversized-UIStroke trick.
For 3D objects, I projected the 3D target’s screen-space bounding box into 2D so the spotlight could track a world-space object using the same screen-space hole-masking system as the UI targets.
Part 3: Upgrade Tree
Wired to the server, right now we are using a bunch of toy upgrades. Next time, we will actually implement content.
- Going more technical, the upgrade tree works as a giant tree (kind of a DAG but not really)
- We do a level-order (BFS) traversal to produce the cool closing effect.
- Node revealing uses a lazy DFS-like frontier expansion at runtime (revealing a node spawns only its immediate children as a locked preview ring; deeper nodes don’t exist client-side until their parent is actually leveled. So the client never materializes the whole tree at once)
Part 4: Refactors 💀💀
Yeah. The front-end code was a bit messy so had to refactor a bit. I decided on eliminating pseudo-OOP and just using static declaration since it’s more simple and maintainable.. well I hope..
Part 5: Convention reinforcement
Wrote a quick shell script that runs a sequence of checks across the codebase to enforce conventions, like variable naming, stylua, and selene. This will be ran every pre-commit and github ci/cd. At this point I might as well add PMD.
Part 6: I have no idea lol
If you want to discuss or talk about this project, don’t hesitate to post a comment or add my discord: SeasonedRiceFarmer
(Watermark to prevent work stealing; yeah it happened before.. multiple times.. not in hack club though, y’all are mad cool…)