I've been playing Monster World IV, a late Japanese-only Genesis platformer. The Pepelogoo creatures are so adorable! Overall, the game is very polished and colorful - a hidden gem in my mind.

New music track, and my longest yet! This one is called "Castle".

What do you think of when you hear this track? Feel free to share!

I found some time to revisit my tunes and brush them up. Here's "WaitingLoopv2"!

In addition, the Trebuchet for Chapter III was already complete. It was actually done before the FIRST island was released. If I remember correctly, we wanted to use it on the first island but couldn't fit it in.

Here you can see the trebuchet and an animation it'd play had it been implemented.

All-in-all, Longbeard was poised to be a major hit, and our team's passion for it was clear. What happened was a tragic ending to a project with so much potential.


Show thread

We already had plans for the Volcano Island, such as rope physics for sword combat. I've dug up notes that I must've taken back with me when I left.

We planned an entire fight while the player is drunk! In this game, your view gets distorted when you "drink" beer. It was actually a very cool effect. In hindsight, this may have caused even more motion sickness.

I remember lots of assets were already created for this island, including an awesome rock golem boss.


Show thread

Here is the official roadmap we put out for the game post-launch. I don't remember what the Chapter of Fortune was supposed to be, and I don't believe we planned that far just yet. It could've been some form of DLC.


Show thread

TRBot 2.3 introduced WebSocket connections as a means of playing games through text. Here's a proof of concept on a simple website via Django Channels.

I've finished refactoring the input macro parser for , and it passes all the unit tests I throw at it. There were a few remaining issues that I had to tweak the regex further to fix.

Here's a look at benchmarks comparing the old and new input macro parsers. It may not seem like much at a glance, but this difference is huge for more active streams with 30+ players. The less delay between entering text in chat and having the character move = happier players :)

New track, titled "HardLevel". Remember that level that gave you a hard time as a kid? This is it.

Success! I just needed to check for the hotkeys key presses and handle the save/load events for the new inputs. Everything is working perfectly now!

Show thread

My current mini-project: adding direct savestate slot support into RetroArch. I have new entries showing up in the menu, and now I need to figure out why they're not working.

New track, titled "Lab". Maybe this plays when meeting the professor? Turning on the power? Lots of options here!

Another little track, titled "Caves". You may not know what's lurking ahead, but you better be prepared!

One month later, and here's my first little tune, using LMMS with the Nescaline plugin!

Called "WaitingLoop", this little tune can be played while waiting for another player to connect via link cable...or maybe an in-game event? Ominous area? There are lots of possibilities!


Show thread

When I was developing Maze Burrow, one goal was to make it lightweight. As a result, it makes very few draw calls - less than 10 most of the time!

This video shows the draw calls (near upper-left) change at several parts of the game. Fonts aside, sprites are grouped in textures - the game uses only 5 textures!

In cases, such as warp numbers, I render fonts, which adds draw calls. I could've added digits directly to textures to further reduce draw calls.

The new parser for TRBot allows for new input names and vastly improved tests.

ParserComponents have their own named regex sequences. The order of these components determines the syntax.

For compatibility with the current syntax, the StandardParser is designed to handle specific named regex groups - like "hold", "input", "percent" - but another parser can handle anything. Parsers implement a common interface so the details aren't important to the main application.

Here's a look at how I used finite state machines in Maze Burrow.

Global = Global game state. This is the base state machine for the game.

IG = IngameState, aka when you're in a level.

OW = OverworldState, aka when you're on the overworld map.

Player = The player's own state machine.

There are states within existing states (Ex. IngameState has states for paused, undo, playing, etc). This allows substates to access common data from the parent state.

Here's another personal favorite, called "Partner". My inspiration for this one was Sakon's Hideout in Majora's Mask where you switch between Link and Kafei.

Similarly, here you have to utilize the Paired Blocks on each side to get them both to their tiles. This is also one of the largest vertical levels in the game.

This is one of my favorite levels I designed for Maze Burrow; it's called "Solved". It's a recursive level that starts out solved, and you have to take it apart and complete it again to progress. Once you complete it and get to the portal, you can take warp 1 to start from the beginning again.

Show older
Gamedev Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!