Retro Roguelike Dungeon Crawler (Long Overdue Updates)

Last time I did a devlog it was to say the code was refactored and cross-platform.

Big new changes are procedural generation is back and I added "fog of war", with conditional compilation. This means if it doesn't fit, those features can be disabled. It's more work that way but means I can reach more target computers. For eg. perhaps even those with 16KB of RAM.

If you are not familiar, procedural generation in this context means game mazes that are random but using an algorithm so they are always "solvable" (no dead-ends trapping the player).

Fog of war is the maze will be revealed as you move around.

image.png

If I was working only on a specific target computer I could have used a simpler approach, say using colour RAM to turn character cells from black on black into visible. This is cross-platform so I have to find ways to make the actual drawing quick regardless which machine it is running on. I realised after first screen draw only the new cells need to be drawn until I get to redevelop for Raylib for modern systems. The Raylib (game library with graphics) version has a kind of light halo for atmosphere, the 8-bit systems certainly do not!

Dogfooding and the joys of building a cross-platform IDE

Of course for compilation and testing in emulators I have been using my web-based IDE. I do have desktop emulators too, such as Vice for commodore systems, ZEsarUX (how is that pronounced??) for Amstrad/Speccy, etc, which is handy when I break the web based one.

A striking example of that is when C compilation worked perfectly for small programs but anything over 16KB started borking in execution. What I hadn't realised is in my haste to try different configurations, for example moving the start and end of memory banks etc, I had multiple copies of configs and varying versions of compilers, plus some compilers run on my linux server and others are in WASM. Days were lost through my own idiocy.

Fortunately the game now fits almost everywhere apart from BBC Micro (!?) - which being a 32KB system is strange, considering the game works fine on expanded Vic 20 which has less memory ... I think I might have to get my calculator out on that one ...

image.png

Procedural generation is even working on 48kb ZX Spectrum, though with 32 column screen.

Problem is, this is the bare-bones game, not the full finished thing, and there is no wiggle room for added features ... so fat-trimming continues.

image.png

As well as trying to get the thing to fit, I was able to move onto some cosmetics. Most of the target platforms do allow custom character sets, which will be nice on those where there is remaining 2kb+ of space, and many have colour in modes that fit the available memory, but good colour palettes with only 3 colours plus black are still challenging.

Turns out I had been using the wrong colour hex values for the Amstrad and had been blaming my compilation workflow. Still not the best colour choices even now but at least these are ones I chose!

image.png

Interested in coding software and games for retro computers and games consoles?

I now have a Retro Game Coders channel in the Retro Software Discord server:

https://discord.gg/eEsuHp3rYt

Sort:  

That's some dedication. Developers had to be creative on systems with such limited resources. I just don't play many games these days, but then I did play with an original Pac Man machine at a party recently. I got through a few levels. The Beeb was my first computer and so holds a special place in my heart. I wish I hadn't sold it.

The beeb is a great machine, especially considering when it came out. Was too expensive for us back in the day so I only got one as a fully grown retro collecting adult :)

It was premium with a proper keyboard and expandability. My Model A was £300 I think. It got more memory later so I could play all the games. Even a floppy drive was expensive.

Yeah we got a model B at my junior school through the government subsidy and that had tape recorder for the longest time. We got an upgrade on load so we could contribute to the domesday project https://en.wikipedia.org/wiki/BBC_Domesday_Project but I had moved up to high school when it was finally compiled so never got to see it working with the laser disk :)

A long long time ago I bought a piece of software for my nephew that allowed you to make your own RPG games in the style of Dragon Warrior. He spent a lot of time making his own maps and worlds with all kinds of loot and different characters.

I wish modern programmers were as dedicated to optimization and "trimming fat" as retro game devs have to be due to hardware limitations. Modern computers have so much RAM and storage that sloppy work too often gets a pass. DOOM has been ported to almost everything because it has good code. Old Nintendo carts demonstrate how to optimize in assembly. Necessity is the mother of invention.