This week, we've reached an important internal milestone of completely deprecating our old SQF scripting language (it's been with us, in some form, ever since the first Arma got released). From now on, our internal branch of DayZ only runs modules written in the Enforce Script.
Since I wanted to cover that internal milestone and explain its implications, I`m going to be more outspoken than usual, but before I get slightly more in-depth, the most important part for majority of our fans is this:
From now on, internally, most of us in the DayZ team no longer need to work with a game that uses legacy modules of DayZ and functionality scripted in SQF. The legacy modules and scripts were often incompatible with the new ones written in Enforce Script, which were clashing together as we have prepared to phase them out. We don't need to worry about these anymore, and can actually start connecting all the new engine modules,technical modules and data together, and focus only on these. In a sense, that means that internally, we no longer maintain two different versions of DayZ content and gameplay.
Before you get excited, this does in no way mean that we are very close to a public BETA build release: there is still a lot of work ahead of us, but this milestone is a major relief for the team.
Why? This is where I want to get more in-detail:
If we define gameplay as action that player can take in the game, there are two ways in general to make that gameplay "work":
having things "hard-coded" (in C++ in the case of DayZ)
using a scripting language (Enforce Script for DayZ, previously SQF in DayZ and other Bohemia games from the Arma branch)
Most games use both scripting and hard-coded functionality. In a world where community modding matters (= our world!), you try and keep as many things as possible written in script - you want to have the ability to easily edit them later on. Scripting also makes iteration faster and helps our own designers create things on their own, while not spending additional programming time that is needed elsewhere.
In our particular example, there are direct advantages in moving away from legacy SQF to the new interpretation of our gameplay using the Enforce Script. In direct comparison, we can say Enforce Script is much faster and more flexible. It is also object oriented and will be the backbone for all of DayZ modding. Even for modders themselves we want to introduce a script editor with IDE and debug functionality.
Maybe you're wondering now: does all the work we did on the public branches of DayZ get scrapped all of a sudden? The answer is: some of it does (script), and some of it doesn't (data). We don't need to quickly write some rushed version of everything in DayZ using the new script now though: we've been working with both legacy script and the new script at the same time, and what exists in the public branches of DayZ now already exists written in the Enforce Script, too - all of it. As there is no direct "backwards compatibility" between the two scripts, we had to re-write the gameplay to the new script entirely, dragging all these pipelines in parallel.
At the same time, content like models, textures and other binary files remains functional - we've said many times that we were trying to balance our development in a way that avoids, as often as possible, doing things twice - in order to save time and effort. And that's what we've managed to do - while expanding on their quality and additional features.
We tried to test things which made sense to be tested on the public branches - things that provided you with a reasonable gameplay experience, and things that provided us with necessary data. But from this point going forward, internally, we only run version 0.63 which is BETA for us. As in a version that will have all the new engine modules and technical modules implemented, along with all the data that was created to support these modules.
So again: Removing SQF means that our internal client runs only the gameplay functionality that is either hardcoded, or written in the new Enforce Script. No legacy systems. And no legacy engine modules in the end. That is the game that most of us have worked for so hard for the better part of those last three years. We are excited and wanted to share this important milestone with you.