Friedrich Hanisch's Dev Log
SEEN
- I enjoyed this code golf over at the Godot forum, as the user 'normalized' wrote a Snake clone, a Flappy Bird clone and a Space Invaders with the shortest GDScript code possible. There are some tricks that I found illuminating, and I even could contribute a tiny bit to the Flappy Bird project.
- Unity got some bad news again. It's really frustrating for me, as I spent so much time with this engine and put so much effort into somewhat mastering it, and now I don't even find the motivation to keep myself informed about the latest updates. But stuff like them deprecating PolyBrush somehow still reaches me and depresses me, because they could have really amazing tools built inside the editor, but instead concentrate on disgusting AI tools to keep the investors happy. While PolyBrush wasn't great, not replacing it after it's gone is even worse.
The more important bad news is about China-based assets on the asset store getting removed - this isn't Unity's fault directly, but they handle this awfully too. I had to use some user's vibe-coded script to find out which of the assets I own(ed) are affected; Unity only provides a 50 page PDF with all the assets, and expects their users to just deal with it I guess. In any case I'm sad to see this QR Code Scanner and Generator plugin getting removed, as I used it with great joy in our HaQR jam games.
- A Godot add-on that helps saving energy? Sounds like a good idea.
- One of my dreams is to program a game for retro hardware some day, but I don't know if this will ever happen. Still, I find projects like this engine for the Nintendo64 called Pyrite64 always interesting. But I'm a sucker for new engines in general.
- I watched a video about the 7 Levels of Dungeon Crawlers, as this was recommended to me by Jana for our devlog. It was indeed fun to watch, and I wasn't even mad that one of my favourite games, Ultima Underworld, was only in Level 5. We now use the term DINO (Dungeon Crawler In Name Only) too, for Mops & Mobs, because it fits: in the end, our game is like a pastiche of the Crawler genre, or - if you're familiar with Tale of Tales' philosophy - maybe even a "Not-Dungeon Crawler".
- If I ever should want to play some old multiplayer games again, GameDate looks quite useful to find sessions.
- For some reason I was always fascinated by the language Forth, mostly by the myths that surround it. About people writing complete operating systems in Forth just to power their games, or something like that. There's also this C64 game engine called White Lightning that was written in Forth. And a few days ago I somehow found the time to finally read an introduction into Forth, and I did read it in one go.
- A personal highlight recently was QUOD, a Quake-like shooter in 64 kilo-bytes. Crazy stuff, and I'm glad the developer recorded a making-of video with cool insights. I found it surprising that he uses Trenchbroom to create the levels, instead of a dedicated generative tool.
- Another post-mortem I watched is about Marble's Marbles, a Marble Madness clone that had some moderate success on Steam. The insights are good, even if already known. Make small and good games in a short amount if time, don't try to create your absolute dream game every time. Put some effort into marketing by being attractive to your target audience, and contact IGN at least four times to feature your trailer. Et cetera.
DONE
- I graced my test project BlockJumper with another video on Mastodon, which is similar to the first one on the surface. I made the second video after replacing the player controller based on Godot's
CharacterBody3D with my own Rigidbody3D-based solution.
With the first controller I felt this problem area was more or less 'solved' as I added crouching with ceiling detection and improved the stair-stepping. But the gameplay - as shown in the videos - consists of walking over a lot of small bloxels that get summoned at will. And this can go a bit haywire as soon as the player does this in a cramped area, colliding with walls and ceilings while still trying to traverse over the little bloxels. (I named them 'glitch bloxels'.) All these edge-cases led to jitter and an overall unpolished feel, and I didn't feel like even trying to fix this as it felt like a problem on a more fundamental level.
So instead I took a character controller that I built in C# for Unity (based on concepts I follow since 2009 or so, back then in C++ and BulletPhysics) and ported it over to GDScript, which was both an interesting and awful experience - especially as I had to port it fully before I could test it. The methods for ray-casting and especially sphere-casting work a bit different in Unity and Godot, but at least I now have a working character controller with jumping, running, crouching and mantling again. There are still some jitters here and there, and I still had to smoothen the camera's movement on the Y axis, but thankfully, overall it does feel better in the game, at least to me (and for now).
I still don't know what kind of game I want to make with this, though. Sure, a grand plan vaguely exists, but for the start I should do something with almost no friction.
- Last time I wrote about the adventurers in Mops & Mobs and how their appearance is randomly generated from different parts. And now there's a video that demonstrates this - of course this is exaggerated, they won't change their armour like that during the game. Or maybe they should?
- I continued with writing the main quest line, but as usual did some other small stuff too, like changing the background scene of the start menu. I only mention this because an attractive start menu is actually important if you showcase your game at a game convention. Last time we exhibited Mops & Mobs at the A MAZE in Berlin this became very clear to me - I mostly stood next to the computer screen with only a boring brick wall and a lit torch (and a floating logo) on display.
- Jana made a video of the third level for ScreenshotSaturday. I find the level too small actually, but in the end the story line of the third chapter concentrates on almost a single room currently - the forge of the goblins. And the next levels should be even smaller, if we want to finish the game some day.
- We recorded another devlog video, where we talk about gridders that we made before, gridders that we played, and inspirations for Mops & Mobs in general. By the way, if you read this and want to help out, we do need some more reviews for the demo page on Steam!
SEEN
- For a potential project I got to research plugins for Godot that would make the creation of point&click games easier, namely Escoria and Popochiu. I only tried the plugins' test games for evaluation, so far. They both definitely are capable, but I think I would choose Popochiu, as Escoria felt a bit too powerful/complex for what I want to do. On the other side, the demo game of Popchiu didn't let me combine the key with the door (gasp!), and had some small glitches. Maybe I should just roll my own framework. In the end, a character walking around (which isn't even mandatory), an inventory and the ability to combine things with other things is all the project needs. For the dialogs I could use connected, of course.
- I don't remember exactly why, but I read this article about the Biggest Scams in the Audiophile World. Of course the title is clickbait, but overall I found it to be an informative and funny read. I don't like to listen to music via my laptop's speaker, but that's already where I draw the line when it comes to audio quality. The article makes fun of those super expensive cables which apparently use unicorn hair or some other stuff, while nobody will hear a difference to normal $8 cables. And so on. I also liked the explanation of the myth of "vinyl is better".
- A video about addictive games - which is to say, factory games - made me thankful I don't play such games. I'm getting depressed too quickly because of the waste of time - even if I'm not really productive instead.
- John Romero uploaded a making-of of Catacomb 3-D, which I never played. It's mostly interviews with the developers. Watching this I find the (visual) design of the game somehow better and more coherent than Wolfenstein 3-D, even though it came later. Well, and John Carmack's strangely empty room is also a highlight of the video.
- Why 96% of Indie Games Fail is a good video IMHO. Not groundbreaking of course - the analysis was done often enough. But it's a good summary; and look, John Romero is mentioned again. He explains that DOOM was his 90th game actually, so one important lesson is perseverance, as usual. And marketing and market research, of course.
- A "middle game" is a game you develop within in a short time. The article about Merchant 64 explains it in more detail, and really, Rat King's next project should be a middle game. Concentration on a non-complex gameplay loop, interesting art style, only a tiny bit of narrative. Should be doable! Only problem is that Jana and I sometimes can't decide on what this gameplay should be.
- I read this Reddit post about composing game music with only a rudimentary knowledge of music theory and composition tools, and found the info useful. Of course I disliked the advice to ask ChatGPT about scales and emotions - there are so many websites exactly about that, why not just visiting them and enjoy the authors' knowledge directly? Makes me sad.
- We don't make 3D characters for our current game projects, but I'd like to try this plugin for Blender some day. We did use Pepakura a decade ago, for a prototype that was never released sadly.
- Over at the Godot forum, user normalized (who seems to be the Godot crack) took the challenge of the missing pivot of the editor camera and wrote a plugin that basically recreates Unity's Alt + middle mouse button: zooming the camera to where you clicked. Reading the code I was both disgusted and fascinated, somehow - for example, in order to focus a temporary dummy node created at the clicked position, the code iterates over all buttons of the Godot editor main screen, looks for the one named "Perspective" and clicks it by creating a fake input event for the key F. Okay.
DONE
- Just to get it done I now uploaded the materials for Demokarten, the card game we developed for the board game jam in January. My contribution is the design and print sheet for the cards, and some parts of the manual. The game is not really tested, so there's no guarantee it's actually playable. But well, it has rules and a card design. Matthias from the bpb even offered that finished games can be be hosted on the bpb website too, so here it is. That's really cool, if you ask me.
- As we submitted I Made A Game For You to the A MAZE this year, I made a tiny update for it. From now on, players can decrease the head movement to 0%. I don't really like that, as I think it's an integral part of the experience. But enough people complained about getting nauseous from the movement, so I guess I just like to improve our chances to get nominated. To be honest though, I don't think the game's crazy enough for the A MAZE, but it felt wrong not submitting it.
- I worked a bit on Golem and the grid functionality is now usable, more or less. As intended it's almost like in bloed, but at the beginning the grids' position is always at the origin. I.e. if you work on bloxels far away it might be you have to move the grids by pressing the Space key hundreds of times. I'm sure there's a solution for this, and I will look into it as soon as I see the need for it. Which is pretty much the only time I work on Golem in the future.
I also added support for multiple materials and UV scaling to Golem, here's the proof. With those, my little bloxel tool has most of the functionality I need for now.
- As demonstration I recorded this little video of BlockJumper (working title). For the prototype I improved the stair-stepping abilities of the (very minimalistic) character controller that I originally used in I Made A Game For You, so walking over randomly distributed little bloxels wouldn't look too janky. It's not perfect, as there are a lot of edge cases, but it's a start. I just don't really know what to do with this bloxel summoning mechanic, as the original plan - a "remaster" of one of my entries for the One Hour Game Jam - doesn't really spark motivation so far.
- And Mops & Mobs should be in this list too. We're a bit slower these days because the child is sick quite often (it's winter after all). But still, I managed to work a bit on the main quest line of the third chapter and also add a Pipemania-like mini game (by using the decoration mode). And I added some tiny but satisfying animations to the speech box, which also help a bit with telling the three participants of a dialog - NPC, player and narrator - apart.
- Adventurers in the game are generic characters and their graphics consist of different parts in different variations - trousers, weapon, helmet, etc. To remove the need to equip them individually, I added randomization based on a seed (the NPC's ID) so the adventurers would look the same on each start. Last but not least I implemented some sounds from our sound guy, and the second level suddenly has a far better atmosphere. It's slowly coming together, I think.
SEEN
- Zen-C seems like an interesting project to me - basically a modern version of C. But it's so young that I don't think I will have a serious look this year. It just feels like V, and that one is highly prone to bugs even after years. Instead I still have the plan to learn either Zig or Odin or even both, just to have more options.
- I always like learning of neat (free) software, this time a 2D animation program called Friction.
- Folded Paper Engine is a Godot plugin that improves the Blender to Godot pipeline, so that the level designer is able to do much more within Blender. Might be useful for future Rat King projects.
- Another cool project, made possible by Godot's recent library-fication: 2dog. You basically use all the rendering capabilities and so on from Godot via C#, directly. I guess it's comparable to MonoGame?
- And something to try when there is time (haha): KAPLAY.js is a HTML5 game engine that looks kinda fun to use.
- I read an article about the making of Dungeon Master, with interviews from the original developers. "Mike created the dungeon, but the individual puzzles were created by all of us. I probably created the most puzzles, but I think Dennis and Wayne created some of the best. We would tinker around and create [them], and then try them out on each other. Eventually, we had to include other people, because you needed to have fresh people as you refined the puzzles. The play testing was quite extensive." rings definitely true, I think a lot of our puzzles would benefit from more eyes on them too.
- Interesting tip by digitalbreed for new Unity 6 projects: disable the search index in order to increase performance.
DONE
- The weekend in Schmitten (Hessen) was nice - I took part in a board game jam, which was (almost) a first for me. And that's why I joined Thomas Thudt and Martin Esters to work on Demokarten - Demokratie durchgespielt!, a resource-management deck-builder card game, about democratic parties trying to get the most voters. (The theme of the jam was Democracy.) Most of the time I tried to understand the rules and write them into a document, so others would be able to play it too. The prototyping phase was far too short for my taste - we began work on Saturday morning and early afternoon we already had to have a playable version ready. It was fun though, and the "final" product didn't even matter much to me - it was nice meeting so many people from the real of board games, and of course it helps that the whole trip was paid for by the tax payers.
Still, I'm currently trying to design and layout a document with the cards for printing, so we can upload everything on itch. It will be pretty minimalistic, but for me it's a good opportunity to get into Affinity Designer, especially as it has some strange quirks. (No button to vertically center texts?!) After a while I switched to the new version, where all three Affinity products were melted into a single one. A bit strange, but this way I could create several pages of cards without much hassle. I hate that I have to log into my Canva account all the time though.
- I uploaded a very minimalistic bloed-like on Codeberg. Golem is a level editor add-on for Godot, and so far it works okay-ish, but I don't think anybody else would get much out of it, because of course there are far better tools out there. Sometimes I just get the NIH syndrome. I already 'use' it for a little side side project that is just a recreation of one of my 1-hour-game-jam games, but that one takes a bit longer, because there is so much else to work on.
- While trying to add some grid functionalities for Golem just like I have them in bloed, I noticed that Godot does not expose its editor 3D camera's pivot point (called camera cursor here). So I began a Github discussion about adding this feature. I'd really like to use this point to be able to define the position of my grid (where the user then can place bloxels). And it would also be cool to move this point (and the camera) to a specific position on the bloxel objects.
- There isn't much to say about Mops & Mobs currently, because I mostly tried to think of a main quest story line for the third level, and such things always take longer than I'd like. But I also worked on something that always was a tiny but annoying issue - empty dialog choices. Most of the important characters have an option called "Tell me about...", and when the player selects it there would be several topics to choose from. These topics get (de)activated dynamically, depending on the current chapter, active quests, etc - and when you talked about everything, the "Tell me about..." branch would be empty, which means it should be hidden. But the dialogs are very dynamic graphs, so it's not straight-forward to check if a choice node has further choices as children, and if those are active or not. As this can lead to some strange bugs if the writer isn't careful, I decided to only do such a check for choice nodes with a special internal tag.
- Mops & Mobs suffers from a strange visual bug, where point lights would produce very pixel-y shadows if they are behind the camera. Apparently this is known for years in Godot, and a fix seems to be low priority, unfortunately.
PLAN
- I write this log entry while on my way to the bpb board game jam. Usually the bpb jams attracts people from various fields and backgrounds, but this time the jam's Discord is full of experts in the board game field. Which means this weekend I'm pretty much the noob and 'outsider'.
SEEN
- I watched a dev log of Evan Todd's current game project, about how blue noise made his game feel more "alive". The most interesting part to me is that Todd is making a new game. I was quite amazed by Lemma back then (though it was too hard for me to finish it), and backed the Kickstarter of his second game, which unfortunately didn't work out. Apparently he now uses Godot instead of his own engine.
- A short article about the Github monopoly and about contributing to open source projects, from the perspective of a teacher.
- Maybe I'm easy to amuse, but I chuckled when I watched this video about Street Fighter II, and how they fixed a typo shortly before release - back when fixing typos inside graphics assets was not easy at all.
DONE
- We released version 0.4.4 of the Mops & Mobs demo. We wanted to have it ready for the Steam Detective Fest, so it includes the new decoration mode functionalities and the new detective-like quest where the player has to take notes (gasp). Unfortunately we were not allowed to include the game in the Steam Fest, but we uploaded the demo nonetheless. Finally there's also a dedicated Steam page for it, so if you are inclined to write a few words about it, you can now leave a review.
- I started a simple experiment to recreate bloed in Godot. Well, it won't have the same amount of features in the near or far future, but I'd like to have something where I can very quickly build (and edit) small minimalistic bloxel levels in my preferred workflow. Right now I don't even plan to support different bloxel types, and different textures would be a big nice-to-have. Optimization is also not a concern for now. Instead I just try to get comfortable with extending the Godot editor via GDScript, and maybe make a low effort game with it just for testing the editor. Some day I also might look into GDExtensions.