This article describes the Doomsday Script language and its role in Doomsday 2.
Doomsday Script is a scripting language with features such as a class-based object system, and exceptions. It is designed to harmoniously work together with Doomsday's native code and objects.
Scripting is used for several things internally, for example managing engine configuration and controlling 3D model asset animation. Doomsday Script is not a compiled language and thus is not intended for high-performance or time-critical tasks. Game plugins, for instance, should be written in native code.
Below is an example of the syntax:
def exampleFunc(a) if a return "It is true!" else return "Nay, it is false." end end print exampleFunc(True)
The syntax is heavily influenced by Python and Ruby, with a few notable differences:
:) always indicates a single-line compound that does not need to be closed:
def func2(): return 'World'
record myrec myrec.newMember = 100
array = [1, 2, 3, 4] array = 100 # array is now [1, 100, 3, 4]
:=) will assign into variables in parent scopes if no local variable with the given name is found. Weak assignment (
?=) will only assign a value if a variable has not yet been created.
The following pages walk though the features of Doomsday Script with brief code snippets:
These larger examples may be examined to get a better feel of what Doomsday Script is like in practice. (Spoiler alert: Very much like Python.)
As of 2.3, scripts can be used for the following:
In older versions: 2.2
See the Language reference for information about the syntax, and built-in functions and modules.