Furcadia Technical Resources
Navigation Menu
 Home
 About
 Files
 Links
 Contacts
 Credits

Documentations
 base95 Numbers
 Commands
 Server Instructions
 Colormap
 Movement/Coordination
 Palette
 Entities
 Badge Hash-signs
 Portrait File Map
 Avatar Frames
 Static Dreams

File Formats
 FSH
 FS2
 FBJ
 MAP
 DSB
 RCH

Protocol Specifications
 Main Server
 File Server

Other Resources
 IceRealm Forums
 Furcadian.net

NOTE: A more up-to-date version of this list can be found at the new site at: http://ftr.icerealm.org/ref-instructions/

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 blue 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 #)
%(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 full colormap
]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)
]uDream upload request
]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 them
]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-2006 by IceDragon - All rights reserved.