Reference: Server (Main Index)

General Documentation

This collection of files describes how the various features and data sets work.

Documentation for specific server files are organized into separate folders of the same name.

There's a lot of stuff here. At least read over the table of contents, since there are links to most things you'll need to know.

Table of contents

Introduction
Installing the Server Assets
Installing the Client Assets

How To Edit Server Text Files -- Tips and warnings
Configuring The Server -- Important settings to change for public or private use.
Adding Registration Keys
Server Log: First Launch -- When launching for the first time, these warnings and errors are normal.

Launching the Client -- Creating a BAT or shortcut link.

Server Command Index -- Documentation of server /commands, including debug/admin features.

Local Dev Client Mode -- Advanced: using dev mode with terrain editing.
Faster loading time with localhost -- Reduces duration of loading screens.
Running multiple server instances -- Advanced: dual server instances at once

Windows GUI Documentation -- Administrative/debugging tools
RemoteServerTools.html -- Administrative web panel and debugging tools.

Requirements for version 0.8.9 (EER) -- Notes specific to that version.

How to create an administrator account
How router/simulator/HTTP connections work
How to patch client CAR files
How to implement Winter Dawning and Harvest Fest events
How to find which account a character belongs to
How to backup and restore userdata
How to create new groves
How to change grove names
How to reset passwords
How to reset registration keys
How to change character names
How to add or remove characters from an account
How to restore an accidentally deleted character

Client Archives -- Documents important CAR files.
Folder Structure -- Documents all important server files and folders.

Introduction

If you want to run a server, even if just for private use, you'll probably need to learn and understand at least a few things to set one up. This document will try to explain the basic steps necessary to launch the game, or host elsewhere.

It's all quite easy. No programming experience required. Notepad (or any text editor) will suffice for editing most server files. A spreadsheet application will be helpful for editing larger tables.

Installing the Server Assets

If you're reading this, you've probably already unzipped the contents of the server application. That's the first step. No official installation is necessary. The server is designed to be portable and will run from any folder you launch it from.

The server is initially configured to run on localhost (your machine). If you change nothing else, and the server is able to launch its HTTP service, you will be able to access the following files in your web browser as long as the server is online.

http://localhost/Account.html
For creating an account. See Adding Registration Keys.

http://localhost/RemoteServerTools.html
For administrative tools. The default password is admin so you'll probably want to change it. See Configuring The Server, specifically the RemoteAuthenticationPassword property.

http://localhost/ResetPassword.html
For password resets. See How to reset passwords.

Installing the Client Assets

You will not be able to launch your game client, or play the game unless the client has all necessary assets. These are .CAR files, downloaded while you play. If the server does not have these .CAR files, the client will not be able to download them, and the client will not be able to proceed.

Step 1: If you are able, try to connect to an existing server. At the login screen, press the Download All button.

Step 2: When the download is finished, go to the folder your client is installed (where Spark.exe is located). There will be a cache folder. Inside that folder is the file EarthEternal.archive. This is important.

Step 3: Copy the archive extractor utility (ArchiveExtract.exe) to the same folder as EarthEternal.archive. Run the extractor.

Step 4: Client CAR files typically exist in the following folder structure. You may need to create the folders yourself:
/Release/Current/Media

All CAR files should be moved to the Media folder. There is one exception. EarthEternal.car should be moved to Current

Step 5: In the server folder, there is a folder called asset. Move Release folder (and everything within it) to its new home in the asset folder. Optional: if you want, you can specify a different folder than asset by changing the HTTPBaseFolder field in ServerConfig.txt.

Important! If you extract CAR files from any version other than 0.8.6 (Planet Forever) then you will need to recalculate the checksums and update Data/HTTPChecksum.txt. See instructions in How to patch client CAR files for details.

Important! Also if you use any version other than 0.8.6, the terrain tiles for Corsica and Earthrise will be different. Scenery won't conform properly to the terrain. Quests from 0.8.8 or 0.8.9 have not been restored.

Launching the Client

When you launch the game client Spark.exe, it needs a command line argument with the URL of the filename to launch. For example:
Spark.exe http://planetforevergame.com/Release/Current/EarthEternal.car

You may use any domain or IP address as a target. Localhost, LAN, or Internet addresses are all acceptable. Here are some examples:

Spark.exe http://localhost/Release/Current/EarthEternal.car
Spark.exe http://192.168.1.5/Release/Current/EarthEternal.car
Spark.exe http://planetforevergame.com/Release/Current/EarthEternal.car

If you're using a Planet Forever modified client, you may additionally specify an HTTP port as part of the URL. For example:

Spark.exe http://localhost:81/Release/Current/EarthEternal.car

Note that if you're using a custom port, you will need to change the HTTPListenPort field in ServerConfig.txt.

Launching with a batch file

If you're using a console batch file (.BAT extension) to launch the game, you may use the START command to launch the game and hide the console, for example:

