Recommendations for Furcadia Third Party Proxies and Other Similar Software

 

For Furcadia Alpha version 22.2 (“BOL=Burst Out, Laughing”)

2005-10-25 / sanctimonious (sanct@furcadia.com)

 

 

Please note: Some of the recommendations and instructions provided within this document will not be available before the Furcadia server move on 1st of November, 2005.

 

 

 

 

Purpose

 

The purpose of this document is to provide a common ground to the third party developers who write applications for Furcadia. By following these guidelines the programs will not become supported, recommended nor approved by Furcadia or Dragon’s Eye Productions. Instead, this document tries to establish practices which best ensure that the programs following these guidelines are well compatible with the varying computer equipment and configurations of the players and that the future Furcadia updates will not render the proxies unusable.

 

 

 

Connection Host and Ports

 

Furcadia game server is available for connections at lightbringer.furcadia.com (72.36.220.249) on ports 6500, 5000, 2300, 80, 22 and 21.

 

Proxies, which do not let Furcadia client connect directly to the game server, should first try solving name address lightbringer.furcadia.com and connect to the resulting IP address, instead of connecting directly to the IP address mentioned above. The game server IP address may change without notice on irregular intervals and therefore hardcoding it to a proxy should be avoided.

 

It is strongly recommended that proxies do not initiate connection to port 80 or 21 by default. These ports are most likely to be controlled by a transparent proxy at the player’s ISP, and are therefore likely to cause severe problems when connecting.

 

We also recommend for the proxies to allow the user to connect to any of the aforementioned ports.

 

For everyone’s convenience, proxies should retrieve their target host and port list from Windows Registry, where it will be stored into one of the two possible locations listed below. Proxy makers should note that one of these keys may not be available due Windows user account limitations:

 

\HKEY_LOCAL_MACHINE\SOFTWARE\Dragon’s Eye Productions\Connection

\HKEY_CURRENT_USER\SOFTWARE\Dragon’s Eye Productions\Connection

 

The “Connection” key will contain four String Values:

 

PrimaryHost Furcadia server (“lightbringer.furcadia.com”)
SecondaryHost The IP address to Furcadia server (“72.36.220.249”)
PortList List of available game server ports separated with commas (“6500,5000,2300,80,22,21”)
PreferredPort The port Furcadia recommends for connecting (“6500”) based on a test run by the Auto Configuration Utility or Configuration and Troubleshooting Utility.


These values are informal only. Modifying these registry values will not make difference on how Furcadia connects to the game server.

 

 

 

Establishing Connection

 

When a proxy or Furcadia client connects to Furcadia game server, the server will immediately send out an arbitrary number of lines. These lines can be assumed to contain news, until a line beginning with “Dragonroar” arrives. A proxy should only assume the connection to be established after this line has been received. If the proxy does not receive “Dragonroar” line from the server within a reasonable timeframe, the connection should be considered failed and the proxy should try connecting to another game server port.

 

Dragonroar” command is traditionally accompanied by two commands; “V00013” and “END”. Proxies should not rely on these two commands at all.

 

Example of connection data:

 

S> Did you know!

S> All Digo Market Items

S> Now For Sale!

S> Visit http://www.digomarket.com/

S> For details!

S>

S>

S> Press any key to continue.

S>

S> Dragonroar

S> V00013

S> END

 

 

 

Data Transfer

 

Furcadia uses a 7-bit US-ASCII protocol for all data transfer between the client and the game server. (Furcadia file server uses 8-bit binary protocol, but the file server is not within the scope of this document.) Bytes containing 8-bit values will either be ignored or converted to spaces.

 

Both client and server commands are separated in the data flow by linefeeds, one command per line. Linefeed is expressed with a single linefeed character (ASCII 10, 0x0a, “\n”, VB_LF), and the use of any other linefeed combinations such as the carriage return (ASCII 13, 0x0d, “\r”, VB_CR) should be avoided.

 

With the exception of linefeed character, no character codes below normal space (ASCII 32, “ “) are supported.

 

 

 

Logging in

 

We strongly recommend that the proxy allows Furcadia client to handle the login commands, and the proxy makers should assume that in the future this behavior will be required from all proxies, meaning that proxies which do not launch or otherwise use Furcadia client will become completely unsupported.

 

 

 

Character Set

 

Furcadia uses ISO-8859-1 character set (“LATIN-1”) with some extensions. Characters 160-255 are encoded with HTML-like naming (i.e. ä becomes ä). Decimal number codes, such as © are not supported.

 

 

 

Text Formatting

 

Furcadia supports the following HTML-like text formatting tags, which work the way their HTML counterparts do, except that A-tag may only contain one parameter, href.

 

<a>, </a>               Link

<b>, </b>               Bold

<i>, </i>                 Italic

<u>, </u>               Underline

 

 

 

Proxy Commands

 

It is strongly recommended that player typed proxy commands are clearly separated from general Furcadia commands with a prefix character, such as % or & (i.e. “&list” instead of “list”). This ensures that the players are less likely to confuse Furcadia commands with the proxy commands and won’t advise other players incorrectly.

 

 

 

Online Status

 

A proxy may query the online status of a player or a number of players by establishing a connection to Furcadia game server and sending in the following commands in the given order. The online status command is also available after a player has logged in, but it is recommended that proxies use “onlnprx” command, if they only need to query online statuses of players.

 

1)       Before sending “connect” command, the proxy must send command “onlnprx” to the server. If “onlnprx” command is present, the logged in character will not be available for general discussion, whispering or any normal use.

 

2)       Player online status can be requested by sending command “onln <name>” to the server. The server will respond with line “]%0<name>” if the player is not online, and with “]%1<full name>”, if the player is online.

 

3)       full name” and “name” may differ: It’s perfectly legal to send in a query with a shortname (i.e. “testfurre123” is shortname from “Test|Furre!!!123”), but status “online” will return the exact official name (“Test|Furre!!!123”).

 

4)       Online status checks may not be made more often than once per three minutes. Players using proxies which make online status checks more often than that will be removed from the game until they correct their ways.

 

 

Example of an online check session:

 

S> Did you know!

S> All Digo Market Items

S> Now For Sale!

S> Visit http://www.digomarket.com/

S> For details!

S>

S>

S> Press any key to continue.

S>

S> Dragonroar

S> V00013

S> END

C> onlnprx

C> connect username password

S> &&&&&&&&&&&&&

S> ]w

S> ]marco 99

S> ]A 2454856741 1

C> onln sanctimonious

C> onln testfurre123

S> ]%0sanctimonious

S> ]%1Test|Furre!!!123

 

 

 

Modifying Furcadia Configuration

 

If the proxy modifies the Furcadia configuration files, such as proxy.ini, service.ini, settings.ini or scproxy.ini, it should be established that once the user quits using the proxy (as in “quits the program”, not “uninstalls the proxy”), the proxy should automatically modify the Furcadia configuration files back to what they used to be before the proxy made changes to them, and in the case of proxy.ini, scproxy.ini and service.ini, remove the configuration files, if they did not exist before. This ensures that the players can play Furcadia even when they are not using the proxy.

 

 

 

Personal Information and Privacy

 

A proxy should never send out any information to anyone or anywhere which may be used to identify or to collect players, email addresses, alts, character names, passwords or any other type of personal information, unless the player consciously and beforehand consents to such information exchange.  This approval should not be considered to be received by forcing players to agree with a software license agreement. Instead, a separate warning describing clearly the information about to be sent out should be displayed to the player. Refusing the information exchange should also not prevent the use of the software -- Players’ privacy should be honored to the fullest.