Adding a World

From HEWIKI
Jump to: navigation, search

He server.png Documentation on this page is intended for customers of HeroEngine managing their own server(s).

Contents

He advanced.png

This is an Advanced-level tutorial intended on how to set up the hardware and software for a new World in HeroEngine. For other types of instructions, see the Tutorials page.



See also: Master Control Console


Prerequisites for setting up a World


World Creation Introduction

At some point, you will find that you want to create additional worlds either as your development process matures requiring the addition of QA/Integration/Developer Test/Public Test worlds. For the typical use case, the addition of a new world entails:

Master Control Console supports both the export of existing worlds and creation/configuration/import for new worlds.


Installing Executables

1. Run the launcher using the config files specific to your company to install the FireStorm Daemons and HJServers. This will not work just by executing launcher.exe. There will be different files available for each licensee and/or world. There should be either be an individualized download page setup for your company, or files can also be obtained from the MMO Platform downloads page.

2. After the executables install, we need to create a couple of files:

 *
____________

<FireStorm>
<OutwardFacingIPAddress>xxx.xxx.xxx.xxx</OutwardFacingIPAddress>
<ReportedOutwardFacingIPAddress>xxx.xxx.xxx.xxx</ReportedOutwardFacingIPAddress>
<InwardFacingIPAddress>xxx.xxx.xxx.xxx</InwardFacingIPAddress>
<ReportedMachineName>ABCDEFGHIJKLMNOP-ALPHA</ReportedMachineName>
</FireStorm>


Setup Configurations for Master Control

See World Editor for instructions on using Master Control Console to generate world configurations and import world schemas.

For the initial setup of the support schemas, see Database schemas


Edit Config files on physical server the World will run on

Go to where the FireStorm Daemons are installed (C:\program files\Firestorm Daemons)

Sample fireup daemon config file. This is the default one installed by the installer.

<FireStorm>
<masterControlTransport>tcp:mastercontrol.heroengine.com:62455</masterControlTransport>
</FireStorm>

2. Edit LoopFireup.bat

Sample LoopFireup.bat

:top
FireStormDaemonsProd.sal
"..\hj servers prod\HJServersProd.sal"
_FireupDaemon.exe --application-uname=fireup
goto top


Final Steps

  1. Start the LoopFireup Daemon on your server
  2. Shutdown and restart Master control
    1. /shutdown
  3. Reconnect to Master Control
  4. Find and highlight your new world and press 'Fireup'

It's not uncommon for services to take longer than alloted to them to startup and you may get a 'time out' error. Usually you can ignore these errors and press 'Fireup' to continue to startup processes.


Adding a machine

The following steps explain how to use the Master Control Console to add another machine to the world for areas to run on:

  1. From the Master Control Console open the config editor with the Edit Config button.
  2. Select Fireup Daemons, then click the Add button.
  3. Enter the windows name of the machine and select the Server Group for that world.
  4. Click Save, then Exit
  5. Type /shutdown in the chat window to restart Master Control.
  6. Setup the new machine. See HeroEngine Server: Windows Server 2008.

To add a world, follow the steps at the top of this page, though you can skip the database parts of the directions for adding a world, just follow the sections about installing and configuring the new machine.

Note: Master Control’s load balancing system will evenly distribute dynamic processes between all running servers in a group. The daemon definitions in Master Control specify which server group dynamic processes such as Area Servers, Dude Managers, Repository Servers, and Physics Servers will run on.

Running Multiple Worlds on a Single Physical Server

Overview

The typical installation assumes that you utilize at least one physical server per world called a HeroEngine Server or World Server (a single database machine can service tens of worlds simultaneously). However, there are two different methods you can utilize that allow you to run multiple worlds on a single physical machine:


When Should You Run Multiple Worlds on a Physical Server?

The typical use cases for running multiple worlds on the same machine are:


When Should You NOT Attempt to Run Multiple Worlds on the Same Physical Server?


Using Virtualization

Our own use of virtualization was driven a need to be able to spin up fresh worlds for limited numbers of users without excessively increasing our hardware needs. Through the use of Xen and VM images, we can quickly set up a VM in a pristine starting state to host a newly created world created using Master Control's World Creation with a database export of one of our World Templates.

