#2 - GUI-ing & stuff
15/08/2025, 15:00:00Hello everyone! It's been a while — I've gotten a bit caught up with life and other stuff, and there were also some internal issues preventing me from updating the site (which have luckily been resolved). But I'm back with some updates on the game development!
First off, I never imagined this project would attract so much attention. We've now surpassed 2000 newsletter subscribers, achieved an average search ranking of 1.8, and the website recently hit 10,000 unique visitors! It’s amazing to see the community coming together around this, and I’m truly grateful for all your support.
I’ve also received hundreds of support emails in multiple languages - Czech, Spanish, English, Turkish, Italian, and more. While I can’t respond to every single one, I make sure to read each message personally.
Enough about the numbers, let's talk about the game!
GUIs
GUIs (Graphical User Interfaces) are a core part of every game, providing the interface through which players interact with the game world. My main goal over the past few weeks has been to create a responsive framework for the game's GUI and start porting all interfaces into my new game engine. This means no external GUI libraries will be used; everything is being built from the ground up to ensure seamless integration and top performance.
There are over 100 different GUIs in the original game, ranging in complexity from simple buttons to intricate menus and overlays. Each GUI element needs to be carefully designed and implemented to fit the new engine's architecture.
For now, I've implemented the vast majority of the simple static GUIs and am now moving on to the more intricate ones, like scrollable lists.
I've also implemented the main game HUD using this new framework.
Map Editing
Since none of the existing map editors (like Tiled) fit my specific needs, I decided to write my own custom map editor in C++. This editor allows me to create, save, and load game maps seamlessly and export them to a compact custom map format optimized for the engine. This should vastly simplify the process of map creation and editing, especially for large maps like Rio, which features an absurd number of animated sprites.
Preview of the editor on Pinheira Beach
Fishing
I've also started working on the fishing system. So far, I've implemented a custom script to extract fishing rods and import them into the game engine. Getting the rod positioning right turned out to be much trickier than I initially expected, but now the rods behave and appear correctly in-game.
The next major milestone is animating the fishing line rope along with the throw-in animations. I consider this one of the toughest parts of the game and a real challenge to get perfect. The original game relies on Verlet integration for the rope physics, and I plan to replicate that as faithfully as possible. Regarding the player throw-in animation, it's hard-coded directly into the movie clips - essentially how Flash operates: the movie script acts as an animation timeline, similar to After Effects. Translating that into the new engine will definitely be tricky.
Basic rod positioning demo with the Fishao rod
Website Revamp
The website also got a small revamp and was migrated to the SvelteKit framework. This change makes the site feel faster and also allows me to write blog posts more easily using Markdown. The very first blog post was hard-coded in plain HTML (lol), but now all posts are server-side rendered from Markdown files, which streamlines content creation a lot. The deployment process is also much easier thanks to Fly.io.
What's Next?
Looking ahead, I’m considering open-sourcing the project some time soon to encourage community contributions and transparency. Also, I know there was a gap of almost two months between this and the last blog post - whoops! Hopefully, it won’t take that long again. I’m aiming for more regular updates, so stay tuned for more frequent news and behind-the-scenes looks at the development.
There’s a lot of exciting development ahead, and I can’t wait to share more updates with you all.