Main loop… done. Script engine… online. Asset loading… almost there.

As the title says, I feel that the engine is starting to take shape at an exponential rate. As I get intimately familiar with the engine and it’s inner workings, the cycle of adding functionality becomes shorter and shorter. The experience I have aquired with GDB helps a lot, too.

For now, the big components I feel I have ready are:

  • The main class structure of the engine: I think I have settled on how each thing can communicate with each other. In the end, I think it will result in somewhat of an MVC pattern, in which the World and *Asset (TextAsset, etc) are the model, the MacVentureEngine and ScriptEngine classes are the controller, and the Gui class is the view.
  • The main loop of the engine: The engine uses certain object queues, and those and the logic of the game flow is pretty much implemented. There are particular functions yet to be completed, but I am confident that I can implement them in a fairly short amount of time (I would have done it today, but Microsoft auto-updated my scrap computer to Windows 8.1, which took a big bite off my day).
  • The asset loading: All assets use the same container format, whose decoding is complete and tested. In addition, there are specialized decoders for about half the assets (Text, Scripts, and SaveGames). The remaining ones are Graphics and Sound. I estimate that the former will take me a couple of days, while the latter I will leave for after the midterm.
  • Save game loading: The savegames use the same container format as every other asset, so loading (and saving, though that’s not yet implemented) should be a non-issue.
  • Window system: The GUI can now read data of all the main windows of the engine, as well as update that data, register callbacks and create new inventory windows (these are dynamic).
  • The script engine: The script engine structure is pretty much finished, and most of the opcodes are implemented. There are some left, because either they had to do with yet unimplemented things (graphics, sound, or particular accessor functions) or because they required some non-trivial functionality, which I’m adding right now.

Now, there are still some things to be done:

  • The graphics decoding, while not hard (I practiced with the text decoding) will have to be done, and it will be tedious.
  • The gui event registration, to handle the clicks and object selection on the windows. This will be done after the graphics decoding.
  • The .bmp borders, which I’ll have to finish.

That is most of my progress so far. I feel like, if I have a working game by June 26th (a strong posibility), I will be ahead of schedule by about a week. That’s amazing, and I’ll give it my best so that it happens.

As always, my schedule is available at Trello, and you can follow the progress in the GitHub fork (it’s the macventure branch, mind you). Also, I sometimes stream my programming on Twitch.tv, feel free to come say hi.

That’s all for this week, thanks for reading.