Furcadia/DragonSpeak/Beginner's Guide
From FurcadiaWiki
Furcadia's DragonSpeak in essense a simple annotated programming language. Through it people are capable of adding interactivity to their dreams from something as simple as a doorbell to things as complex as fully functional games with randomly generated playing fields.
These pages and tutorials will hopefully serve as a guide to those who are just starting out using DragonSpeak or those who wish to learn more about DragonSpeak's capabilities.
Note: All instructions are provided with the assumption that your DragonSpeak editor is set to the highest available user skill level (5 is the highest at the moment). If you have never used the DS editor before this may seem a bit intimidating but it's far better to just jump right in and get comfortable with the harder stuff right from the get go.
Contents |
Causes
Causes are the first line in a part of dragonspeak coding. They explain what the first conditions are for the effects to start. This can be many things, varying from a furre picking up a certain object, or a timer reaching it's countdown.
Additional Conditions
Areas
Filters
Effects
DragonSpeak Malpractice
There are several things furres can do with DragonSpeak that seem harmless, but can cause issues with the dream later on that are hard to grasp. Avoiding this can save you a lot of time figuring out why is part of your DS not working as it should.
Unprefixed comments with numbers
Making DragonSpeak comments without the appropriate prefix is a disaster awaiting to happen. An example to this is here:
Teleport to Room 1 (0:7) When somebody moves into position (12,37), (5:14) move the triggering furre to (40,20) if there's nobody already there.
By itself, that comment looks normal - it doesn't look like a DS line, but the number 1 there will be processed as a part of DS! In certain cases, this can produce unexpected results and is hard to debug without knowing this fact. Comments like "Teleport to Room 1" above have to be prefixed with the * or // characters like this:
* Teleport to Room 1 (0:7) When somebody moves into position (12,37), (5:14) move the triggering furre to (40,20) if there's nobody already there.
This way, the entire line that goes after the asterisk (*) is considered a comment and will not be looked at.
Unfilled DS lines
Making unfinished DragonSpeak code for "later use" is considerate, but if you don't fill in all the parameters or comment the unfinished lines out, they will be processed as part of DragonSpeak and because they miss parameters, the results can be unexpectable!
*** Bad idea: * I'll deal with this when more room as are available (0:7) When somebody moves into position (#,#), (5:14) move the triggering furre to (#,#) if there's nobody already there. *** Good idea: * I'll deal with this when more room as are available *(0:7) When somebody moves into position (#,#), * (5:14) move the triggering furre to (#,#) if there's nobody already there.
Variables without the % prefix
When starting to deal with variables, it is important to know that each variable, to be considered as such, has to have the % prefix! Without it, your variable name will be a piece of text which has no meaning and will be ignored.
* This here is a variable.
(0:31) When a furre says {@lock},
(5:300) set variable %lockdown to the value 1.
* And the one here, isn't!
(0:31) When a furre says {@unlock},
(5:300) set variable lockdown to the value 0.
Removing DS header/footer
Each DragonSpeak file starts with a special line and ends with a special line. By themselves, these lines seem useless to you and can sometimes look annoying to the eye. They have to stay where they are, however, or the DragonSpeak within will not work or be recognized! Removing these lines is certainly a bad idea.
DSPK V04.00 Furcadia *** DragonSpeak Goes Here *** *Endtriggers* 8888 *Endtriggers*
Changing line numbers without changing the parameters too
When you want to change a certain DragonSpeak line to a different line of some sort, it is best to delete the old line completely and insert the new one. Different lines may require different amount of parameters after them and if a parameter is missing or there are too many of them, bad things can happen.
* My animation script <3 (0:100) When 2 seconds have passed, offset by 0, (5:400) cycle the three object types in this sequence one step forward: 1, 2, 3. * If I change the 5:400 above to 5:401 below, we'll be missing a number! * Not to mention it's incorrect since 5:401 cycles FOUR objects and not three... (5:401) cycle the three object types in this sequence one step forward: 1, 2, 3, #.

