Friedrich Hanisch's Dev Log

Homepage
Projects
Dev Log
Exit
All
2025
2024
2023
2022
2021
2020
feed

2025-10-24

SEEN

  • Funky little trick on how to print a Godot Dictionary in a readable way.
  • I watched a video about a free sound tool that allows some insane stuff. Apparently it (or the underlying tool that it creates a GUI for) was used by Aphex Twin and his distinct style.
  • I'm still on Windows 10, even though there will be a time where I switch to Linux. Just as a note to self, here's a tool that activates the Extended Updates for three years.
  • Raylib has a software renderer now, and I wonder if it could be ported to DOS. Although I'm sure that would result in very low performance, as it tries to emulate OpenGL 1.1, so the first step probably would be deactivating depth buffering. Reminds me of how surprised I was back in the day when I did some experiments with Allegro's 3D API, that there is no Z buffer. I had no experience with 3D and was mystified by challengedes like sorting polygons...

DONE

  • I did another update for connected. There was v1.0.1 right after the 1.0 release three weeks ago, but some more small annoyances - wrong font, node duplication not always working, etc - made a new release necessary (for my sanity). The "best" bug was a visual glitch with Text Mesh Pro; when hiding a text with long dashes inside, the dashes would still be visible on the screen. The only way to fix this was moving the text box out of the screen before deactivating it.
  • We also uploaded a new version of the Mops & Mobs demo, calling it the Halloweeen edition, as it adds some pumpkin content. Which was probably a good way to advertise it. And I also created an inspection mode, but that's not used in the demo. The inspection mode (only usable during dialogs) became necessary for some detective-like gameplay, and we're thinking about revamping the demo a bit so it gets a detective quest too. Just so we can submit the game to the detective Steam Fest. (Is that cheating?)
    I also added a screen-fade functionality usable from the scripting API, for dramatic effects during a dialog. I wanted this to be non-instant, so I added a way to interrupt the code execution. Of course this adds a bit of complexity to the whole affair - now it's not clear anymore if a piece of Gompl code actually finishes before the dialog ends. Hopefully this will not lead to some strange bugs later on.

2025-10-04

PLAN

  • A security vulnerability was found in almost all relevant Unity versions and thus every game created with those has to be patched. This would be only semi-interesting if I didn't have dozens of Unity games published on itch.io. And even if nobody plays them it's still my obligation to take care of this. I guess I'll update one or two games whenever I have some time. Thankfully, TRI is still Unity 4, so at least I don't have to touch that one ("only" Unity 2017 and up is affected).

SEEN

  • A fun little website design tool, with 'a graphics editor and coding environment': Wobble Web. Not sure I will ever need it for something, but I like neat tools like this.
  • A Japanese YouTuber streamed I Made A Game For You and liked it very much. The video itself is nice to watch, especially as there are (sometimes funny) automatic subtitles. The downside is that this is pretty much the only tangible reaction to the game. Even though itch.io "featured" the game for a day on their homepage, we didn't really get any comments. And while I'm grateful to the curators of the micro-funded jam that we could develop the game and get paid for it, even they could only muster a single comment in a private thread on Discord. At least one of the two other participants played it too and wrote something nice.
    I wonder why I keep wanting to make games at all.

