Icon

Furcadia Technical Resources

Back | Furcadia Commands | Home Area | Data Dump | Furcadia
Icon2

Communication Protocol

The communication protocol is a set of rules and ways the server/client use to communicate with each other. On this page I will focus more on the server->client protocol, so if you are interested in the other way, go to the Furcadia Commands page. Otherwise, if you are interested in what does the server send you and what does each line mean, stay here and read further...

Notes:

  • The information presented here is suitable for the protocol version 0013 - other versions may vary!
  • The X coordinate will be half of it's original number (x*2).
  • The spaces in names are being presented as UNIX pipes - the | (SHIFT-\) characer.
  • The data in () brackets represents a base95 string (usually come in 2 bytes - colormap is composed of 10/13 single base95 bytes).
  • The data in {} brackets represents a normal string.
  • The data in [] brackets is optional.
  • The red entries represent new addition/modification since the Squirrel Update!

Server Data

Nope.Invalid connection syntax
Invalid name or password.Invalid login information
Name already taken: Please select another name.Provided name is already taken - creation denied
DragonroarPlays the introduction sound (welcome.wav)
V{version}A 4-byte version of the comm protocol we will be using
ENDEnd of MOTD phase (usually followed by two blank lines)
&&&&&&&&&&&&&Successful login
\{hash}Response hash that is supposed to activate the client
!(sound)Client plays the sound with specific number (two-digit base95 number)
%(object)Shows a specific object at your feet (to the right from the portrait)
]%0{name}The specific name is offline (see onln)
]%1{name}The specific name is online (see onln)
([{data}]Writes the specific data (or an empty line) to the chatbox
)(x)(y)Remove a character from specific coordinates
/(colormap)(dx)(dy)(frame)(sx)(sy)Animates movement from (sx,sy) to (dx,dy) of a specific frame number (Colormap: 10 digits)
0(startvar)(var0.x)(var0.y)[(var1.x)(var1.y)...]!mL(emptyvars)Synchronize the client's variables to the presented data. startvar is a 2-digit base95 number, other arguments are 3-digit ones!
1(x)(y)(floor)[(x#)(y#)(floor#)...]Draws a specific floor tile (or more)
6(x1)(y1)(x2)(y2)(line)(x3)(y3)[(line#)(x#)(y#)...]Execute a self-induced DragonSpeak line (or more). The coordinates depend on the DS!
7(x1)(y1)(x2)(y2)(line)(x3)(y3)[(line#)(x#)(y#)...]Execute a DragonSpeak line (or more), induced by another person.
8(#)(random)(arguments)Comes with every 6/7 instruction. The argument is normally 0, but changes on number-capturing DS, etc. Undocumented
;{mapfile}Load a local map (one in the furcadia folder)
<(colormap)(x)(y)(frame)Draw a specific furre frame with set colors at (x,y)
~Suppress output - stops screen refresh
=Resume output - returns from suppress mode
>(x)(y)(object)[(x#)(y#)(object#)...]Draws an object at (x,y)
@(dx)(dy)[(sx)(sy)]Changes the camera position to (dx,dy) - either by moving it from (sx,sy) or rapidly (requires =)
[[{data}]Display a custom error message and simulate disconnection (you don't really quit yet!)
]!Display warning of adult content
]#{id} {style} {data}Displays a message box (style: one byte) - repq string is sent on confirmation!
]&{id} pp{id}Download a specific portrait (decimal number) from the file server and display it (1 - 15000+)
]-{data}Prefix the future line in the chatbox with specific data. #A(full_colormap) will show a specitag!
]aClient requests gate data (?)
]cc {picfile}Load a PCX image as a background (usually marbled.pcx) and initialize map/portrait/etc.
]f(colormap){name}Display a default portrait with a name above it - using the full colormap here
]j(music)Plays m(music).mid from the specific patch folder (MODs and MP3s are also valid)
]q {name} {id}Request to download a specific patch
]r {name} {id}Uses a specific (probably local) patch for the client's graphics
]s(x)(y)1 {name} {subtext}Renders custom text at (x,y) with an optional subtext, both must use pipes for spaces!
]t(x)(y)Clears any custom text at (x,y)
]uThe server accepts a dream gate request and asks the client to upload data
]va(x)(y)Display dragon breath (client determines the direction - does nothing if there's no dragon there)
]vb(x)(y)Phoenix flame (character-intependent - lasts less if there's no furre at specific coordinates)
]wRequest for client's version
]xRequest the client to download updates and execute the updater when finished
]z{number}Undocumented Instruction - returned once you use the command uid (see ]{)
]}(colormap)The custom portrait to be displayed after initialization (]cc string) - full colormap
]{{number}Undocumented Instruction - returned once you use the command mvrwm
]A {num} {byte}Undocumented Instruction - both arguments are decimal and seem to be somewhat static
]]Undocumented Instruction - doesn't seem to do anything, comes after the rejection ]#xxxx box
]|{1/0}Flip the game screen upside-down (April Fool's 2005)
^(object)Shows a specific object in your paws (to the right from the portrait)
polo {num}PONG (echo)

If you happen to know more instructions that I haven't mentioned here or have more correct details about the existing ones, you are welcome to approach me and point them out. That's all to it for now...

Copyright © 2004-2005 by IceDragon - All rights reserved