Friedrich Hanisch's Dev Log
DONE
- After adding all the necessary card functionalities and changing the layout of the card slots several times, the combat prototype for Mops & Mobs is in a usable state now. The last thing I added was a Flying Bat that would snag a random item card every round; because I thought it's necessary to give the enemy cards more slots, otherwise it would be too easy to just fight against one single enemy all the time. Maybe it's a stupid idea. But that's the point, with the prototype we can check what kind of card combinations and usages make sense, and how many actions the player should have. Right now, three actions trigger a new round, which means enemies attack the player's shields and health. Maybe it needs more actions, maybe it needs less slots for the player. Besides the bat there also is the Falling Rock, which is even meaner - it targets a random slot (both dungeon and player) and destroys the top card. Which could be too powerful, another thing to try out. After all is done, the integration with the main game will be the hardest part, as it needs several more screens too, for example an interface which lets the player choose their cards for a deck.
DONE
- I concluded the Rat King Game History by uploading Karoshi! on itch.io, so it ends with the beginning. Karoshi! was our very 1st jam game, back in 2010, right after we finished our studies. Rat King didn't exist yet, but we thought this game shows that we can make games and thus founded our little indie studio. Karoshi! is a multiplayer-only game made in 2 months, inspired by Dungeon Keeper, with an office setting in which you place furniture and attack the other office workers.
https://ratking.itch.io/karoshi
SEEN
DONE
- Finally a new jam game, I almost thought I wouldn't be able to do it. Well, it helped that this one was for the One-Hour-Game Jam, the 500th one no less. So I invested less than 90 minutes to create a 2-player assassination game - you have to find out which dude you are among the 500 dudes, kill the green target dude and maybe also the other player dude. Killing innocent dudes will reduce your score. After 500 seconds it's over (but not really, I forgot to implement any endgame). 500 Dudes was made with Godot. I actually like this, maybe I'll fix some bugs and give it a dedicated page on itch.io.
https://ratrogue.itch.io/tiny-jam-games
- I separated my Godot behaviour tree script from the general git repository and put it into its own repo, calling it just bt.gd now. Nothing else was changed. In the future I should add some samples though.
https://github.com/ratkingsminion/bt.gd
DONE
- As part of the preservation project, where I upload a lot of my old jam games on itch.io, I tackled all those super tiny games that were made within a few hours or less. Most of them were created for the 1HGJ, but I don't think I ever could do anything in under 1.5 hours. Nonetheless, here are 14 tiny jam games. My personal favourites are Coxel, TOWERBRICKS, BlockJump and Wie heißt'n der? Bin ich das? 01. Tomorrow the 1HGJ will celebrate its 500th jam, and I'm tempted, even though I won't have time, so I'd upload something during the week, maybe.
https://ratrogue.itch.io/tiny-jam-games
SEEN
DONE
- Some more games I re-uploaded on itch.io, to preserve my game jam history.
- Super No Brainer was our entry for the F*ck This Jam 2012, where you had to make a game in a genre that you hate. We hated Color Matching games and Zombie Shooters, so we combined those to an extra detestable mix. Click on ammo to shoot zombies, otherwise they gonna eat your tiles!
https://ratking.itch.io/super-no-brainer
- Loguerike is another game made with haxe, this one uses luxe from back when luxe was a haxe framework. The game itself is a very abstract roguelike, you're jumping around on stacks of random events. It's more fun than I would have expected. We actually planned to make a full mobile game out of it, but stopped the development quite early.
https://ratrogue.itch.io/loguerike
- Pitman Krumb is a very special game, as it was our first roguelike, and the one that (after some more work) became our first commercial game. We made Pitman Krumb for the 7DRL Challenge 2011, and back then it was very uncommon to make a roguelike with Unity or in 3D in general. It's mostly inspired by boardgames (like HeroQuest), as I wasn't sure I could make a good procedurally generated dungeon.
https://ratking.itch.io/pitman-krumb
SEEN
DONE
- I continued with the Rat King Game History thread.
- Back in 2014 I hosted a MiniLudumDare with the theme Demakes. My own entry Thf was a mix of Thief and Hotline Miami, basically a frantic quick-stealth action game with the usual goal of collecting as much loot as possible without being seen. I liked the concept and can imagine it as a full game, but I'd change the player movement nowadays.
https://ratrogue.itch.io/thf
- Forest Poems was our entry for our Climate Change Jam on Alakajam, and it's more of a collaborative writing tool than a game. It's mostly a reminder to plant some trees (which, by pure coincidence, we did the same day I uploaded this).
https://ratking.itch.io/forest-poems
- A small puzzle game called Snakoban, made with Haxe and Sos' Allegro port to JavaScript. Surprisingly, it's a mix of Snake and Sokoban. I was glad that the concept kind of works. Made for MiniLudumDare 63, back when MiniLudumDares were still a thing and one of the best parts of the community. Oh, I miss those times in the #ludumdare IRC.
https://ratrogue.itch.io/snakoban
DONE
- Continuing the Rat King and ratrogue game making history, revived on itch.io:
- More of an absurd experiment than an actual game, Svetovid was an entry for the 7DFPS back in 2013 and features six camera views instead of one! And you cannot rotate! That's basically it, you try to kill some cubic enemies and find the exit, done. If I'd do Svetovid again, I would definitely make it real-time instead of turn-based.
https://ratrogue.itch.io/svetovid
- The original Tri is barely playable nowadays, but back then I was pretty proud of the idea, and that it actually worked as a game. Shoot points and manifest triangles, walk over acid and bend lasers - it's basically a Portal-like puzzle platformer. And as everybody knows, we made this one full games just a few years later.
https://ratrogue.itch.io/tri
- After a surprise "success" with our roguelike Pitman on the iPhone, we thought making another game for mobile would be a good idea, and after some prototyping I came up with this puzzle mechanic of rotating and falling boxes. Tumblox was pretty much a fail, both in terms of sales and also, to be very honest, in gameplay and level design. Still, it's part of our history, so here it is again.
https://ratking.itch.io/tumblox
DONE
- This series is coming to an end soon, but here are three more games out of the Rat King and ratrogue jam game history. They weren't available on itch.io before, and now they are:
- I made Broken Radio for the local game jam in Kassel at the Spielesalon 2013; it was hosted by Jana so I knew the theme in advance. Still, I had three other prototypes before I got to this one during the jam: you control a number of thieves, but not always at the same time. I'm quite happy about it because I feel it's somewhat polished. Also nice: the sounds were made on-site with my crappy phone's mic.
https://ratrogue.itch.io/broken-radio
- I think Treasure Chest Island (the German title "Schatztruheninsel" is better, trust me) is fun, or rather funny, but Grune's and mine second Devmania Overnight Contest entry wasn't as well received as Moon Laser Duo. Nonetheless, here it is now, the 2011 frantic coin collection game in which you play a tresure chest. It even has a highscore.
https://ratrogue.itch.io/treasure-chest-island
- Double Rogue was my entry for the 7-Day Roguelike Challenge 2013. I liked it enough that I made an improved version for Android afterwards, and now it's also on itch.io for desktop computers. The game is about a mage and a barbarian that were merged into one being; in six worlds of a cube dimension they have to find the Amulet of Yendor. I think it's a fun premise and it has some cosy aesthetics. (In order to upload it on itch I even had to get the old Unity project from a backup harddrive and upgrade it to Unity 5!)
https://ratking.itch.io/double-rogue
DONE
- Some more old games as part of my game jam history were uploaded on itch.io:
- 2013 we made Rat Race for a Notgame Fest in Cologne, organized by Tale of Tales. (Maybe I should check what they're doing nowadays.) Sadly it wasn't selected for the exhibition. The "game" is simple: You're a rat in a cage, and very lonely. After a while you die. Fun fact: the cage was modelled after the one we had for some years for our rats.
https://ratking.itch.io/rat-race
- Tale of Scale was my entry for Ludum Dare 25, back in December 2012. The scale mechanic is kinda fun, but I couldn't create enough gameplay with it within ~36 hours, so it only has three levels. Some people wondered if Superliminal had stolen the mechanic, but that's not the case. (It was a coincidence.) I did give the developer some tips though on how I implemented it when they asked. Maybe it helped.
https://ratrogue.itch.io/tale-of-scale
- One of my very first jam games: Moon Laser Duo was mine and Björn Grunewald's entry for the Overnight Contest at the Devmania 2010 (a German annual event which sadly doesn't exist any more). We actually made first place, which earned us a trophy and the special edition of Anno 1404. The game itself is a simple co-op only laser action game with nice music from Doron Deutsch.
https://ratrogue.itch.io/moon-laser-duo
DONE
- My quest to add all my old jam entries that I had on Kongregate as Browser games (Flash and Unity Webplayer) to itch.io is not complete yet, but three more games were uploaded. None of them are the greatest jam games ever, but I like each of them somehow, for different reasons:
- HATESNAKE3D was exclusively for Android for a while, but I thought I should also offer the PC version again. HATESNAKE3D was made for the second IndieBuskers, a game jam by a few indie developers of Ludum Dare "fame" who thought to make a quick buck this way. Well, I guess we did well enough to do a second one. I worked alone on HATESNAKE3D during the weekend, and I became so depressed I almost didn't finish it...
https://ratrogue.itch.io/hatesnake3d
- Kernel Exception - this action strategy game is a mix of System Shock and Dungeon Keeper. A bit under-baked overall, but a fun idea IMHO. Could really use some polish. As a space station AI gone rogue you (try to) take over all the robots and inhabitants. We worked together with a friend on this, over three days in our tiny living room, so it definitely was intense.
https://ratking.itch.io/kernel-exception
- Another 2D game - I didn't make many of those. For a while I really liked ActionScript and Flashpunk though. For Ludum Dare 21, back in 2011, I made a game about luring little bunnies with carrots: Bunnies, Back Into Your Cage! The controls are not the best, because movement is very constricted to a grid. Sadly the game did not make a lasting impact, but nowadays it might have the cosiness bonus.
https://ratrogue.itch.io/bunnies-back-into-your-cage
SEEN
- As a big fan on behaviour trees it's nice to see Unity 6 finally has a package for that for free. I love that the Unity evangelists were always talking about how "dog-fooding would be bad for the game devs that make similar games" but then Unity has no problem to cannibalize the asset creators, in this case the devs of NodeCanvas and such. That's life, I guess.
https://www.youtube.com/watch?v=n5m2aI6Wk8E
DONE
- I added some more of our decade-old games to itch.io. This makes me quite nostalgic, and it also feels a bit weird, because I'm quite sure I couldn't recreate some of these games, for various reasons. Still, here they are, downloadable for your enjoyment. And I still have some games in my backlog, so this isn't the end of it:
- Inclossssssure was our first Global Game Jam entry, back in 2012. As there wasn't any local site, we hosted it ourselves, with the help of the HTWK in Leipzig. The game itself was our answer to the question "what if Snake was a bit more like an RPG".
https://ratking.itch.io/inclosssure
- Overall a bit awkward to play, but Soliloquy holds a special place in my heart, and it's part of a couple of games that I call my "camera experiments", where I try out things with how the camera in a game works. In this case, you see two screens at the same time, but it only becomes apparent in the later levels. Such a 'puzzle platformer with a twist' was pretty en vogue back in 2011.
https://ratrogue.itch.io/soliloquy
- Me against the Mutants is another jam game from 2012, but this one is fully 2D, made with ActionScript/Flash! I had the idea for such an "infinity game" before, but the Seven-Day-Roguelike-Challenge from 2012 was the place to finally try it out. It's pretty hard overall, and some people can't even find out how to enter the level, hehe. I'm still pretty proud of the technical achievement.
https://ratking.itch.io/me-against-the-mutants
DONE
- I noticed that a lot of my older game projects are on Kongregate only, and those don't work anymore because they're created with Adobe Flash, or use the Unity Web Player. Both became obsolete because of "security reasons" (good thing, actually). Anyway, as a first step I uploaded one of my more popular Ludum Dare entries, Wunderworld, on itch.io, and more games will hopefully follow.
https://ratrogue.itch.io/wunderworld
DONE
- As a first step for the combat in Mops & Mobs, I (re)created the basic functionality of a Mondar's-Dungeon-like card system: there are cards and slots, and you can drag the cards onto the slots to make stacks of cards. I think in most of my games with similar mechanics I just checked the current mouse position, and if you want to drag a card onto another element (slot or card), it would only register that if your cursor is actually over it. This sometimes fails the drag&drop. Not extremely annoying, but it made me think about how to do this better. My solution is to actually check the colliders of the cards (or slots), if they overlap - this even works with rotated rectangles, so it was a bit more involved to implement. Now I have to think how to abstract the different card combinations (e.g., combine Broom card with Dust card to clean it up).
DONE
- My kitchen sink project ratrogue philosophy is pretty much dormant, but I wanted to try to upgrade it to Unity 6. This mostly succeeded, but there was the annoying problem that on every start-up the error
Draw GBuffer/Render Deferred Lighting/Draw Opaques Forward Only: Unable to create transient attachment 1
would appear, depending on the configuration once or thrice, together with other errors like NextSubPass: Not inside a Renderpass
. The Unity Discord didn't know of anything, search machines offered no insights, and the callstack of the errors were also very unhelpful. Even removing everything from the project would produce these messages - but only if the Render Path of URP was set to Deferred
. Forward(+)
doesn't say anything. So I did the only working thing, creating a new empty Unity 6 project and imported my stuff into it. So there.
PLAN
- We're still working on Mops & Mobs! The progress is very slow because of the lack of funding, and because we mostly work on getting the story right. Also, and that was a mental block for me for quite some time, the inclusion of a combat mode was always on the table. And after thinking a lot about how to integrate combat directly into the game mechanics that we already have - maybe the decoration mode, but mostly the dialogue system - we now decided to prototype something different instead: a card game. Because anything I concepted using the deco mode became too big and complicated, and all plans to use the dialogue UI for some dice-based fighting felt wrong or too random and just not fun. So, one of our most beloved projects seems to be the roguelike Mondar's Dungeon, and we think we can reuse a lot of the mechanics of that one; at least that is the concrete plan for now: reimplement most of Mondar's Dungeon's basic gameplay (which basically is the drag&drop functionality for the cards), and then slowly add effects and randomness where it makes sense.
SEEN
DONE
- One of the big problems I have with Godot's
CharacterBody3D
algorithms that handle movement and collision is the lack of automatic stair stepping. For a side project I tried something very simple, casting a ray (pointing down) in front of the player, and instantly change their Y position to the hit point's Y. It works well enough for the little test stairs I made. Of course this means the movement of the camera (if it's for a first-person controller) needs to be smoothed out.
SEEN
- Another video from Unity that I watched. It's about lighting with light probes or rather Adaptive Probe Volumes. Overall the technology is cool, I think, but I still don't feel like we will use it in the near future. Our projects are getting smaller than bigger, and all this stuff is for teams with several artists it seems.
https://www.youtube.com/watch?v=IpVuIZYFRg4
- A no-bullshit code tutorial about using marching cubes in Godot/GDScript.
https://gameidea.org/2023/12/12/marching-cubes-algorithm/
DONE
- I finally uploaded the new fholio.de. There are still bugs here and there, some of them I didn't catch in the beginning because I wasn't testing the responsiveness on real mobile devices. Well, that will teach me to use
<meta name="viewport" content="width=device-width, initial-scale=1">
from now on.
I didn't get around yet to mark all the code in my log entries. Overall the website is still in flux. An About page should be added, and a simple CV for job search (yes, I'm on the hunt).
SEEN
DONE
- I'm nearly finished with my new website. Overall it's “worse” than my current page, for example there are less pleasing animations, and the list of projects is not so well arranged. But I love having my own static website generator, and it doesn't use JavaScript. I add new projects with a JSON file and new log entries with a very long Markdown text. Probably not the best solution, but so far I like it. There are a few things missing before I upload it, I need to remove some old projects and add new ones (there are far less in 2023 and 2024 than I'd wish), and I need a good upload script that maybe even removes unneeded files from the server (no idea if that is possible).
SEEN
- Apparently the three tips to (maybe) increase the performance of the Godot editor are: 1) disable v-sync, 2) set it to Single Window mode and 3) enable Continuous Update. I'm hesitant to do the third one (as it is much more power demanding), but maybe the first two help a bit.
- I learned about the
MeshDataTool
class in Godot today. I have yet to procedurally create meshes in Godot, but I'm sure someday I will want to do it, so this is quite an interesting helper.
https://docs.godotengine.org/en/stable/classes/class_meshdatatool.html
- If I should ever do JavaScript or TypeScript again, I might have a look at Deno 2.0.
https://deno.com/
https://www.youtube.com/watch?v=8IHhvkaVqVE
SEEN
- Our former intern Patrick released his game Townframe, and it's really cosy.
https://store.steampowered.com/app/1927150
- I watched a video about the history and the types of the fighting game genre. I never was proficient in playing them, and I lost my temper quite quickly whenever I played against my brothers, so I gave up on them pretty early.
https://www.youtube.com/watch?v=BDo60G66pVA
- A kind of interesting video about finding a random point within a circle. As often, the most naive implementation (rejection sampling with a while loop) is the quickest one. While the other methods circumvent the problem of the random point being potentially outside the circle several times, they use the slower sin() and cos() methods.
https://www.youtube.com/watch?v=4y_nmpv-9lI
DONE
- TIL, after quite a bug hunt, that it's possible that objects in Godot can share arrays and dictionaries if you don't take care when using them in a tool script which populates the array via
_get_property_list()
and its friends. I forgot to set the property.usage
of the array to not only PROPERTY_USAGE_NO_EDITOR
but also PROPERTY_USAGE_ALWAYS_DUPLICATE
. In Mops & Mobs it led to ladders animating the player wrong as soon as there is more than one ladder in the level.
- I posted a little video on Discord only (for now) of the V raycaster, and it actually got some positive feedback. I'm not sure though I'm going to work more on it.
- My new website, currently also created with V, is progressing slowly; I re-added the gallery and I'm now doing the individual project pages. I really need to minimise the design though, I do not like my web design, which is still stuck in the 2000s probably. After the project pages I need to add tags, an imprint (unfortunately) and maybe an RSS feed? A script for uploading the site would be good too.
- I did some experiments with navigation meshes in Godot. Overall it feels a bit less powerful than in Unity, but I think it's more customisable. The docs say you don't even need the NavMeshAgent node in order to use the baked nav meshes. For a new side-project I'd like to have a lot of NPCs walking around in narrow corridors, and of course that's a bit problematic; they either walk through each other, or - if avoidance is enabled - get pushed through walls. Tweaking the parameters helps a bit, but it's never really robust. My current thinking is to create an NPC manager that controls groups of NPCs so they spread out more instead of all taking the same path from A to B. It's probably also a good idea to increase the speed of AI agents that try to walk through a narrow passage, and for this project it's actually okay if I define such passages manually.
SEEN
- I watched a video about using nav meshes in Godot. The quality wasn't very high, but I learned some stuff, especially that in Godot you have to move your agents yourself (as opposed to Unity, where they move automatically).
https://www.youtube.com/watch?v=BGevOhQq1Cw
DONE
- I'm mostly finished with the linktree and the log part of my website created with my V based static website builder. The biggest problem with the log, i.e. this Google Doc, is that the Markdown exporter does not export everything I marked as “code” via setting the font to Consolas. So now I have to go over 1000 log entries and add backticks to them. Ugh. Other than that I need to find a somewhat easy way to create a gallery which is right now the homepage of fholio.de.
- I added some more nodes to the behaviour tree script for Godot:
ignore
, nothing
and tree
. I also noticed some bugs that I could fix this way.
https://github.com/ratkingsminion/godot-base-code/blob/main/rat_king/scripts/bt.gd
SEEN
- A video about Making Games Quickly - the YouTuber talks about his game he made within 90 days and released in 2022, and while the tips are actually useful and correct (from my own experience at least), it's funny that the game in question has only six reviews on Steam. So it's not really a good showcase, or maybe the 90 days should include 30 days of marketing.
https://www.youtube.com/watch?v=ZjOtwlgzKeg
SEEN
DONE
- I implemented saving and loading the current game state in Mops & Mobs. Right now the biggest missing parts are a) handling of more than one savegame in both code and user interface, and b) handling of more than one visited sub-level in the game, but that's mostly a matter of moving some of the serialised information into another Dictionary or Resource.
- I ported the behaviour tree code I wrote a while ago in C# to GDScript, mostly as an experiment, but also because I found all the node-based solutions in the Asset Library quite beautiful but also an overhead for prototyping. Additionally the GDScript version can parse text files, similar to PandaBT, which I liked a lot back when I tried making Demon Thief. After the first release I added the possibility to have dynamic parameters for the trees created via text, although I don't know how performant this is; better only use this for very simple prototypes.
https://forum.godotengine.org/t/simple-text-based-behaviour-tree/82737
- My V raycaster now uses single walls instead of blocks of walls. This was a bit of a hassle to implement in the editor, and it's not perfect yet (I especially dislike how the texture is squished). On the other hand I don't quite know if I will continue with this project, it has no real goal, thus making it a waste of time. It was a nice learning experience though.
DONE
- I did some more stuff for the V raycaster, like adding editor modes for floors and ceilings and sprites and the player's start position. Nothing too fancy, but I still enjoy working on it, even if it is not usable for anything.
DONE
- I added dynamic level resizing to the editor of my V raycaster. This way I'm not restricted with predefined width and height, and I can even use negative coordinates, so I don't have to move stuff around if I notice I want another room to the right.
SEEN
DONE
- When I started this dev log I was pondering on what blog software or similar I could use, and I kept using Google Docs because it has a lot of features I like, is simple to use and I can make it a semi-static website. As I now want to move it to a static-only page, created with a V program, I meet some challenges. For example, the export for the blog to a markdown format creates a lot of unnecessary stuff like backslashes everywhere and all URLs are needlessly made a link in the format url, wasting space. At least this motivated me to create a little V based script to replace such stuff inside the text file. But the biggest problem is that any code that I wrote here and manually changed to the Consolas font I now have to do again (to backticks), because the exporter ignores this completely. I guess this is something for much, much later.
SEEN
- rxi's microui could be the answer to my search for a simple immediate UI system for my V projects. Unfortunately V's magical C converter didn't work with the source code, but it should be relatively easy to make some wrapper code for it. I might try it soon. A caveat is the fact that microui doesn't have input text fields, which is of course understandable.
https://github.com/rxi/microui
- voxel found another toolkit, this time one that even targets DOS, which I still find interesting. Seems like it uses some kind of BASIC? Of course it's kind of ancient.
https://div-arena.co.uk/
https://github.com/DIVGAMES/DIV-Games-Studio
- V has a nice profiling built-in, which I used already to increase my raycaster's fps from 120 to 200 (debug mode). Easy to use too.
- I'm watching a lot of Timothy Cain's (of Fallout, Troika, etc. fame) videos these days - especially as he posts something new daily - and I find the content interesting enough, even though it's not always “new”. The main thing is probably that Tim is just a really nice guy and I wish more people were like him.
https://www.youtube.com/@CainOnGames
- A good video by Internet of Bugs about old tech and learning new tech - in this case, AI / LLMs. I also liked his take on Clean Code (he hates it, because it makes the code less maintainable).
https://www.youtube.com/watch?v=pnMx3fSXEEg
https://www.youtube.com/watch?v=8ncQrGuunHY
- Even though I didn't play any of the DOOM stuff apart from some shareware episode levels, I liked this collection of unearthed sprite sets.
https://www.youtube.com/watch?v=XnSKD_87URY
DONE
- I worked more on my V raycaster. The raycaster itself didn't see any improvements, but I added some rudimentary buttons and editor functionality, so now I can remove walls and save and load the level. There are a thousand things to do to make this actually a useful project, but I had fun and I might come back to it from time to time. Things I wish to add that not every Wolfenstein3D clone have are diagonal walls and maybe dialogs (via connected?).
SEEN
DONE
- I'm still at the V based raycaster, just for fun, as a vacation project. I added sprites and some fake fog, so basically not much happened since last time. My main problem right now is trying to find a UI system for a basic level editor. I want to have it “inside” the game, so I can test stuff quicker. The issue is that no UI system for V is usable as an overlay - they want to be the app, and the game would run as a UI element or so. I don't want that, so I try to create some very simple UI functionality with the sokol implementation of V, while learning more about the ins and outs of the language.
- Moreover I created a linktr.ee-like HTML page as my new homepage, and now I want to make a template out of it, for the learning experience of making a static site builder. In any case it was interesting to get back to CSS for a change, but I am really not a fan of web development in general.
SEEN
- This article about pixel art on old CRT was pretty interesting. On the person's website there are more neat articles about colours and stuff, I should check them out.
https://www.datagubbe.se/crt/
DONE
- I'm now at the “have floors and ceilings” part of the lodev.org tutorial for the V based raycaster I'm doing on the side. This is nothing special of course. I found it interesting to play around with optimization, which I disabled for now, but I definitely want to try again to rotate the image that holds the screen and thus make use of the fact that a raycaster plots the pixels vertically instead of horizontally, which would be better for accessing the pixel array.
SEEN
Two little learnings regarding V:
- It's possible to automatically reload the browser when testing a static site generator programmed in V like this:
v -d veb_livereload watch run .
- I can disable Vsync on Linux and show the current frames per second in a V game:
vblank_mode=0 v -d show_fps run my_game.v
I bought a Humble Bundle with tons of stuff for Blender and other assets. I should really check the stuff out, maybe usable for the ratrogue philosophy project.
https://blendermarket.com/products/blender-markets-essential-game-modding-toolkit
DONE
- While we're trying to develop Mops & Mobs' story a bit more now and then, I decided to do the raycaster tutorial from lovedev.org a second time, but instead of Haxe I'd do it in V this time. This is a good way to get more into V and evaluate it for other projects. And this time I will definitely remove the infinity ability for the raycaster. While it was fun to have, it added some complexities especially with the sorting of billboards (there are still bugs in the original rc-test regarding this), and I don't think I'd make an interesting game with it anyway. If I'd want it in again, I can “just” look at my old code I guess, but for now I'd be happy to have a working raycaster engine, as simple as possible.
https://lodev.org/cgtutor/raycasting.html
SEEN
- I've been watching a lot of Tim Cain's videos recently, and this one about Arcanum's dynamic dialogue system is very interesting. Apparently they used op-codes for everything like “Give me money”, “Thanks”, “Greetings”, and so on, and it would look into a database according to the class of the NPC, class of the player and a lot of other things and pull a text from there. Unfortunately I never really noticed that (only when my player character was drunk they would speak with lower intelligence, very cool), so it was a bit wasted on me.
https://www.youtube.com/watch?v=5l7YcGCQ5Ck
PLAN
- My current development journey is pretty slow, the biggest reason for that is probably my new-born daughter, but also the fact that I'm still a bit occupied with contract work and that we don't have funding secured yet for Mops & Mobs. In these times I find looking at a new language (V) kind of relaxing, and now I want to try to make a static website builder with it. There already is a full tutorial for that, so it should be no problem to get to something simple. My current plan is to make something like linktr.ee for my own page (fholio.de) and ditch my linktr.ee account. That should be very easy to do, even though I'll have to think about what to use for the HTML template.
https://github.com/vlang/v/tree/master/tutorials/building_a_simple_web_blog_with_vweb
- Somehow I'd like to recreate Coxel, and make some kind of Solitaire puzzle game too. These should be doable with Godot within 2 or 3 months even with the little time I have. Just to release something for once.
SEEN
- I'm currently having a look at the programming language V, and somehow I like what I see, even though I'm confused a lot by how the variables's types are declared. It reminds me a bit of GDScript somehow (hmm, Boss Baby effect, probably), but apparently the main inspiration is Go. Even though it's actually more like a transpiler to C.
In any case it has a graphics API inbuilt (via sokol), and might also be suitable for me for simple web development (which I always dread).
https://vlang.io/
https://github.com/vlang/v/blob/master/doc/docs.md
SEEN
- Today I installed Linux Mint on my old laptop. My idea is to slowly migrate to Linux, or at least always have a Linux computer as an alternative to Windows, because the modern corporate-driven world is awful. As usual my journey was rocky from the start; I installed Mint the recommended way, with Etcher to create a bootable device. At first the live boot test worked, but after restarting the laptop for some reason, the USB stick wouldn't work again - the “MokManager” couldn't be found. So I changed the tool to Ventoy, and that did the trick, although the reason for that eludes me. My next steps will probably be installing Godot and trying to create a small prototype with it or actually doing work on Mops & Mobs. But first I need to get a bit more familiar with Mint.
https://www.ventoy.net/en/index.html
https://linuxmint-installation-guide.readthedocs.io/en/latest/install.html
DONE
- Another update for the Mops & Mobs demo, finally. There aren't many changes, as we think the concept itself is good; but we need to work on the actual game, if we should get the funding for that. By the way, the new demo is now also available on Steam - next time I have to remember that Valve needs a bit of time to approve it.
https://ratking.itch.io/mops-and-mobs/devlog/752194/v013-of-mops-mobs-demo
SEEN
- This looks like a useful plugin for Godot, basically a placement tool.
https://github.com/dreadpon/godot_spatial_gardener
- Mark Sibly is still doing updates for Blitz3D (he now changed the sound system to SoLoud), and for a short moment I was tempted to create something small with it. But then again there are so many other free tools, and I'm not particularly interested right now to cater to older hardware and operating systems. I just want to release something again, some day.
https://blitzresearch.itch.io/blitz3d
DONE
- I imported TRI into Unity 5, because the support doesn't want to solve my licensing problem with Unity 4 as it's too old. It mostly works, but unfortunately the glow effect from Unity 4 works quite differently than now (it uses the alpha channel in opaque materials, which isn't possible anymore). Very off putting.
DONE
- I made a little player-versus-player Sokoban for the 15th Kajam, which had certain limitations as a theme. I only followed the one that restricted graphics to lines only (like those old vector graphics consoles), so I used ALINE to draw some TRON-like environments. The game is not tested though, it might be a bit boring; but I'm glad I could finish something and it's actually playable.
https://alakajam.com/15th-kajam/1510/sokobanban/
SEEN
- I liked this video about what genre DOOM is - the answer is actually much more interesting than just “first-person shooter”.
https://www.youtube.com/watch?v=GuyImR_dI6g
- Some good, interesting, funny optimization tips for Godot games. I liked the shader compilation hack, and that it will be unnecessary in a future version of Godot. In any case I should look into occlusion culling in Godot.
https://www.youtube.com/watch?v=oG-H-IfXUqI
DONE
DONE
- For my ratrogue philosophy project I'm still trying to recreate a somewhat interesting guard AI with suspicion logic, and I feel I'm closer to it now, but I'm also wary. It could be that I only get near to the wanted feeling, but can't reach it because I'm doing it fundamentally wrong. I still like the NPCs in 666 Coins, but their suspicion system is too simple - when they hear the player they look into the direction, with an improved vision, and when they finally see the player, follow them relentlessly.
SEEN
- A video about the creator's “Godot toolbox”, but it's mostly about how to import stuff into Godot the right way, and some links of free textures, sounds, fonts.
https://www.youtube.com/watch?v=rS88FPBtqBk
- I'm on the fence of buying yet another Unity asset for volumetric fog/lighting (Ethereal), as Aura and Hx Volumetric Lighting are both not updated anymore and don't support the Universal Render Pipeline. But first I tried a free solution available on GitHub, and while it definitely lacks adaptability and visual quality, it's already better than nothing. For the first iterations it's probably enough for my ratrogue philosophy experiments.
https://github.com/CristianQiu/Unity-URP-Volumetric-Light
DONE
DONE
- It's definitely not anything special, but I put the Godot project for my students at the Ostfalia school on Github. The examples are very basic because I'm never sure how advanced I can go; there is no real feedback from the students regarding the course material, which is a bit frustrating.
https://github.com/ratkingsminion/ostfalia-godot-course-ss24
SEEN
- I (mostly) read this article about the short-comings of Rust for game development - very educational. For a while I had some ambitions to learn the language, but now I'm glad I didn't actually do it.
https://loglog.games/blog/leaving-rust-gamedev/
SEEN
DONE
- For Mops & Mobs I added various interactive elements like levers, pressure plates, teleporters. It's not used in the demo, so there's no showcase for these mechanics yet, but at least they're there and mostly work.
- I'm continuing to rip out stuff from 666 Coins and Pry and frankensteining them into my little kitchen sink experiment. So now it has the doors and the crude sound propagation stuff from Pry and it's really not the best, but it's better than not having any sound propagation functionality in a stealth game - even though it was bearable in 666 Coins. I also improved the patrolling tool for the enemies, just so they can look into more than one direction while waiting at a waypoint.
SEEN
- TIL that for Godot's Color Correction adjustment LUTs you have to set only the
Horizontal
setting of the 3D texture to 33, not Vertical
too. Now all our screenshots and trailers are obsolete as we actually always used the LUTs in the wrong way... oops.
DONE
- Last week I gave a Godot course and also supported students in a game jam; one team even used Godot. Pretty intense. Nothing to add here.
- When editing a level scene for Mops & Mobs I'd like to directly test it sometimes via
F6
- but in our game the level can't be run standalone, it needs a game scene first. This is what I came up with after several tries: removing all child nodes' scripts so nothing unwanted happens that depends on the game scene in _enter_tree()
, and a while later in _ready()
finally load the real scene while also telling it which level scene to load via a static variable.
https://mstdn.io/@ratking/112305900817022858
SEEN
DONE
- I mostly abandoned the project I continued from the Dungeon Crawler Jam that I couldn't submit, and instead got back to my “ratrogue philosophy” kitchensink project. All I did though was porting the ladders from 666 Coins. Small steps, I suppose (literally).
SEEN
- This four hour long retrospective about the Diablo series was an interesting watch as it touched a lot of game design relevant themes. The gameplay is mesmerising for sure, but even by just watching the guy's killing of thousands of demons I felt like wasting time.
https://www.youtube.com/watch?v=R3v-7Rndd8M
SEEN
- I noticed some superfluous code in a maths function by Unity. I'm not super confident the C# compiler can optimise this out, but it should be easy to check that too. Anyway, an interesting look into the internals.
https://mstdn.io/@ratking/112218125483781231
DONE
- I'm participating in the Dungeon Crawler Jam 2024, even though I dislike the restrictive rules. Of course I want to finally do the stealth gridder idea I had, but even with the limitations I'm imposing on myself I can't finish, mostly because of motivation and family reasons. Still, I did a small level in bloed, with a heavily TRON inspired style, and the enemies are mostly working too. I can see myself actually trying to finish at least a working MVP for this.
https://mstdn.io/@ratking/112183697750209982
PLAN
- I think I'm going to rename connected, the name isn't searchable at all.
SEEN
- Nice, in Godot you can find out via
Node.scene_file_path
if a node is actually instantiated from a scene - if it's not empty, it's instantiated. This is something I miss sometimes with Unity's prefabs.
DONE
DONE
- I updated Connected to v0.9.4. If the bugs that I fixed really are fixed now, then it's pretty much “ideal” now, missing only things like editor localisation and other nice-to-haves. It's good we use it for Mops & Mobs, otherwise it would have been a total waste of time. (Because nobody else is using it.) In any case I want to upload my Godot glue code in a few days.
https://ratking.itch.io/connected/devlog/686829/connected-v094
SEEN
- A video about some kind of texture projection painting in Blender. I remember SophieH's tool pixexix doing the same, it's nice that it's possible to just have this in Blender now.
https://www.youtube.com/watch?v=oW7zKbylReI
- After evaluating the Godot first-person controller some more I have to conclude that it's nice for some simple stuff, but the fact that it can't even step over simple stairs is a big downer. Apparently this is an ongoing issue in Godot.
https://github.com/godotengine/godot-proposals/issues/2751
SEEN
- I watched and followed the first part of a tutorial series for a first-person controller in Godot. The code is somewhat bad, but at least it gives me an idea of how to approach this in Godot, even though it all feels very incomplete. For example using a raycast to check if you can stand up after crouching probably doesn't work well with slopes.
https://www.youtube.com/watch?v=xIKErMgJ1Yk
DONE
- Another update for Mops & Mobs - mostly adding a dialog history. With the dynamic nature of the dialogs this isn't as straightforward as I wish it would be, and could lead to an enormous amount of (redundant) backlog, even if we only save the localisation IDs and not the actual texts. On the other hand, memory is cheap and if people want it, I won't deny it to them.
https://ratking.itch.io/mops-and-mobs/devlog/679819/v009
DONE
- We made the itch.io page for Mops & Mobs public, to find people giving feedback. We think it's a nice idea for a game, but maybe the majority hates it - better finding it out now than later.
https://mstdn.io/@ratking/111880031215066901
SEEN
DONE
- We're pretty much finished with the first playable prototype version of Dungeon Novel - in the sense that there is a beginning and an ending and also some things to do in the middle. It also got a final name, Mops & Mobs - A Sweeping Dungeon Novel. The “sweeping” part is not yet much part of the game, so that would be one of the next goals. Unfortunately we first have to wait for funding; if we won't get it, then we will have to work on the game on the side and do contract work or other things instead. In any case it would be nice to continue with Mops & Mobs, like adding combat and of course the rest of the game's story. Also the quests are very boring and typical right now, more exciting quest lines would be great.
https://mstdn.io/@ratking/111852031209405333
DONE
- As there wasn't a post-effect on the Godot shaders website that does what we want for the dungeon visual novel game, I now ported smoke_fumus' DarkBringer shader, at least the parts that are relevant to me.
https://mstdn.io/@ratking/111798431678956885
SEEN
DONE
- For our still not named dungeon visual novel project I “rewrote” a shader that would do some dithering via a
SubViewport
so that it could be used on a quad-based fullscreen effect. Pretty trivial. The thing is that it made me want to change the shader so it wouldn't just be luminance-based, but use a full palette; I have no idea how to go about this yet. I might have a look at smoke_fumus' shader that I bought for Unity once, it's still pretty much the best I know.
- For the dungeon project I also implemented a first version of the decorator mode. It's very basic and not yet working correctly in all cases. For example, torches are placed upside-down sometimes. Here I should have a look at my old torch placement code that I wrote for Behind Stars and Under Hills.
- As a small side note, I replaced the
.json
files I used for creating various configuration definitions (for dialogs, NPCs, quests) with Godot resource files. While the overview is a bit worse - instead of having everything in one file information is now distributed over several .tres
files - I guess it removes uncertainties and is less error-prone. In the end it's just like using ScriptableObject
s in Unity.
SEEN
DONE
- I finally understood the Multiplayer nodes in Godot -
MultiplayerSpawner
and MultiplayerSynchronizer
. I had some problems because I think the documentation isn't the best in regard to these. One of the issues happened when I tried to give an instantiated node the authority of the client; the simplest sample code uses the node's name for that, which was handled by MultiplayerSpawner
, but I find that's a hack and can break. So I tried to set the authority ID by using a property in MultiplayerSynchronizer
, and that didn't quite work, as the MultiplayerSynchronizer
only works when the object already has the authority. Anyway, I'm applying the authority via an RPC now, and while I'm not too happy with that, at least it works. In any case I will always feel like a noob when it comes to networking, even though I did some multiplayer prototypes. This was over a decade ago, so there's that.
SEEN
- Today I learned that Unity's
SphereCast
isn't that simple to reproduce in Godot, one has to use both PhysicsDirectSpaceState3D.cast_motion()
and .get_rest_info()
to get similar information. I find that this should be more documented. I also had problems first understanding what .cast_motion()
actually returns - it's interesting from a physics engine perspective, but quite confusing if you just want to use the function. Both values of the returned array contain the percentage of the motion when it collides, but the first is without the collision actually happening and the second with the collision, so only a tiny bit higher.
https://github.com/godotengine/godot/issues/2217#issuecomment-117429233
DONE
- Adding
?System.Date.Now.Ticks
to the url for the JSON file (that has the version info and the available .BAS files) helped with my problem of Firefox not downloading the latest version but some (internally?) cached one. Thanks to voxel for the suggestion. I don't think Games for Rats will get another update, but it was nice to get back to it - it also made me dream of a Terrobot X game again; I still find the idea extremely intriguing.