Monday, March 19, 2018

Biggest Refactory Ever

For me, at least. I wanted to make the scripts occur as soon as possible in my tutorial series, since the GEDS engine is meant to allow game-making even for those who don't know about C++ programming. But I also want to be able to introduce a behaviour editor, which suggests that the same script-parsing logic should be able to drive either the game engine or the state machine model in the editor.

So this last week, I've been busy splitting the big singleton "GameScript" that had both the parsing logic and the engine intimacy into two classes, the ScriptParser that knows the language rules and the Game* objects well enough to create them but has no knowledge about the Nintendo DS resources or the game engine per se, and the GameScript, that knows about the engine's runtime, last as long as the level does, hold resources and the like.


ça bosse ferme ... restructuration du lecteur de scripts pour pouvoir introduire un éditeur de machines d'état ...

I've finally reached a point where all my automated tests work again. Of course, School Rush isn't running fine in this branch ... yet.

edit: Okay, SchoolRush runs fine again in the emulator. Just some un-initialized arrays. -Weffc++ should have caught that, though.

3 comments:

actionware said...

Pas mal l'idée :) Moi aussi j'ai déjà pensé à faire un éditeur de machine à état graphique mais comme j'ai pas le temps je vais devoir continuer sans malheureusement. Le gain de temps pour un petit projet n'est pas important mais ça peut être réutiliser pour d'autres projets ;)

PypeBros said...

J'avoue qu'ici, l'idée de trouver de nouvelles manière de faire du game-making accessible est à peu près aussi motivante que le fait de faire le jeu lui-même.

Le truc, c'est surtout que les scripts de comportement eux-même deviennent gros et complexes au point qu'on a vite loupé un petit détail qui fait que le personnage reste calé dans un mur, etc.

Si déjà je parviens à avoir un convertisseur vers une page HTML statique, ce serait pas mal.

stackoverflow said...

you might have use for std::bitset in the ScriptParser class ;)