DEVLOG 2023-04-15


This week I only had the time to progress while livestreaming but we got some new interesting information through progressing on Prototype 1:

  1. It is actually ok to move coroutine promises objects which means at a minimum Actors which are implemented with coroutines can totally work easilly.

  2. I also attempted to make an Actor completely copyable and just copy only the relevant state data to the new instance, not the coroutine, which means that the new Actor instance then just re-start it’s coroutine function to decide actions. This basically means that I can both copy and move Actor types whatever their implementation is, following value semantics fundations in design of the real game. This is definitely good news. I had a big doubt with C++ having a very special way to do coroutines, but it’s working so good.

  3. I then looked at some state-machine libraries because I really want to have such kind of tool to be able to easilly handle complex states and states transitions. Turns out that none of the libraries we looked at in the stream matched my expectations, except Boost.MSM which is a bit old and cluncky. Maybe my expectations are unusual but that basically tells me I probably need to make my own state machine library matching my ideas. Good thing that I took the time to prototype to see that.

  4. Then I just implemented displaying the grid of the game (proto1). By the way, it’s working all good, with NPCs walking around etc. It’s not very complex but just going throug this small example showed all the issues and nice things that I should be aware of for the real game’s code (at least the C++ side, the “model” side).

I also dropped some of the things planned for Prototype 1 which were just cosmetic and not really needed to be tested, like setting up a title screen vs game screen. Also not having a state maching handy made it annoying to develop so I just decided to drop it. If Prototype 4, experimenting with Godot as the “view” implementation (or Unreal if Godot is not good enough, or a 3D framework), ends up being successul then it’s not even sure I will be setting up the state machine in C++, it will probably be in Godot. Although my xp with implementing a Godot statemachine was… not super convincing, but I hope Godot 4’s GDScript 2.0 will make that easier.

As a reminder the plan was:

  • Prototype 1: check the tech stack for the “model” side of the game
  • Prototype 2: explore working with hexagons instead of squares (and with 3D space in mind)
  • Prototype 3: experiment with action-turn logic which is based on dilated time
  • Prototype 4: try see if it’s difficult to work with Godot as the “view” of the game while keeping the model in C++ (if Godot is too hard to work with, try Unreal or a libraries-based framework).

The hexagon thing is a bit of an annoyance, because I would like to have uniform space and squares makes that weird, but in the same time working with hexagon is also a bit less intuitive than with squares… but would still be interesting in general. So I’m not completely sure if I will explore that, honestly.

All this made me also think that a lot of the project will depend on how the “view” is implemented, so Prototype 4 is quite a big thing. I initially planned it as last prototype because Godot 4 was not yet released and even if it was it will take some time for it to stabilize. But turns out that it is going quite faster than I expected. Also my interest in using Godot increased over the past few months.

Should we switch Prototype 2 and 4? That would lead to:

  • Prototype 1: check the tech stack for the “model” side of the game
  • Prototype 2: try see if it’s difficult to work with Godot as the “view” of the game while keeping the model in C++ (if Godot is too hard to work with, try Unreal or a libraries-based framework).
  • Prototype 3: experiment with action-turn logic which is based on dilated time
  • Prototype 4: explore working with hexagons instead of squares (and with 3D space in mind)

This order is more appealing to me at least. I will sleep on it and decide for next livestream.

Leave a comment

Log in with itch.io to leave a comment.