Avatar

Hello, my name is Martin.

@mausgames

Engine Programmer and Game Developer 🇦🇹 🏳️‍🌈 www.maus-games.at

Also still working a lot on my game engine, especially for the new project(s).

Yesterday I had fun porting the engine and Eigengrau to Linux ARM (Raspberry Pi, Steam Frame). Went really well, most of the work was just setting up the tools and build scripts. 🐧

Still had a Raspberry Pi 4 with whopping 8GB RAM I bought many years ago for fun. I would have liked to install Fedora Xfce, but the current image has some setup issues, so I settled with Gnome. 🐁

I wanted to try out CLion remote development, where all the code and setup stays on the main machine and everything is synced and built on the target machine through SSH. This worked really well, though for actual debugging I had to start the game on the target machine first and then manually attach the debugger, otherwise it could not initialize window and graphics context.

The only big issue I had was that building some third-party libraries spawned 100s of compile jobs for some reason, putting my Raspberry Pi on fire, but I was able to manually limit that in the command line. 🔥

I also had some smaller linker issues with out-of-line atomics since I use -nostdlib in release builds (to manually link against an older version of glibc). Linking with libgcc.a fixed that.

For selecting between x86 and ARM on start I just use following condition in my launch script:

if [ "$(uname -m)" = "aarch64" ]; then ... arm_64 else ... x86_64 fi

After that the engine and game builds and runs just fine. Performance could be better, but everything feels playable with around 30 FPS on the Raspberry Pi (GPU bound). 🚀

Still working on some fun stuff, but everything takes a bit longer at the moment. 🪱

Like many other indie developers I can only work on my projects in my spare time, which usually slows down progress, but as a programmer I'm actually very quick at implementing technical stuff like mechanics and systems.

