2/3 - Progress and Planning

This week hasn't been very flashy I'm afraid, but has been a productive one nonetheless! The most significant of these, though is the addition of a robust cutscene system!





I know, right? It's just like that thing every other game has only it's the first time I've ever attempted anything like it! And frankly, I don't know why I haven't before. Now I've finally tried it it seems so obvious that I am really frankly disappointed I never attempted to create anything similar in the past and see it through to completion. If your interest is primarily limited to progress and high level stuff, then the rest of this probably won't interest you, as it is going to be a technical breakdown of the design of this system. For those of you planning to leave now: thanks for reading and your continued interest in The Elementalist! Consider following me here for notifications of new updates and I look forward to seeing you again! And for the rest: read on...

Now, I'm not exactly a fabulously amazing programmer or an ingenious systems designer, but I am proud of the modular possibilities and quite slim design of this system nonetheless. GameMaker Studio 2 uses GameMaker Language, a solution designed specifically for the engine, and due to it being a game engine in 2018 it relies heavily on objects and instances thereof. This allows me to effectively use just two objects for the entire cutscene system: oCutscene which is effectively like the director, telling instances of oActor where to go and what to do. Actors are given an idle sprite and a walking sprite, and the cutscene object currently comes equipped with the ability to talk, move, create, and destroy, which allows me to create what you see above. These actions are performed according to a 2D array which can be set up on a per cutscene basis (heck, you could even have two cutscenes running simultaneously if you wanted actions to occur in parallel). The fun stuff is that modular ability I mentioned earlier:

So actions are built as [order, actor, parameter], so, for example, I could have [0, actorPlayer, "Hi!"] to get the actor instance named actorPlayer to say "Hi!" as long as this order was mapped to 0. The aforementioned four actions are not the limits of this system because I could map any number of values to perform any number of actions, so, for example, I could add action 4 to be jump, with the parameter being the height of the jump. Currently these are the only actions I need, but as the game develops I might need more and more, and so this system is absolutely perfect.

I'm so pleased with it mostly because of the storytelling opportunities it will open up to me. You may not be familiar with my previous works, but story in them looked like this:





I am very excited to really have the opportunity to flex some storytelling muscle when it comes to this game, and I hope you like what I come up with!

As before, please do follow me for further updates and be sure to check back here later for more devlogs and to buy the final game at launch! I am currently debating working on a standalone release for this cutscene system, so if you're interested, please let me know! Thanks for reading!