I spent two full days creating a virtual keyboard to ensure the game is compatible with any device, regardless of hardware. I’ve seen so many games on Steam marked “Playable on Steam Deck” with a yellow exclamation point, often just because they require a keyboard for something simple like entering a name or a save file. So, I figured it was worth building one from scratch.
I’m pretty proud of it. It instantiates itself independently and destroys itself once the input is submitted.
It’s not glamorous, but a video game requires a lot of behind-the-scenes work. I spent the last few days wiring up menus and developing a save game system based on serializing and deserializing JSON files—it’s not complex, but I realized that if not done carefully, this is exactly the kind of thing that can result in game saves becoming corrupted. There needs to be validation before, during, and after saving, along with a disaster recovery mechanism to guarantee the validity of a save file. Now I have a splash screen, title screen, settings screen, load game screen, and credits screen. It’s starting to feel like an actual product!
Today wasn’t exactly a thrill ride, but I did wrestle with one of the more underappreciated beasts of game development: scene transitions. The challenge wasn’t just making them look smooth; it was ensuring that saved game profiles and database entries persist correctly between scenes without dragging the entire game’s dataset and graphical assets into memory all at once. Nobody wants their game to hog resources like a dragon guarding its hoard; efficiency is everything!
To tackle this, I leaned on static classes, but I might need to bring in Singletons if things start getting unwieldy. The real headache, though, was ensuring that no collections were being queried before they actually existed. Turns out, when the game boots up, players might take a scenic route. Hopping from the splash screen to the title screen, maybe checking out settings, loading a save, or even scrolling through the credits before diving in. That means any null reference lurking in the shadows can cause a crash before the real adventure even begins.
It’s the kind of problem that’s invisible when everything works, but painfully obvious when it doesn’t.
Trying to get all the swaps and overlaps to work perfectly was incredibly difficult. In the beginning, swapping simply meant an instantaneous flip-flop of two actors’ positions, which was easy but felt cold and sterile. Introducing sliding made the game livelier, but it also brought a host of issues that needed to be handled on a case-by-case basis. For example, if your hero moves so quickly that two enemies are set to share one location, the code must recognize this situation and designate a “winner” (the sliding enemy closest to the destination tile). The “loser” then aborts its current path, adopts a new behavior, and upon reaching the overlapped destination, redirects to the winner’s previous location, ensuring that no two actors ever occupy the same tile.
It’s not quite perfect, but compared to where it was I’m happy it’s working as well as it is.
I’m working on implementing portraits. When two heroes surround at least one enemy with no gaps between them, they initiate a pincer attack.
Went on a tangent and spent the day making a splash screen
One feature I’m excited about is character-specific abilities. I think there’s significant strategic value in assembling a team of heroes with distinct roles and skills. For example, I envision a Paladin Tank being able to shield-bash an adjacent opponent, stunning them for the round or reducing their accumulated action points (top bar). Incorporating classic MMO “Holy Trinity” mechanics could make the game particularly engaging.
Hello,
I’m an independent game developer who has spent the past year working on a tile based game. I started this on my birthday last year as a passion project and it quickly turned into a deep dive into game design, especially the math behind the mechanics. It took way longer than I expected to get things feeling right, and I have a whole new appreciation for just how much goes on behind the scenes.
After countless iterations (and plenty of mistakes), I’ve finally reached a point where the game is playable, though it’s still very bare-bones. It’s finally time to share what I’ve been working on. This is just the beginning, but I’m excited to see where it goes.
Looking forward to your thoughts!