Well here goes the start of finals week…
Here's what I've been working on since the last progress update:
- Updated my Patreon, changing my “project” from the game engine to writing code and stories in general
- RPG Engine:
- Migrated to a CMake project - this is an important, as it makes the build system more portable than with qmake (which requires the Qt library).
- Fixed the SQL script for constructing a basic game database.
- Included a class for specifying which attribute at what level is necessary to properly use a certain armor or weapon, as well as any buffs or debuffs to apply based on whether the player meets the requirement.
- Came up with a basic syntax for a DSL (Domain Specific Language) for scripting the story to replace the horrendous XML dialect I had before (more below).
- Minor enhancements.
- Added commandline flags to add custom blacklist, whitelist, and
redirection entries to the configuration – see the
manual page for directions(Since superseded by the new shadowhosts).
- Added commandline flags to add custom blacklist, whitelist, and redirection entries to the configuration – see the
What's this about a “DSL”?
A DSL (Domain Specific Language) is a “programming language” that is created for a very specific task, as opposed to a generic programming language that can be used for many purposes. I previously had plans for using a dialect of XML to describe the story of the game in the RPG engine, since I thought making my own language would be too much work.
Well it turns out XML doesn't know anything about conditionals. And that's a bad thing for dynamic storytelling.
So… I've decided to figure out how to put together a basic language for scripting the story that works better and looks cleaner than the XML. Here you can view two files representing the XML and DSL versions of the same piece of story. The XML version is 3.8 KB and the DSL is 2.4 KB, for a 37% decrease in size. Over a large story, 37% is significant. Also, the DSL version reads easier.
I still need to learn how to write a good DSL parser, but that will come later. In the meantime, I'll be continuing work on implementing tests for everything else in the engine so far.
Until next time!