START Spark.exe http://localhost/Release/Current/EarthEternal.car

NOTE: Version 0.8.9 (Ikimonogatari/EER) requires a different launch target. See Version 0.8.9 Notes for more information.

Launching with a shortcut link

If you're using a Windows shortcut, you'll need to create one if it doesn't exist. Right click Spark.exe and click Create shortcut. This will create a new file. Now right click Spark.exe - Shortcut and click Properties. In the Target edit box, add a space, then enter the URL for EarthEternal.car. The Target box should now contain something like this:
C:\Whatever Folder\Spark.exe http://localhost/Release/Current/EarthEternal.car
Now click the Apply and OK buttons.

Configuring The Server

If you're launching the server or need to configure the server for a particular client version, here are some things to note.

-- ServerConfig.txt --

All of these options reside in ServerConfig.txt.

SimulatorAddress -- Must target the URL or IP address that is hosting the server. Some examples: SimulatorAddress=localhost SimulatorAddress=127.0.0.1 SimulatorAddress=planetforevergame.com

ProtocolVersion -- Must match the client version. See the ServerConfig documentation for more versions, but typically this will be 33 for 0.8.6 or 37 for 0.8.8. Example: ProtocolVersion=33

RemoteAuthenticationPassword -- Important! If hosting the server for public use, change this password. Make sure the server files are not accessible to the internet. For slightly more security you may rename RemoteServerTools.html to something unlikely to be guessed and bookmark it in your web browser.

HTTPBaseFolder -- If hosting CAR files for download, this property must be changed to designate which folder to find them. Do not include the ending slash. Use "this" or "." without the quotes to target the current working directory that the server program is launched from. Examples: HTTPBaseFolder=F:\EEAsset\86 HTTPBaseFolder=asset HTTPBaseFolder=this HTTPBaseFolder=.

RouterPort, SimulatorPort, HTTPListenPort -- All three of these must be set up correctly. Normally you can leave defaults. If hosting a server over the internet or network, make sure your network is configured for port forwarding (for each port), or other computers will not be able to connect. There are many tutorials and instructions for port forwarding on the internet.

Note: Some ISPs may block port 80. Some programs like Skype may use port 80 as well. Configure those programs to use a different port or set HTTPListenPort to use something other than port 80.

RouterPort is typically hardcoded in the client. Most versions (like 0.8.6) use 4242, but some old versions may use 4241. The router port should not be changed to anything else unless using the router override hack of a modded client (Planet Forever).

HTTP404Header -- Optional. You can customize an HTTP 404 response error here.

Modded Client refers specifically to a Planet Forever modified client. If you are using an original SPM/EER unmodified version of EarthEternal.car, you cannot use any features that require a modded client. If you do, buffer underflow or overflow errors will occur in the client and freeze its network buffer, causing the client to stop responding to the server.

If not using a modified client, make sure all following properties are disabled: SendLobbyHeartbeat=0 UseIntegerHealth=0 UseMessageBox=0 UseStopSwim=0

Also, if mobs appear as pink shroomies and the health bars are not working properly, UseIntegerHealth may not be set correctly. Switching it on or off and try again. UseIntegerHealth=0

-- URL.txt --

If hosting a public server, you may want to edit URL.txt to change the links to new webpages.

-- Web Assets --

This refers to files that communicate with the server via an HTML webpage. HTML files can be opened in any web browser.

In the server's assets folder (or whichever folder is configured for HTTPBaseFolder in ServerConfig.txt), there should be some HTML files: Account.html, RemoteServerTools.html, and ResetPassword.html

If you attempt to use these files and they are unresponsive, stuck waiting indefinitely on a response, then the server is offline or frozen, or the target address is not set correctly.

In order for these files to communicate properly with the server, the target address must be correctly specified. For security reasons, browsers cannot communicate outside of the domain/IP address and port of the machine that served the HTML page.

Open targetAddress.js in a text editor. Change the URL in the following line to match the URL or IP address of the server's HTTP port. The port should match HTTPListenPort in ServerConfig.txt. Examples: var targetAddress = "http://localhost:80/"; var targetAddress = "http://planetforevergame.com:80/";

Adding Registration Keys

The server installation begins with a list of keys in Dynamic/RegistrationKeys.txt. If you're hosting a public server, you'll probably want to delete them and generate a unique batch.

Use the Key Generator Tool to generate a list of random keys.

If the server is currently running, copy and paste the keys into ImportKeys.txt, then open the admin panel (RemoteServerTools.html) in a web browser and click Import Keys.

If the server is not running, copy and paste the keys into Dynamic/RegistrationKeys.txt

Important! It is recommended to copy these keys, and maintain a separate file with a list of all available keys, and who you have given them to. That way you'll be able to tell whether any accounts were actually registered. Not everyone will go through with the registration process, or won't register right away. So even though their key may still be available, you don't want to give it out to another person. When your records indicate you've run out of keys, then it's time to import another batch, even if some keys in Dynamic/RegistrationKeys.txt are still remaining.

Requirements for version 0.8.9 (EER)

Due to some of the UI changes in Ikimonogatari/Earth Eternal Reborn, some of the Planet Forever modifications don't work in EER. The code in ModSettings.nut regarding "UI/LoadScreen" and "LoadScreenManager" will fail to execute and prevent the file from loading. They will need to be removed from the source and compiled again. Some other errors may arise as well. Most critical errors are logged in Player.log so refer there if something may be be wrong.

The original version of EarthEternal.car should work correctly, but it won't have PF modifications. If using the original, be sure make sure ServerConfig.txt is updated with the appropriate changes. See Modded Client for details on which settings must be disabled for the original version.

You may also need to update the checksums in HTTPChecksum.txt to correspond to the 0.8.9 assets.

This version contains the revamped Corsica/Earthrise maps so the classic 0.8.6 scenery data will not align properly to the terrain.

The client may fail with checksum errors. The original Catalogs.car contains a file with a checksum table. Convert to a ZIP file, then delete MediaExpectations.cnut from the archive. Convert back into a CAR, then copy the updated CAR into the Media assets folder. Also modify HTTPChecksum.txt if necessary. The new Catalogs file should now prevent any checksum errors.

The included download pack will not include all CAR files. You may need to substitute any missing files from a previous version. Assets from 0.8.8 are preferred, but 0.8.6 might be acceptable too. Most of the missing files are typically terrain tiles, item, or character models and should be compatible between all modern versions.

EER uses a separate launch target with different parameters than earlier versions. Use this line if launching from a BAT file, or update your Spark.exe shortcut accordingly. Adjust the URLs as appropriate. start Spark.exe /arg:server=localhost /arg:locale=en http://localhost/Release/Current/EarthEternal.car

Local Dev Client Mode

The client's dev mode loads files directly from your computer. It does not use EarthEternal.car but instead requires the individual CAR files to be extracted into folders. In this manner, all assets can be freely modified. This is the only mode that terrain sculpting and texturing is supported in the build tool, because those files are saved and loaded directly to and from their target folders.

Refer to Faster loading time with localhost on how you can set up a server locally on your machine to connect to an external server for actual gameplay. Note that since the local client is freely modified, it's easy to hack or exploit client-side behaviors.

Instead of loading from CAR files, it loads from folders of the same name (minus the .car extension). Files are accessed with relational paths. Asset collections like Prop, CL, Terrain must all be grouped into a common base folder as well. Also note all terrain tiles of a particular template must be extracted into the base template folder. Examples: /Release/EarthEternal/... /Media/Armor/Armor-Base3B/... /Media/ATS/ATS-Bremen/... /Media/Biped/Biped-Anim-Combat/... /Media/Bldg/Bldg-Bastion1/... /Media/Terrain/Terrain-Blend/Blend_Base_x0y0.jpg And so on...

Note that the launcher still requires a CAR file, but all other media is loaded from the folders. When launching the client, use the following BAT method: START Spark.exe file:///Release/Current/EarthEternal.car?dev=2

Also note that /Release/Current/ is important because the client automatically searches for files two levels below that location (../../Media/)

How To Edit Server .txt Files

All files can be opened and edited in a standard text editor like Notepad.

Table files can be imported into a spreadsheet application like LibreOffice Calc.

IMPORTANT! Make sure your text editor and spreadsheet application use ASCII quotation marks (""). LibreOffice Calc (and some word processors) use separate characters as opening and closing quotation marks. They will not be loaded correctly by the server.

Note: The bad quotation marks will look like this:
“Wrong!”

When instead they should look like this:
"Correct"

Wrong quotation marks are especially problematic when editing AbilityTable.txt in LibreOffice. If necessary, you can do a find and replace to make sure that all are fixed.

An example of loading a file in LibreOffice:

Select the file to open. The Text Import panel should pop up.
Look under Separator options. Check the box for Tab and clear all the other checkboxes if any are marked. If the file uses a separator other than Tab, select them as appropriate. Merge delimiters should not be checked. Text delimiter should be empty.

Now click OK to open the file.

When you save the file, use the same text settings it was opened with.

Character Codes
All older clients only support ASCII character codes up to decimal 127. Extended ASCII characters (like accented characters), Unicode, or extended UTF+8 characters may crash the client. Keep this in mind when writing quest text, creature names, item names, etc.

Only Ikimogatari/EER version 0.8.9 which utilizes the new UI software supports Unicode characters.

Newline formats are expected to be Carriage Return + Linefeed. Also known as CR LF, "\r\n" in programming-style formatting, and 0D 0A in hexadecimal.

CR LF is the default in Windows. For the most part you shouldn't encounter any problems there. Linux text editors might save LF by default. If the server is not loading files properly, try making sure they are saved as CR LF. In very rare cases single lines in a file may prevent something from being loaded properly.