But the recent heat waves and some private matters added a lot of additional distractions making even programming slow. I'm still having fun and I'm happy when I can get something done (even when it's not that much), so I hope it gets better soon like always. 🙂

Walking through a dream world. 🐾

Since adding all the scene transitions, explosions, and other destruction I wanted to go even further and started to implement a lot of interesting and dynamic ways to interact directly with the blocky environment.

This algorithm here is actually quite simple, just interpolating between two different positions based on distance (with a bit of randomness and movement). I think it came out really well, with some people mentioning that it looks like the PS2 loading screen (though I must admit I never owned a PS2).

I've already tried out a lot more and hope all of them will be as fun to play as it was to create them.

The music track in the video is Harvest 4 by Sei Mutsuki.

Reimplemented one of my favourite gimmicks from Eigengrau where you have to activate all the plates to trigger an event, but I think you can transform the mechanic even further. 🎲

I guess it can make a lot of sense and be really fun to use the same game mechanic in multiple games, making use of the past experience but still trying to adapt it to the new gameplay and coming up with some interesting new twists.

As a programmer it also comes natural to refactor and improve the code from the old implementation, since past me either had to cut a lot of corners or was just stupid when writing it the first time. 🫠

Maybe I should just make another Breakout clone. I think that's the sixth time I've implemented this mechanic and I'm still having fun. 🏓

I've made at least four dedicated games including Throw Out and also integrated the mechanic in Eigengrau (but unfortunately had to cut it in the end). Somehow it's so simple to implement once you understand the basics and it's also really easy to add new twists and gameplay elements to it, which is maybe the reason I always come back to it.

I wonder if other game developers also have some kind of comfort game they keep reimplementing all the time.

The music track in the video is Breeze 2 by Sei Mutsuki.

I've already started implementing some gimmicks and twists, so let's see how many I can fit into the game this time around. 🐿️

Actually the project already contains over 35 technical gimmick prototypes, but not sure yet how many of them will stay in the final game. Expanding them in a second iteration and coming up with various twists and variations really shows how well they can work with the rest of the gameplay and if they feel right.

The music track in the video is Foreboding by Sei Mutsuki.

I had some problems adding treasure chest animations, so I just got rid of them. 💥

Since the game engine doesn't have any 3D animation system (yet), all this stuff has to be implemented directly in code. This might sound more complicated, but can lead to some funny and dynamic animations.

This was also the reason I decided to use 2D characters with sprite-sheets, similar to some of my favorite JRPGs like Grandia and Star Ocean: The Second Story.

The music track in the video is Nostalgic Jig by Sei Mutsuki.

I've invested a lot of time in tools recently, but everything is so much faster to create now. I still enjoy rolling with my own game engine, even though it requires a bit more work. 🛠️

There is still no dedicated editor, but image and text files can be edited from the outside with other applications and are automatically hot-reloaded into the running game.

Additionally there are a lot of small in-game tools to show building blocks, freely move the camera, teleport into any room (including an overview room of the whole map), increase game speed, and many more.

I think I overdid it a bit with those transitions, but I still really like how they turned out. 🌪️

The timings need to be tuned a bit, so the waiting is not too annoying. It was quite easy to just register blocks and objects into some kind of transition manager and then to apply the algorithms to them, keeping track of their original transformations.

I'm eager to add a lot more dynamic effects and animations to the blocky environment to really make use of it.

The music track in the video is Material Wonder 5 by Sei Mutsuki.

Finally implemented some weird bush gameplay. 🪴

Cutting bushes and grass is probably the most important activity in Zelda games, but maybe this can also be twisted into various interesting and challenging situations.

Still a lot of tech to implement (on-top of the custom engine), but so far it's possible to "paint" vegetation and stuff similar to environment blocks or create them dynamically and use them in small scripts, which should help a lot in later level design.

The music track in the video is Exotic by Sei Mutsuki.

I've always been a huge Zelda fan, so I really enjoy trying to implement and mix some of its gameplay. ⚔️

Though I did not expect the genre to require so many more base systems than a shoot 'em up or similar arcade game, but adding each new system to the game and seeing how it connects and grows is the most satisfying part of game development for me.

The music track in the video is Drama by Tim Beek.

I've integrated and updated the old bullet-system for the new game. Visibility still needs to be improved, but it already works quite well. 🚀

I'm still not sure if and how I want to add regular shoot 'em up bullet patterns into the game, as it can be quite tricky when the player has just a melee weapon or if it even fits to the rest of the game, but there is still some time to prototype and decide.

When integrating an old gameplay system I also have the urge to improve it and to fix any old issues.

One of the simple improvements was to already update bullets when they spawn based on the current spawn-timer to remove any discontinuities.

The music track in the video is Retro RPG Battle 2 by Sei Mutsuki.

Currently I'm still using many placeholder assets, but they are already good enough to try out stupid things. 🚧

I bought some asset packs from itch.io and the old Sketchfab store which were made by really talented people.

Because I make the game with my own custom engine I don't have a proper editor specifically for that game, so I decided to just edit the map files in an external tool (in this case GIMP), press a hotkey to export them (with batcher) and immediately hot-reload and see the results in the running game (with watcher).

This works extremely well, and later it was also quite simple to add new layers for foliage and stuff.

The music track in the video is Casual Theme #3 by Andrew Sitkov.

I want to start posting here again about one of my new projects, but need to catch up with all the videos and images I've already created, so I will share them here over the next few weeks and will try to add some additional info.

So I've started experimenting with cubes. 🧊

This time I would like to try some kind of top-down action adventure, but again with lots of gimmicks and twists like in Eigengrau. The 3D cube environment provides a lot of flexibility, so I hope I can come up with many interesting gameplay mechanics, setups and variations.

The music track in the video is Ivory by WOW Sound.

I've made a simple and short precision platformer where you have to paint your way back to the top. 🦑🎨

You can play it on itch.io in your browser.

The game was made in a couple of so-called Mi'pu'mi days. At Mi'pu'mi on the first Friday every month we are encouraged to use this day to learn new things on our own, stay up-to-date with latest technology or collaborate with others on our own game ideas. On one of those days I decided to do a little game-jam. 🍓

The theme was randomly sampled from Christiaan Janssen's theme generator and turned out to be "Inferno".

Once again I was inspired by Dante Alighieri's Comedia and thought about being one of those unfortunate souls thrown down into hell, trying to get out of it again. The paint mechanic came from the urge to focus more on aesthetics this time and to highlight the difficult path of the player back to the top. It then evolved into sticky walls, which could easily be arranged and modified into many different twists.

After that I also planned to introduce spikes to avoid and coins to collect. I did not finish the spikes as I did not want to restrict the freedom of the player to move around as they like. When the player touched the spikes, the paint would have worked as a rewind mechanic. This is not in the game anymore, but the paint is still used later as a meaningful gameplay element.

Collectibles would have also made a lot of sense as secondary goal and for some kind of scoring system, but again placing them meaningfully would have introduced recommended paths or possible backtracking and I wanted the player to get to the top as freely as possible.

Originally the player should look like an ink blob, but it felt much easier to control and navigate with a silhouette which (literally) highlights the current direction.

The game was made with a custom open-source game engine and the art-style was a bit inspired by Busted Bayou from Donkey Kong Country: Tropical Freeze. 🐵

The music is by Tim Beek and arranged in multiple layers. The farther you go up, the more detailed and intense the music becomes. The sound effects are by Jason Steele and I think they sound like punching or slapping someone with a fish. 🐟

Splat textures are by Kenney and the font is by MJType.

As usual the source code is available on Codeberg and GitHub.

Have fun!

Eigengrau was released a year ago and now most of its code and design-documents are public and open-source. 🎂

Feel free to take a look if you are interested in any of the systems or gimmicks. 🐬

You can find everything on Codeberg and GitHub.

The game was made with a custom C++ engine, which can also be found there.

I've tried to clean up some of the code and translate all the comments into English, but didn't want to change too much of the original (including hacks and spaghetti code). All the previous snapshots and game versions were submitted separately, so it's easy to compare and see how the code evolved over time.

It's also important to note that the repository should not include any proprietary assets, confidential APIs, private keys or anything similar, so it does not provide the full playable game and might not compile out-of-the-box.

I also went through all my drawings and written records and scanned them in. Some of these may just contain random gibberish, but I wanted to include them anyway for the sake of completeness.

There are also over 1000 screenshots taken over the course of 10 years, showing how the game has changed, how some of the mechanics were prototyped and implemented, how everything was debugged and tested, and what was cut from the final game.

Have fun!

Sponsored