It's decent advice I suppose. I personally think learning ACS is only really necessary if you need to do map scripting (which I don't because I rarely make maps anymore). The main downside with ACS as a starter language is that it has a lot of really primitive things (fixed point numbers and treating strings as ints, for example) that don't apply to more flexible languages. That said, it's also simple enough to get the basics down quickly (a script is basically a list of linedef-type actions in most cases), so you don't need to spend much time on it.
Between DECORATE and ZScript, DECORATE is indeed the simpler one and
can be a good starting point. The problem is that 99.9% of the tutorials for it were written a
long time ago, so the moment you get into anything more complex than a stock Doom actor, lots of nasty workarounds start appearing (inventory items as counter tokens, flash state abuse instead of overlays, passing data to ACS libraries for processing, etc). Be aware of this, but don't let it stop you I suppose. It mostly useful for learning how states and action functions work. My advice would be to just translate the DECORATE tutorials into ZScript as you go:
Converting_DECORATE_code_to_ZScriptIdeally, if you have some background in a "bracketed" programming language (C, C++, C#, D, Java, etc), that helps a lot with grasping basic syntax of ZScript. Here's a couple good resources that haven't quite made their way into prominence on the Wiki yet:
ZScript Basics for Non-ProgrammersZScript APIThe best way to get started (in my opinion) is to copy the code for a simple actor like the
DoomImp from gzdoom.pk3, rename the class to something like MyCustomDoomImp, and start modifying it. Make it fire three fireballs instead of one, for example. The only thing you can't use in a PWAD is the
extend class Actor
bit (because
Actor
is part of gzdoom.pk3), but you can change that to
extend class MyCustomDoomImp
instead.