DONE

  • Yesterday I released connected v1.0.0. I didn't really want to bump it up to v1.0, but I thought it's sad that it still was v0.9.x and I didn't like the optics of a "v0.10.0". I guess adding a much needed spell checker to connected is a good enough reason anyway. Starting point was this tutorial video, and after trying to find some alternatives to the proposed NetSpell library I ended up using it too. It works well enough. One alternative was NHunspell, which was recommended by random people on the internet, but somehow isn't available anymore. NetSpell also provides the functionality of getting a list of suggestions for the misspelled words, but I didn't implement that (yet?) - it would add more UI work than I'm currently able to stomach.
    By the way, I will also push v1.0.1 soon, as I found a tiny little visual bug that I find very annoying (the input text box' caret disappears sometimes, when the font size was scaled down).
  • I continued to work on the decoration mode for Mops & Mobs. It was all about "quest zones" the last week, which basically are the rooms (i.e. a collection of tiles in the dungeon) that have to be decorated for the NPCs. A character would talk about their wishes and which things they don't like, and based on this description the player has to find the best decorations and add them to the room aka quest zone. This allows some creativity and is only in certain ways limited. Which means that people can build some very stupid layouts if they want. It might be bead that players are able to 'destroy' the game for themselves and then dislike it. But I'm still in favour of allowing some creativity.

2025-09-27

SEEN

  • Godot 4.5 was released and the new features aren't what I desperately needed (for my projects at least), but they're still nice and exciting. Unfortunately one of the changes that I actually anticipated was removed during the beta versions: the improved thumbnails for 3D scenes. A bummer. What I'd really like though is that Godot wouldn't just link to Github issues in the release highlights blog post, but to actual descriptions and examples instead. The discussions on Github are always a bit cryptic.
  • The dungeoncrawlers.org Discord community will be hosting a game jam similar to the normal DC jams, but with a limitation on the assets - you're only allowed to use a set of assets the hosts provide, all of them apparently 12x12 pixels big. I'm not really sure that's something I'd like, even though I dread the art part of game jams these days (it's just that I became very slow).
  • I think this is the first video by Brackey that I fully watched, about lighting in Godot. Even though I knew most of the stuff already, a summary like this is always teaching me some new things here and there.

DONE

  • As already mentioned in the last log entry, I Made A Game For You is finished, but wasn't released yet. Well, that changed, and it's now available on itch.io for free. As it was created for the BRIEFS micro-game series it's also part of a small bundle on itch. And I added a project page on my website - I celebrate this fact particularly, because my output seems to get smaller each year. Which is always sad because there really aren't enough games out there.
  • For Mops & Mobs I'm back to doing a bit more dialog writing, so most of the programming I did was more on the tooling side. As we're finally starting to work on level 3 (while level 2 isn't finished yet, of course), we're planning the layout and content usually on paper or via tool. But as the game - and this level spcifically - is a bit more three-dimensional than most gridders, we decided to do the planning in the Godot editor itself too. For that our level designer Patrick would only use floor tiles, omitting the tedious wall placement. Unfortunately that gave a very distorted impression, which is why I finally took a look at how to generate meshes in Godot. (I really enjoy doing that in Unity.) It was easier than I thought and now the floors automatically get walls on their sides. A simple screenshot of this got a tiny bit of traction on Bluesky, and I'm not sure why. To demonstrate how this speeds up the workflow, I also recorded a video. To be honest, the Very High Walls look nice, but also can change the perception of the actually intended level layout. So I might add more fine-grained options, like being able to define wall heights per tile. In any case it's better than before.
  • Another thing on my extremely long to-do list for Mops & Mobs was a tool for replacing nodes in the scene tree with different scenes from the file window. This would help with level building, as it would become easier to replace a bunch of brick walls with cave walls with just one click. Thus I read the documentation for editor plugins (again) and created a small tool for this functionality and more (like saveable camera placement buttons). It took longer than I thought, because adding undo/redo for this was rather complicated (I guess due to some misunderstandings) and even corrupted my scene now and then.

2025-09-14

SEEN

  • A really cool video about graph-theory in state-space (the video is now named "I Solved Klotzki" - I hate SEO and all that stuff). It's a great video because it is not only interesting but also well-made and actually relaxing to watch thanks to the sound design.
  • I should try out ImGui for Godot at some point - I find the debugging options in Godot a bit lacking sometimes. By my biggest gripe is the lack of inbuilt gizmos; something like OnDrawGizmos() and the whole Gizmo class from Unity is really missing and would help a lot. Thankfully there are free add-ons.
  • Just some short video about Minecraft's pathfinding. The interesting part are the little quirks that are useful for the gameplay, if you know about them.

DONE

  • We - Felix and I - finished working on MOUSE3D. It was renamed to I Made A Game For You, while MOUSE3D is still the name of the in-game game. It has three levels now, each with new enemies and textures and story and specific scripts. The HUD got a little compass. And there's a start menu which even lets you change some settings and continue from level 2 or 3. And I modelled the player's room with three objects for each level in Blender. So yeah, it was a lot of work, and I wish I could already link to the itch.io page. But that will have to wait, as the official release will be on September 26th, alongside with the two other games of the BRIEFS CHEESE jam.
  • There are some improvements for Mops & Mobs too of course, like a new teleporter that lets you travel between the levels quicker. And I worked on the decoration mode, although more on the visual side. For example, placing a deco object got a tiny bit more intuitive thanks to the preview mesh also showing when it's overlapping with geometry, and you can rotate the object via mouse wheel now. Most of my recent commits are bugfixes though; it feels like stuff always breaks when you don't look at for a few weeks... annoying.

2025-08-30

SEEN

  • I watched Vuntra City's dev video about how to simulate a million NPCs for a big procedural city. I like the idea to use 1024x1024 texture to save the NPCs' states. The project itself isn't that interesting to me unfortunately, I'm more of a fan of hand-crafted cities and stories. I noticed that with Shadows of Doubt, a remarkable procedurally generated detective/deduction game - it somehow didn't catch me enough.

DONE

  • The level editor we use for MOUSE3D, Codex, received an update. It changes the way chunks are generated, but fortunately upgrading was mostly painless. Afterwards I noticed, unrelated to the new version, that Codex would create all UV coordinates in the range from -1 to 0 instead of 0 to 1. This became a problem when I had to set some textures to non-repeating because of artefacts, but I could fix it myself.
  • I added a section for external links to my website; right now it's very small, but it might grow later on. I miss the old internet, where such pages sometimes were the best way to find interesting stuff. It was also quite the experience to come back to my website's V code, which I forgot all about. I wish I would have continued to use V, but there isn't much reason for it.
  • MOUSE3D's first level is complete now, but we plan to add two more. Those will have to be much smaller due to time constraints, and - to be honest - also due to a bit of burn-out. I like the project, but right now I'd rather do more for Mops & Mobs instead.
  • In a bit of a grind I added several of Patrick's and Jana's 3D models to the decoration mode of Mops & Mobs, so they can now be placed by the player - theoretically. For now we don't have a way to actually let the player buy or craft those decorations, and this is one of the many points I have to work on soon. The "economics" of the dungeon are still quite unclear. We will have a carpenter as character, who definitely is the main destination for all things decoration objects, but it might be more interesting to also let other NPCs give/sell furniture and so on. And what does the payment look like? What are the crafting materials? Game design is a very rocky road.

2025-08-20

PLAN

  • We should submit Mops & Mobs to the Godot 2025 showreel. Deadline is in October 1st, so there's some time to polish things.
  • With Github becoming more and more obnoxious regarding AI it might be time to move some repos to Codeberg maybe.

SEEN

  • PixiEditor 2.0 looks really impressive and might be a replacement for GIMP on Linux for me.
  • An article about Cubix, a "3D" platformer on the ZX Spectrum. I don't know much about the Spectrum, but enough to be duly impressed by this achievement.
  • In a parallel universe where I have the time to try out things I would probably check out Purrnet these days. I heard of it via this Reddit thread about multiplayer options for Unity, something that still interests me somehow.
  • In somewhat related but depressing news it seems finding a job as a Unity developer is getting harder and harder. Apparently if there's a job opportunity open somewhere you will compete with literally thousands of other devs. Although I'm still working on Mops & Mobs this is relevant to me, as the money situation keeps being a bit dire for us. And game dev doesn't seem like the best direction anymore...
  • Nonetheless, Jana made another video for our current project, this time the characters talk about our search for a publisher. What I find remarkable is that she made on the train (on her way to the gamescom) in a short time. So at least the system for creating dialogs works well, even with several characters. (Though she found a bug with the characters' emotions while creating the dialog, but that one is fixed now.)
  • Apparently I already saw this in 2023, but I finally tried the Cyclops Level Builder for Godot. And was instantly turned off by the fact that it only allows convex meshes. So you have to create a simple room out of six boxes? This only makes sense to me if the tool would support CSG operations.
  • Finally found out about Godot's is_instance_of(). Probably a rookie oversight, but I could simplify some old code that relied on strings - and it works better now (before that I couldn't search for custom inherited classes).
  • An easy way to animate GUI elements in Blender, a repo that Jana found. I'd rather do stuff like that myself, but so far I had too many issues when trying to add such animations in Mops & Mobs. Which means I will download and test it at least.
  • A reminder to myself for when I try to get VSCode running on Linux and getting it to recognize Unity's API ever again: download the .NET SDK, and more, and more. These three links helped me somewhat, even though they're older.

DONE

  • While I didn't work on "ratrogue philosophy" (basically a kitchen sink project for a stealth game, based on Demon Thief and 666 Coins) for a long time now I still try to keep the plugins and Unity versions up to date, for the illusion of progress I guess. In any case the latter - the Unity versions - became a problem with Unity 6. Upgrading to 6.1 or 6.2 just didn't work, there was a very mysterious error with the Universal Renderer Pipeline. The only thing that worked in the end was creating a new Unity 6.2 project and importing my old project as a package (manually and painfully). What a waste of time.
  • Mops & Mobs is receiving a lot of small updates, but mostly not by me these days. Patrick is doing a great job adding little details to each room of the second level; it definitely is a looker now. The new character drawings by Johannes are also very good, and fit well. In the meantime I completed writing and wiring one of the main quests of that level. It was a bit more involved than I anticipated, but at least connected proved to be helpful. I also fixed some bugs, like the torches the player placed via the decoration mode - their state (lighted, not lighted) wasn't saved because they didn't receive unique IDs before. And there are now savegames! Emphasis on the plural, the game now has a screen that allows saving and loading more than one save. I'd like to add screenshots to the buttons, which is something for later.
  • Instead I was working more on MOUSE3D the last week, because that one has a looming deadline. I could improve the enemy behaviour ("AI" is too generous even in the oldschool sense) - there is zig zag movement now (which was easier to implement than I thought, just manipulate the velocity a bit). I experimented a bit with the story mode, and I think I will reverse the decision to not let the player shoot/interact while being in talk mode. It just makes the game less dynamic. I also added Gompl, for scripting the level and the dialogs. The scripts get executed as soon as predefined events were fired, and it's a nice system in my humble opinion. And I use MOUSE3D as an opportunity to get back to Blender for a bit, as I'm modelling the "realworld" aspect - a table with a computer, a mouse, a chair, speakers, and so on. Right now it's all in white only because I will add textures or at least colours a bit later. For the general feel of the game the abstraction of a colourless world fits quite well though.
  • While trying to add some global illumination to that very scene I encountered a bug in Godot - the lightmaps of the LightmapGI node vanish as soon as the "retrogame" level of MOUSE3D appears on the virtual computer's screen. It's puzzling because there are no problems like that in the Forward+ and the Compatibility renderer; only the Mobile renderer acts like that. I created an issue on Github with a minimal reproduction project. Unfortunately if anybody fixes this it will be too late for the release, so either I will remove global illumination or try to bake some lightmaps in Blender instead - not looking forward to that. It's been ages.

2025-08-04

PLAN

  • Of course connected isn't perfect, but it was really strange to find out that the Linux version doesn't allow typing most special characters, even things like question marks, square brackets or umlauts. Interestingly, it works in the Unity editor (Linux), but not in the standalone version. Is my code the culprit, or something Unity related? Fun times ahead.

SEEN

DONE

  • A little experiment in GDScript:
      var file := FileAccess.create_temp(FileAccess.WRITE, "my_script", "gd")
      file.store_string("extends Node\nfunc _ready():\n\tprint(\"Hallo!\")")
      file.flush()
      add_child(load(file.get_path()).new())
    
    This just prints "Hallo!" in the output console. Pretty sure this is not usable for anything. I just wanted to check out if it's possible because someone in the Godot forums wanted to know how to remove code from a script during runtime (for example debug prints). Though this is probably the wrong way to optimize such things.
  • Just to try it out I activated the (cubemap) shadows of all the torches in Mops & Mobs, and I really want to keep them. They instantly make the levels prettier and more atmospheric.
  • Other than that we're currently implementing the main quest line of chapter 2, involving several characters. It's a bit chaotic, because Jana and I are writing different characters in Mops & Mobs, and sometimes we don't plan everything perfectly, so things can be contradicting or lead to bigger questions. Video game writing is hard!
  • I also added the has_os_feature() method to Mops & Mobs' scripting API, mirroring Godot's own function. This way I can check for debug builds during dialog; for example, every character has a dialog option "TEST EMOTIONS" now, for obvious reasons.
  • As a small thing during some kind of hiatus I tried out adding mouse rotation to Mops & Mobs. That means you can rotate the character (still in steps of 90 degrees) by pressing the right mouse button and looking left or right. It feels a bit strange, and really isn't that needed (just use the Q and E keys!), so I made it optional and deactivated the setting by default. But, if someone wants this, it's there now.
  • I find MOUSE3D as a prototype is almost complete now. Sure, everything is just placeholder, but I think a simple shooter within a "real world" computer plus a messenger-like dialog system is a good foundation for what I planned. The shooter has enemies that can kill you, there are doors with keys, an animation for firing the weapon. I'd like enemies to be a bit more like Wolfenstein3D, which means they should move in a zig zag line instead of just approaching the player like zombies. I actually don't know yet how to achieve this with the usual navigation agents. Can I override their behaviour somehow? In any case the part that's really missing, at this point, is a good story outline for the overarching game. It will be done this week, hopefully.

2025-07-21

SEEN

  • I actually don't use scene inheritance in Godot much, but I was still surprised to find out that it's quite unstable apparently, "breaking and losing data" a lot. The top comment in that Reddit thread is by the Godot developer who invented scene inheritance - they regret it and propose using resources instead.
  • As there apparently is no good way to restrict a RichTextLabel to a maximum width, so I had to write a simple script as my own bad solution to this problem.
  • I watched a video about C++'s std:vector, how it is often used in the wrong way, as it can lead to a lot of unwanted allocations, copies and moves. C++ is scary sometimes.
  • I didn't play Bioshock Infinite, but somehow this short video with Ken Levine talking about a lot of features that apparently had to be cut makes me want to play it, just to see the differences.

DONE

  • My dialog editor connected is now available for Linux, and it already got some hotfixes too. Somehow it's funny to me that the Unity version I use has a strange bug on Linux, where the value of the mouse wheel scrolling is inverted. In any case I wanted to port connected because I only took my old laptop with Linux on it with me while being on vacation, but of course I didn't actually use it for anything in the end.
  • LWS is now Mouse3D (for now). I did some experiments with rendering viewports to textures, trying to display these textures on meshes that would be rendered inside the viewport itself. It actually works, but spits out errors all the time, as it is undefined behaviour and could break on another system. The solution was to have two viewports, though it feels strange that this one is the correct way, as it only adds an indirection. Doesn't matter much though, as this was only a little distraction and I'm not sure it will be used for the actual game.

2025-07-10

DONE

  • For Mops & Mobs I wrote a small documentation on how to create a gas leak barrier. It is internal, meant for the rest of the dev team, just so they can make little interactions in the levels, without my help. The aforementioned gas leak barrier touches a lot of functionalities currently implemented in the game while still not being overly complex, which is why it was a good candidate for a documentation.
    The setup is basically a wheel on a pipe, and the pipe leaks gas (as particle effect) - and you can only pass this gas leak if you use the wheel. To make it a bit more interesting we removed the wheel and hid it elsewhere in the level. So we have a wheel item (that has to be collected), and a pipe that can be interacted with and that unhides the usable wheel via a Gompl script (checking first if you own the wheel item in your inventory). The usable wheel acts like a lever and turns the gas leak off (and back on, if you wish). The gas leak itself has the same Godot script as a door, so it's possible to interact with it in order to "open" and "close" it; in this case the interaction is only indirect.
  • The latest update for connected is a hotfix release. It gets rid of some annoying visual bugs, and copy+paste works better now when switching between dialogs with and without extra text file for localisation.
  • Meanwhile project LWS gets only very minor updates each day, but I must confess that I enjoy thinking about dumb state-machine based enemies and crude hit-scan weapons right now. I try to keep it as simple as possible, maybe even SNES DOOM simple, where enemies are always watching you (for memory reasons).

2025-07-06

SEEN

  • I don't know why, but I always find object pooling in games a soothing thing to code. Here's a post on Reddit about performance gains in Godot when using pooling, something that is most often talked down as unnecessary.

DONE

  • There was a small bug in the new Mops & Mobs demo which became apparent today. Jana had duplicated a door for a new room, and she didn't know that all things that have serializable information like "being on or off" need unique identifiers. Thus the original door's locked state would be overwritten by the new one which wasn't locked. I.e. if you save the game and load again, you gained access to an area that you shouldn't visit before getting a key. Oops. At least I took that as an opportunity to add an error message if there are double IDs in the scene.
  • Fun fact: the new room isn't even accessible in the demo version. We use the same Godot project for the full game and the demo, and handling that is a bit awkward IMHO. But at least I found a way to only export the resources that are necessary. It's just not as straightforward as in Unity.
  • For the CHEESE jam game (codename LWS, will be changed soon) I began a new Godot project and imported the Codex Level Builder plugin and a very simple character controller that I made before. I wanted to make a "dumb shooter" but never got further than being able to run around and shoot some flying bullets. Well, here's my chance to finally fulfill my dream of creating another boomer shooter for the already much too large pile of boomer shooters out there.

2025-07-05

SEEN

  • I looked at two level editors for Godot that would help me to quickly make simple blocky levels. Normally I'd use bloed (and Unity) for that, but I want to stay in Godot instead of switching between tools all the time. It's okay to write dialogs in another application, but with level design I always feel disconnected when I add details and notice that a whole section has to be changed but editing the geometry isn't allowed anytime.
    The two editor plugins are LevelBlock and Codex Level Builder, and after short tests I find them both somewhat awkward to use. LevelBlock lets you edit all the 3D cube-tiles directly, but you have to change each side individually and click through all the textures instead of just choosing them in a list. I feel that can be annoying if you have a bigger set of textures. Codex on the other side lets you "bake" the level - first you place special cubes that you can also resize (within 0..1) and then you bake them and get a separate level mesh. This feels strange for interior levels, especially larger ones. Both tools seem to embrace Godot's node system a bit too much just for the sake of it, but it's probably the easiest way to create such a tool. I still have to find out how to make Godot plugins myself. In any case, I wish I could magically port bloed to Godot.
  • Unity did another of their classic moves and introduced something nobody liked, something about projects always created in the cloud (they reverted it in the meantime). While I feel more and more estranged from Unity anyway, at least I found out about Unity Hub Native this way.

DONE

  • We finally added Mops & Mobs to our website, and more importantly released the v0.2.0 demo, after we removed the old demo a while ago because it didn't represent the game anymore. Demo players finally got quicksaves, the card combat, some additional entries in the options menu like FOV and FPS settings, better performance, and more. Of course a lot of other new things aren't showcased, as they're only available in the mysterious second level...!
  • I also added a photo mode (i.e. you can fly through the world and take screenshots), and it already allows some nicer pictures of the levels. I had to create such a mode instead of using Godot 4.4's camera mode, because the latter doesn't work with the fullscreen post-effects for dithering and highlighting (they are just quads in front of the camera). At least I can add more additional options this way.
  • Felix and I pitched an emotional story game to the BRIEFS 2025 (theme: CHEESE) - and got accepted! We have time until end of August to actually make the game, which is definitely much too short (because summer things and also other things). Quite the intense challenge. And it's also the reason why I checked out level builders for Godot.

2025-06-28

SEEN

  • Zockrates released Ruffy and the Riverside two days ago. While I know the developer personally, the actual reason I mention this on my dev log is that my brothers Paul and Ludwig composed some music tracks for the game. And they both were/are making music for Rat King too, so the connection is clear.
  • Just a little thing in the Godot 4.5 beta 1 changelog: the new version will fix the preview graphics for 3D scenes/prefabs inside a project, as currently they are basically useless. A huge sigh of relief from our level designer.

DONE

  • I added the new Odette graphics by Johannes Lott to Mops & Mobs today, with more characters to come. In order to get the graphics into Godot I have to save each layer of the PSD file into their own PNGs (I use Affinity Photo for that), then put those into a single texture atlas (via TexturePacker), and then use the Godot plugin that creates the Resources out of the sprites inside the atlas. I then put Odette together manually via Sprite3Ds, adding small animations here and there.
  • Odette also has more range now, i.e. her arms and head get replaced for different emotions. While it was always possible to change an NPC's "look" via Gompl scripts in connected, I now added an emotion button to connected's Text nodes for Mops & Mobs. Extending the node type was thankfully very easy, I just had to add 3 lines to the C# code. I might add another way to set an NPC's emotion though, via tags inside the dialog text.
  • Another Mops & Mobs task I finally tackled is a small visual thing. We always want to have more animated things inside the levels, just so it's pleasing already to just walk and stand around. And now the chains hanging from the ceilings are swinging a bit, as if some ghostly underground wind is touching them... well, the game definitely isn't realistic anyway. Overall it was easier to create this vertex shader than I anticipated; Godot surprised me again.

2025-06-21

SEEN

  • Even before ubiquitous AI slop, Steam was battling cash-grab games made without any soul or talent. But the generative AIs definitely took this to a new level, so it's good Valve continues is on the hunt for such "games". This video explains what happens, and also has some interesting stats to tell.
  • I needed a straigthforward way to collect a bunch of pictures as a moodboard for a game idea's style, and mood.site did the trick. Neat.
  • Someone on Reddit did an interesting study - they took a look at all games that were released on a specific day (June 2nd) and analyzed how they did after two weeks. On that day, over 50 games were released, but at least 12 of those were slop, so the real competition is a bit smaller (if you try to release on Steam nowadays).
  • I love Bad Pixel's visual style so much.
  • And I watched two more of decino's technical videos about DOOM, this time about the crushers, and about enemies unique to multiplayer. I only mention this because I found it somewhat crazy how much work and time went into analyzing such stuff - there's every single number of how much damage a crusher can make depending on type and when the crushing started, and he really mentions every single multiplayer-only enemy in every commercial classic DOOM. I mostly enjoyed the latter because it showed a lot of DOOM's level designs in quick succession.

DONE

  • I worked a bit on dialogues for Mops & Mobs, so I had to use connected a bit more than usual. Of course connected still has things that I find annoying and that I don't see me fixing in the near future, mostly because of complexity, but overall it gets the job done. What's a bit depressing is how confusing a dialog graph can become over time, and there really isn't anything I can do against that, given the nature of non-linear writing with user choices. I guess a text-based dialog format is superior in that regard, as it forces a format on you, while graphs with nodes and lines between them can be ordered in any way someone wishes (or doesn't wish). In any case it's still a more pleasant experience than I had with Articy Draft (sorry).
    I'm also preparing new tutorials for the card combat in Mops & Mobs. The preparation took longer because I had to take care the card gameplay still works when several elements are disabled, like the backpack, the player's deck, the health or even the action points. Now we can introduce each element of the combat with very short sessions - which might be a bit boring or annoying, so I'll need to make a test soon.

2025-06-07

SEEN

  • The A MAZE posted an official video of the 14th installment of the festival which we visited a few weeks ago. As far as I can tell we're not in it, but our baby girl is (thankfully only from behind).
  • I find the notion in this video that generative AI is somehow running on gambling addiction quite comprehensible, even if it's meant as tongue-in-cheek.
  • Nice and short video about Clonk, the Terraria of its time. Even though I never really played a Clonk game (at least I don't remember playing one), I definitely knew of it and found it impressive.

DONE

  • Yet another update for connected, this time with a bit longer changelog. Jana was annoyed that the checked checkboxes look like they're not checked, so that was the incentive to create version 0.9.9. But as that would have been a very poor reason for a new version number, I also added Cut (next to Copy and Paste) to the editor. And when you pan the canvas, the cursor wraps on the window edges now - useful when hovering an OUT port to see the order of connected nodes that are far apart. And it's finally possible to sort files by last write time in the Open and Save windows.
    Jana made a video to promote our current game project that uses connected.

2025-05-29

DONE

  • A game I wrote some dialogues for (based on the plot/story by someone else) was finally released: Nice Day for Fishing. It was an interesting challenge to write characters based on a popular YouTube show. I'm not sure I nailed it, but of course I didn't really have to, as Viva La Dirt League looked over the texts afterwards and changed everything that wasn't true the source material. I still hope some of the jokes I tried to come up with are still in the game.

2025-05-27

SEEN

DONE

  • I uploaded a new version of connected - this is a micro update, only created for Jana who wanted to copy nodes between two instances of the editor. This wasn't possible before because the Copy and Paste commands didn't use Windows' clipboard. Now it works.

2025-05-23

SEEN

  • Fun video about Quake's collision hulls with some nice visualisation. The fun is mostly in how the collision had a bug that would sometimes make the player bump against invisible walls.
  • I watched a short documentary about Lemmings. I didn't know it had ports to the C64 and even to the Gameboy. Overall I'm still fascinated by the game. For a long time it seemed as an impossible technical feat to me.
  • Another video I watched is about Tomba. I'm not sure why, I never even heard of the game (or I forgot about it). Still a nice story, especially as the developer, Fujiwara, made a lot of games I know and like.
  • A video about why nobody makes mermaid games. To be honest I didn't think about this at all, so it was a new insight. The gist is that mermaids can breathe underwater, which removes a big gameplay element - so most games are about scuba divers instead.
  • I like the style of Children of Saturn, quite retro and atmospheric.
  • Robert Wardhaugh has a D&D campaign for over 40 years now. Quite an achievement. I like the fact that his daughter's ex-boyfriends still play the game, the awkwardness is hilarious somehow.
  • For a side side (side) project I wanted to know how I can hide enemies (or anything really) in 2D shadows in Godot, so I followed this tutorial. While it works, I also was interested in 2D lights that can be hidden too, and that was a lot more complicated. Even when using viewports it still doesn't look quite right, as the lights don't blend well together it seems.

DONE

  • Jana was annoyed that she can't copy and paste nodes between two instances of connected. So I went and implemented this - I still need to upload the new version, but maybe there's another feature request coming up...
  • I did some small changes to Mops & Mobs, but nothing really worth writing about. There should be a new demo coming up soon (which mostly is the old stuff plus the card combat), but as usually the TODOs are still piling up.

2025-05-13

SEEN

  • Robert Yang's latest blog post about level design is fun because he basically denounces a meme he created himself. In any case it's a nice read.

DONE

  • Jana wrote a blog post about one of the more surprising insights we gained at the Lange Nacht der Computerspiele. Apparently, a lot of the visitors thought that the card-based combat is the main gameplay of Mops & Mobs, and they were a bit bewildered that they had to do other stuff in between the fights, like placing chairs at tables. It could be that people were primed because our little exhibition booth (or rather table) was right next to a room filled with card games like Pokemon.
  • Another insight was how bad Mops & Mobs performs after a short while; often with severe frame drops. Which was a bit depressing. It works relatively well in the editor, but then again I almost never playtest it in fullscreen. To tackle the problem I finally looked into how to add occlusion culling to a Godot game, and it was much more straight forward than I thought. The only thing I found a bit confusing at first is how the OcclusionInstance3D node serves two purposes - you create occluders with it, but also bake the whole occlusion data. First performance tests are looking good, and now I don't fear the next presentation (at the A MAZE this week) any more.

2025-05-09

SEEN

  • I watched this video tutorial about modelling a computer, PS1-style, in Blender. Quite neat. I still want to make a game that uses oldschool photo textures without PBR stuff, some day.
  • One of the first things that I found interesting about game development, back in the 20th century, was level design. Which is why enjoy videos like this one about how to layout a Quake level. Unfortunately I never really got into DOOM or Quake mapping because they just weren't my type of games. Very regrettable.

DONE

  • As we're preparing Mops & Mobs for the upcoming "Lange Nacht der Computerspiele" in Leipzig we did a few more updates to various aspects of the demo. The bad part is that it's still just the first level, but with almost all the gameplay finally in place I can see that we can concentrate on the rest of the game's story next. The combat has a neat new background (admittedly based on a shader from Godot Shaders), a better layout and a tutorial. The tutorial is only some text right now, hopefully on release this will be a bit more interactive. And there are a few new details in the dungeons, thanks to Norrimo.
    In any case we're eager to find out what people will have to say about Mops & Mobs and the new-ish combat system.
  • To celebrate that we 'started' production this May, Jana made a video of a dialog with all the current characters of Mops & Mobs. While there are some bugs and the camera movement is definitely too much, I'm relieved that the dialog system works relatively well with so many characters.
  • We recorded a new episode of Jana's radio show "Hey Listen!" (about game soundtracks). I had the idea to talk about game intros only, and while those are not 100% suitable for listening only, I think it's still a nice episode (German). Of course my favs are 90% Ultima games, but I also mention Deus Ex and System Shock. And if there had been more time I would have played the Thief intro.

2025-04-28

DONE

  • Finally, the post-jam version 1.0 of sustAIn is up on itch. Unfortunately Matthias didn't show up again since then, but LaraKaa wrote the additional dialogs and quests, and together we made a fully playable adventure game. Quite a feat, I think. My biggest regret is the lack of an artist, so the game looks... not so great. But at least the story is original and uplifting, which is why I added the game to my projects list after all. I guess I could try to improve my pixel art capabilities and replace some of the graphics, but I think I'd rather reuse the Bitsy-like system that I created with this jam entry for something new.
    Oh, and there were some annoying performance problems with the web build of the game, so we removed that one from itch. A bummer, really, but I don't have the time to investigate this further for now.
  • The little one pager website for Mops & Mobs is online now, even though the presskit assets are missing. It's at least ready for the Lange Nacht der Computerspiele in Leipzig and the A MAZE in Berlin, where we will showcase the game for a few hours. I like the slightly rotated elements of the page. Somehow I wish we could add music without looking totally out of touch.

2025-04-25

SEEN

  • Unity 6.1 was released and I just find it remarkable how it did not interest me in the slightest. Seems like I'm converting to Godot harder than I thought. I ported my almost abandoned side project to the new Unity version and it became corrupted. I'm not even in the mood to investigate.
  • Saw a short and interesting video about Godot's Canvas Groups.
  • I also watched a tutorial video about Gimp, mostly to understand the differences to other graphics programs. (And also because I still want to switch to Linux some day.) It's not that awful, but yeah, it's definitely missing some QoL things from Photoshop or Affinity Photo.

DONE

  • While teaching GDScript to my students there was the urge to use an FSM at some point, so I updated my Simple FSM script. It now supports omitting the parameters of each method, and also having several target nodes instead of just one.
  • It's not online yet, but we soon have a simple one pager website for Mops & Mobs. It was designed by Jana, and we wanted it to be responsive. I noticed how absolutely out of date my CSS knowledge is, so that was an opportunity to learn about flex boxes and stuff. As a result I want to remove the w3.css dependency of my own website too, but there are more important things to do currently.
  • I wanted to improve the extensibility of our combat cards in Mops & Mobs by adding a traits system based on Resources, like I did with the Dummies. After a lot of thinking and planning it just didn't come together. It's not really a complexity problem, but the cards are just too different in their behaviour in order to streamline it. For now I accepted my fate, and will just try to to improve the readability overall, I guess.

2025-04-17

DONE

  • I reworked the NPC system of Mops & Mobs a bit, as it became apparent that certain features were missing and not easy to implement. Instead of my strange and overcomplex system based on proxies, the game now just assumes an NPC exists only once and places them at the correct position if necessary. It's still possible to have several characters with the same appearance, or even several characters sharing one memory (blackboard). There is still no real NPC manager, as everything is controlled by the story progress anyway. I would love having NPC schedules, but I think in such a game it would actually be annoying if it's not clear at all times where a character can be found. On the other hand, by abusing the scripting language I could probably create simple logic that would randomly move an NPC around in the room or even the current dungeon level. In any case, the rework of the NPCs mostly took so long because changing dungeon levels (which removes the previous level) was wonky and fell apart, so I had to repair that system too.

2025-04-12

SEEN

  • I use a lot of custom resources for Mops & Mobs, for data containers like card types or NPCs. The amount of files is increasing slowly, and I finally reached the point where I'd really like some kind of table overview of all the data. And thankfully there already is a solution for this - aptly named "Edit Resources as Table", by Don Tnowe. Integrating it in our project worked without problems so far.

2025-04-11

DONE

  • Another update for my dialog editor connected, so it's now version 0.9.7. This is another small update that mostly fixes the incorrect file sorting in the 'Welcome Screen' (it was sorted by last access instead of last changed). I also added the option to change the created JSON files' extension from .json to whatever. These two changes were once again motivated by Godot's strange behaviour of resaving JSON files seemingly at random times, and also reformatting them in the process. Especially the latter is very annoying, as Godot now (since v4.4) displays every float value with ".0" added when they're integer. This change isn't bad per se, but it adds a lot of unnecessary extra data to my JSON files. I even submitted an issue on the Godot repository, but it seems the problem is already known. Doesn't look like there is much incentive to fix it though. And I still didn't get an answer why Godot does the reformatting at all, as I don't see any reason why it's necessary.

2025-04-06

DONE

  • Finally I took the time to add an RSS feed to this dev log. Not sure if anybody is actually interested in this, but at least it's there now.

2025-04-05

DONE

  • I wanted to make the mouse over hovering in Mops & Mobs' combat a bit more robust, by using PhysicsDirectSpaceState2D.intersect_point() instead of the usual mouse_entered signals. Turns out there is a bug (at least I think so) where intersect_point() does not recognise any Area2Ds or other physics objects when they're children (direct or indirect) of a CanvasLayer node. I don't know why that is, but I am sure it's a bug because 2D raycasts work. So I filed an issue.

2025-04-04

SEEN

  • This video about Surface-Stable Fractal Dithering was a nice watch. I'm primed by Ultima Underworld II, so I love dithering in games. I'm not sure I particularly like the technique shown in the video, but it was interesting nonetheless of course, as most explanations that go in-depth into shaders.
  • Today I learned that Godot can just "forget" writing print() messages and errors into the Output tab; this seems to happen always when the game closes to quickly. As I had a crash bug that would instantly shut down the game whenever it happened this is a very annoying behaviour, as I couldn't see any result of printstack(). The solution was to start Godot with the console, as that one doesn't care about the game window being too quick.

DONE

  • The randomness of Mops & Mobs' battles was a bit too random, as there were situations that would be unwinnable sometimes and then become quite easy after trying again. Overall I think I want most fights to be non-random, but I still put some work into distributing the cards, based on their "dangerousness", a bit more evenly in the deck. I'm not entirely sure I succeeded, but so far most tests were promising. I'm basically sorting the cards by their danger factor, split them into two stacks (above average danger and below average danger), and then create packs that have around the same amount of "dangerous" and "harmless" cards in them. These packs are shuffled and then moved into the final deck.

2025-04-02

SEEN

  • I read this blog post about hash generation for Unity's Vector2Int. While the post was an insightful read, somehow I always suspected it isn't the best implementation, and long before they even had the Vector*Int structures, I had to create my own Position* stuff for integer based vectors. I don't know if my hash methods are better though (they were copied from somewhere else).

2025-04-01

DONE

  • I continued the Godot course from last week, mostly showing my students how to use GDScript. As usual, I live-coded the little puzzle game where the player has to follow a pre-generated path, but this time it was done in 2D. It's on the already mentioned GitHub repository, but it's also directly playable on itch.io.

2025-03-29

SEEN

  • I read an article about SpaceX. I didn't really follow what SpaceX was doing, the things I heard mostly were in the region of "at least SpaceX is a cool company even if Musk is a a vile moron", but now I'm sure even that is not true. (The part about Musk is still valid though.) In any case, there is this quote in the article that pretty much sums up what Rat King is doing wrong all the time:
    "You never achieve iterative design with a full-scale prototype. It is incredibly wasteful and can lead you down several problematic and dead-end solutions."

DONE

  • Before we can work full-time on Mops & Mobs again, I'm doing small stuff from time to time. It would be great if we could concentrate on the content (story, levels, characters) when we get back to game development, but that's of course quite unrealistic. In any case I did some work on the card combat, improving some animations and adding a few sounds. Also it's now possible to flee from a fight. Another thing that might be worth mentioning is the removal of the slot for the card deck of the dungeon ("the enemy"), as we might go back to Mondar's Dungeon's way where all the cards are already placed in the dungeon stacks.
  • I still hope we might get a "finished" version of sustAIn some day, and for that I created an outro. It consists of simple, hard-coded camera movements over the characters.
  • COOLFRIENDS has a new project, a small NES game, and for that one I created a very minimalistic level editor in Godot. It mostly consists of two ItemLists and a grid for the tiles. It's nice that Godot has a built-in method for a native file dialog, so even saving/loading the level was easy to implement. The editor itself is nothing to brag about, but I still like creating tools, and I think Godot might become my to-go framework for that.
  • I gave another Godot course last week, the created scenes and scripts are in this GitHub repository. It took another day to add extensive (German) comments to the code. As usual giving lessons is a mixed bag, especially when the range of knowledge and interest among the students is very wide. It can't be helped, I guess.

2025-03-17

DONE

  • I couldn't do much game dev the last few days, but I still managed to add a small feature to Mops & Mobs, at least rudimentarily. By adding a new DummyTrait that lets the level designer define a map point. This map point displays a text, usually a room's name, inside the backend map - depending on the mode by just walking into it or by calling discover_map_point() in a script. This is a little QoL change I wanted to add for a long time. Of course, I should concentrate on the combat cards instead ... The plan is to have a version with three or four fights ready that can be tested at a local game festival (Lange Nacht der Computerspiele) in a few weeks.

2025-03-11

DONE

  • Gompl has the keyword interrupt now for stopping the script's execution and also allows defining a maximum amount of instructions being called. After the interruption, the script can be continued by providing a "state" Dictionary. This way it's easy to make some kind of fantasy console, I hope. I also added a register_func() method that allows registering Callables, as an alternative or extension to providing Gompl with a Godot object target. As the latter's methods are called directly, they would behave badly when the user calls a function in the wrong way, with no way for me to catch the error unfortunately. So with registering methods the responsibility lies with the programmer, not the scripter, to define the methods correctly. A small video on BlueSky.

2025-03-09

DONE

  • Godot 4.4 is out and I virtually instantly ported Mops & Mobs. Almost no changes were necessary, which is great. And the new typed dictionaries already improved the code, although less so than I hoped - as you can't nest types (so something like var d: Dictionary[String, Array[int]] is not possible).
  • One of my goals with Gompl is to make it almost as usable as the SmallBasic interpreter for Unity, and one of the major things missing (at least for me) was being able to interrupt the execution of Gompl code. Because otherwise a user of a hypothetical coding game could just create an endless loop and freeze the game. So I finally, after quite some think work, I took the direct evaluation code out that would be called on the nested Expr nodes of the AST, and instead let them create a simple array of instructions, basically "compiling" the script. This array can then be used in the new run() method of Gompl. This is the first step, the second step is of course adding logic to stop the execution after, for example, 1000 steps and afterwards let the user continue for another 1000 steps, rinse and repeat. Gompl on GitHub.

2025-03-02

DONE

  • With Godot 4.4 around the corner, I finally upgraded my highlighting shader to Godot 4.3. Better late than never I guess. One problem arises when someone uses a World Environment in the scene with, for example, Glow activated, the the shader stops working. The solution is to give the viewport of the highlight effect its own Environment.
  • Gompl now uses undefined instead of null. This added some problems, but overall I like it better this way. I also added stop and skip, which normal languages call break and continue. They're one of the reasons I added undefined, because code like this:
    x = if 1 == 2 then "foo" end
    // or:
    x = while true do
      100
      stop // evaluates to undefined
    end
    
    ...leaves x as an undefined value in both cases, and I wanted to be able to test for this in Gompl code. Last but not least I added a function that would get you the generated AST so it can be cached. A tiny bit of optimization I guess.

2025-02-26

DONE

  • I changed the icons on the homepage of this website from Font Awesome to some pixelart. Not sure I like them, it was hard enough to think of some symbols, but it's better to have less dependencies anyway.

2025-02-25

DONE

  • I updated Gimpl, renaming it to Gompl (I really don't care about the name, which might be obvious by the latter choice, but someone told me not to use "gimp"). Before I had a parser based on combinators, as learned in the tutorial by Jay Conrod, but I now replaced it with a parser using recursive descent parsing. This is described in Crafting Interpreters, and only now, after doing the first version of Gompl, I could understand it well enough to apply the knowledge. I also read the material from the TinyCompiler, but it didn't really help. In any case, Gompl ditches the ; for separating expression lists, which I like a lot. There might be (severe) bugs, so using it in Mops & Mobs further will be a good test.
  • I improved the gamepad handling in Mops & Mobs a bit and also gave the combat cards a shader that would give them a shadow and an outline. For that I just took TabMK's shadow shader and extended it with things I needed. I never thought of just increasing the size of the Sprite2D by scaling the vertices in the vertex shader, allowing the shadows to be much bigger this way. Somehow I find it genius, even if it's a bit crude. It's increasing overdraw, but I don't think that will be a problem for us, at least not in this case.
  • I'm still working on sustAIn now and then together with LaraKaa, not necessarily because I think it's a great game, but mostly because it's fun to work on it. Somehow Godot makes it a joy to extend a jam game even after a while.

2025-02-19

DONE

  • Connected received a very small update, which adds the option to save the dialog JSON files with tabs instead of spaces. It was increasingly annoying to me that Godot would resave JSON files inside a project and change all spaces to tabs, as this sometimes resulted in very large commits for the Github repo. So this problem is solved. I also had to remove the BOM bytes in front and add a newline to the end of the JSONs.
  • And Gimpl now understands negative numbers. Kind of awkward that it couldn't do a simple x = -5 before, but now it works. There are two things I'd like to change - removing the ; separators and fixing bools, so things like true == true work as expected - but somehow I think I should change the whole code for the parser to a hand-written one. For now Gimpl does everything I want for Mops & Mobs, so changes will have to wait.

2025-02-18

DONE

  • I added support for strings and function calls (not functions, though) to Gimpl, and also changed everything to expressions. Even though error handling (among other things) is sorely missing, I think Gimpl is now kind of usable in Mops & Mobs; and indeed I already implemented it.

2025-02-17

DONE

  • I finished following a tutorial for an interpreter in Python. I used GDScript instead, because I actually wanted to have a simple scripting language that I can use in our own Godot game projects (for Unity I'm quite content with SmallBasic, or just Rosalyn). I didn't find anything yet that suited my needs, so creating "my own" apparently was the way to go. Although I read stuff about interpreters before, I never did quite grok the whole thing, but the tutorial by Jay Conrod helped to finally just do it, and that approach was the most helpful so far. I tried reading "Crafting Interpreters" by Robert Nystrom, and while it's extremely complete, following is a bit of a chore, because the author adds too much fluff to the text, in my opinion. I think the lack of verbosity of Jay Conrod helped me much more with concentrating and understanding. On the other hand, IMP is very simplistic, and before I can actually use it for our projects I have to try adding some features, especially functions. Nonetheless I uploaded Gimpl to Github.

2025-02-14

SEEN

  • I was always a bit annoyed by Godot's lack of Unity's Instantiate() functionality that would let me duplicate an in-scene GameObject without any problems. Godot has duplicate(), but it definitely doesn't have the same versatility and produces unexpected problems. I also got word that duplicate() shouldn't be used for this anyway. Instead I would create little scenes inside the project with the nodes that have to be duplicated and I would reference them as PackedScenes. Only now I found out it's possible to create such PackedScenes during runtime, and thus I can recreate Instantiate() like this:
    var scene := PackedScene.new()
    for c: Node in proto_node.find_children("*"):
      c.owner = proto_node
    scene.pack(proto_node)
    proto_node.queue_free()
    
    I messed around with this before, but I never understood that all the node's children need their owner property set to the node. I'm still not sure what the benefit of the owner property actually is, but at least it works now.

DONE

  • I did some more stuff for sustAIn, small QOL changes only, but there's still no release of the full version in sight. I guess creating a story-based adventure game, even with no additional gameplay, is always harder to make than first anticipated.
  • The same with Mops & Mobs. I worked on small things that felt necessary, like a sanity check for the decoration mode (so that the player doesn't spawn into a barrel) and feedback messages when placing decorations, bug fixes for the savegames, moving the controls to the settings screen, adding titles and descriptions to quest lines... But without significant progress on the story I don't feel like uploading a new demo version. The differences are just too small, even if they're numerous.

2025-02-03

DONE

  • I participated in this year's game jam of the bpb, and as always it was great! This time I didn't work together with Jana, as it's pretty much impossible for now that we both attend such an event at the same time (because of the baby, of course). Instead I did the programming for Lara Keilbart's game idea: you're feeding a blank AI the knowledge of a small community so it will actually be a useful tool in the end. Cozy AI was the working title, but most people somehow incorporated "AI" into the title we also went with sustAIn. I provided the setting - the community are actually survivors of a generation spaceship that crash-landed on an alien planet - and of course my 'vast' Godot knowledge. Matthias Bunzel, the third team member, mostly worked on the dialogs, and for that he had to write formatted text files for the system that I created for the jam. In hindsight it probably would have been faster to use an existing dialog editor for Godot, but somehow I was interested in parsing textfiles that allow if-then logic. It was a bit more involved than I anticipated, so it took a big chunk of the time to create this, but I'm glad I tried it out. In any case the game isn't finished, we barely could make the first scene, but the systems are there and can be extended easly, if Lara and Matthias are willing. I also did some additional work already by adding the possibility to have both English and German in the game. Oh, and all the other entries were awesome too.

2025-01-29

SEEN

  • Funny that the first stealth video game was about stealing things too. The gameplay is a bit too simplistic for my taste, but the animations are great.

DONE

  • Mops & Mobs feels more complete again, as I added an option to change the language of the game. Of course, for now it's only German as second language. Apart from the dialogs, where the translation will take a bit longer, there's also the job description at the beginning of the first level, which is a texture and not localized yet. Jana hopefully will change it to something using Godot's UI system, so that it will be easier to translate it via the CSVs.

2025-01-26

DONE

  • The new inventory UI in Mops & Mobs for the combat cards proved to be useful for preparing the combat too, and also the removal of exceeding cards from the backpack afterwards. This didn't need much additional code, which makes me happy, but of course it just means I missed some detail that will increase the complexity anyway. But for now, the combat system feels complete, and we can finally work on some "real" fights, as real as a card game can be, in the near future.

2025-01-24

PLAN

  • In light of the current events (Twixxer's boss Musk more and more open about being a nazi), I'll have to remove/replace all the links to Twitter on this dev log some day.

DONE

  • I added an inventory UI screen for the combat cards in Mops & Mobs. After much thinking about the approach, we decided that a single overview of all cards in the player's backpack in a grid would be enough. The first cards, marked with an outline, are inside the deck, which is used for the next fight. Clicking on a card moves it to the first slot, so it will definitely be part of the combat deck too (and the last one gets removed). We hope the minimalism of this approach is appreciated, but it might be that some people want more control. Overall we try to not overengineer the combat in Mops & Mobs just so it doesn't get more important than the rest of the game mechanics. Wish us luck.

2025-01-16

SEEN

  • Some gameplay of Behind Stars and Under Hills can be seen in the series "Deutscher" on the German broadcast ZDF (3rd episode, 25:02)! I totally forgot about this - back in 2019 a TV production company asked us if they could use a video of one of our games. Screenshot on Mastodon.

2025-01-14

SEEN

  • I just learned that Mark Sibly, creator of several easy to use game development languages/tools, has passed away last month. I really enjoyed Blitz3D back in the day and even bought Monkey and tried to make some small games with it. It was always cool to be able to use BASIC in combination with versatile graphics engines. In any case it's nice to read so many testimonials of Sibly's influence on game developers' careers.

DONE

  • My brother released the intro video that I made for his art exhibition.
  • It was a bit more complicated than I anticipated, but now a dialog can branch differently in Mops & Mobs depending on the outcome of a fight. The problem was, of course, that there was no result until the player did the fight, but the dialog nodes would advance until the next "stopping node" (Text or Choice). So any Condition node would be evaluated too early. I added a "pause" functionality that is called as soon as a Script node notices that the current game state isn't the dialog mode anymore. This works well enough, but in the future I might create a dedicated Combat node for dialogs in order to combine the Script and the Condition.

2025-01-10

DONE

  • While the player is walking through the dungeons of Mops & Mobs they're triggering different actions with each step, like a dialog starts or music changes. This happens via Dummy nodes. If the game were more physics-based I'd use Area3Ds, but I found it more logical to just use points at distinct positions; might be a decision born out of overthinking, but it's what we use now. Over the months the Dummy script received more and more functionality - not only do the dummies start dialogs or change music, they can also change the whole ambience, teleport the player to another dummy or level, and so on. But while the code doesn't have to be beautiful, I still thought having so many optional parameters makes the dummies unnecessary bulky, and creating different types of Dummy scripts that handle each case individually isn't as easy as in Unity with its MonoBehaviour component system. After some thinking I decided to use Godot's resource system. Each dummy now has an array of "traits", and every trait is inheriting a DummyTrait which is a Resource script. This means seldom used dummy functionalities like is_player_start don't pollute all dummies, which I like. I also added the posibility to create custom scripts, like they're used in dialogs already. I don't really use a scripting language currently for the game, but if the need arises it should be easy to parse some simple if-then-else constructs.

2025-01-04

SEEN

  • A tool to paint on 3D objects in Blender. It's free!
  • A short video about three types of optimizations in Godot - pre-compiling GPU particles, freeing everything that isn't visible, and setting the Monitoring and Monitorable flags of Area2D nodes (plus the layer masks).
  • The minimal theme for Godot got updated.

DONE

  • Currently I'm not really working on anything worth mentioning (unfortunately), but I'm preparing a video for my brother's art exhibition. The exhibition is called BACKROOM, so of course it's just a fly-through in a labyrinthine backroom, with the typical wallpaper and carpet floor. I use bloed to create the level along a simple path. Dreamteck's spline tool is a bit overpowered for the camera path, but at least I don't have to make my own bezier curves. Annoyingly there was a bug that would only appear in the standalone build and not in the editor (the position change of the spline during Start() wouldn't be recognized by the path follower anymore).