Windows UI Documentation

The server was initially developed in Windows with a GUI for interaction. Some of the debugging tools were never transitioned to the Web panel. It's most useful to run the server in Windows for offline tests since these few tools are easily accessible when needed.

-- Main Tab --

The large status panel holds the output of any new log messages. It only holds up to a certain amount of text. All messages are still logged to ServerLog.txt.

Clear status: This button clears the text in the status panel. Very useful prior to debugging particular actions.

Edit Box : The small edit box at the top right of the screen allows entering a simulator ID, which is used by some operations in the Tools and Stats tabs for presenting player-specific data.

-- Tools Tab --

The batch of edit boxes on the left half is mostly a relic from the early alpha days. You can select a few actions from the dropdown list, and it will change the description of the edit boxes above. The Cue Effect tool sends a visual effect message to a particular creature entity.

Save Items : Dumps the stats from the item database in a simplified table (ItemTable2.txt) for casual view.

Disassemble Scripts : Dumps AI script disassembly to file (script_disassembly.txt) which can be useful to see if scripts are being loaded correctly. The instruction index can also be useful to determine where a creature's script may be stuck.

Test Crash : Crashes the server.

Variable Dump : Dumps account, character, and instance data to file (crash_dump.txt). Not really useful anymore.

Flush Log File : Forces the operating system to flush the contents of the current write buffer, ensuring ServerLog.txt is accurate in real-time if you need to view the file immediately.

Reload Quests : Clears the loaded QuestScript and QuestDef data. Reloads the files. This is useful to reload minor quest changes when debugging quests. Recommended for offline use only. Data corruption or crashes may occur if players are actively running quests, since existing quest references may unexpectedly change or disappear when the table is reloaded.

Reload HTTP Checksums : Reloads HTTPChecksum.txt. Useful when modifying CAR files for testing without requiring a server restart.

Reload Abilities : Reloads the ability table. See AbilityTable.txt. Useful for tweaking abilities for testing without requiring a server restart.

Damage Test : Crunches some ability damage formulas for the simulator index selected in the Main Tab. Dumps information to file (debug_ability_dump.txt). This feature was unfinished. Not recommended for use.

INITIATE SUPER FUN MODE: Forget about it. Earth Eternal does not support this feature. If you're wondering, this was a joke from the early alpha.

-- Stats Tab --

Some extra information in these reports are useless, left over from testing stuff long ago that no longer requires debugging.

Refresh Threads : Generates a report on server uptime, network connections, bandwidth, etc.

Refresh Props : Generates a report on loaded props and pending changes. Not really useful anymore.

Refresh Players : Refresh a list of active players, their simulator ID and location.

Prefs : Refresh a list of a character's client preference data. Must select a simulator ID from the Main Tab. Not really useful anymore.

Inv. : Refresh a list of a character's inventory data. Must select a simulator ID from the Main Tab.

Sp Pkg. : Refresh a list of loaded spawn packages. Not really useful anymore.

Quests : Refresh a list of active, available, and completed quests for a particular character. This can be helpful for debugging QuestDef IDs to see which ones are in use. Must select a simulator ID from the Main Tab.

Mods : Refresh a list of current stats, modifiers, and status effects for a particular character. Must select a simulator ID from the Main Tab.

Hate : Refresh a list of instances and creatures who have generated hate toward players.

Pr : Refresh a list of information collected by the Debug Profiler. The profiler counts incoming messages and queries, tallying their numbers and time (in milliseconds) spent processing them.

Refresh AI Scripts : Refresh a list of loaded scripts and provides debugging information for active scripts.

Time : Refresh a list of active players and their time spent logged in. Not really useful anymore.

Party : Refresh a list of info of any active player parties and their members.

Ptr : Refresh some information of active instances and players. Not really useful anymore.

Inst : Refresh a detailed report of active player and NPC entities in the instance. Not really useful anymore.

Spawn : Refresh a list of active spawn tiles. Not really useful anymore.

Char : Refresh a list of loaded characters. If manually editing character files, wait until they are unloaded and no longer in this list.

-- Chat Tab --

Can be used to send arbitrary chat message to the server. The chat log function was disabled long ago since it was no longer useful or required, especially for the Linux build (doesn't have the GUI).

Faster loading time with localhost

The game client pings the server for file requests to make sure files are up to date. If the server is hosted over the internet, this introduces much more latency time. To speed up the process, you can launch a copy of the server on your own machine to host files, then bounce gameplay to a different server on the internet.

Advantages: Faster loading times.
Neutral: Can easily alter resources or create hacks without server detection. Good or bad? You decide.
Disadvantages: Will not automatically receive new CAR files if there's an update.

To accomplish this, download, extract, and set up the CAR asset folders as described here: Installing the Client Assets

In ServerConfig.txt, edit the following lines to target the server's domain (or IP address) and port of its gameplay connection. Example: SimulatorAddress=planetforevergame.com SimulatorPort=4300

Launch the server on your computer. Then launch your client targeting the following URL:
Spark.exe http://localhost/Release/Current/EarthEternal.car

When you launch the client, it will now check the server on your machine for CAR files. At the login screen, the actual gameplay connection will be sent to the other server over the internet.

Running multiple server instances

It is possible to run two servers instances on the same machine, but there are additional technical requirements.

They must not access or share the same server files. They cannot share accounts or characters. They may not be able to share client CAR files either. Testing may be needed to ensure no access violations occur if they both attempt to open the same file at once. Copy the entire base server folder and keep them separate.

-- ServerConfig.txt --

Obviously they can't use the same ports, so ServerConfig.txt will need to be different between both instances.

For example, Server #1 might have: SimulatorAddress=localhost HTTPBaseFolder=asset1 RouterPort=4242 SimulatorPort=4300 HTTPListenPort=80

And Server #2 might have: SimulatorAddress=localhost HTTPBaseFolder=asset2 RouterPort=4241 SimulatorPort=4301 HTTPListenPort=81

-- targetAddress.js --

In your web assets folder (in these examples: asset1 or asset2), open targetAddress.js in a text editor. Change the URL to match the URL and and port to the server's HTTP port. The port should match HTTPListenPort in ServerConfig.txt.

Server #1 might have: var targetAddress = "http://localhost:80/";

And Server #2: var targetAddress = "http://localhost:81/";

-- Client Launcher (plus Router Hack) --

The biggest hurdle will be launching the clients and informing players what they need to do. The client will need to be a Planet Forever modded client. If Server #1 and Server #2 are hosting different client versions (such as 0.8.6 vs 0.8.8) then the player will need to use the correct core client files (Spark.exe) since they are not fully compatible. If Spark.exe was designed for 0.8.6, it may crash if it tries to load an 0.8.8 version of EarthEternal.car. Keep the core files separate (such as C:\Games\EEClient86 and C:\Games\EEClient88).

In any case, they'll need to use separate launchers to target the different ports.

For example, a .BAT launcher to Server #1 might have: START Spark.exe http://localhost/Release/Current/EarthEternal.car

And the launcher to Server #2: START Spark.exe http://localhost:81/Release/Current/EarthEternal.car

But there is an additional problem. The client is hardcoded to use port 4242 (some versions may be hardcoded to use 4241). To force the client to target a specific router port, it will need a hack file.

Go to the client folder where Spark.exe is located. If you have attempted to launch the game at least once before, there will be a cache folder. In the cache folder will be subfolders for each hosting domain that you tried to log into, like planetforevergame.com or localhost if launching locally.

Side note: If you launched using a custom port, it will have something extra in the folder's domain name, like localhost Q. This is because the client does not natively support launching to a URL with a specific port (like http://localhost:81/Release/Current/EarthEternal.car). The extra letter is the ASCII representation of the port number (P, Q, etc correspond to port 80, 81, etc)

In the domain subfolder, create a new file called Router (case sensitive). It must be a plain-text file, but make sure it doesn't have a filename extension (you may need to set your operating system to always show file name extensions, or use console commands to remove the extension). Alternatively you can copy an existing cookie file, rename it Router, and delete the contents.

Open the new file Router in a Notepad, and paste in the following line: {["mod.router"]=4241}

Or choose whatever different port if not using 4241. Close and save. Now launch the client again. It will now try to make the router connection using that port. Note that as long as this file exists, the router hack will be working behind the scenes (regardless of which launcher you're using). If the hack is no longer necessary, delete the Router cookie file.

How to create an administrator account

If you don't have an account, create one via the webpage (Account.html) like anyone else. You will need to edit your account file to add the necessary permissions. Make sure your account is offline before editing permissions.

Open the file Dynamic/AccountList.txt and search for your username. Note the account ID (the first number of each line).

Now go to the Accounts folder and look for a file named with the matching account ID. Open the account file. On the Permissions line, add the admin permission. You can add other permissions this way too. Refer to Account Permissions for a list of options and debug permissions.

Save and close the file. If your account was offline when you edited the file, it should work.

Once you have admin permission, you can use the /setpermission command in game to add or remove permissions for yourself or other users. Refer to Server Command Index for details and command syntax.

How router/simulator/HTTP connections work

This describes how all the connections are made.

-- The HTTP Phase --

When you launch the client, you use a target URL like this:
Spark.exe http://localhost/Release/Current/EarthEternal.car

The client will attempt to connect to the domain (in this case localhost) on HTTP port 80 (unless otherwise specified). The client must target the same port as HTTPListenPort in ServerConfig.txt).

The client will continue to access this domain and port for all CAR files needed during the gameplay session.

Once EarthEternal.car is deemed up to date, the client proceeds to the login screen. Then the router phase begins.

-- The Router Phase --

When you enter your username and password and attempt to log in, the client attempts to connect to the "router" address at the same domain as EarthEternal.car (in this case localhost) but on port 4242 (sometimes 4241 in other client versions).

The server will be listening at that address (see RouterPort in ServerConfig.txt).

Once the router connection is established, the server sends back the address and port of the simulator connection, then closes the router connection. (see SimulatorAddress and SimulatorPort in ServerConfig.txt). Then the simulator phase begins.

-- The Simulator Phase --

The client has now received the address and port of the final connection. Note that this address can be a completely different domain or website than where the CAR files are hosted.

The client now connects to the address and port provided. This is the simulator connection, and will process your actual login attempt. If your login is successful, you'll proceed to character selection.

How to patch client CAR files

If you have not done so already, extract CAR files from EarthEternal.car. Instructions can be found here: Installing the Client Assets.

Use CARDecode.exe to convert a CAR file to a ZIP file.

Modify the contents of the ZIP file as you see fit. You can update existing scripts or resources, or add entirely new resource to a file. For compiled Squirrel script files (.CNUT format) you can simply add them into the archive. If they are properly written, the existing files and features will be augmented by the new scripts when the client loads.

If you're creating new game entities like new creature models, new item models, new props, you'll need to modify or augment the proper files in Catalogs.car. See Client Archives for more information what each catalog table file is for.

Once you've updated the ZIP file, use CARDecode.exe to convert back into a CAR file.

Recalculate the MD5 checksum of the new CAR file. A crude command line program MD5.exe is provided (Windows only) but other programs may be available online. If using this program, you'll need to use something like the following following command lines:
md5 EarthEternal.car \Release\Current > NewChecksum.txt md5 Catalogs.car \Release\Current\Media >> NewChecksum.txt

NOTE: In Windows, using ">" outputs to a new file, overwriting if necessary. Using ">>" appends further lines to an existing file.

Take the generated hash (from NewChecksum.txt if using the above method) and copy and paste the updated lines into Data\HTTPChecksum.txt.

Copy the CAR files into their proper asset folders so that the server can distribute them.

RECOMMENDED: Create a command line script (like a BAT file) to process all MD5 hashes of all modified project files. Output directly into HTTPChecksum.txt. At the same time copy all updated CAR files into the proper asset folders. Then everything stays up to date and synchronized all at once.

Once the files are updated and copied, restart the server. If only updating the CAR checksums, then alternatively use the Reload Checksum tool in the server's administrative panel, which does not require a restart.

Restart the client. If all steps were correct, it should now download the updated CAR files, as synchronized with the server.

NOTE: If a file always re-downloads every time the client launches, there's probably an incorrect hash entry in Data\HTTPChecksum.txt.

How to implement Winter Dawning and Harvest Fest events

Two zones have modifications to scenery, spawn packages, static spawns, and quests. Affected zones are Anglorum (ZoneDef ID 81) and Europe (ID 9).

Scenery: Backups of modified scenery files are present in the Scenery folder. Note that these ZIP files contain the entire zone. Make sure to backup the existing Scenery folders Scenery/81 and Scenery/9 before unzipping the event versions. Look for these files with the event modifications: 9 Harvest Fest 2013.zip 9 Winter Dawning 2013.zip 81 Harvest Fest 2013.zip 81 Winter Dawning 2013.zip

Spawn Packages: You will need to enable mobs for the event SpawnPoints by editing some of their spawn packages. The scenery already contains necessary SpawnPoints. Open these files and edit the spawn packages. They will have lines commented out with a semicolon. Uncomment or comment their respective lines to enable or disable the associated spawns. SpawnPackages/9_Europe.txt SpawnPackages/81_Anglorum.txt

Static spawns: These are event-specific quest givers and reward chests. Modify their respective Instance/.../Static.txt files. They will have lines commented out with a semicolon. Uncomment or comment their respective lines to enable or disable those NPCs. Instance/9/Static.txt Instance/81/Static.txt

Quests: to implement the quests, open Packages/QuestPack.txt. There will be lines commented out with a semicolon. Uncomment or comment their respective lines to enable or disable those QuestDef files from loading. NOTE: The actual quests have a delay time of 60 days before they can be repeated again (QuestDef RepeatDelay=D60), so you may want to disable them in QuestPack.txt and restart the server before the time is up.

When everything is ready, restart the server.

How to find which account a character belongs to

If they're online, use the /gmwho command. The admin panels may also reveal either the account name or CreatureDef ID.

To search manually, first find the CreatureDef ID. Open Dynamic/UsedNames.txt and search for the character name. Note the corresponding ID.

Now look for CreatureDef ID in the Characters folder.

Open the character file and look for AccountID. You can then find the account file in the Accounts folder.

How to Backup and Restore userdata

Userdata encompasses all files which are created or modified by newly registered or active players. Accounts, characters, groves, etc.

To backup userdata, copy or ZIP the necessary files and folders keep them in a safe place.

To restore userdata, simply copy the backup files into their respective locations, overwriting existing files and folders.

Userdata is the following folders, plus one file:

  /Accounts
  /Characters
  /Deleted
  /Dynamic
  /Grove
  /IGForum
  /VirtualItems
  /ZoneDef
  SessionVars.txt

How to create new groves

Determine a new ZoneDef ID for the grove. Groves begin at ID 5000. Accounts are created with a single default grove, plus space for 7 more. The IDs between accounts are typically 8 IDs apart. So the first account will have ID 5000, the next account will have 5008, etc.

Example: Say the player owns grove 5000 and wants a new grove. 5001 is a reasonable ID. The remaining steps will describe the process using 5001.

In the ZoneDef folder, copy or create a new file called 5001.txt. It's best to copy a ZoneDef file that matches an existing terrain template, this makes things easier.

Open the new ZoneDef file (5001.txt) and edit any applicable properties. Make sure that ID is changed to reflect the new zone. In this case, we'll need ID=5001

Make sure ACCOUNTID matches the account owner.

Create a new WarpName such as WarpName=grove2

Change TERRAINCONFIG and ENVIRONMENTTYPE to whatever template and sky environment you want to use. Refer to Data/GroveTemplate.txt for a list of templates. You may also refer to existing gameplay zones in Data/ZoneDef.txt

If using a different template or account owner, you can delete the BuildPermission line if it exists. A new permission will automatically be created by the server when it sees that none exists.

Finally, create a new grove index entry. If the server is offline, manually edit Dynamic/ZoneIndex.txt. It's best to copy and paste a new entry alongside the old grove from the account. For example, if the first grove is 5000;1;grove1;grove then create a new entry 5001;1;grove2;grove

If the server is running, use the following command:
/dtrig 901 zoneID accountID warpName groveName [simID]

These should match the ZoneDef ID, ACCOUNTID, WarpName and GroveName properties. Find the simulator ID of your connection. So in this example, we'll need a command like:
/dtrig 901 5001 1 grove2 grove 27

Or whatever the necessary simulator ID is.

How to change grove names

Use the /zonename command.

Refer to the Server Command Index

How to reset passwords

The account that needs the reset must be given the passwordreset permission. You can edit the account file Permissions line manually if they're offline.

The permission offers a one-time reset. The permission will be removed when the password is changed.

Or within the game, use the /setpermission command. For example:
/setpermission HerpDerp101 passwordreset 1

The player will need to be given a link to the password reset form (ResetPassword.html). They must supply their username, registration key, and new password.

How to reset registration keys

This applies to accounts that have already been registered. Requires manually editing files. The registration key cannot be properly changed unless the server is offline.

To manually assign a completely new registration key to an account (assuming one has been generated), open their account file when they're offline. Copy and paste the registration key into the RegKey= line. Delete the existing RecoveryKeys entry since it will no longer be valid.

Now find the account entry in Dynamic/AccountList.txt and copy and paste the key into the correct spot.

How to change character names

Requires manually editing files. Character names cannot be properly changed unless the server is offline.

Character names should be unique. If two characters share the same name, certain operations that use lookups by name may not return the correct player.

Open the character file, and look for the display_name property. Change it, save and close.

Now find the former character name entry in Dynamic/UsedNames.txt. Replace it with the new name.

How to add or remove characters from an account

Look for the account file in the Accounts folder. Open the account file and look for the Characters line. Add or remove the CreatureDef ID there. Note that the [CHARACTERCACHE] section is for display purposes only at the character selection screen. If you're removing a character, you can delete the corresponding cache entry. If adding the character, you can leave as is. The cache is automatically updated when the player logs out.

Characters should not be assigned to multiple accounts at once. If both characters log in at the same time, data corruption or crashes may occur.

How to restore an accidentally deleted character

Characters that are deleted by the player (from the character selection screen) are still available. The character file will be moved to the Deleted folder. Move the character file out of the Deleted folder and back into the Characters folder.

Open the player's account file, look for the Characters line, and add the CreatureDef ID into the list. The account must not be logged in.

The name will be available for new character creations unless you add it back to the list. The server must be offline for this step. Open Dynamic/UsedNames.txt and add the character name and CreatureDef ID back in.

Characters should not be assigned to multiple accounts at once. If both characters log in at the same time, data corruption or crashes may occur.

NOTE: It's a good idea to keep regular daily backups of userdata. See How to backup and restore userdata.

Server Log: First Launch

This is normal for the server when first launching.

The ability errors (malformed event, and verification) are normal. Those abilities are unused.

The errors when attempting to load these Dynamic file are normal, because on an empty server with no accounts, the data doesn't exist yet. Dynamic\AccountList.txt Dynamic\UsedNames.txt Dynamic\ZoneIndex.txt Dynamic\FriendList.txt Dynamic\FriendNetwork.txt

The files Data\ItemSet.txt, and Data\ItemSetScript.txt were never finished or tested. They have been renamed with underscores to Data\_ItemSet.txt and Data\_ItemSetScript.txt. Remove the underscore and relaunch the server to implement them.

Contents of ServerLog.txt
19:52:59 Loaded session file.
19:52:59 Loaded 5 checksums.
19:52:59 Loaded 17377 items.
19:52:59 [ERROR] Could not open file [Data\ItemSet.txt]
19:52:59 [WARNING] InstanceScript::CompileFromSource() unable to open file: Data\ItemSetScript.txt
19:52:59 Loaded 0 Item Sets
19:52:59 Loaded 69 ModTables.
19:52:59 Loaded 20 ModTemplates.
19:52:59 Loaded 54 EquipAppearance.
19:52:59 Loaded 1427 EquipIconAppearance.
19:52:59 Loaded 20 EquipTable.
19:52:59 Loaded 1020 Name Templates.
19:52:59 Loaded 47 NameMods
19:52:59 Loaded 29 NameWeight
19:52:59 Loaded 501 Drop Sets.
19:52:59 Loaded 46 Drop Packages.
19:52:59 Loaded 993 Drop Creatures.
19:52:59 Resolved 46 Drop Levels.
19:52:59 [WARNING] Ability:11 malformed event []
19:52:59 [WARNING] Ability:12 malformed event []
19:52:59 [WARNING] Ability:13 malformed event []
19:52:59 [WARNING] Ability:14 malformed event []
19:52:59 [WARNING] Ability:15 malformed event []
19:52:59 [WARNING] Ability:83 malformed event []
19:52:59 [WARNING] Ability:84 malformed event []
19:52:59 [WARNING] Ability:85 malformed event []
19:52:59 [WARNING] Ability:313 malformed event []
19:52:59 [WARNING] Ability:32759 malformed event []
19:52:59 Loaded ability file [Data\AbilityTable.txt], 1012 abilities loaded.
19:52:59 Loaded ability file [Data\AbilityTableAdmin.txt], 10 abilities loaded.
19:52:59 Registered 62 Buff Categories
19:52:59 Registered 97 Cooldown Categories
19:52:59 Ability [10003] verification failed (1 errors)
19:52:59   Formula token is not a recognized variable: [target_REZ_PENDING]
19:52:59 Ability [32762] verification failed (1 errors)
19:52:59   Undefined function [SummonPet]
19:52:59 Ability [32767] verification failed (1 errors)
19:52:59   Undefined function [Jump]
19:52:59 Loaded 3895 CreatureDefs.
19:52:59 Loaded 113 PetDefs.
19:52:59 [ERROR] Unable to open file: Dynamic\AccountList.txt
19:52:59 [ERROR] Could not open file [Dynamic\UsedNames.txt]
19:52:59 Loaded 23 Gamble definitions.
19:52:59 Loaded zone file [Data\ZoneDef.txt]
19:52:59 [ERROR] LoadIndex() could not open file [Dynamic\ZoneIndex.txt]
19:52:59 Loaded 101 ZoneDef.
19:52:59 Loaded 0 ZoneIndex.
19:52:59 Loaded 31 Grove Templates
19:52:59 Loaded 12 MapBarrier.
19:52:59 Loaded 46 zones with marker data.
19:52:59 Loaded 25 MapDef.
19:52:59 Loaded 2 MapLocation zones.
19:52:59 Marked 52 valid ATS files.
19:52:59 Loaded 53 Spawn Package lists.
19:52:59 Loaded 423 Quests.
19:52:59 Loaded 156 InteractDef.
19:52:59 Loaded 56 crafting recipes.
19:52:59 Loaded 3 EliteType
19:52:59 Loaded 76 EliteAffix
19:52:59 Loaded 8 instance scaling profiles
19:52:59 Loaded 5 drop rate profiles
19:52:59 Loaded 0 Friend Social Entries
19:52:59 Loaded 0 Friend Network Entries
19:52:59 Loaded 59 AI Scripts
19:52:59 PacketManager::LaunchThread: successful 
19:52:59 SceneryManager::LaunchThread: successful 
19:52:59 Server data has finished loading.
19:52:59 [HTTP] Server created, awaiting connection on port 80 (socket:264).
19:52:59 [Router] Server created, awaiting connection on port 4242 (socket:268)
19:52:59 [SimB] Server created, awaiting connection on port 4300 (socket:244).

Folder Structure

This is an overview of the folder structure that comes with the server. Click the links for each folder, or particular file names for more information.

All of these subfolders must exist, even if they are empty.

Some files like ItemDef or CreatureDef files have multiple filenames. They all have the same format, so refer to the base file of that type for documentation.

Some subfolders (like the ones present within IGForum) and their individual files are not terribly important, so their documention is included in the [Folder] files.

Base Folder