DoomScript is a (non-existant) powerful Doom scripting language that Randy Heit announced on the 20th July, 1999. It was supposedly going to be the answer to ACS's unflexibility, and was planned for ZDoom 1.19. However it never made it into that release or into any future releases, and ACS continued to expand. As time passed DoomScript got delay after delay and eventually people began to realize that it was never going to happen, yet it gets remembered from time to time and brought up occasionally on the forums.
Although DoomScript may never see the light of day, people refer to "DoomScript" when discussing an advanced scripting language. When feature requests are turned down because DECORATE or ACS is currently incapable of doing what the requester requires, it gets the tag "WFDS" which essentially stands for "Wait For DoomScript".
In August 2002 the DECORATE lump was first introduced. It has since undergone a long process of gradual enhancement, starting with the introduction of the new format in February 2006 and culminating in August 2008 with the successful removal of all actor definitions from the executable. As a result, one aim of DoomScript, the class-oriented method of defining new actors, is now a feature of DECORATE.
On the 25th of May 2007 Randy made a public announcement that he was considering to bring his idea of a better scripting language back. Instead of using the UnrealScript method he had planned almost eight years earlier, he brought the forum's attention to the scripting language he was thinking of using, which was Lua. The community had mixed opinions on the language, but eventually after a long discussion it was decided that Lua wasn't the best choice for the future DoomScript, and the wait for DoomScript continues.
In April 2009, Randy started putting his work on a virtual machine on the SVN (), proving that there is work being done on DoomScript. In September the same year, a "Scripting" branch, independent from the virtual machine prototype, appeared as well ( ).
First public testing
On the 26th of October 2012, the scripting branch reached a point where it was opened to general test. The aim was to check whether the many changes to the underlying architecture broke existing games and mods.
On January 7, 2015, Randy implemented the ability to execute multiple action functions in one frame with the use of braces (). This was then expanded upon to include if-else statements which can execute anything except for jumping functions, which must be done outside of the statements. ( ).
The following is a quote from Randy's post from 1999:
|“|| So what is DoomScript?
I'm hesitant to go into much detail at this point, but I will say that it is not DDF. DDF and DoomScript serve similar purposes, but they go about very different ways of accomplishing them. DDF is in many ways just a different way of representing the same data (and then some) that could be manipulated with DeHackEd. DoomScript is a full-fledged object-oriented scripting language and represents a radically different approach to Doom editing. (That said, I hope I didn't scare anybody away who was interested in it. If you can figure out ACS or DDF, you shouldn't have much trouble with DoomScript. And if you know UnrealScript, you should feel right at home.)
DoomScript represents different game elements as "objects." New objects can be created by "extending" existing ones. Suppose you want to add a new monster, and there is already a monster that is similar to what you want. Instead of creating an entirely new monster from scratch, you can take the existing monster and extend it so that it behaves the way you want it to. I'll have some concrete examples of this once DoomScript is actually ready.
At one point, I was considering integrating the DoomScript compiler with ZDoom itself. Instead, I have decided to keep it a separate program like the QuakeC compiler, qcc. There are several advantages to this approach:
The only advantage I can see to putting the compiler into ZDoom directly is that mod authors wouldn't need to manually recompile any changes they make, and even that can be got around by using a batch file to launch the game.
A DDF->DoomScript converter will be available so that people can both see how something done in DDF relates to something done in DoomScript, and also so that DDF mods will work with ZDoom. A DeHackEd->DoomScript converter might also be made, although doing anything with DeHackEd outside the original doom.exe is very problematic, and it might not be realistically possible to convert it to DoomScript with an automatic tool.
Initially, ZDoom will come with DoomScript code that implements the Doom game. Later, I plan to also have Heretic and Hexen implemented. Maybe I will also convert SailorScout's Check[sic] Quest patch to DoomScript.