[B]Configuring The Cluster (all configurations)[/B]
[COLOR=#24292F]Regardless of whether or not you have multiple nodes, you will need to tell the server where your Redis instance is located and how to connect to it.[/COLOR]
[COLOR=#24292F]This source module ships with sample configuration files that must be copied to their 'real' locations. Do this for the local cluster configuration file :-[/COLOR]
[COLOR=#24292F]cp Local/Cluster.txt.sample Local/Cluster.txt
[/COLOR]
[COLOR=#24292F]And then open up [I]Local/Cluster.txt[/I] in your favourite text editor :-[/COLOR]
[COLOR=#24292F]; The unique name of this shard
ShardName=EE1
; A more descriptive name displayed in the shard selection screen (/shards)
FullName=My Local Earth Eternal server
; The address of this shards Redis instance
Host=127.0.0.1
; The port on which this shards Redis instance is listening
Port=6379
; The password to use to authenticate with the Redis instance. Leave blank or commented out if there is no password
;Password=asecret
[/COLOR]
[COLOR=#24292F]This file is also used to set to the unique shard name and description. Do not worry about this if you are only running a single shard.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#configuring-the-cluster-multiple-shards"]
[/URL]Configuring The Cluster (multiple shards)[/B]
[COLOR=#24292F]If you wish to run multiple shards in a cluster, there are a few different configurations.[/COLOR]
[LIST]
[*]Multiple server instances pointing to a single shared Redis instance.
[*]Multiple server instances, each with it's own Redis instance and replication setup between the Redis instances.
[*]A combination of both.
[/LIST]
[COLOR=#24292F][I]All replication configuration when multiple Redis instances are used is done at the Redis layer. See [URL]https://redis.io/topics/replication[/URL][/I][/COLOR]
[COLOR=#24292F]Whenever you have multiple EE server instances, each must have their own [I]Local[/I] configuration directory. Anything in this directory is specific to this node only.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#configuring-server-behaviour"]
[/URL]Configuring Server Behaviour[/B]
[COLOR=#24292F]All other server behaviour is configured using the Local/ServerConfig.txt file. As with all other configuration files, this is shipped as a ServerConfig.txt.sample, and must be copied and edited before use.[/COLOR]
[COLOR=#24292F]cp Local/ServerConfig.txt.sample Local/ServerConfig.txt
[/COLOR]
[COLOR=#24292F]Then edit [I]Local/ServerConfig.txt[/I] with your favourite text editor. This file contains many options, most of which are commented. For a new installation, the ones that most likely need to be changed are :-[/COLOR]
[COLOR=#24292F]; The address which is advertised to clients via the 'router' service. This address
; must be resolvable by clients and may either be a hostname or IP address. When blank
; the first public IP address that the simulator service is bound to is used.
SimulatorAddress=localhost
; The address to which the server will bind the simulator and router services. If left
; blank, all detected network interfaces will be used.
;BindAddress=1.2.3.4
..
..
RouterPort=4242 ; Port to listen to router connections (login screen connect)
SimulatorPort=4300 ; Port to listen for simulator connections
HTTPListenPort=8080 ; Port to listen to HTTP requests. Set as zero to disable.
[/COLOR]
[COLOR=#24292F]The default configuration will work fine if you are setting up a server for your own use ('localhost'), but if you wish to make the server available to others over the internet, you will at least need to set [I]SimulatorAddress[/I]. If you are running multiple servers on the same machine, you can either :-[/COLOR]
[LIST]
[*]Configure an IP address for each server, and use [I]BindAddress[/I] in each instances ServerConfig.txt to bind to that address [RECOMMENDED].
[*]Use the same IP address for each instance, but change [I]RouterPort[/I], [I]SimulatorPort[/I] and [I]HTTPListPort[/I] in each instances ServerConfig.txt so that ports do not conflict.
[/LIST]
[COLOR=#24292F]NOTE: If you are setting up a cluster, MOST other options should the SAME on all nodes. For example, you do not want each shard to have different values for [I]CapExperienceLevel[/I], but something like [I]MOTD_Message[/I] is OK. This will eventually be fixed so such configuration is moved into the cluster database for all shards to share.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#logging-configuration"]
[/URL]Logging Configuration[/B]
[COLOR=#24292F]Logging is provided by EasyLogging ([URL]https://muflihun.github.io/easyloggingpp/[/URL]). See this site for detailed information on how logging is configured.[/COLOR]
[COLOR=#24292F]Server log configuration files are in the [I]Local[/I] configuration directory. As with other configuration files, before use you will need to copy the sample file :-[/COLOR]
[COLOR=#24292F]cp Local/LogConfig.txt.sample Local/LogConfig.txt
[/COLOR]
[COLOR=#24292F]If you are just starting out, there should be no need to change anything in this file. All logs by default will go to the [I]Logs[/I] folder.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#preparing-game-server-data-and-client-assets"]
[/URL]Preparing Game Server Data and Client Assets[/B]
[COLOR=#24292F]Having a running EE server on it's own in not much use, you will also need the [I]Game Server Data[/I] (i.e. all static data such as Quests, NPC appearances, Scenery and more), and the [I]Client Assets[/I] (i.e. all 3D models, Music, Sounds, Client Logic and more).[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#game-server-data"]
[/URL]Game Server Data[/B]
[COLOR=#24292F]We currently have two different Game Server Data sets that will run on this server. They are both stored in a separate GitHub repository - [URL]https://github.com/rockfireredmoon/iceee-data[/URL]. One is for 'The Anubian War' (currently under development), and one for 'Valkal's Shadow' (our current live and active server).[/COLOR]
[COLOR=#24292F]Assuming you are starting from the server source directory, it is recommended you clone the game server data repository into the same parent folder as the server source. This way the default file locations in [I]ServerConfig.txt[/I] are all ready setup as needed and ready to go.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#for-valkals-shadow-on-taw-engine"]
[/URL]For Valkals Shadow on TAW Engine[/B]
[COLOR=#24292F]If you want to work on Valkal's Shadow (on TAW engine), then clone the [I]valkals_shadow[/I] branch.[/COLOR]
[COLOR=#24292F]cd ..
git clone -b valkals_shadow [URL]https://git@github.com/rockfireredmoon/iceee-data.git[/URL]
cd iceee
[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#for-the-anubian-war-on-taw-engine"]
[/URL]For The Anubian War on TAW Engine[/B]
[COLOR=#24292F]cd ..
git clone [URL]https://git@github.com/rockfireredmoon/iceee-data.git[/URL]
cd iceee
[/COLOR]
[COLOR=#24292F]Both of these will go to the parent folder, clone the server data for the 'TAW' version of the game, and then change directory back into the server source folder (if you cloned the server source to somewhere other than 'iceee' folder, change accordingly).[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#client-assets"]
[/URL]Client Assets[/B]
[COLOR=#24292F]As with the game server data, we have two different versions of the Client Assets. Again, they are both stored in a Git repository under different branches. However, for various reasons we do not currently make this publically available. If you need assets, please contact us and we can provide you with a pre-built bundle.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#pre-built-client-assets"]
[/URL]Pre-built Client Assets[/B]
[COLOR=#24292F]You will be provided with a file name [I]iceee-assets.zip[/I].[/COLOR]
[COLOR=#24292F]Assuming you are starting from the server source directory, it is recommended you unzip this file into the same parent folder as the server source. This way the default file locations in [I]ServerConfig.txt[/I] are all ready setup as needed and ready to go.[/COLOR]
[COLOR=#24292F]cd ..
unzip /path/to/iceee-assets.zip
cd iceee
[/COLOR]
[COLOR=#24292F]This will go to the parent folder, unzip the assets for the appropriate version of the game, and then change directory back into the server source folder (if you cloned the server source to somewhere other than 'iceee' folder, change accordingly).[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#compiled-client-assets"]
[/URL]Compiled Client Assets[/B]
[COLOR=#24292F]If you have access to Client Assets Git repository, you can compile the assets from source. There are a number of tools you will need installed, see the README.md that will be cloned along with the source.[/COLOR]
[COLOR=#24292F]cd ..
git clone [REDACTED]
cd iceee-assets
ant
cd ../iceee
[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#running-the-server"]
[/URL]Running The Server[/B]
[COLOR=#24292F]You now have everything you need to run the server. Assuming you are in the server source directory, run :-[/COLOR]
[COLOR=#24292F]builddir/tawd -C
[/COLOR]
[COLOR=#24292F]The server will now start up with a default logging level of INFO output to the console.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#creating-the-user-accounts"]
[/URL]Creating The User Accounts[/B]
[COLOR=#24292F]Before logging on to the server using the client, you will need to create a user. The default configuration uses a built in user database.[/COLOR]
[COLOR=#24292F]First off, create an administrator account :-[/COLOR]
[COLOR=#24292F]builddir/eeaccount -i create admin 'mysecret' admin --roles=administrator
[/COLOR]
[COLOR=#24292F]You can then create accounts for your Sages (GMs) :-[/COLOR]
[COLOR=#24292F]builddir/eeaccount -i create sage1 'mysecret' sagegrove1 --roles=sage
[/COLOR]
[COLOR=#24292F]And finally acccounts for ordinary players[/COLOR]
[COLOR=#24292F]builddir/eeaccount -i create aplayer 'mysecret' playergrove1
[/COLOR]
[COLOR=#24292F]There are various other ways by which accounts by created, such as via HTTP calls. These are intended for integration with web sites.[/COLOR]
[B][URL="https://github.com/rockfireredmoon/iceee#server-daemon-command-line-options"]
[/URL]Server Daemon Command Line Options[/B]
[COLOR=#24292F]There are a number of options available to aid debuggging and running the process from service scripts and the like.[/COLOR]
[TABLE]
[TR]
[TH]Option[/TH]
[TH]Arguments[/TH]
[TH]Description[/TH]
[/TR]
[TR]
[TD]-d[/TD]
[TD]None[/TD]
[TD]Daemonize the server. Once initialized, the process will be forked and placed into the background[/TD]
[/TR]
[TR]
[TD]-C[/TD]
[TD]None[/TD]
[TD]Output all logging to the console as well as log files.[/TD]
[/TR]
[TR]
[TD]-p[/TD]
[TD][path][/TD]
[TD]Location to PIDFILE. The process ID of the server is written to this file once known[/TD]
[/TR]
[TR]
[TD]-c[/TD]
[TD][path][/TD]
[TD]Location to a [I]Local[/I] configuration directory (that contains ServerConfig.txt, LogConfig.txt and Cluster.txt)[/TD]
[/TR]
[TR]
[TD]-I[/TD]
[TD]None[/TD]
[TD]Flush log output immediately. Ordinarilly this is buffered to aid performance, but disabling this can help in some debugging situations[/TD]
[/TR]
[TR]
[TD]-L[/TD]
[TD][loglevel][/TD]
[TD]Set the default log level. Position values for include info, debug, error, fatal, trace, verbose or warning[/TD]
[/TR]
[/TABLE]
[B][URL="https://github.com/rockfireredmoon/iceee#installation"]
[/URL]Installation[/B]
[COLOR=#24292F]At some point, you will probably want to actually the server, or create installable packages for your distribution.[/COLOR]
[COLOR=#24292F]Again, working from build workspace 'builddir' :-[/COLOR]
[COLOR=#24292F][COLOR=var(--color-prettylights-syntax-constant)]cd[/COLOR] ..
meson configure --default-library=static -Dprefix=/usr -Dlocalstatedir=/var -Dsysconfdir=/etc -Dlocalconfigdir=/etc/tawd[/COLOR]
[COLOR=#24292F]NOTE: Old versions of Meson use a slightly different command that must be run inside the builddir.[/COLOR]
[COLOR=#24292F]mesonconf --default-library=static -Dprefix=/usr -Dlocalstatedir=/var -Dsysconfdir=/etc -Dlocalconfigdir=/etc/tawd[/COLOR]
[COLOR=#24292F]If you want to install as a service (e.g Windows Service, SystemD Service etc), then add this property as well:-[/COLOR]
[COLOR=#24292F]-Dservice=true[/COLOR]
[COLOR=#24292F]Finally run the install. You will probably need to run this as administrator if the files are installed in system locations (the default) :-[/COLOR]
[COLOR=#24292F][COLOR=var(--color-prettylights-syntax-constant)]cd[/COLOR] builddir [/COLOR]
[COLOR=#24292F]sudo meson install[/COLOR]