The HeroEngine Servers are all run virtual machines created using Xen running on Debian Linux and it is this virtualization technology with which we have the most familiarity. Virtualization Technologies vary in their capabilities, supported OSes, hardware support, and technical expertise necessary to install/maintain them. If you choose to utilize a Virtualization Technology, your own analysis of those factors may produce a different answer that what we came up with for our needs.

While we are happy to discuss our usage in general terms, we are not set up to support the usage of any particular virtualization technology and it is up to you to choose and administer the virtualization technology that matches your needs.

Benefits:

Limitations:


Our typical configuration for a physical machine intended to run VMs is an eight core CPU with at two gigabyte of memory available for each core allowing us to utilize one core for the Xen hypervisor running on Debian Linus and the remaining seven cores to run specific individual worlds often in a mix of Windows Server 2008 and Linux CentOS. The windows VMs also utilize QEMU for some functionality.

The major stumbling blocks in running HeroEngine Virtualized are:


Through Configuration Changes

This is an atypical use case, and is not generally recommended. And it will not work when needing to use multiple releases of HeroEngine binaries, such as when testing an upgrade strategy.

It is possible, though uncommon, to run multiple worlds on the same physical server through extensive configuration changes during the world creation process.

Benefits:

Limitations:


The major issue that must be overcome when running multiple worlds on the same physical server is that there are a variety of processes that bind to specific ports or ranges of ports (controlled through configuration via Master Control Console. That means with multiple worlds on the same machine they are (using their default configured values) attempting to bind to the same ports which results in a variety of unexpected behaviors which boil down to "things do not work right".

Using Master Control Console, you will need to edit the following configuration values selecting different values for the new world you are attempting to run on the machine.


Parm Name Parm Type Description Default value

Universe Parameters

Due to inheritance used by Configuration Parameters, you can make these changes at the Universe Level and it will percolate through provided that individual Processes are not overriding the Universe Parameter. Your default configuration may have some process level parameters set so it is important to verify and change or remove those overrides.

Changing poRouterPort, requires you change defaultPORouterTransport and ServiceDirectoryMatrixTransports as well.

defaultPORouterTransport string Transport string which identifies how to communicate with the Post Office Router process tcp:localhost:63333

If you change poRouterPort or you utilize a single service directory to support the multiple worlds you will need to change ServiceDirectoryMatrixTransports to update the new port or point all the worlds to the same port for the service directory.

ServiceDirectoryMatrixTransports string which service directories to talk to <pipe separated Service Directory PO Matrix Tranport strings>

You might choose to set each world to utilize a different DirectedProcessPortRange so that you can control access at the firewall.

DirectedProcessPortRange string range of tcp/ip ports to bind to for outward facing ports on the directed processes 10001-19999


Process Parameters

The SERVICE_DIRECTORY_DAEMON (<worldname>) needs to be told to utilize a different port by changing the DudeManagerTransport.

DudeManagerTransport string The transport string which specifies the port on which to listen for clients tcp::10357

The REPOSITORY_DUDE_MANAGER_DAEMON (<worldname>) needs to be told to utilize a different port by changing the <code>DudeManagerTransport. NOTE this must be a different one that you told the SERVICE_DIRECTORY_DAEMON to use.

DudeManagerTransport string The transport string which specifies the port on which to listen for clients tcp::10357


Configure World to Talk to the Same Service Directory

Odds are you want to utilize the same service directory for all of the worlds running on a particular machine, however by default each world has its own service directory created. Modify the ServiceDirectoryMatrixTransports to talk to your "main" service directory for your worlds by adding it to the parameter value using pipe "|" to separate each service directory to which you wish it to communicate.

tcp:hjflame.heroengine.com:64333|tcp:hjember.heroengine.com:64333|tcp:servicedirectory.play.net:63333

If you do not utilize the same service directory, then you will need to make sure that your Deploys also deploy an updated .cfg files that point to the appropriate service directory.

ex. HeroBlade.cfg


(optionally) Configure World to Talk to the Same Dream Manager Server

If you want to share tasks between your multiple worlds, you need to configure the worlds to talk to the same Dream Server by updating DreamManagerMatrixTransports.


See also

For use if you are running a world on an older version of HeroEngine, and need to upgrade to a newer version of HeroEngine
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox