The Project Gamma Development Progress Blog

AutoUpdater and engine scripting languages

Mar 02, 2013 by DX-MON
It has been way too long since my last post, and a lot has happened - more than I'd want to put in a single post.

I'm in my final year of Uni, however this has not stopped me from using an hour here and there to take a break from my Uni project and modules to put time into the project.

This post is to cover two major areas:
  • AutoUpdater
  • Game engine scripting

Much work has been put into AutoUpdater to complete the service and improve on it's security.
Safe to say, the version that is shortly to be released is both a complete rewrite of the client and the server.
Client side, rSON was created to parse the server output having identified JSON as a good format to pass update meta-data in, and updating, even of the updater's own executable, is now possible.
Server side, a switch has been made in response format from a custom text protocol wrapped by HTTP to JSON so that integrity of the transmission is better verifiable and assured.

Game engine scripting
For a long time I had been looking for ways to integrate pre-existing interpreters or languages into the engine - the first abortive attempt being made with Python, which although a lovely language for what it's designed to do, was a horrid choice of interpreters to try to integrate with.
Finally, about a year ago, I gave up that search and decided to write my own restricted context Byte-Code Engine. Designed with an extremely simplistic RISC instruction set, and 64-bit registers/stack, this finally allowed the sort of scripting on events I was trying to achieve with the other interpreters and languages I'd trialled and failed with.
But that wasn't good enough - you had to know the instruction set in binary and know how to craft instructions the way people did in the 50's and 60's (yuck!) and an assembler would have been no better really. I wanted a proper language I could write event handlers in that the rest of the team can also use to the same effect. So was born Future Consciousness Script (FCS for short) and it's compiler, fcsc. This C-like language has a mostly working compiler that outputs Byte-Code binaries for the game engine and integrates with the layouts system as a source of events. Much better.
The platform supports read-only use of the game engine VFS, sockets to create network protocols with, a wide array of crypto for password and other hashing and cyphering, and more.
Release of this new language to the team for acceptance testing and tweaking will be done when AutoUpdater is released as the compiler should be finished by then.

Disclaimer: For all those out there now shouting their heads off at me that rolling my own engine language was stupid "because it'll be buggy" - compilers and crypto are my special interests, and the engine itself is designed such that if you hack the game engine with it, you modified the engine yourself outside of an FCS event handler therefore not my bug.

Hopefully this post is not too techy (although imho tech-talk is quite unavoidable when talking about scripting the engine),


No comments yet

Add Comment

This item is closed, it's not possible to add new comments to it or to vote on it