Original:
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.
Diese Woche wurde ein extrem großer Meilenstein mit dem Austausch aller alten SQF Skripts erreicht. Diese waren seit den alten Arma 2 Zeiten im Spiel. Nun beruht unsere interne Version endlich nur noch auf der Basis des neuen Enforce Skripts.
Ich möchte hier etwas genauer erklären, was das eigentlich genau bedeutet.
Endlich können fast alle Mitglieder des Entwicklerteams mit den Enforce Skripts als Grundlage arbeiten. Viele älteren Module waren nämlich mit der Enforce Sprache nicht kompatibel und so wurden einige Ressorcen für diesen Part aufgewendet. Dies ist jetzt nicht mehr nötig. Es können jetzt alle neuen Engine Module, technischen Module und Daten miteinander verknüpft werden. Kurz: Es wird nicht mehr parallel an zwei verschiedenen DayZ Versionen mit Content und Gameplay gearbeitet.
Bevor der Hype aber zu groß wird, nein das bedeutet nicht, dass wir ganz kurz vor dem BETA Release sind. Wir haben noch eine Menge zu tun, es ist lediglich für das Entwicklerteam eine riesen Erleichterung!
Und Warum? Ein bisschen detaillierter…
Wenn wir Gameplay als „Aktion“ oder „Handlung“ ansehen, die man im Spiel ausführen kann, lässt sich diese im Allgemeinen in zwei Wege gliedern, wie diese „funktioniert“:
• Dinge werden „hartkodiert“ (in DayZ mit C++)
• Nutzen einer Skriptsprache (Jetzt Enforce Skript, vorher – wie noch in den Arma Titeln – die SQF Skripts)
Die meisten Spiele nutzen beide Funktionalitäten. In der heutigen Zeit, wo Community Modding ein immer größer werdendes Thema wird, versucht man alles in möglichst einfachen Skripts zu schreiben. Diese sollen unkompliziert interpretiert und angepasst werden können. Auch für die eigenen Designer lassen sich Skripts deutlich besser ändern und bearbeiten, als wenn für sie jemand extra Programmierzeit „opfern“ müsste.
In unserem speziellen Beispiel ergeben sich einige direkte Vorteile. Das wichtigste ist, das Enforce Skript ist deutlich schneller und flexibler. Es ist auch objektorientiert und wird das Rückgrat für das Modding bilden. Für die Modder selbst, wollen wir ein Skript-Editor mit IDE und Debug Funktionalität einführen.
Vielleicht stellt sich jetzt der ein oder andere von euch die Frage, ob jetzt alles bisher erreichte und eingeführte an alten System einfach verschrottet wird. Ja ein Teil ja (die Skripts), die Daten, die dazugehören aber nicht. Alles was bisher im Stable Branch enthalten ist, wurde bis heute parallel mit gleicher Funktionalität im internen Branch im Enforce Skript mitentwickelt. Dies ist nicht mehr nötig. Da es keine direkte „Abwärtskompatibilität“ zwischen beiden Skripts gibt, mussten wir das komplette Gameplay neu schreiben und parallel weiterentwickeln.
Gleichzeitig bleiben Inhalte wie Modelle, Texturen und andere Binärdateien funktionsfähig. Wie bereits gesagt, versuchen wir so viel wie möglich so anzugehen, dass es nur einmal gemacht werden muss… also Zeit und Kosten gespart werden.
Auf dem öffentlichen von euch gespielten Branch konnten wir euch viele Dinge ausprobieren lassen. Das ist die optimale Möglichkeit Erfahrungen und Daten zu sammeln, die wir alle in die interne parallele Version einfließen lassen. Diese interne Version mit der neuen Engine läuft bei uns mit der 0.63 – Beta – Version. Sie wird alle neuen Engine Module und technischen Module, sowie die zugehörigen Daten besitzen.
Also wie gesagt, das Entfernen der SQF Skripts bedeutet, dass unser interner Client nur die Gameplay Funktionalität ausführt, die entweder hartcodiert oder in das neue Enforce Skript geschrieben wird. Die alten Systeme wurden aussortiert. Das ist das Spiel, an dem die Mehrheit von uns seit ca. 3 Jahren drauf hingearbeitet hat. Wir sind schon extrem aufgeregt und freuen uns auf den Moment, diesen Meilenstein endlich euch präsentieren zu dürfen!
Eugen
Quelle: forums.dayz.com