Doom scripting language history
Moderator: GZDoom Developers
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Doom scripting language history
Hello
I'd like to ask about the history of Doom scripting languages, which one was the first ACS, DECORATE or ZScript?
Also what are the key differences between them?
I'd like to ask about the history of Doom scripting languages, which one was the first ACS, DECORATE or ZScript?
Also what are the key differences between them?
Re: Doom scripting language history
ACS was technically the first. It was introduced with Hexen in 1995, and was used to script levels. However, i don't know whether zdoom got decorate or ACS support first. ZScript is the newest, being released relatively recently.
DECORATE is ideal for creating new actors. It lets you declare the properties of a new actor, what frames it has, and what it does on each frame. It's something like a (greatly) enhanced DEHackEd.
ACS is used to make level scripts. However, it can also be used to enhance actors. You can run code that DECORATE cannot, and make much more complex projects. It is still used to directly interact with maps.
ZScript offers you the most control. You can create new functions for DECORATE-like actors to run, and you also get access to "event handlers" that let you run some code when certain events happen. It's something like a streamlined mix of ACS and DECORATE in terms of usage, but as far as I know there isn't any way to have maps trigger zscript functions without gross hacks.
i probably got something horribly wrong
DECORATE is ideal for creating new actors. It lets you declare the properties of a new actor, what frames it has, and what it does on each frame. It's something like a (greatly) enhanced DEHackEd.
ACS is used to make level scripts. However, it can also be used to enhance actors. You can run code that DECORATE cannot, and make much more complex projects. It is still used to directly interact with maps.
ZScript offers you the most control. You can create new functions for DECORATE-like actors to run, and you also get access to "event handlers" that let you run some code when certain events happen. It's something like a streamlined mix of ACS and DECORATE in terms of usage, but as far as I know there isn't any way to have maps trigger zscript functions without gross hacks.
i probably got something horribly wrong
- phantombeta
- Posts: 2177
- Joined: Thu May 02, 2013 1:27 am
- Operating System Version (Optional): Windows 10
- Graphics Processor: nVidia with Vulkan support
- Location: Brazil
Re: Doom scripting language history
[wiki=ScriptCall]ScriptCall[/wiki] exists. It was made exactly for this.Tartlman wrote:but as far as I know there isn't any way to have maps trigger zscript functions without gross hacks.
Re: Doom scripting language history
Also I might be wrong, but didn't DECORATE originate as a way to make new decorations without overriding existing ones?
So instead of editing existing ones in DeHackEd, the map maker could make a custom one in DECORATE, hence the name, for decorations.
And later it was expanded for more features to the state it is today, right?
Or am I wrong?
So instead of editing existing ones in DeHackEd, the map maker could make a custom one in DECORATE, hence the name, for decorations.
And later it was expanded for more features to the state it is today, right?
Or am I wrong?
Re: Doom scripting language history
I meant entirely without use of ACS.phantombeta wrote:[wiki=ScriptCall]ScriptCall[/wiki] exists. It was made exactly for this.Tartlman wrote:but as far as I know there isn't any way to have maps trigger zscript functions without gross hacks.
Re: Doom scripting language history
October 1995: Hexen is released, and along it comes [wiki]ACS[/wiki].
December 1997: Doom source code is released to the public, allowing the first source ports to be created.
December 1998: ZDoom 1.16 includes ACS support for Doom. This implementation is reverse-engineered, not based on the Hexen code which was not available yet.
January 1999: Hexen source code is released to the public, allowing to see how ACS is implemented, however the licensing is not adequate and, taken literally, forbids doing anything with it.
October 1999: Doom source code is relicensed under the GPLv2.
[wiki]FraggleScript[/wiki] appears in a release of [wiki]SMMU[/wiki].
August 2002: the [wiki=Creating simple decorations]very first version of DECORATE[/wiki] is introduced in ZDoom.
February 2004: the modern DECORATE format is introduced, allowing to create custom monsters.
August 2005: [wiki]ZDoom Community Build[/wiki] is released, featuring lots of DECORATE enhancements, the first release of GZDoom follows soon after.
September 2005: GZDoom gets FraggleScript support so as to be able to load mods made for Doom Legacy.
June 2006: DECORATE can now define weapons.
February 2008: custom state labels in DECORATE.
March 2009: all actors are now defined in DECORATE, the language has become fully mature.
July 2012: ZDoom gains FraggleScript support, from GZDoom.
December 2016: ZDoom development ceases, after completing a VM rework.
January 2017: ZScript is introduced officially in GZDoom.
It's important to note that that ZDoom's ACS is quite different from Hexen's ACS and received a number of updates and enhancements, including changing the compiled format twice ([wiki=BEHAVIOR]ACSE, then ACSe[/wiki]) but it's harder to tell when these changes happened.
It's important to note that these languages are not necessarily equivalent. ACS (and FraggleScript) are there mostly for level alteration, in other words to create scripted events in maps. It's possible to use them for other things, but that's not their core use. DECORATE and ZScript are mostly for content definition, in other words creating new actors, weapons, player classes, etc. It's also possible to use them for level alterations, but that's not their core use.
December 1997: Doom source code is released to the public, allowing the first source ports to be created.
December 1998: ZDoom 1.16 includes ACS support for Doom. This implementation is reverse-engineered, not based on the Hexen code which was not available yet.
January 1999: Hexen source code is released to the public, allowing to see how ACS is implemented, however the licensing is not adequate and, taken literally, forbids doing anything with it.
October 1999: Doom source code is relicensed under the GPLv2.
[wiki]FraggleScript[/wiki] appears in a release of [wiki]SMMU[/wiki].
August 2002: the [wiki=Creating simple decorations]very first version of DECORATE[/wiki] is introduced in ZDoom.
February 2004: the modern DECORATE format is introduced, allowing to create custom monsters.
August 2005: [wiki]ZDoom Community Build[/wiki] is released, featuring lots of DECORATE enhancements, the first release of GZDoom follows soon after.
September 2005: GZDoom gets FraggleScript support so as to be able to load mods made for Doom Legacy.
June 2006: DECORATE can now define weapons.
February 2008: custom state labels in DECORATE.
March 2009: all actors are now defined in DECORATE, the language has become fully mature.
July 2012: ZDoom gains FraggleScript support, from GZDoom.
December 2016: ZDoom development ceases, after completing a VM rework.
January 2017: ZScript is introduced officially in GZDoom.
It's important to note that that ZDoom's ACS is quite different from Hexen's ACS and received a number of updates and enhancements, including changing the compiled format twice ([wiki=BEHAVIOR]ACSE, then ACSe[/wiki]) but it's harder to tell when these changes happened.
It's important to note that these languages are not necessarily equivalent. ACS (and FraggleScript) are there mostly for level alteration, in other words to create scripted events in maps. It's possible to use them for other things, but that's not their core use. DECORATE and ZScript are mostly for content definition, in other words creating new actors, weapons, player classes, etc. It's also possible to use them for level alterations, but that's not their core use.
Re: Doom scripting language history
And I can use ACS with ZDoom, right? Or is it only compatible with GZDoom?
- wildweasel
- Posts: 21706
- Joined: Tue Jul 15, 2003 7:33 pm
- Preferred Pronouns: He/Him
- Operating System Version (Optional): A lot of them
- Graphics Processor: Not Listed
- Contact:
Re: Doom scripting language history
ACS has been in all ZDoom and ZDoom-derived ports since 1.16, there's no reason for it to have been removed from any of them in the time since then.xzotikk wrote:And I can use ACS with ZDoom, right? Or is it only compatible with GZDoom?
Re: Doom scripting language history
Oh, and I'd like to know one more thing. Do I need to 'download' ACS if I want to use it in my maps? (Just like when you have to download Python to use it)
Or do I just need Doom Builder 2 and a ZDoom family port?
As you can probably tell, I'm completely new to all of this.
Or do I just need Doom Builder 2 and a ZDoom family port?
As you can probably tell, I'm completely new to all of this.
Re: Doom scripting language history
ACS needs a compiler, [wiki]ACC[/wiki], though it's bundled with Doom Builder so you shouldn't have to worry about it. Don't get DB2, though, get this instead, it's an updated version.
Re: Doom scripting language history
Alright
I'm aware that DB2 is not as good as GZDB, but if I'd want to use regular Doom Builder 2 I don't have to install any compilers. Did I say it right?
I'm aware that DB2 is not as good as GZDB, but if I'd want to use regular Doom Builder 2 I don't have to install any compilers. Did I say it right?
Re: Doom scripting language history
You also don't need to install ACC if you use GZDB, and the compiler bundled with the old DB2 would work but is quite a bit outdated, so you may need to update it to use some ACS functions.
Re: Doom scripting language history
@ xzotikk: Both DB2 and GZDB have the compilers included.
You may as well just use GZDB - you can still code in ACS with it and it will use its own compiler, instead of an outdated one as included in DB2.
You do not need to install additional compilers with either - as stated, they're already included in the package.
You may as well just use GZDB - you can still code in ACS with it and it will use its own compiler, instead of an outdated one as included in DB2.
You do not need to install additional compilers with either - as stated, they're already included in the package.