User Guide
Quick Reference
Modding
Development
User Guide
Quick Reference
Modding
Development
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 Doomsday9;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:
end
.:
) always indicates a single-line compound that does not need to be closed: def func2(): return 9;World9;
de::Record
instances:record myrec
myrec.newMember = 100
array = [1, 2, 3, 4] array[1] = 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.