SDA logo

Extended SDA Rules

(Taken from the SDA forum)

Scripts
Scripts have been a total pain in the arse issue for us for some years now and I honestly don't think we'll ever find a totally satisfactory middle ground. But here goes...

A short history lesson
Back in January 2002 legendary speedrunning legend Ilkka "I'm a legend" Kurkela sent us a demo that used a script to ensure that the first couple of seconds of a demo always went smoothly. He also said "but don't post this as a record because I don't want to be associated with this kind of shit. Just watch this out of interest".

A week or so later he contacted us again saying that he'd spotted something in a demo and he thought it looked funny, could we check it out. It did indeed look very much like the runner had scripted a trick in one of his demos. We (Myself, Nolan, Stubby, Ilkka, Stefan and a couple of others who escape my memory for the moment, and of course the person that produced the demo) discussed this at great length. The demo did indeed contain a scripted trick, the runner said he was only doing it as an experiment to see what could be done, the trick wasn't that impressive anyway and there is no doubt that the person in question could have done it without a script.

So where did that leave us? Well, we knew that this was not a widespread problem. A couple of us spent hours watching dozens of demos in slow motion trying to find scripted tricks. We found three: e1m1 barrel, e1m1 water exit and the one mentioned above. Experimentation showed that scripting long sections was pointless due to fluctuating framerates but short sections could be automated. But they look quite obvious when slowed down. So not wishing to open up the whole can of worms and the possibiliteis of

  1. accusations of "cheating" and
  2. putting ideas into peoples heads
we decided to ask those that had used them to not use them in future and then just kept quiet about the whole thing. Besides, since 99% of runners see the whole thing as just a bit of good natured fun and wouldn't want to use scripts or other "cheats" anyway we didn't see any need to stir things up.

All was quiet until July 2003 when people suddenly started asking about scripts and what was considered to be fair use of scripts. This prompted the SDA news update of July 25th 2003 which stated...

If you DO feel you need to use a script, for example for aiming during intermission kills or to face a certain way at the start of a demo, then please credit the fact that you used a script and include the script itself in your .txt file. That way everyone can clearly see what you've done.
...and we left it at that (see the old news for the full news post). Things went quiet then and people went on making cool demos and not using scripts right up until a few weeks ago when Joe sent in his e4m2_027. He clearly stated that he'd used a script and he published the script in his .txt just as we asked. But was this a script to far???

What is a script and are they cheating?
Simply speaking a script is a set of commands joined together. This is illustrated by the following examples (all of which I have written here from memory so I apologise if they don't actually work properly. The word "cheating" is used here to donate "an unfair use of scripts that goes against the spirit of SDA"

alias nailz "impulse 4;wait;impulse 5"
Select the NG then select the SNG. Thus it will select your best nailgun. Is this cheating? I think most people would agree that it isn't.

alias cooprec "stop;wait;disconnect;wait;wait;
               record coopdemo;connect 69.69.69.69"
Stops the current demo, starts a new one and reconnects to a coop server. Is this cheating? Obviously not!

bind "SPACE" "impulse 2;+attack;wait;-attack;impulse 3"
Fire the shotgun once and switch to SSG. Lifted directly from my config.cfg. Is this cheating? In my opinion it's too simple to be cheating, others may disagree.

alias rjump "cl_pitchspeed 9999;+lookdown;wait;
             impulse 7;+jump;+attack;wait;-attack;
             -jump;-lookdown;centerview;cl_pitchspeed 150"
This will probably perform a rocket jump. Is this cheating? Hmmm. It's quite complex but limited in use unless you want to do a simple "straight up" RJ (which isn't difficult to do anyway!). A classic example of "scripting a trick". Is it cheating? Some might say so, but this kind of RJ script has been used since Quake first came out. Besides, if you want to get any kind horizontal speed boost out of the rocket you're going to have to learn to adjust the angle of the RJ and thus learn to RJ manually anyway.

alias +r "+moveright;wait;+right" 
alias -r "-moveright;wait;-right" 
alias +l "+moveleft;wait;+left" 
alias -l "-moveleft;wait;-left" 
alias r  "+r;wait;wait;wait;wait;wait;-r" 
alias l  "+l;wait;wait;wait;wait;wait;-l" 
bind  s  "cl_yawspeed 250;r;cl_yawspeed 380;
          l;r;l;r;l;r;cl_yawspeed 250;l"
Finally, here's the script Joe used to perform the exit trick on e4m2. It is generally accepted that this move is impossible for a human player to do and this script is more complex than any of the other examples. Is this cheating? Some people obviously think so. Joe was totally honest about how he did it so no deception was intended but is this just too much automated help? In my view this is right on the limit. Others on the team think it's gone over the limit.

Our official stance
Nolan pretty much sums it up; "Remember this is all for fun & show anyway, don't piss people off by trying to be something you're not." People have a pretty good idea of what's fair and what's not. From now on, if you are going to use a script that you think might even be a little bit contentious mail us and ask if we'll accept it. Chances are if it's in any way complex of "not in the spirit" we'll say "Sorry, no. That's too much." In any case, if you do use one then plainly stating that you used it and putting it in the .txt is still required.

This will not make the slightest bit of difference to most of you since you wouldn't want to use a script anyway, but hopefully this will set some boundaries for anyone that is thinking of using one.