DEVLOG 2023-10-07


This week I decided to change a bit the prototyping plan to start focusing on the game proper in the coming weeks.

Basically, in a bit more than 2 weeks I’ll start to work on the game. This means there will not be prototype 3 (action-turn system) because I think I got it clear in my head already and the way I intend to architect the code means I can switch/tweak that easily (I had that experience from Hard Glitch), thanks to hard isolation of the turn logic. Prototype 4 is also cancelled. It was about exploring a hexagonal base (in a 3D grid) but I think it will make a lot of things weird, in particular in very vertical contexts. I was thinking maybe I’ll experiment with spatial structure, how the 3D grid works exactly, but then it would be like actually coding the game. Also I intend to make this too very isolated so that I can tweak it appropriately, so I’ll work on it directly in the game. I discussed all that at the Livestream (note: it might move from Wednesday to another night, will keep you up to date).

Meanwhile, Godot 4.2-Dev6 was published. This is an alpha/dev version so it wouldn’t have catch my eye if it didnt feature the implementation of the GDExtension hot-reloading feature, which is one of the thing that would remove a major pain point in using Godot as a “view” layer for the game. So this week for the livestream (which was the same day they published that) I decided that we would try to use that version, en experiment with the hot-reloading, and continue the prototyping afterwards.

Turns out, as expected, that I found a crash bug quite immediately, which happened when the extension was unloaded (whatever the reason). I spent a bit of the last half-hour of the stream trying to debug it and quickly got the most important info about what was happening, but I was not sure how to report it quickly. So the day following the stream I simply made a decent fix (as in not perfect but readable given the code restrictions Godot have). After some tweaking to match the Godot style and make sure I didnt break anything, that fix was merged, yay!

The day after the merge, I tried to use the hot-reloading but faced 2 problems:

  1. My extension does not hot-reload.
  2. Once my extension failed to hot-reload, there is some random access-violation happening in the unloading code, close to where I changed the code, but it’s a differnet part of it.

I started debugging it and quickly realized both issues were related. However, I needed more help. So I found the chat system the Godot people use and got in the GDExtension channel, which lead me to some exchange about what might be happening. Also I promised to report an issue as soon as I have some info. I also had to build Godot itself in debug mode (they call it dev mode for some reason) and got some more info on the bug, but not yet enough to fix it. I’m working on it :)

And that’s how I ~~met your mother~~ got my name in Godot XD

Hopefully my fixes will benefit everyone who want to use C++ with Godot through GDExtension, although dont expect me to do this often, I have a game to make too XD

Leave a comment

Log in with itch.io to leave a comment.