GameCreateSolutionArchitectureDefinition

Welcome to GameCreate, a full-featured system commonly called a game panel but which we prefer to call a game server management system. This introductory chapter will explain what game panels commonly do, why we think a game server management system is different, and how GameCreate fits into the overall picture.

1. About Game Panels

For many years now, some game developers have created games that required the use of a dedicated server. For a while, running a dedicated server was an easy enough affair - install the game, maybe modify a configuration file or two and run the server program provided. Over time, however, this task became rather time consuming for two reasons:

  • ISPs started providing a wide array of dedicated game servers, which required the use of a large number of computers. Configuring each server by hand was tiresome and error-prone.

  • The number of different games requiring dedicated servers increased dramatically; each game had a different method of configuration that would have to be learned individually.

A variety of people noticed that these kinds of tasks could be simplified by the use of specialised computer software. From that, a variety of software packages called Game Panels were created that could alter configuration files and control a server using a web interface.

2. What GameCreate Is

GameCreate takes this basic functionality of game panels and then extends it to the next level by either simplifying or totally removing the tasks faced by a server administrator. Lets have a look at how a game server is created on a computer using GameCreate:

  • The GameCreate client software is downloaded and installed onto the computer. Note that you do not directly use the GameCreate client software, it is simply used to interact with the GameCreate.com website. At this point, you may never need to directly interact with that computer again.

  • Using the GameCreate.com website, you select to install Battlefield 2 on your computer. GameCreate installs the latest version of the game software available onto your computer.

  • Using the GameCreate.com website, you create a Battlefield 2 server on your computer. The server is configured using language that you can understand with reasonable default values supplied for you.

  • GameCreate starts the new server on your computer. GameCreate continues to monitor the server, reporting and correcting any issues so that you do not have to.

GameCreate makes the task of running game servers as easy as possible, while still providing the underlying configurability to support what your users want. In particular, GameCreate has a number of features we will learn about later that make it especially suitable for running tens or hundreds of game servers.

GameCreate is a centralized system - in particular, this means that you are not required to setup a web server, install the GameCreate web interface, and hope that you have followed the installation steps correctly. We manage the GameCreate service so that you can concentrate on the task at hand - managing game servers. This also means that any updates for GameCreate or the game software you install, can be obtained automatically from GameCreate with no extra work on your behalf.

3. What GameCreate Is Not

GameCreate is not a an end-user server rental service (although it can be used to create one). We do not provide game servers: we provide the ability to create and manage game servers.

As a GameCreate customer, you will need direct access to one or more computers on which you have permission to install the GameCreate client software.

4. GameCreate concepts

There are some words and phrases you should understand in the context of GameCreate before you begin. See Manual Glossary for a full reference.

* A game server, or Server as it is known in GameCreate, is the individual location that players connect to when playing a game. At the computer level, a server is a running instance of the dedicated server software provided by a game's developer. In particular, note that we will never use the word server when referring to an actual computer.

* A Host is a physical computer. Game software is installed on a host, allowing one or more servers to be run on the host. In GameCreate, a host is specifically a physical computer on which the Game Create Client software has been installed.

* A Game is the software and accompanying data files required to run a game server. A game can be installed on a host, allowing a game server to be created on that host. In particular, note that game modifications, or mods, are generally treated as separate games in GameCreate.

* A Domain is a virtual 'box' that GameCreate uses to store information on your servers, hosts, and games. It is also used to hold information about your games service, such as a name and contact email. As a GameCreate customer, you will receive your own domain name to access your domain and its contents.

The Game Create Service is the GameCreate.com web interface and associated software that the GameCreate client communicates with. Generally, we will not refer specifically to the 'service' and instead will just refer to GameCreate as a whole. However, we feel it is important to point out at a high-level how GameCreate works. By installing the GameCreate client on your host, you allow GameCreate.com and your host to communicate over the internet. In turn, by accessing GameCreate.com you can manage game servers on that host.

Next: Manual Requirements

To use GameCreate, you will require direct access to one or more computers on which you have permission to install the Game Create Client software.

The GameCreate client software can run the following operating systems:

  • Windows 2000 or newer

  • Linux

The GameCreate client itself does not have any specific processor or memory requirements. Game servers have varying requirements depending on the particular game and the number of players that you want the server to support. As a guideline, a 1.5ghz processor and 256mb of memory should be considered the absolute minimum for current games.

Next: Manual Installation

Before installing the GameCreate client, it is important that you first sign up to use the GameCreate service. See Manual Getting Started for more information.

The latest version of the GameCreate client is available at [WWW] http://www.gamecreate.com/downloads/ . We recommend installing the client using the administrator/superuser account: once installed, the software may be run as an unprivileged user. During installation, you will be prompted for:

  • Location

  • Domain Login

  • Domain Password

This information can be found in GameCreate on the Admin Domain Settings Page .

5. Starting GameCreate Client

The GameCreate client needs to be running at all times:

  • for Windows hosts, we recommend placing a shortcut to the GameCreate client in your Start Up folder.

  • for Linux hosts, we recommend starting the client from a script in the /etc/rc.d , /etc/init.d , or similar location. The details vary between linux distributions.

Once the GameCreate client is installed, return to the GameCreate.com website. The software you have installed is for communicating with the GameCreate service and can otherwise be ignored.

Next: Manual Getting Started

GameCreate.com is completely free for use on up to two computers so that you can trial the service for as long as you like. In this chapter we will guide you through the process of subscribing, connecting your first host computer to the GameCreate service, and finally starting your first game server.

Note: GameCreate is a service for managing game servers on your own computers. We do not rent game servers, though GameCreate can be used to run a rental service.

6. Subscribe to GameCreate.com

Before using the service, you will need to create a user account and a GameCreate Domain a virtual box in which all server information is stored. Visit the following address to begin the subscription process:

[WWW] http://www.gamecreate.com/subscribe.php

Choose the location of your host computers to proceed.

gs-createdomain.png

The first step of subscription is to enter the details for your new domain.

After reading the licence agreement, enter a Domain Name, Domain URL, and your Timezone. If you aren't confident of your choices you can change them later.

The Domain Name is important: not only does it identify the domain you are creating to the GameCreate, it is also automatically inserted into the server name of any servers you create.

Click 'Next' to proceed.

gs-domainlogin.png

On the second step you will need to choose a domain username and password. This is not for your personal user account (that comes next) - these login details will be used by the computer/s on which you intend to run game servers. When you install the GameCreate client software (later in this chapter) you will need to have these details handy, so make a note of them.

Once you have selected a username and password, click 'Next' to proceed.

gs-domaindetails.png

The third step is entirely optional, allowing you to enter details about your game service such as the website URL, email address, and location. If entered, GameCreate will use these details on server configuration files for games that support them. On supported games, this allows players to view these details while playing on your servers.

gs-chooseaccount.png

To finish creating your domain, an account must be selected as the Domain Administrator. If you have used GameCreate.com before, select "Use an existing GameCreate account" and supply your login details.

Otherwise, as a new user select "Create a new GameCreate user account":

gs-newuser.png

After reading the service agreement, enter your name and email address you can be contacted on. Select a username and password you wish to use to access your domain on GameCreate.com, and finally click 'Finish' to create your new domain.

gs-domaincreated.png

Your domain has now been created and is immediately available for use. You may wish to bookmark the displayed link so that you can easily login to your domain later. You can also login to your domain by visiting the GameCreate.com website, and clicking the "Login" link. You will need to know the region your domain was created in (for example: North America) and the name you gave to your domain.

For now, click the displayed link and you will be taken the login screen.

gs-login.png

Enter your user account details (as entered in Step 4 - remember, this is different to the domain login created in Step 2). You are now ready to start using your domain.

7. Add Your First Host

You have now succesfully logged into your new domain and it is time to start using GameCreate. However, before you can start making you need to connect your computer/s to the GameCreate.com service. To do so, you must install the GameCreate Client.

Note: GameCreate requires that your host computer have an IP address directly accessible from the internet. "Private" IP addresses are not currently supported.

gs-createhost.png

The information displayed (omitted from the above screenshot) briefly details how to add your first host. Either follow the on-screen prompts or continue reading this chapter for information on how to proceed. Be sure to keep your browser open while you install the GameCreate Client.

  1. Visit [WWW] http://www.gamecreate.com/downloads/ and download the client appropriate to your host computer's operating system (either Windows or Linux).

  2. Run the client installation as an administrative user (typically "Administrator" on windows, "root" on Linux)

  3. Start the GameCreate client - on Windows you can find GameCreate in the Start Menu's "Programs" folder. We highly recommend running the software with an unprivileged user account (ie, not "Administrator" or "root"). It is usually a good idea to create a new Operating System user to run the GameCreate Client with.

  4. You will be prompted to enter the domain's location, username and password.

    • The domain's location was the first selection in the subscription process (such as "North America" or "Europe"). It should correspond to the physical location of your host computer(s).

    • The domain's username and password were selected during Step 2 of the subscription process (it is not the details you used to login to GameCreate.com). If you have forgotten your selection, click the "Domain" tab in GameCreate and look for the "Domain Login" and "Domain Password" fields. Use your browser's Back button once you have the required information.

At this point the software should connect to GameCreate.com and display messages like this:

gs-runningclient.png

If you see any errors, double check the domain location, username and password you entered have the correct values.

Once you have the client software installed and running, you can safely ignore it. The software is only used so that GameCreate.com can remotely start game servers and install software at your request. All interaction with the GameCreate service is via the GameCreate.com website.

8. Run GameCreate Client at Computer Start-Up

The GameCreate Client needs to be running at all times so that GameCreate.com can start servers, install software, and generate statistics on your computer's resource consumption.

  • On Windows computers, we recommend placing a shortcut to the GameCreate client in your Start Up folder. You may wish to configure Windows so that after rebooting it will automatically login as the Operating System user you are running the GameCreate client with.

  • On Windows computers, we recommend starting the client from a script in the /etc/rc.d , /etc/init.d , or similar location. The details vary between linux distributions.

If you do not setup the GameCreate Client to run on computer start-up and your host computer reboots, you will need to restart the GameCreate Client yourself after each boot.

9. Install Your First Game

After installing the GameCreate Client, return to the browser window where you are logged into your GameCreate.com domain (if you have closed your browser, you will need to login back in).

Click "Next Step" to acknowledge you have installed the GameCreate Client. If the client has not connected yet, the following message will appear:

gs-hosterror.png

If you see this error recheck your client installation's domain location, username and password.

When your host is successfully connected to GameCreate.com, the next step is to install some game software on the computer.

gs-gamestep.png

Some basic GameCreate terminology is described (not pictured); see Manual Introduction for a more detailed explanation of some of the terminology used. Click the link at the bottom to select a game to install on your host computer.

gs-selectgame.png

Choose the game you wish to install and click 'Next'.

Note: GameCreate does not distinguish between retail games and mods. All are listed as games, so if you wish to install the Half-Life 2 modification called Dystopia you need to select "Half-Life 2: Dystopia" from the list, not "Half-Life 2" itself.

gs-installgame.png

You will be shown a summary of the actions GameCreate will take. In the picture, Counter-Strike Source is to be installed. As Counter-Strike Source requires Half-Life 2, Half-Life 2 has also been automatically included as well.

Click 'Install' to proceed.

gs-gameinstalling.png

Assuming that you currently have the GameCreate Client running, GameCreate.com will contact your host computer and begin copying the required files from GameCreate.com's content servers to your host computer. The installation progress is displayed on-screen.

If for some reason you do not have the GameCreate Client running, start it up on your host computer and the installation will begin.

The installation will continue without user interaction; there is no need to monitor its progress. Click 'Continue using GameCreate' to move to the final step of this chapter.

10. Create Your First Server

While your game installation proceeds, it is time to create your first game server.

gs-serverstep.png

Some basic tips on using the GameCreate interface are presented (removed in above picture); for a more thorough coverage see the next chapter Manual Interface.

Click the link at the bottom 'Create a game server on host' to move to the server creation screen.

gs-selectserver.png

When creating a new server, the first step is to select the game type for the server. At this stage we have only installed one game, so that is the only option available. To create servers for different games, install the game and then return to the "Create New Server" screen.

Having selected the game type for the server, click 'Next' to proceed.

gs-createserver.png

The "Create Server" screen is broken up into two sections. At the top are settings common to all servers: the host computer to use, the host port, the server's name, and so on.

The second half of the screen contains properties specific to the server's game (Counter-Strike: Source in the picture). These properties correspond to settings that would otherwise be entered manually into the server's configuration file(s).

Next to each property is a blue question mark. Move your mouse cursor over a question mark to view a description of what that property does.

For now, let's use the default settings. Click 'Save' to create the new server.

gs-serveroverview.png

You will be shown the Overview page for your new server. If the game software has not yet completed installation (as pictured) the status will be shown as "Updating". Once the installation completes, GameCreate will start the server and the status will change to "Running".

You have now created your first GameCreate-managed server. However, we have only scratched the surface of the functionality available to you through GameCreate. In the following chapters we will explore the functionality available such as:

  • Start, restart, or stop servers on multiple hosts with a single click.

  • Share configuration between multiple servers using templates.

  • Directly modify configuration files for a single server or an entire game.

  • Create multiple configuration file definitions which each server can choose between.

  • Allow users to book "temporary servers" for a few hours on your host computers

  • View detailed player and performance statistics across servers, games, or hosts

  • Grant additional users access to as little or as much functionality as you like, such as restarting a single server, managing servers for a single game, or creating servers on a single host.

  • Allow FTP access to host computers, which is particularly useful if renting servers

  • Configure your domain to authenticate against your existing user database, allowing your website's users to access GameCreate.com with the same username and password.

Be sure to keep reading for information on these and many other features.

Next: Manual Interface

GameCreate.com's interface has been designed to streamline the workflow involved in managing game servers. We will discuss how the information architecture is set up, along with the specific interface features that can make GameCreate.com easier to use. Much of the information here can be derived from simply using GameCreate, so casual users may wish to skip this chapter. If you want to make the most of GameCreate and all it has to offer please keep reading.

11. Tabs

interface-tabs.png

The top level of tabs corresponds to the concepts discussed in Manual Introduction: ?Servers, ?Games, ?Hosts and ?Domain.

  • The Servers tab displays a list of all game servers currently being managed by GameCreate (that you have permission to access). Clicking on a particular server allows you to view information and modify settings pertaining to the server. Manual Servers discusses servers in detail.

  • The Games tab displays a list of games that have been installed onto at least one host. Clicking on a particular game allows you to view information and modify settings pertaining to that game; you will also see a list of servers for the game. Manual Games discusses games in detail.

  • The Hosts tab displays a list of hosts you have registered with GameCreate. Clicking on a particular game allows you to view information and modify settings pertaining to that host; you will also see a list of servers on the host. Manual Hosts discusses hosts in detail.

  • The Domain tab holds all other information and settings that do not pertain directly to servers, games, or hosts. Manual Domain has further discussion on this tab.

Whenever a server, game, or host is displayed the second-level of tabs is displayed consisting of an Overview section along with various other sections such as Configuration, Statistics, and Permissions. This second level of tabs allows you to move freely around the configuration and information pages relevant to that server, game, or host without returning to the Overview page.

12. There Is More Than One Way

The three tabs Servers, Games, and Hosts are not discrete areas of GameCreate.com - they are simply starting points that allow you to navigate in the way that works best for you. For example say you had a Counter-Strike server called "Test Server" running on the host named "My Host" and you wish to view its statistics. You can navigate to "Test Server" in three ways:

  • Click the Servers tab. The "Test Server" will appear on this page; however if you have a lot of servers it could be time-consuming to find.

  • Click the Games tab and then click on "Counter-Strike". On the Overview page that loads, you will see "Test Server" in the Counter-Strike Servers list.

  • Click the Hosts tab and then click on "My Host". On the Overview page that loads, you will see "Test Server" in the My Host Servers list.

So to find a server, you do not necessarily need to go through the Servers tab to get there.

The Overview pages for servers, games, and hosts all contain links to related areas:

  • Each server's Overview page links to the game and host for the server.

  • Each game's Overview page links to the servers of the game type and the hosts which have the game installed.

  • Each host's Overview page links to the servers on the host and and the games installed on the host.

Remember, the top-level tabs are starting points. As you need related information, it may be more convenient to use the Overview pages to find related information.

13. Quick Links

GameCreate.com contains a feature called ?QuickLinks which enables easy access to particular sections of the site. Whenever you see a link with a double underline like this:

interface-quicklink.png

You have encountered a Quick Link. Besides acting like a regular link (which in this case would display the server's Overview page), a Quick Link can also be access with the right mouse button which produces a menu like this:

interface-clicked-quicklink.png

This particular menu allows access to the Configuration, Files, Statistics or Permissions sections of the server. Click a selection with the left mouse button to jump directly to that page.

As you become familiar with the GameCreate.com interface, Quick Links will provide a major boost in productivity allowing you to navigate directly to the section you are interested in.

Quick Links are shown for servers, games, and hosts providing appropriate shortcuts for each. They have a secondary "Summary" facility that is invoked by moving your mouse cursor over a Quick Link and not clicking. After one second a summary of the Quick Link appears such as the following:

interface-info-quicklink.png

This facility can be quite useful when combined with the Navigation Bar discussed later.

14. Breadcrumbs

Breadcrumbs are displayed on the grey bar near the top of each page: they represent your current location in GameCreate's hierarchy:

interface-breadcrumbs.png

Note in the example that the current game is displayed with a Quick Link.

15. Navbar

The Navbar is an optional part of the interface: click the 'Show Navbar' link displayed on any GameCreate.com page to enable it.

A side bar will open that displays links to items related to the currently displayed section. The following example shows a user who has clicked on the "Games" tab, entered the "Alien vs Predator 2" overview and lastly selected the "Alien vs Predator 2 Overrun" server:

interface-navbar.png

It is worth mentioning that this side bar remembers which tab you used as your starting point: Servers, Games, or Hosts. In this example the user started with the "Games" tab and so the sidebar contains all installed games. When interacting with a particular game, the servers for that game are displayed as an indented beneath the game. This allows for rapid navigation between game servers of a particular type.

The Navbar utilises the Quick Links discussed previously. In combination, the Navbar and Quick Links can be used to move rapidly between otherwise distant areas.

16. Icons

GameCreate.com utilises icon conventions designed to aid in conveying information without utilising additional display space. In particular:

  • Games are displayed using the icon imagery supplied by the manufacturer.

  • Servers are displayed with either a green arrow pointing up, a red arrow pointing down, or an orange circle with an hourglass in the center. When there is enough space, a larger icon is displayed with the green, green or orange indicator overlayed onto the game's specific icon. The green arrow is displayed when the server is running; the red arrow when the server has been taken offline; and an orange circle with an hourglass is displayed when the server is busy, such as when it is starting, stopping or the server host is updating software related to that server.

  • Hosts are displayed with a "computer" icon. The computer's screen is blue when the host is functioning correctly, or red when the host is currently not connected to GameCreate.

17. Screen Resolution

GameCreate.com is best suited to a display of at least 1024x768 pixels. While it is usable on a smaller resolution, when a width of 800 pixel or less is utilised GameCreate is unable to display two columns of information. Additionally, the interface tabs may be forced to display in two rows.

Next: Manual Servers

In Manual Introduction you learned what a game server is, and in Manual Getting Started you were given a guided tour of getting a game server up and running in GameCreate. In this chapter, we will explore exactly what servers are and how they can be manipulated within GameCreate.

As you may have read, along with your regular game servers (which we usually called permanent servers) GameCreate has a unique feature called temporary servers. While permanent and temporary servers have much in common, the interfaces used to create and manipulate temporary servers is vastly different. This chapter deals only with permanent servers - Manual Temporary Servers explains what temporary servers are and how to utilise them.

18. What Are Servers

A general definition for a game server would be an instance of a program running on a computer (called a process) to which players on the internet may connect to in order to play with or against other players around the world. Starting programs, configuring the program and data files used by the program, and making this as easy as possible is what GameCreate is all about.

In GameCreate, a server consists of:

  • Some basic information such as the host, game, and server name.

  • Some game-specific configuration values - for example, the map the server starts on.

  • A selection of game-specific configuration files.

  • A selection of server-specific configuration files.

19. Create A Server

Before creating a server, you must first add the host to GameCreate and then install the desired game onto the host. Manual Getting Started will lead you through the process of adding a host and installing a game. Alternatively, you may refer to Manual Host and Manual Game for more in-depth information.

Having added your host and installed the game, it is time to add the server. To do so, log into the Game Create Admin interface and click on the Servers tab.

servers-overview.png

From the Servers page, click on Create a New Server. You will be presented with a list of games that have been installed (if you have not installed any games yet, you will instead be instructed to install a game first). Choose one of the games from the list and click Next.

server-configuration.png

On the next screen you will be presented with a configuration panel divided into two sections: Server Properties and [Game Name] Properties. The Server Properties are:

  • Game: The game you selected for this server.

  • Host: Select a host from the list of hosts that have the game installed.

  • Host Port: Every server on a host has a unique Host Port. In general you can leave this setting alone: GameCreate will choose an appropriate default value for you.

  • Public Listing: If enabled (and the game supports it) the game server will appear in server browsers. This also affects if the server will appear in GameCreate's XML server status (see Manual Xml Status)

  • Restart Schedule: Game developers are often not particularly adept at writing programs intended to run indefinately, which can result in servers that either slow down, become eratic, or outright crash. GameCreate can restart your server at a convenient time each day to guarantee good performance during normal usage hours.

  • Name: This is the name used to identify the server in GameCreate. It is also used as the server's name in-game and in server browsers.

  • Maximum Players: The maximum number of players who can connect to the server at one time. GameCreate will limit your input based on what the selected game supports. It is also worth noting that a larger Maximum Players setting will require a faster computer to host the server on.

  • Command Line: This is the command line arguments passed to the game program. Unless you have very specific requirements, you can almost certainly use the default supplied by GameCreate.

Following the Server Properties are the game-specific properties. Game-specific properties are a feature of GameCreate that allow you to alter many settings without ever modifying a configuration file. You can learn more about properties in Manual Game .

There are a few idioms to note when using the configuration panel:

  • Default values are displayed in grey; modified values are displayed in white. This allows you to see at a glance which settings are default and which are not. In the example screenshot, Rcon Password has been modified to a value of 'rcon'.

  • When text boxes are modified they will display a a link called 'Default'. If clicked, it will reset the property to its default value.

  • Properties have a blue help icon next to them, which when hovered over displays a yellow window with information about that property. The same information appears when you give focus to an input control (such as when typing 'rcon' in the screenshot)

Default values are more than just a convenience in GameCreate. Default values are inherited from the game - this means that if you modify the default property within the game, all servers that are currently on default value for that property will automatically start using the new default value. This is a powerful mechanism that allows you to quickly configuration settings across all your game's servers. You can learn more about default property values in Manual Game; later in this chapter we will also learn about GameTemplates which are a way of sharing property values between a set of servers.

20. Finding Servers

There are a number of way to reach a server's Overview page:

  • Click on the Servers tab. Click on the name of a server to move to that server's Overview page.

  • Click on the Games tab and then click on a particular game. On the game's Overview page is a list of servers for that game. Click on the name of a server to move to that server's Overview page.

  • Click on the Hosts tab and then click on a particular game. On the game's Overview page is a list of servers for that game. Click on the name of a server to move to that server's Overview page.

All three methods are equivalent: which you use is up to you.

21. Server Overview

A server's overview page summarises its status and configuration. From the Overview page you can reach various configuration and information areas for the server.

server-overview.png

At the top is a row of tabs: Overview, Configuration, Files, Statistics, and Permissions. The screen is divided up into four sections:

21.1. General Information

  • Game: The game type of this server, linked to the game's Overview page.

  • Host: The host for this server, linked to the host's Overview page.

  • Physical Address: The IP and port the server is running on; can be given to players to connect to the game server.

21.2. Server Status

  • Status: Shows what GameCreate is doing in regards to this server. One of:

    • Running - the server has been succesfully started

    • Starting - GameCreate is attempting to start the server

    • Restarting - GameCreate is restarting the server

    • Stopping - GameCreate is attempting to stop the server

    • Stopped - GameCreate has stopped the server

      When the status is not Running or Stopped (that is, when the server status is transitioning) GameCreate will update the page every few seconds to inform you of changes to the server's status.

  • Start: (when server is stopped) Click to start the server.

  • Restart: Click to restart the server - this is equivalent to clicking Stop, waiting for the Status to change to Stopped and then clicking Start.

  • Stop: (when server is running) Click to stop the server.

  • Failure Reports: Shows entries from the system log for this server and allows you to request email alerts for failures.

  • Last Started: Shows the last time GameCreate successfully started this server.

  • Last Failed: Shows the last time GameCreate detected a failure for this server.

  • Restart Schedule: Shows how often this server is automatically restarted.

  • Players: A list of players currently connected to the server.

21.3. Server Properties

  • Command Line: Shows the command line that will be used when starting the server

  • Non-default property values: For each property of this server that is set to a non-default value, the property's name and selected value are listed.

  • Modify Server configuration: Takes you to the server Configuration page.

21.4. Server Management

  • Create a copy of this server: Opens the Create a New Server page, with the configuration of this server entered as the defaults for the new server.

  • Remove this server: Displays a confirmation prompt that if accepted will remove this server. The server must be stopped before you can remove it.

Near the top right you can see the Notes interface which is covered in Manual Notes. Notes allow you to leave messages about the server for other server administrators.

22. Server Configuration

To modify a server's configuration, click on Configuration on the server's Overview page. Earlier in this chapter we discussed creating a new server: much of the process for editing an existing server is the same so refer to Server Configuration if you need a refresher.

When modifying a server's configuration, you are only modifying the configuration as stored within GameCreate. This means that a running server will not automatically receive any changes you make. If you wish to update a running server, make the configuration changes and then click Restart on the server's Overview page.

There are two settings you can not change while a server is running: the Host and Host Port settings. To change the host or host port, first click Stop on the server's Overview page. Next, modify and save the server's host and/or host port. Finally, click Start on the server's Overview page to start the server on its new host.

22.1. Server Templates

As we saw earlier, a game server inherits its default property values from the game. However, this isnt the whole story: GameCreate supports a second layer of default properties called Templates. You will learn how to create templates later in Manual Game: for now, we will discuss briefly what a template is and how to use them on the Server Configuration page.

server-template-configuration.png

Once one or more templates are created for a game, servers for that game will have the Server Templates panel appear at the top of the Configuration page. In the sample screenshot we have added a template called 'My Rcon Password' to the server. You can see its effect reflected in the Rcon Password property further down the page where the text 'Inherited from template: My Rcon Password ' is displayed. RCON Password has the value 'rcon' but notice that the text input area is grey: as stated earlier, a grey text box indicates a default value.

So, this server now has a new default value for Rcon Password which it inherited from the 'My Rcon Password' template. Why use templates instead of setting the RCON Password directly on the Server Configuration screen? Multiple game servers. GameCreate is built to make running large numbers of servers easy: and part of that means making it easy to change property values on many servers at once. If we were to modify 'My Rcon Password' to supply a different default value, all servers using that template will receive the change.

Note that template values can still be overridden: we could modify 'RCON Password' property to be set to 'myrcon' at which point the text box would appear white to indicate a non-default value. While using a non-default value the server will not be able to use changes made to the 'My Rcon Password' template.

The Server Templates panel allows adding and removing any templates defined for the game. While not displayed in the screenshot, templates also have a conflict resolution order. (In the screenshot, 'My Rcon Password' is #1). This is only of relevance when a server contains two or more templates that supply a default value for the same property. When conflicts do occur, templates with a higher number (that is, towards the bottom of the page) override templates with a smaller number (towards the top of the page). The template order can be altered by using the Up and Down controls provided.

23. Server Files

If the Server Configuration page does not allow you to create exactly the configuration you require, one option is to modify a server's configuration files directly (another option is to create new properties - see Manual Game for details). to view or modify a server's configuration files, open the server's Overview page and click the Files tab.

23.1. File Listing

The Server Files page lists the files currently in use for the server. Each row of the table represents one specific file that will be written to disk. Aside from providing the option to modify configuration files, GameCreate can also store a variety of definitions for a given file (see Manual Game for information on creating new definitions). For example, a configuration file server.cfg may have two definitions in GameCreate: one for normal gameplay and one for competitive gameplay. The Files page allows you to choose between definitions if more than one is available.

server-files.png

The columns on the Server Files page are (from left to right):

  • Filename: The file's on-disk name, relative to the installation folder for the server's game.

  • Name: A descriptive name describing the purpose of the file. The name can appear in two ways:

    • Normal text: This is the one (and only) definition for this filename.

    • Drop down list: There are multiple definitions for this filename; the currently selected definition is shown. To select a different definition, simply make a different selection using the drop down list.

  • Preview: Displays a complete printout of the file, as it will be written when the server starts.

  • Edit: Allows you to modify the configuration file.

  • Revert: This link appears if you modify a file. It allows you to switch back to using the original game file.

In GameCreate, files come in two flavours: Game files and Server files. Game files are shared by all servers of the same game type. Server files, on the other hand, are only used by the server for which they are created.

In the screenshot shown earlier, the first listed file is a Server file - GameCreate always uses the name "Server File" for server files. The remaining files are all Game files. Each game file has a link next to its name labelled Game File - following this link will take you to the Game Files section to modify the file (again, see Manual Game for more information). Which brings us to the Edit link, which for server files will allow you to edit the file, but will create a server file copy for game files. In particular, this means if you click the Edit link for a game file, you will actually create a new server file.

Of course, all of this may not matter to you - clicking Edit will always allow you to modify the file used for the server, without affecting any other servers. Use the Game File link if you want to make changes that will affect all servers for the game.

The Add Server File link can be used to create a new configuration file just for this server.

23.2. Add/Edit Server File

The Add and Edit Server File pages are identical in functionality, and so are discussed here together. After identifying the file you wish to modify on the Server Files page, click the Edit link.

server-editfile.png

The Edit Server File page has the following sections:

  • Filename: The on-disk filename of the configuration file, relative to the game's installation folder.

  • File Contents: The actual data that will be written to the file. The File Contents may contain property values and/or make use of the GameCreate file language (See Manual File Language for more information).

  • Update Frequency: This drop down list allows you to determine when this file is written to disk. Most games will ignore files after the server is started, so generally you can leave this setting at the default. However, some files (in particular banned user lists) can be read by the server while it is running. Using this setting, you can ask GameCreate to periodically update the on-disk file.

    • When server is started: The file is only written when the server starts.

    • Every ten minutes: The file is written at server start and then every 10 minutes.

    • Every sixty minutes: The file is written at server start and then every 60 minutes.

As we discovered earlier, GameCreate supports the use of properties as an easy way to enter configuration values. If you choose a property from the drop down list and click Insert Property, a word of the form %property% will be inserted. When the configuration file is written to disk, the %property% word will be replaced with the value chosen in the server's Configuration section.

GameCreate can integrate with external systems by allowing such systems to upload the file contents; Manual External File Definitions explains how to use this feature. If you do use remote file uploads you can leave the File Contents blank, as it will be replaced by the remote upload.

When you are satisfied with the changes you have made, click Save to save your changes.

24. Server Statistics

The Server Statistics lets you monitor player numbers and hardware resource consumption for the game server. To view a server statistics, visit the Overview page and click the Statistics tab.

To learn about the statistics feature in GameCreate, see the Manual Statistics chapter.

25. Server Permissions

The Server Permisisons page lets you control who can access the game server in GameCreate and what actions they can take. To view or modify a server's permissions, visit the Overview page and click the Permissions tab.

To learn about assigning permissions in GameCreate, see the Manual Permissions chapter.

Next: Manual Temporary Servers

So far our discussion of game servers has centered on permanent game servers: that is servers that are (more or less) intended to be running and available indefinitely. In this chapter we will cover temporary game servers: servers that have a specific start and end time. GameCreate not only has full support for such servers but provides an easy to use "self-service" interface for players to create temporary servers.

26. What Are Temporary Servers

Temporary servers have two distinguishing features from permanent servers:

  • Temporary servers have a definite start and end time. For example, a temporary server may run from 7:00pm to 9:00pm.

  • Temporary servers can be created (or "booked") by the general public; no special permission is required to create such a server.

If that second point has you worried, it is important to know that the ability to create temporary servers needs to be explicitly enabled by an administrator. GameCreate manages a pool for each game of hosts that can be used to create temporary servers for that game. Each game's pool of hosts is empty until an administrator allocates one or more hosts to that pool.

In GameCreate, games are allocated to one or more hosts on which users can create temporary servers. This allocation does not need to be exclusive: permanent servers may be created on a host also allocated to temporary servers.

27. Allocating a Host for Temporary Game Servers

To allocate one or more hosts to a game to be used in the creation of temporary game servers, visit the game's Overview page and click the Temporary Servers link.

28. Accessing the Temporary Servers Self-Service Interface

Once you have allocated one or more hosts to a game, it is time to let players create temporary servers. GameCreate features a easy-to-use "self-service" interface available at [WWW] http://yourdomain.cc.gamecreate.com/bookings/ . From here, players can:

  • Create an account (if they do not have one)

  • View a calendar of temporary servers that have been booked by themselves or other players: if your game service is popular, this feature is invaluable to allow players find an available booking time

  • Create a booking for their own temporary server

  • Modify or view details for bookings they have made

The Self-Service interface uses the same user accounts as the main GameCreate administration area - in particular, this means if you choose to use GameCreate's external authentication feature, players can login with their account from your website.

As of v5.1, the GameCreate client includes a built-in FTP server that can be used to transfer files to or from each host. The FTP server is disabled by default.

  1. Enabling FTP servers
  2. Permissions
    1. Example
    2. Basic FTP: Uploads and Downloads
    3. Advanced FTP: Permissions based on access lists
    4. Per-User Configuration
    5. Per-Host Configuration
    6. Speed Limit Control

29. Enabling FTP servers

To begin using GameCreate FTP, you must first enable the FTP service. Click on the Domain tab to access the domain configuration area. Click on the FTP Admin tab. The checkbox labelled "Allow users with suitable permissions to FTP to hosts" and a section to control Uploads and Downloads will appear if running in Basic FTP Mode (chosen by default).

basic-ftp.png

At this point, you may opt to click Save to enable restricted FTP to all your hosts. Alternatively, read on for further information on the configuration choices available including restricting which hosts will have FTP access.

Each host's FTP server runs on port 2121. A Server's Files page will show the correct IP and Port combination to use to access that server's files over FTP.

In order to access FTP for a given Host or Server, you first locate which Host a given Server is located on and then FTP to that Server's Host Address on port 2121. You do not enter your GameCreate URL (such as example.au.gamecreate.com) as the FTP server in your FTP Client, rather, you enter the Host computer's IP Address (Found on the Server Overview page) that is running your game Server.

GameCreate's FTP server only supports passive transfers. Most modern FTP clients will use passive transfers by default, but others may need to be configured explicitly. Consult your FTP client's documentation for further details.

When FTP support is disabled, new FTP connections will be denied immediately, and any active FTP sessions will be disconnected within a few moments.

30. Permissions

GameCreate's built-in FTP server is tightly integrated with GameCreate's permission system. GameCreate's FTP access uses the following rules:

  • Users must login using the same username and password they use to access GameCreate.com.

  • Users can only enter game directories they have (at least) read access to.

  • For each game server a user has permission to access, that user has the same level of access to the game's installation directory for the server.

There are two important points to note here about how GameCreate handles game installations:

  • Game installations are performed by copying the appropriate files into a directory that is shared by all modifications (or "mods") of a particular game. This means that a user with access to a modification can access all files for that modification's parent game type.

  • Subdomains do not share game directories with each other (or their parent domain). This ensures each subdomain has its own installation of games so that modifications made via FTP to the subdomain do not affect other subdomains' users.

  • Advanced FTP Mode (Click Switch to Advanced) may be used to tightly control FTP Permissions to accomodate game mods.

30.1. Example

This may be easier to understand with an example. Consider the following domain setup:

  • Three hosts, named "Host A", "Host B" and "Host C".

  • All three hosts have "Quake 3: Arena" installed at C:\GameCreate\quake3

  • "Host B" has "Rocket Arena 3" installed. "Rocket Arena 3" is a modification of "Quake 3: Arena", so it is also installed at C:\GameCreate\quake3

  • "Host B" has "Battlefield 2" installed at C:\GameCreate\bf2

  • Four servers:

    • "Quake 3 #1" is a "Quake 3: Arena" server running on "Host A"

    • "Quake 3 #2" is a "Quake 3: Arena" server running on "Host B"

    • "Test Me" is a "Rocket Arena 3" server running on "Host B"

    • "BF4EVA" is a "Battlefield 2" server running on "Host B"

  • John has the write permission on all "Quake 3: Arena" servers

  • Beth has the write permission on the "Test Me" game server

If FTP were enabled:

  • John has write permission on all Quake 3: Arena servers. There is at least one Quake 3: Arena server on "Host A" and "Host B", so John could connect to "Host A" and "Host B" and access the C:\GameCreate\quake3 directory.

  • Beth has write permission on the "Test Me" game server, which is on "Host B", so Beth could connect to "Host B" and access the C:\GameCreate\quake3 directory.

Note that John and Beth can both access C:\GameCreate\quake3 on "Host B", despite them being different game types. In particular, this means that John could download the "Test Me" configuration file. IF you have different sets of user permissions for a game versus its modifications (and you do not trust your users), take one of the following steps:

  • Do not install different modifications of a game on the same host

  • Use one or more subdomains to force the software to be installed in a different location

  • Enable Advanced FTP Mode and define appropriate permissions per game to restrict the access each user may have based on their server's game.

In the above example, a few directories were inaccessible:

  • On "Host B", C:\GameCreate\bf2 was inaccessible. While there was at least one "Battlefield 2" server on "Host B", no one had permission to access it.

  • On "Host C", C:\GameCreate\quake3 was inaccessible. While John has appropriate permission on "Quake 3: Arena" servers, there were no "Quake 3: Arena" servers on "Host C" which meant he could not access it.

If a user does not have permission to access any servers on a host, FTP login attempts will be rejected.

30.2. Basic FTP: Uploads and Downloads

You may add additional restrictions to user's abilities to upload and download beyond the standard read/write permissions described in the previous section. The choices available for uploads are:

  • Do not permit uploads. The user can not upload any type of file.

  • Allow non-executable uploads. The user can upload any file that is not "executable", based on the file's extension. Executable files are regarded as having an extension of .exe , .dll, .com, .bat, .pif, .so, .py. In addition, Linux hosts will prevent the user from overwriting a file that has its execute bit set.

  • Allow all uploads. The user can upload any file at all, regardless of extension. Linux hosts still will not permit the upload of executable bit files.

The default upload option is Allow non-executable uploads, which provides some basic security against users trying to take control of a host by uploading executable code. This is particularly useful in a server rental environment.

The choices available for downloads are:

  • Do not permit downloads. The user can not download any type of file.

  • Allow text-file downloads. The user can only download a file that is regarded as being a configuration or log file, based on the file's extension. Text files are regarded as having an extension of .txt, .ini, .cfg, .log.

  • Allow all downloads. The user can download any file at all, regardless of extension.

The default download option is Allow text-file downloads, which lets user retrieve configuration and logging information without allowing users to download copyrighted game files that may not be distributed.

If "Do not permit uploads" and "Do not permit downloads" is selected, FTP servers will be turned off entirely. This is useful if you wish to use the per-host configuration (see next section) to allow access to only one or two of your hosts.

30.3. Advanced FTP: Permissions based on access lists

Advanced FTP Mode allows you to control access permissions to specific resources (both uploads and downloads) on a per host, user and global basis.

Permissions are defined on the 'Default Permissions' and 'User Permissions' tabs found at the top while running in Advanced FTP Mode.

On the FTP Overview section, you can choose what action GameCreate should take when a user requests a file to be uploaded or downloaded that has no matching FTP Rule. The default action is to Deny any attempt that was not explicitly permitted in the Default/User Permission sections.

Default Permissions Permissions for Advanced FTP access are controlled via FTP Access Control Lists (ACLs).

ACLs allow you to define permitted uploads and downloads based on file/folder names and using wildcards.

The permission list is evaluated from the top down, and as soon as a matching rule is found to permit or deny a user's request, that result is used.

Access control may be defined on a per game, package or global level.

Game level permissions are applied to a users FTP session when they have permission to read/write that game. Package level permissions are applied when a user has read/write access to a game which uses that particular package. Default level permissions are always applied.

advanced-ftp.png

For a user to be permitted to (for example) download a file called 'server.cfg' under the 'cstrike/cfg' folder, you would need to:

  • Select Counter-Strike from the 'Game or Package' list

  • Add a new Permit rule for '.cfg' in the 'Extension' type drop down and a direction of 'Download' (or Both).

  • Add a new Permit rule for 'cstrike/cfg/*' in the 'Path' type drop down a direction of 'Download' (or Both).

A user may now login to FTP and download .cfg files from the cstrike/cfg folder.

Paths are relative to the game's installation directory, in this case it would be (for example) c:\games\hlserver.

It's also possible to restrict only downloading .cfg files from the cstrike/cfg folder (regardless of what is listed in the Permitted list of extensions) based on a Permit rule for 'cstrike/cfg/*.cfg' in the 'Path' type drop down. You still require an extension of '.cfg' to be downloaded however.

Do not show files in directory listing that have a Deny Download rule When a Deny rule is explicitly defined for the active permission group, files/folders matching a Deny rule will be hidden from the directory listing of a user's FTP session.

User Permissions The same rules apply to this area as the Default Permissions, except that a user may have specific permission's replaced instead of using the Default Permissions for the chosen Game or Package.

Rules that are not overridden are still inherited from the Default Permissions area.

30.4. Per-User Configuration

While running in Advanced FTP mode (See above for details) user permissions may be defined on a per user basis by accessing the User Permissions section of FTP Admin.

30.5. Per-Host Configuration

Each host defaults to using the FTP settings as configured on the Domain FTP Admin page. You are also able to change the FTP settings on a host-by-host basis. Advanced FTP allows per-user permissions to be defined.

To change the FTP settings for a host, visit the host's Overview page and click on Configuration. Click the "Override the default FTP settings" checkbox to display the host's FTP settings. Uploads and Downloads can be configured in the same manner as the Domain FTP Admin screen (see the previous section "Uploads and Downloads" for details).

If FTP has not been enabled for the domain, the message "FTP is currently disabled for this domain." will appear instead. FTP access must be enabled via the Domain FTP Admin screen - even if "Do not permit uploads" and "Do not permit downloads" are the selected options.

When FTP support is disabled on the Domain FTP Admin page, it is disabled on every host, regardless of any overridden configuration.

30.6. Speed Limit Control

GameCreate Client can enforce an overall combined upload/download transfer speed per host. This value is not per user, but per host. This allows you to throttle the total bandwidth used by the FTP Server for file transfers to prevent the host from using up too much bandwidth from user FTP sessions, which may interefer with game servers running on the host.

With a transfer limit speed of 128KB/sec, two users may be uploading/download files at the same time, and they will be allocated half of this bandwidth during their transfers. If a user's transfer completes, their reserved bandwidth is given back to any other connected users to allow them to complete their transfers faster.

FTP Speed throttling may be disabled by selecting No Limit.

As a GameCreate customer, your domain comes supplied with configuration files already setup and ready to use.

GameCreate also allows you to modify and store configuration files either for an entire game or a specific server (see Admin Server Files Page and Admin Game Files Page for details on adding or modifying files).

GameCreate uses a simplified interface for server configuration that allows the user to pick values for a series of properties (see Manual Game for information on configuring properties). The values chosen on the server configuration page are then inserted into the configuration file. The GameCreate File Language specifies the manner in which properties are inserted into and manipulated in configuration files.

  1. Overview
  2. Literal Text
  3. Substitutions
    1. Built-In Properties
    2. Game Properties
  4. Tags
    1. Syntax
    2. Arithmetic
      1. Format
      2. Examples
    3. Conditional Block
      1. Format
      2. Examples
    4. List Block
      1. Format
      2. Examples
    5. Remote Includes
      1. Format
      2. Example
    6. Substrings
      1. Format
      2. Examples
    7. Regular Expressions
      1. Format
      2. Example
    8. Date Formatting
      1. Example
    9. Random Numbers
      1. Format
      2. Example
    10. Hash Generation
      1. Format
      2. Example

31. Overview

Consider the following snippet of a configuration file which you would like written to disk:

name "My Server"
serverPort "14500"
queryPort "14510"
timelimit "20"

The appropriate properties are set up in GameCreate: Server Name and Host Port are built-in, and a game property for the Time Limit. The following file definition could use the properties from GameCreate:

// My Configuration file
name "%server:name%"
serverPort "%server:port%"
queryPort "<gc:eval>%server:port% + 10</gc:eval>"
timelimit "%timelimit%"

When GameCreate needs to write the configuration file to disk (such as when starting a game server), GameCreate will apply a series of rules to the definition to determine the final data to be written. These rules can either insert values in a server's configuration or manipulate values to fit the configuration file's requirements.

The configuration file above demonstrates the three types of text encounted in configuration files. Each type has separate rules that govern its usage:

  • Literal text. Parts of the file like // My Configuration file and name are simply written to the configuration file and do not have any specific rules.

  • (Property) Substitutions. Parts of the file like %server:name% and %timelimit% when encountered, are replaced by the value of the named property.

  • Tags. Parts of the file like <gc:eval> and </gc:eval> are treated specially by GameCreate. There are a number of different tags to perform a variety of actions.

32. Literal Text

Literal text is written to the host's configuration file exactly as it is encountered; all text entered in a configuration file is literal unless it conforms to the style of substitutions or tags.

The percentage sign and angle brackets % < > do not need to be escaped; %somevalue% is treated as literal text unless somevalue identifies a property. <tag> is ignored unless it is of the form <gc:tag> (that is, the tag is ignored unless it is prefixed with gc:).

33. Substitutions

Substitutions allow you to directly interact with the server's configuration page, by using the values specified in the configuration file. GameCreate has several built-in properties (available to every server) along with a set of game-specific properties.

You instruct GameCreate to insert the value of a property by inserting the property's substitution keyword surrounded by percentage signs. Built-in properties have a name prefix like server:; game properties do not have a prefix and are named exactly as they appear on the Game Properties page.

Fortunately you do not need to know any of this; when editing a configuration file simply choose the property you wish to insert and click the Insert Property link. This will insert the appropriate %property% word at the current cursor position.

There is no limit to the number of times properties can be inserted into a configuration file; the same %property% word can appear as many times as is necessary to meet the requirements of the file. Note that the %property% word will not appear in the on-disk configuration file - the value of that property will appear in its place.

33.1. Built-In Properties

GameCreate supports the following built-in properties. Built-in properties apply to all servers and are not dependent on the particular game type of the server.

  • %server:name% - The name of the server, after applying the domain's name format (see Manual Domain for information on using the name format).

  • %server:rawname% - The name of the server, without the domain's name format. Normally you should use %server:name%.

  • %server:players% - The maximum number of players permitted on the server.

  • %server:ip% - The IP of the host the server is on.

  • %server:port% - The host port for the server.

  • %server:permanent% - The number '1' if the server is permanent; the number '0' if the server is temporary. Can be useful in combination with GameCreate tags - see the Tags section for details.

  • %server:id% - The unique ID used by GameCreate to identify the server. Useful if you need an identifier that will never be re-used by a different server, such as for creating individual logging directories for each server.

These properties are also built-in, but are the same for all servers. These domain properties are configured from the Domain Settings page (see Manual Domain).

  • %domain:name% - The name of this GameCreate domain

  • %domain:email% - The primary email contact address listed for this domain.

  • %domain:website% - The website URL listed for this domain.

  • %domain:location% - Descriptive name of the location of hosts for this domain.

33.2. Game Properties

Each game has its own set of properties. These properties contain values for settings specific for that game, such as map to start the server on, time limit, and friendly fire. You can see a game's property list by visiting the game's Overview page and clicking _Properties (again, Manual Game covers adding and modifying game properties in more detail).

Each game property has a Substitution Keyword, which is used to specify when that game property should be inserted into the file. For example, a Time Limit property might have a Substition Keyword of timelimit, which would be inserted into a configuration file as %timelimit%.

34. Tags

Tags are the most powerful part of GameCreate's File Language: they allow a variety of actions to be taken that would typically otherwise require programming. Tags augment property substitions by allowing the creation of configuration files that would otherwise be impossible. The following actions are available:

  • Arithmetic: Typically just adding numbers together, but arbtirary arithmetic is permitted.

  • Conditional Blocks: Include or remove parts of a configuration file based on a value comparison.

  • List Blocks: One type of game-specific property is the List. List blocks can provide extra formatting when outputting the contents of a list property.

  • Remote Includes: Include the contents of a HTTP-accessible resource into the configuration file.

  • Substrings: Shorten a property value to a specific length of select only part of the value.

  • Regular Expression Replacements: Modify a property value using the regular expression syntax.

  • Current Time/Date: Commonly used to give every log file a unique name.

  • Random Number: Provides random number generation to make random logic decisions

34.1. Syntax

Tags can be used anywhere within a game or server configuration file. Tags in GameCreate look much like HTML or XML tags - that is, of the form <gc:tag>. All GameCreate tags carry the gc: prefix.

Unlike XML, tags in GameCreate do not necessarily occur in open/close pairs: a <gc:tag> may not need a </gc:tag> after it. See the individual tag sections below for specific requirements.

GameCreate Language tags may be nested. The following expression is perfectly valid and would return Expression is true:

<gc:if><gc:eval>5 + 2</gc:eval> = 7<gc:then>Expression is true<gc:else>Not True</gc:if>

The behaviour of a malformed tag is undefined - a good way to check if a configuration file is doing what you expect is to use the Preview link found on the game's or server's Files page.

The tags themselves will never appear in the file written to disk.

34.2. Arithmetic

The arithmetic tags allows you to perform simple numeric calculations: addition, subtraction, multiplaction and division. The most common use for this is when specifying a server's query port as being (for example) 10 greater than the base port.

34.2.1. Format

<gc:eval>operation</gc:eval>

operation is a combination of literal numbers, %variable% property substitutions, and the mathematical symbols: + - * / ( ) and modulus (%). The usual rules of mathematic notation apply; whitespace is not significant. This tag can not be nested. An optional attribute of format may be specified, which is either round, ceil or floor in order to modify the returned value. Leaving out this attribute will cause no rounding to occur.

34.2.2. Examples

queryPort "<gc:eval>%server:port% + 10</gc:eval>"
extraPlayers "<gc:eval format="floor">4 / 3</gc:eval>"
availableSlots "<gc:eval>%server:players% - 2</gc:eval>"

34.3. Conditional Block

The conditional tags allows you to pick one block of text from a series of blocks based on the result of a comparison. This allows you to change the contents of the configuration file based on property values.

34.3.1. Format

1. <gc:if>expr1 op expr2<gc:then>arbitrary text</gc:if>
2. <gc:if>expr1<gc:then>arbitrary text</gc:if>
3. <gc:if>expr1 op expr2<gc:then>arbitrary text<gc:else>arbitrary text</gc:if>
4. <gc:if>expr1 op expr2<gc:then>arbitrary text<gc:elseif>expr1 op expr2<gc:then>arbitrary text</gc:if>
5. <gc:if>expr1 op expr2<gc:then>arbitrary text<gc:elseif>expr1 op expr2<gc:then>arbitrary text<gc:else>arbitrary text</gc:if>

The minimal form for a conditional tag is given in (1) above: an opening <gc:if> tag, a condition to test, a <gc:then> tag, some arbitrary text, and finally a closing </gc:if>}} tag. All three tags are required; note there is no closing {{{</gc:then> tag.

The condition to test consists of two expressions separated by a comparison operator. expr1 and expr2 are the two expressions that will be compared. Either or both may use the arithmetic format discussed in the previous section, but should not include the <gc:eval> </gc:eval> tags themselves - expressions are implicitly evaluted using mathematic notation.

op must be one of == != > < >= <= = <>. == and = means 'is equal to', != and <> mean 'is not equal to'. The remaining comparison operators are 'greater than', 'greater than or equal to', 'less than', 'less than or equal to' respectively.

If the condition is true, arbitrary text will appear in the file output. If the condition is false, arbitrary text will not appear. The arbitrary text can contain literal text, property substitutions, or tags. In particular, conditional tags may be nested.

The form in (2) shows a single expression; the expression is considered to be true if the expression evaluates to a value other than nothing (ie, no characters at all) or the number 0.

The forms in (3), (4), and (5) show the use of <gc:elseif> and <gc:else>. <gc:else> is used to supply a separate block of arbitrary text to display if the preceding comparison was false. <gc:elseif> provides a further comparison to evaluate if the previous comparison was false. <gc:elseif> can be repeated indefinately withing a conditional block. At most one literal block in a chain of <gc:if> <gc:elseif> <gc:elseif> ... <gc:else> </gc:if> will be displayed - as soon as a condition is found to be true, the associated literal block is written to the host's disk and all other parts of the conditional tag up until the closing </gc:if> will be skipped.

34.3.2. Examples

<gc:if>%mod% == ctf<gc:then>
map ctf01
capturelimit %capturelimit%
</gc:if>

<gc:if>%password%<gc:then>usePassword=True<gc:else>usePassword=False</gc:if>

34.4. List Block

GameCreate properties come in a variety of types: Text, Checkbox, Drop down list. One type of property is the List, which is used to handle properties that are naturally a collection of text items such as a server map cycle. The list tags allow the contents of the list property to be processed.

34.4.1. Format

<gc:list text="text-value" separator="separator-value" random="random-value">Arbitrary text <gc:count start="start-value"> <gc:value separator="inner-separator" index="index-value">  arbitrary text </gc:list>

The <gc:list> and </gc:list> tags are required. The text attribute text-value specifies the list to process - typically using a %property% substitution, although that is not required. text must be supplied - without it, the list has no items.

text-value is split up into pieces using the separator specified by separator-value. Each time separator-value is encountered the text is split. For example, splitting text "the-dog" on the hyphen character would give two pieces - "the" and "dog".

The separator separator-value is not required: if ommitted, it defaults to the line separator (that is, each line in the text-value will form a separate piece). If specified, separator-value is treated as a sequence of characters to split text-value. separator-value can also be tab to separate the text on tab characters.

random-value is not required; if ommitted it defaults to "no", meaning the split pieces are processed in the order they occur in text-value. If random-value is "yes", the split pieces are shuffled before processing. One use for this feature is to re-order a map list each time a server starts.

Once text-value is split into pieces, the text within the <gc:list> ... </gc:list> is written to disk, once per item in the list. Literal text, property substitutions and tags are all valid. Two extra tags, <gc:value> and <gc:count> are also valid within the list block. Both are optional (although generally required). <gc:value> and <gc:count> can be used multiple times within the list block if required.

<gc:value> is used to insert the list item currently being processed. It has two optional attributes: separator and index. If an inner-separator is supplied, the list item is further split using the same mechanism described earlier (note that inner-separator and the separator-value for the <gc:list> must be different for this to work). After the list item has been split, index-value specifies which part of the split item to display: index="1" would select the first piece, index="2" the second piece, and so on. If index="0" or is not specified, the inner-separator is ignored and the list item is written in its entirety.

<gc:count> is used to determine how many list items have been processed so far. start-value specifies what number the first item in the list is - so start="1" would write the number 1 for the first list item, 2 for the second, and so on. start-value can be omitted, in which a default value of 1 is used.

Note that GameCreate will process the literal text exactly as is. In particular, if you need each list item to be written out on a separate line, be sure to include the new line in your literal text by placing the closing </gc:list> on a line of its own.

34.4.2. Examples

// Assume the maplist property is one map name per line

<gc:list text="%maplist%" random="yes">addMap <gc:value>
</gc:list>

// This game needs a named sequence to tie the map list together

<gc:list text="%maplist%">part<gc:count start=1> = "changemap <gc:value>; nextmap part<gc:value start=2>"
</gc:list>

// This game can change maximum players on a per map basis.
// Here we also demonstrate using literal text for the 'text' attribute

<gc:list text="downtown-8,cinema-16,hotel-12,lastmap-10" separator=",">addMap <gc:value separator="-" index="1">?playerLimit=<gc:value separator="-" index="2">
</gc:list>

34.5. Remote Includes

The include tag allows a HTTP URL to be read, and if found, written to the host each time the configuration file is written. If the URL's contents are dynamic (eg, its a PHP or ASP.NET page) the contents of the server's configuration file can be determined externally. One popular use for this feature is managing ban lists.

34.5.1. Format

<gc:include> http-url </gc:include>

The specified URL must use the HTTP protocol and be accessible by GameCreate. If any error occurs nothing is written to the host.

34.5.2. Example

<gc:include>http://www.example.com/bansystem/hl2bans.php</gc:include>

34.6. Substrings

Substrings allow you to limit the length of a property value, or output a portion of the property value.

34.6.1. Format

<gc:substr start="start-value" length="length-value"> arbitrary text </gc:substr>

The <gc:substr> and </gc:substr> tags are both required. At least one of start and length must be specified. The arbitrary text may include literal text, property substitions, and tags.

start specifies which character of arbitrary text to start writing from. If omitted, start-value defaults to 1 - the first character.

length specifies the maximum number of characters to write from arbitrary text. If omitted, all text beginning from the start-valueth character is written.

Note that start and length apply to the 'transformed' arbitrary text - that is the text resulting from performing any property substitutions and tag evaluations.

34.6.2. Examples

// Ensure our server's name does not exceed 30 characters
hostname "<gc:substr length="30">%server:name%</gc:substr>"

// This would write '234'
<gc:substr start="2" length="3">123456</gc:substr>

34.7. Regular Expressions

Regular expressions are a powerful feature that can be used to transform a property value in any number of ways. One Typical is to remove illegal characters from a property value.

34.7.1. Format

<gc:regex find="find-pattern" replace="replace-pattern">arbitrary text</gc:regex>

The <gc:regex> and </gc:regex> tags are both required. The find and replace attributes are also required. arbitrary text may include literal text, property substitutions, and tags.

find-pattern and replace-pattern are valid regular expression patterns. Regular expressions are a topic unto their own that we will not cover here; [WWW] http://www.regular-expressions.info/tutorial.html is one tutorial that describes their use. Your favourite search engine will turn up many other resources.

find-pattern must be wrapped in forward slashes. The usual regular expression suffix modifiers like i for "ignore case" are supported.

34.7.2. Example

// Replace any character that's not a letter or number with an underscore
<gc:regex find="/[^A-Za-z0-9]/" replace="_">$Bad Ch@racters</gc:regex>
// RESULT: _Bad_Ch_racters

34.8. Date Formatting

GameCreate can include the date and/or time (formatted to your specification) at the time the file is written.

An example of where this may be useful is in creating log files which include the date the server was started.

<gc:date format="format-value" type="type-value">

The format-value and type-value attributes are optional.

Omiting the format-value attribute will mean a default formatting string is used: d m Y g:ia

format-value contains the formatting string on how to format the current date and time.

type-value is a shortcut to specifying a particular format-value, allowing you to use a pre-defined format string without having to remember it.

The format characters available for use are based on PHP's format implementation.

Note: Any characters used which are not listed here are treated as literal text. So providing a format string of d/m/Y is perfectly valid.

Format Character

Description

Example returned values

Day

d

Day of the month, 2 digits with leading zeros

01 to 31

D

A textual representation of a day, three letters

Mon through Sun

j

Day of the month without leading zeros

1 to 31

l (lowercase L)

A full textual representation of the day of the week

Sunday through Saturday

N

ISO-8601 numeric representation of the day of the week

1 (for Monday) through 7 (for Sunday)

S

English ordinal suffix for the day of the month, 2 characters

st, nd, rd or th. Works well with j

w

Numeric representation of the day of the week

0 (for Sunday) through 6 (for Saturday)

z

The day of the year (starting from 0)

0 through 365

Week

W

ISO-8601 week number of year, weeks starting on Monday

Example: 42 (the 42nd week in the year)

Month

F

A full textual representation of a month, such as January or March

January through December

m

Numeric representation of a month, with leading zeros

01 through 12

M

A short textual representation of a month, three letters

Jan through Dec

n

Numeric representation of a month, without leading zeros

1 through 12

t

Number of days in the given month

28 through 31

Year

L

Whether it's a leap year

1 if it is a leap year, 0 otherwise.

o

ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead.

Examples: 1999 or 2003

Y

A full numeric representation of a year, 4 digits

Examples: 1999 or 2003

y

A two digit representation of a year

Examples: 99 or 03

Time

a

Lowercase Ante meridiem and Post meridiem

am or pm

A

Uppercase Ante meridiem and Post meridiem

AM or PM

B

Swatch Internet time

000 through 999

g

12-hour format of an hour without leading zeros

1 through 12

G

24-hour format of an hour without leading zeros

0 through 23

h

12-hour format of an hour with leading zeros

01 through 12

H

24-hour format of an hour with leading zeros

00 through 23

i

Minutes with leading zeros

00 to 59

s

Seconds, with leading zeros

00 to 59

e

Timezone identifier

Examples: UTC, GMT, Atlantic/Azores

I (capital i)

Whether or not the date is in daylights savings time

1 if Daylight Savings Time, 0 otherwise.

O

Difference to Greenwich time (GMT) in hours

Example: +0200

P

Difference to Greenwich time (GMT) with colon between hours and minutes

Example: +02:00

Z

Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

-43200 through 43200

Full Date/Time

c

ISO 8601 date

2004-02-12T15:19:21+00:00

r

[WWW] RFC 2822 formatted date

Example: Thu, 21 Dec 2000 16:01:07 +0200

U

Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

1143784289

The available type-value shortcuts is currently:

  • log - Will provide a timestamp format appropriate for a log file: Y.m.d-g.i.sa

34.8.1. Example

Here's an example which would be appropriate for telling an America's Army server to start logging to an easily recognized filename:

server.exe global %startmap% -log=port%server:port%.log -ini=port%server:port%.ini -nohomedir -log port%server:port%-<gc:date type="log">.log

Would produce:

server.exe global Insurgent_Camp.aao -log=port2016.log -ini=port2016.ini -nohomedir -log port2016-2006.03.31-12.00.56pm.log

The format given to the log parameter of the command line includes the word 'port' as a prefix (to identify a given server), followed by the server's port number, then followed by a <gc:date> tag with the pre-defined format type of 'log'.

The result is an output string that includes the day, month, year, hour minute and second the server was started.

Of course, if you wanted to replace this format with another, you can do so through the format-value parameter.

server.exe global %startmap% -log=port%server:port%.log -ini=port%server:port%.ini -nohomedir -log port%server:port%-<gc:date format="Y.m.d">.log

Would produce:

server.exe global Insurgent_Camp.aao -log=port2016.log -ini=port2016.ini -nohomedir -log port2016-2006.03.31.log

Which may be more suitable.

34.9. Random Numbers

The random tag allows you to generate a random whole number between a defined range.

Random numbers are useful to use in logic decisions when you wish to randomize specific settings or randomly assign values to server options.

34.9.1. Format

<gc:random min="min-value" max="max-value">

Defines an inclusive range of random value's to generate between min-value and max-value.

The min-value attribute is optional and defaults to zero.

34.9.2. Example

<gc:random min="2" max="5">

The output of this expression may be the whole number 2, 3, 4 or 5.

34.10. Hash Generation

The hash tag allows you to generate a digest hash from an arbitrary string.

34.10.1. Format

There are several types of hashing algorithms available for use:

  • md5 (default). Example: 098f6bcd4621d373cade4e832627b4f6

  • sha1. Example: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

  • crc32. Example: d87f7e0c

34.10.2. Example

<gc:hash type="md5">test</gc:hash>

Would produce:

098f6bcd4621d373cade4e832627b4f6

In Manual Server and Manual Game we covered GameCreate's support for configuration files. At times you may wish to include data in configuration files that GameCreate simply can not know or manage. One such example might be an in-house web application for managing ban lists; this can be particularly useful if many game servers should share the same ban list. Of course, GameCreate's support for external files is not restricted to ban lists: you can use the facility any time you wish to manage configuration data with a different system.

Instead of storing a file definition in GameCreate, it can be supplied by an external system. There are two methods to configure this:

  • Have an external system perform a HTTP POST to GameCreate to upload a file definition.

  • Have GameCreate include the contents of a HTTP-accessible file into the server's configuration, using the <gc:include> tag.

35. Upload a Configuration File

Both server files and game files can be remotely uploaded. The uploaded file definition replaces the previous definition, in the same manner as editing the file using the GameCreate web interface would. The new file definition is uploaded by performing a HTTP POST to the GameCreate site.

The exact URL to use varies (see the specific server's or game's Edit File ) but the process is the same: send a username, password, and new definition for the file. Here's an example URL and POST contents:

The username/password must be a valid login for a user in the domain. The user must have write access to the server file or game file being updated.

While files may be uploaded at any time, note that the uploaded definition is actually written to the host's disk using the update schedule configured for the file. Often, the file will only be written to the host's disk when starting the server.

Files can only be updated remotely; they can not be created. In particular, this means if you wish to upload a Server File it must be created first: from the server's Files tab, click Edit next to the file you wish to upload and then click Save. This will ensure a server-specific copy of the file is created (as opposed to using the file definition supplied by the game).

As stated earlier, file uploads are treated in the same manner as editing the file using the GameCreate web interface would: GameCreate substitions and tags may be used as normal.

36. Include a Remote File

Manual File Language explains the usage of the <gc:include> tag. Using an include has the following differences when compared to uploading a file:

  • Include tags are evaluated each time the configuration file is written to the host's disk. In particular, this may be more or less useful than uploading a definition if the file's contents may change over time.

  • The file definition in GameCreate itself is never modified - it will always contain the <gc:include> tag when viewing or modifying the file.

  • Include tags only "replace" the part of the file where the tag occurs, allowing some configuration to be stored in GameCreate and some handled externally. By contrast, file uploads totally replace any previous file definition (although the upload could still contain GameCreate substitutions or tags)

When signing up with GameCreate.com, you created a user account that became the owner of your domain. Other people may also sign up for accounts at GameCreate.com so that you can grant those people permission to access your domain (or parts thereof). Each person with permission on your domain maintains an account on GameCreate separate from any user account system you may have on your web site.

Enter external user authentication: you can configure GameCreate.com so that instead of authenticating your domain's users against GameCreate.com's own account system, it will instead authenticate with your user account system. This chapter explains how to configure GameCreate's external user authentication mechanism.

37. Create an Authentication Web Service

To enable GameCreate to authenticate against your user account system, there must be a way for GameCreate to make such requests. For this purpose, you must create a web service. If web services are new to you, [WWW] http://webservices.xml.com/pub/a/ws/2001/04/04/webservices/ may be a useful introduction. There are many more resources available via your favourite search engine.

The web service you are going to build will need to make the following information available about users:

  • Unique ID: A (typically numeric) identifier for the user. This identifer must never change; so if your users are permitted to change their username, the username is not a suitable unique identifier.

  • Name: The user's name.

  • User Name: The username supplied by the user to login to your account system.

  • Email: The primary contact address for the user.

The web service must support the following operations:

  • User Login: GameCreate supplies a username and password. If valid, the web service must return the Unique ID, Name, and Email of the user.

  • Retrieve User by Unique ID: GameCreate supplies a Unique ID it has previously stored from your account system. The web service returns the current Name, Username, and Email for the ID.

  • Search Users by Name: GameCreate supplies a name (or a part there of). The web service returns a list of Unique ID, Name, Username, and Email for users whose name partially matches.

  • Search Users by Email: GameCreate supplies an email address (or a part there of). The web service returns a list of Unique ID, Name, Username, and Email for users whose email address partially matches.

  • Search Users by Username: GameCreate supplies a username (or a part there of). The web service returns a list of Unique ID, Name, Username, and Email for users whose username partially matches.

  • Get User by Name: GameCreate supplies a full name. If there is a user with the supplied name, the web service returns the matching user's Unique ID, Email, and Username.

  • Get User by Email: GameCreate supplies a full email address. If there is a user with the supplied email address, the web service returns the matching user's Unique ID, Name, and Username.

  • Get User by Username: GameCreate supplies a full username. If there is a user with the supplied username, the web service returns the matching user's Unique ID, Name, and Email.

To protect the privacy of your users, GameCreate defaults to showing only the name of users retrieved via your web service. You may optionally configure GameCreate to display usernames and/or emails when giving permissions to users.

The "User Login" and "Retrieve User by Unique ID" operation are required for the normal use of the GameCreate site. The remaining operations are required only when assigning permissions to users. GameCreate only stores data for users who have been given permission to access GameCreate.com or who have created one or more temporary servers.

For GameCreate to interact with the web service, a common interface must be followed for the two systems to communicate. The user authentication WSDL can be downloaded here: [WWW] http://www.gamecreate.com/files/ExternalAuthentication.wsdl . The web service you implement must follow that definition.

38. Example

We have created an external authentication example implementation using PHP for a phpBB database. It demonstrates accessing a user table and returning the appropriate data. This can easily be modified to integrate with any user account system.

This can be found at [WWW] http://www.gamecreate.com/downloads.php

39. Configure GameCreate for external authentication

Once the authentication web service has been written, GameCreate must be configured to use it. Click the Domain tab and then click Authentication. Enter the HTTP URL at which your web service is located and click Next.

GameCreate.com will now request that you enter your username and password on your account system. The entered values will be tried using the web service. Besides providing a useful test case to ensure your web service is working, this also identifies your account via the web service.

GameCreate will then identify all users who have one or more permissions on your domain, or one or more temporary servers. You will need to tell GameCreate, one user at a time, which account on your system is for that user. Users can be searched for by name, username or email. Alternatively, you can ask GameCreate to drop a user so that they will no longer have permissions.

Once all current users have been identified on your account system, GameCreate will proceed to update its records so that your domain uses the web service for authentication.

39.1. GameCreate authentication and External Authentication do not mix

Once you have converted your domain to use the web service for authentication, all user accounts created at GameCreate.com will cease to function (including your own). Users will need to use their username and password on your account system.

In particular, this means that your web service needs to always be accessible. If it is not, it will not be possible to log in to GameCreate.

40. Reverting to GameCreate authentication

If for some reason you no longer wish to use external authentication, you may revert back to using GameCreate's account system. The process is much the same as when converting to external authentication: click the Domain tab and then click Authentication. For each user, you will be required to either identify the appropriate account in GameCreate's system, or drop the user. Once all users have been identified, your domain will be switched to GameCreate's account system and the web service will no longer be used.

  1. Introduction
  2. Users
    1. Test Login/Retrieve a user's Unique ID
    2. Create an account
    3. Test if username is taken
    4. Update existing account details
    5. Retrieve user information
  3. Permanent Servers and Subdomains
    1. Create a subdomain
    2. Give user permissions on a subdomain
    3. Install game software
    4. Create a game server
    5. Set user permissions by Permission Class
  4. Example Permissions
    1. Set user permissions on a server
    2. Set user permissions on a game
    3. Restart an existing server
    4. Start or stop a server
    5. Alter a server's maximum player limit
    6. Retrieve a server's current status
    7. Delete a server
    8. Check if game software is installed
  5. Temporary Servers
    1. Check time availability
    2. Create a temporary server
    3. Get starting time for server
    4. Send server details to users
    5. Modify server
    6. Delete a server

41. Introduction

GameCreate includes a number of web services that can be used to manipulate your GameCreate domain. With GameCreate's web services, you can perform the following tasks:

  • Users accounts can be created or modified

  • Subdomains can be created

  • Game software may be installed on a host

  • Permanent servers can be created and deleted

  • Users can be given permissions on subdomains and servers

  • Temporary servers can be created or modified

  • A variety of information can be retrieved

Using GameCreate as the base service, it is possible to build software to perform a variety of tasks such as renting permanent servers to users, or run competitions using GameCreate's temporary servers as the location of matches.

Our web services use SOAP over HTTP. [WWW] http://webservices.xml.com/pub/a/ws/2001/04/04/webservices/ is an introduction to web services.

GameCreate supplies three individual services each with a number of different methods. The three service categories are:

  • Users

  • Permanent servers and subdomains

  • Temporary servers

For each category, we will supply the link to the WSDL and then discuss each of the methods supported by that web service.

42. Users

The Users web service allows you to create, modify, or lookup user information in the GameCreate account system. The web service can not access information for domains using external authentication (see Manual External Authentication). If your domain uses external authentication then you will need to build the required functionality into your own account system.

The WSDL for the service is located at [WWW] http://world.gamecreate.com/admin/User.asmx?wsdl . Requests must be sent to http://yourdomain.cc.gamecreate.com/admin/User.asmx - that is, the same domainname as you see after logging into GameCreate. For example, Mammoth Media might use http://mammoth.au.gamecreate.com/admin/User.asmx . It is important you use the correct /admin/User.asmx as this allows GameCreate to identify your domain.

42.1. Test Login/Retrieve a user's Unique ID

int Login(string username, string password);

GameCreate will look in its account system for the specified user and see if the password is correct. If it is, GameCreate will return the unique ID identifying the user. If the password is incorrect (or the specified username does not identify a user) GameCreate will return 0.

42.2. Create an account

int CreateAccount(string username, string password, string name, string email);

GameCreate will attempt to create a user account with the provided username, password, name, and email address. If the specified username is already assigned to another user or an error occurs, GameCreate returns 0. If the new user is created successfully, GameCreate returns the Unique ID of the created user.

Note that you should not store the username as an identifier - usernames can be changed by the user. The correct identifier to use is the Unique ID returned by the web service.

42.3. Test if username is taken

bool IsUsernameAvailable(string username);

If the specified username is not assigned to a user at the time of the request GameCreate returns true. If the username is taken by another user, GameCreate returns false.

Note that a return value of true does not imply that a later call to Create Account() will definately succeed; the username may be taken between the two calls. Always check the result of CreateAccount(...) to see if a user was created successfully.

42.4. Update existing account details

bool UpdateAccount(string currentUsername, string currentPassword, string username, string password, string name, string email);

Update the details of an existing GameCreate user account. currentUsername and currentPassword are the login details for the user to update. username, password, name, email are the new details for the user. Any of these four values can be the empty string to indicate no change is required.

If currentUsername and currentPassword are not a valid user login, GameCreate returns false.

If currentUsername and currentPassword are a valid user login, but username is already in use by another user, GameCreate returns false. Any of the other requested changes (password, name, email) will not be processed.

If GameCreate successfully performs the requested updates, GameCreate returns true.

42.5. Retrieve user information

UserDetails GetAccount(string username, string password);

Retrieve the details for the user identified by the supplied username and password. If the supplied details are invalid, GameCreate will return no data.

The User Details structure has the following form:

UserDetails {
  string Username;
  string Name;
  string Email;
}

43. Permanent Servers and Subdomains

The Permanent Servers and Subdomains web service allows you to create, modify, or lookup permanent servers and subdomains in GameCreate. You can also assign users permission to access various areas in GameCreate.

The WSDL for the service is located at [WWW] http://world.gamecreate.com/admin/Remote.asmx?wsdl . Requests must be sent to http://yourdomain.cc.gamecreate.com/admin/Remote.asmx - that is, the same domainname as you see after logging into GameCreate. For example, Mammoth Media might use http://mammoth.au.gamecreate.com/admin/Remote.asmx . It is important you use the correct /admin/Remote.asmx as this allows GameCreate to identify your domain.

Many of the methods in this web service require a domain ID. The domain ID for your domain can be found in the Domain area of GameCreate.com. Alternatively, the domain ID can be for a subdomin of your domain - either as listed in the Domain area or as returned from the CreateSubdomain(...) method detailed below.

43.1. Create a subdomain

int CreateSubdomain(string actorUsername, string actorPassword, string name, string uniquename);

Create a subdomain of your domain. actorUsername and actorPassword identify a user who has permission to create subdomains. name is the name of the new subdomain.

uniquename is the name used to form the domain name for the new subdomain. If the GameCreate URL for your domain is [WWW] http://yourdomain.cc.gamecreate.com/admin/ , the URL for the new subdomain will be [WWW] http://uniquename.yourdomain.cc.gamecreate.com/admin/ .

GameCreate returns 0 if it was unable to create the new subdomain. This can occur if the specified actor is invalid or does not have the required permission, or if the uniquename is already in use by some other subdomain.

GameCreate returns the Unique ID for the subdomain upon success.

43.2. Give user permissions on a subdomain

bool SetUserDomainPermissions(string actorUsername, string actorPassword, int domainid, int userid, int permissionType);

Gives a user permission to access a subdomain. domainid identifies the domain and userid is the Unique ID of the user (as returned by the Users web service). actorUsername and actorPassword is a valid login for a user who has the domain administrator permission.

permissionType is created by selecting one or more of the following values and adding them together:

  • 8: Read. Permission to view domain configuration.

  • 32: Write. Permission to modify the domain configuration.

  • 64: New. Permission to create subdomains.

  • 16384: Full. The above three permissions and any other permissions that may be added in the future. Does not include administrator.

  • 32768: Administrator. Ability to give domain permissions to other users.

43.3. Install game software

bool InstallGame(string actorUsername, string actorPassword, int domainid, int gameid, int hostid);

Installs a game on a host for. domainid identifies the domain. gameid identifies the game to install (see Manual Xml Status for information on determining game IDs). hostid identifies the host to install (see Manual Xml Status for information on determining host IDs).

actorUsername and actorPassword are the login information for a user in the subdomain who has permission to perform the requested installation.

GameCreate returns true if the installation request succeeded. GameCreate returns false if the game ID is invalid, the host ID is invalid, the actor is invalid, or the actor does not have the required permission.

Just like when using the GameCreate website, this method simply requests GameCreate to perform the software installation: it does not wait for the installation to complete before returning the result code. The installation will be completed independent of the web service without further intervention on your behalf.

43.4. Create a game server

int CreateServer(string actorUsername, string actorPassword, int domainid, int gameid, int hostid, string name, int players);

Creates a permanent game server in a subdomain. domainid identifies the subdomain. gameid identifies the game type for the server (see Manual Xml Status for information on determining game IDs). hostid identifies the host to place the game server on (see Manual Xml Status for information on determining host IDs).

name is the name for the new server and players is the maximum players for the new server.

actorUsername and actorPassword are the login information for a user in the subdomain who has permission to create the new server.

GameCreate returns a unique ID for the new server if the request succeeded. GameCreate returns 0 if the game ID is invalid, the host ID is invalid, the actor is invalid, or the actor does not have the required permission.

Just like when using the GameCreate website, this method simply creates the server within GameCreate: it does not wait for the server to be physically started on the host by GameCreate.

43.5. Set user permissions by Permission Class

bool SetUserPermissionsByClass(string actorUsername, string actorPassword, int domainid, string userid, int entityid, string entityType, int permissionType, int permissionClass);

Sets the permission set for the specified user, permission class and entity combination.

domainid identifies the domain and userid is the Unique ID of the user (as returned by the Users web service if using internal authentication, or your user's Unique ID if using external authentication).

actorUsername and actorPassword is a valid login for a user who has the appropriate administrator permission.

entityid is the Unique Id of the entity to have permissions granted to or revoked from for the specified userid. The entityid is associated with the entityType used.

entityType may be one of Game, Host, Server or Domain. Note that for entityType, the literal string of 'Game' (for example) is used, instead of any numeric value shown below which is only used for a separate parameter.

permissionType is created by selecting one or more of the following values and adding them together:

  • 1: List. Permission to view the server's overview page.

  • 4. Control. Ability start, restart, or stop the server.

  • 8: Read. Permission to view the server's configuration.

  • 16: Write Players. Permission to change the server's maximum player limit.

  • 32: Write. Permission to modify the server's configuration (other than its maximum player limit).

  • 16384: Full. The above five permissions and any other permissions that may be added in the future. Does not include administrator.

  • 32768: Administrator. Ability to give permissions on this server to other users.

permissionClass is chosen by selecting one of the following values:

  • 9: System

  • 3; Host

  • 4: Program

  • 17: Domain

  • 1: Game

  • 2: Game Templates

  • 10: Game Configuration

  • 16: Game Files

  • 5: Server

  • 11: Server Configuration

  • 6: Server Files

  • 7: Server Of Game

  • 12: Server Configuration Of Game

  • 8: Server Files Of Game

  • 13: Server Of Host

  • 14: Server Configuration Of Host

  • 15: Server Files Of Host

44. Example Permissions

Useful in a rental environment, you most likely want to grant the following permissions to each of your customers when applicable.

Operation

Entity Type

Permission Type

Permission Class

Description

Setup new (once off) customer Subdomain

Domain

16384 + 32768

Domain

Permission to grant users who are made a new subdomain (Write Domain Details + Admin)

Setup individual customer Server

Server

13 + 32768

Server

Permission to grant the user of the server they have rented (List Control Read Write Admin) (Not Full/Write Players)

Server

32

Server Files

(continued)

Server

32

Server Configuration

(continued)

Setup individual Game permission

Game

16384 + 32768

Game

Permission to grant the user of the game they have had a server made for (Full + Admin priv)

Examples:

// Permission Class: Domain (17), 49152 = (16384 + 32768)
SetUserPermissionsByClass(ACTOR_USERNAME, ACTOR_PASSWORD, DOMAIN_ID, USER_ID, DOMAIN_ID, 'Domain', 49152, 17);
...
// Permission Class: Server Files (6)
SetUserPermissionsByClass(ACTOR_USERNAME, ACTOR_PASSWORD, DOMAIN_ID, USER_ID, SERVER_ID, 'Server', 32, 6);

44.1. Set user permissions on a server

bool SetUserServerPermissions(string actorUsername, string actorPassword, int domainid, int userid, int serverid, int permissionType);

Gives a user permission on a particular server. domainid identifies the domain and userid is the Unique ID of the user (as returned by the Users web service).

actorUsername and actorPassword is a valid login for a user who has the server administrator permission. serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

permissionType is created by selecting one or more of the following values and adding them together:

  • 1: List. Permission to view the server's overview page.

  • 4. Control. Ability start, restart, or stop the server.

  • 8: Read. Permission to view the server's configuration.

  • 16: Write Players. Permission to change the server's maximum player limit.

  • 32: Write. Permission to modify the server's configuration (other than its maximum player limit).

  • 16384: Full. The above five permissions and any other permissions that may be added in the future. Does not include administrator.

  • 32768: Administrator. Ability to give permissions on this server to other users.

GameCreate returns true if the requested permission was set. GameCreate returns false if the server ID is invalid, the user ID is invalid, the actor is invalid, or the actor does not have the required permission.

44.2. Set user permissions on a game

bool SetUserGamePermissions(string actorUsername, string actorPassword, int domainid, int userid, int gameid, int permissionType);

Gives a user permission on a particular game; this is useful to let the user modify existing or create new properties. domainid identifies the domain and userid is the Unique ID of the user (as returned by the Users web service).

actorUsername and actorPassword is a valid login for a user who has the game administrator permission. gameid is the Unique ID of a game (ie, by looking up a game via Manual Xml Status).

permissionType is created by selecting one or more of the following values and adding them together:

  • 1: List. Permission to view the game's overview page.

  • 8: Read. Permission to view the game's configuration.

  • 32: Write. Permission to modify the game's configuration.

  • 16384: Full. The above three permissions and any other permissions that may be added in the future. Does not include administrator.

  • 32768: Administrator. Ability to give permissions on this game to other users.

GameCreate returns true if the requested permission was set. GameCreate returns false if the game ID is invalid, the user ID is invalid, the actor is invalid, or the actor does not have the required permission.

44.3. Restart an existing server

bool RestartServer(string actorUsername, string actorPassword, int domainid, int serverid);

Restart a particular game server. domainid identifies the domain and serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

actorUsername and actorPassword is a valid login for a user who has the server control permission.

GameCreate returns true if the server will be restarted. GameCreate returns false if the server ID is invalid, the actor is invalid, or the actor does not have the required permission.

This method will return 'true' before the game server has been restarted. The restart will be performed as soon as the server's host is able to do so.

44.4. Start or stop a server

bool SetServerRunning(string actorUsername, string actorPassword, int domainid, int serverid, int running);

Starts or stops a particular game server. domainid identifies the domain and serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

actorUsername and actorPassword is a valid login for a user who has the server control permission. running can be one of two values:

  • 0. Set the server as not running. If it is currently running, it is stopped.

  • 1. Set the server as running. If it is currently not running, it is started.

GameCreate returns true if the server status was able to be set (even if there is no change). GameCreate returns false if the server ID is invalid, the actor is invalid, or the actor does not have the required permission.

This method returns 'true' before the server is physically started or stopped. The server will be started or stopped as soon as the server's host is able to do so.

44.5. Alter a server's maximum player limit

bool SetServerPlayerCount(string actorUsername, string actorPassword, int domainid, int serverid, int players);

Changes the player limit on a game server. domainid identifies the domain and serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

actorUsername and actorPassword is a valid login for a user who has the server write players permission. players is the new maximum player limit for the server.

GameCreate returns true if the server player limit was able to be set (even if there is no change). GameCreate returns false if the server ID is invalid, the actor is invalid, or the actor does not have the required permission.

A change in player limit will not take effect the game server is next (re)started.

44.6. Retrieve a server's current status

ServerStatus GetServerStatus(string actorUsername, string actorPassword, int domainid, int serverId);

Retrieves a server's current status, such as its processor usage and memory consumption. In general use of Manual Xml Status is preferable to this method call as it is faster. This method should only be used in circumstances such as displaying information for a single server in response to a user's request.

domainid identifies the domain and serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

actorUsername and actorPassword is a valid login for a user who has the server read permission.

GameCreate returns nothing if the server ID is invalid, the actor is invalid, or the actor does not have the required permission. Otherwise, the following information is returned:

ServerStatus {
  int PlayerCount; // Number of players currently on server
  int MaxPlayers; // Maximum player limit for the server
  int CurrentMemory; // Current amount of memory being consumed by the server (in kilobytes)
  float CpuUsage; // Processor usage on the server's host, expressed as a percentage over the total processor availability
}

44.7. Delete a server

bool DeleteServer(string actorUsername, string actorPassword, int domainid, int serverId);

Deletes an existing server - the server must be stopped before it can be deleted. domainid identifies the domain and serverid is the Unique ID of a server (ie, as returned by an earlier CreateServer(...) call or by looking up a server via Manual Xml Status).

actorUsername and actorPassword is a valid login for a user who has the server delete permission.

GameCreate returns true if the server was deleted. GameCreate returns false if the server ID is invalid, the actor is invalid, the server is not in the 'Stopped' state, or the actor does not have the required permission.

44.8. Check if game software is installed

bool IsGameInstalled(string actorUsername, string actorPassword, int domainid, int gameid, int hostid);

Determines if a game is installed on a host. domainid identifies the domain. gameid identifies the game to install (see Manual Xml Status for information on determining game IDs). hostid identifies the host to install (see Manual Xml Status for information on determining host IDs).

actorUsername and actorPassword are the login information for a user in the subdomain who has permission to determine if the software is installed.

GameCreate returns true if the software is installed. GameCreate returns false if the game is not installed on the host, the game ID is invalid, the host ID is invalid, the actor is invalid, or the actor does not have the required permission.

45. Temporary Servers

The Temporary Servers web service allows you to create, modify, or lookup temporary servers in GameCreate. Many of the methods in this web service talk about a server's owner. The owner is the user who initially created the temporary server (note that permanent servers do not have owners).

This service was designed to be used on its own, so there is some overlap functionality-wise with the "Permanent Servers and Subdomains" web service.

The WSDL for the service is located at [WWW] http://world.gamecreate.com/bookings/MakeBooking.asmx?wsdl . Requests must be sent to http://yourdomain.cc.gamecreate.com/bookings/MakeBooking.asmx - that is, the same domainname as you see after logging into GameCreate. For example, Mammoth Media might use http://mammoth.au.gamecreate.com/bookings/MakeBooking.asmx . It is important you use the correct /bookings/MakeBooking.asmx as this allows GameCreate to identify your domain.

Some methods in this web service deal with starting time for the servers. Times are always represented as UNIX timestamps - that is, the number of seconds that have elapsed since 1970-01-01 0:00:00 UTC. (For that reason, all timestamps are implicitly in UTC).

Some methods use a "query string" style collection of property variable/value names. This deserves some explanation. GameCreate's game properties have something called a "variable" - an example being rcon_password. The variable name is used in configuration files like %rcon_password%. A "query string" style collection is formed by:

  • "URL encoding" of the variable name and value. A URL encoded string has all non alphanumeric characters replaced with %xx where xx is the hexadecimal ASCII value of the replaced character. For example a space character has a value of 32 on the ASCII table, and so the string "hello world" would become "hello%20world".

  • joining the variable name and value into one string, separated by an equals sign (without any extra whitespace!)

  • join each of our "variable=value" pairs into one string, separated by ampersand sign.

As a concrete example, supposed we wanted to supply two values: an RCON password of "test" and a Time Limit of "30". Having consulted the game's Properties page, we determine the variable names for those properties are "rcon_password" and "timelimit". Performing the three steps listed above, we end up with the final string of "rcon%5Fpassword=test&timelimit=30".

45.1. Check time availability

bool IsServerAvailableAtTime(string username, string password, int gameId, int startTimestamp, int runtimeMins, int numberPlayers);

Determines if a server could be created at a particular time. Note that a true result here does not guarantee a call to CreateServer(...) will succeed, as other servers may be created between the two method calls.

username and password identify the user to perform the check as. This is required as this method also checks against the user's weekly server limit, and will return false if the specified time would be available but would exceed the user's limit.

gameId specifies the unique ID of the server's intended game type (see Manual Xml Status for information on determining game IDs). numberPlayers is the desired maximum player limit for the server.

startTimestamp is the UNIX timestamp identifying the desired starting time. runtimeMins is the number of minutes the temporary server would be required to run for.

GameCreate returns true if the user could create a temporary server with the specified options. GameCreate returns false if a temporary server with the specified options could not be created , or if the specified user details were not valid.

45.2. Create a temporary server

int CreateServer(string username, string password, int gameId, int startTimestamp, int runtimeMins, int numberPlayers, string name, string propertyValues, string templateIds);

Creates a server's at the requested time with the supplied name, property values, and templates. username and password identify the user who will be the owner of the server. gameId specifies the unique ID of the server's game type (see Manual Xml Status for information on determining game IDs).

startTimestamp is the UNIX timestamp identifying the starting time. runtimeMins is the number of minutes the temporary server will run for.

name is the server's name. propertyValues is a "query string" style collection of propery variable/value pairs. templateIds is a comma-separated list of game template IDs.

GameCreate returns a unique ID for the new server if the temporary server was created. GameCreate returns <= 0 if a temporary server with the specified options could not be created , or if the specified user details were not valid.

45.3. Get starting time for server

int GetServerStartTimestamp(int serverId);

This method is only for temporary servers.

Retrieves the time the specified server is scheduled to start, as a UNIX timestamp. serverId is the unique ID of the server (as returned by CreateServer(...) or obtained via Manual Xml Status).

No specific permissions are required to retrieve the start time.

45.4. Send server details to users

public bool EmailServerDetails(string username, string password, int serverId, string[] addresses, bool includeSecretProperties);

Send a message containing details about the server to the specified email addresses. username and password identify the user who is the owner of the server .

serverId is the unique ID of the server (as returned by CreateServer(...) or obtained via Manual Xml Status). addresses is a list of email addresses. Each email address will receive one email.

Each game property has a 'Secret' setting indicating if the property's value should be hidden from normal users ('RCON Password' is a common example of a secret property). 'Client Password' is generally not a secret property as everyone needs it to play. includeSecretProperties determines if secret game properties will be emailed to the specified addresses.

GameCreate returns true if the emails were sent. GameCreate returns false if the specified user account is not valid, the specified server does not exist, or the user does not own the temporary server.

45.5. Modify server

bool ModifyServer(string username, string password, int serverId, string name, string propertyValues, string templateIds);

Modify a server's name, property values, and templates. username and password identify the user who is the owner of the server. serverId is the unique ID of the server (as returned by CreateServer(...) or obtained via Manual Xml Status).

name is the server's new name. propertyValues is a "query string" style collection of propery variable/value pairs. templateIds is a comma-separated list of game template IDs.

GameCreate returns true if the server was modified. GameCreate returns false if the specified user account is not valid, the specified server does not exist, or the user does not own the temporary server.

45.6. Delete a server

bool DeleteServer(string username, string password, int serverId);

Deletes a server owned by the specified user (note that the 'Permanent Servers and Subdomains' web service has a more general Delete Server method). The temporary server must not be running (such as before it has started).

username and password identify the user who is the owner of the server. serverId is the unique ID of the server (as returned by CreateServer(...) or obtained via Manual Xml Status).

GameCreate returns true if the server was deleted. GameCreate returns false if the specified user account is not valid, the specified server does not exist, the user does not own the temporary server, or it is running.

GameCreate provides a number of data feeds in a custom XML format to enable you to inspect your GameCreate domain. The following feeds are available:

  • Permanent game servers. The file contains a list of your permanent servers, detailing their host, gametype, and basic settings.

  • Games. The file contains a list of all games supported by GameCreate.

These feeds can all be used in conjunction with Manual Web Service as a way of programmatically retrieving the Unique IDs required by the various web services.

The "Permanent game servers" file contains all the information necessary to create a server status page to display on your website.

46. Permanent game servers

This file can be retrieved by making a HTTP request to [WWW] http://yourdomain.cc.gamecreate.com/admin/Servers.xml.aspx , using your domain's hostname. For example, Mammoth Media's file would be at [WWW] http://mammoth.au.gamecreate.com/admin/Servers.xml.aspx . It is important you use your domain's hostname as this allows GameCreate to locate your domain's servers.

This resource does require any authentication to request. As such, only information that could be publicly retrieved in some other way is displayed. You can remove a game server from this list by setting its "Public Listing" property to "No" using the server's Configuration page.

Here is an example file:

<?xml version="1.0" encoding="utf-8"?>
<serverList>
    <domain>
        <name>Xtra</name>
    </domain>
    <programs>
        <program id="program-37" systemId="37">
            <name>Soldat</name>
            <queryCode>SDS</queryCode>
        </program>
    </programs>
    <games>
        <game id="game-63" systemId="63" programRef="program-37">
            <name>Soldat</name>
        </game>
    </games>
    <hosts>
        <host id="host-2137" systemId="2137">
            <name>My Host</name>
            <address>10.1.1.20</address>
        </host>
    </hosts>
    <servers>
        <server id="server-237334" systemId="237334" gameRef="game-63" hostRef="host-2137" running="yes">
            <name>My First Soldat Server</name>
            <port>20200</port>
            <permanent>True</permanent>
            <playerCount>0</playerCount>
            <playerLimit>12</playerLimit>
            <mapName>inf_Fortress</mapName>
        </server>
    </servers>
</serverList>

The root element is <serverList>. It contains five elements: <domain>, <programs>, <games>, <hosts>, and <servers>.

46.1. <domain>

<domain> contains one element: <name> . It contains the name of your domain.

46.2. <programs>

The <programs> element contains a list of <program> elements. Each <program> element details one program in use by your domain.

"Programs" are a concept you do not run into when using the GameCreate interface: however they are included here if you wish to group server's by program or otherwise display the information. A program represents the underlying executable program that is used to run the game server. Multiple games can share the same program.

The <program> element has two attributes: id and systemId. The id attribute matches one or more <game> element's programRef attribute (see next section). The systemId attribute specifies the Unique ID used by GameCreate to identify this program. (Note: GameCreate's web services do not require the specification of a program Unique ID. It is included here for completeness).

Each <program> has two subelements: <name> and <queryCode>. <name> specifies the name of the program. <queryCode> is a short string used by GameCreate to determine how to query a game server for status information. [WWW] http://www.qstat.org/ uses similar (although not always identical) codes for querying game servers.

46.3. <games>

The <games> element contains a list of <game> elements. Each <game> element details one game in use by your domain.

The <game> element has three attributes: id, systemId, and programRef. The id attribute matches one or more <server> element's gameRef attribute (see <server> section). The systemId attribute specifies the Unique ID used by GameCreate to identify this game. It is suitable for use with GameCreate's web services whenever a game Unique ID is required.

The programRef attribute uniquely identifies the program this game is for. It matches exactly one <program>'s id attribute.

Each <game> has one subelement: <name>. <name> specifies the name of the game.

46.4. <hosts>

The <hosts> element contains a list of <host> elements. Each <host> element details one host in use by your domain.

The <host> element has two attributes: id and systemId. The id attribute matches one or more <server> element's hostRef attribute (see <server> section). The systemId attribute specifies the Unique ID used by GameCreate to identify this host. It is suitable for use with GameCreate's web services whenever a host Unique ID is required.

Each <host> has two subelements: <name> and <address>. <name> specifies the name of the host, as configured in GameCreate (which defaults to the hostname of the computer as configured in the operating system). <address> is the primary IP address of the host.

46.5. <servers>

The <servers> element contains a list of <server> elements. Each <server> element details one server in use by your domain that has its "Public Listing" property set to "Yes".

The <server> element has five attributes: id, systemId, gameRef, hostRef and running. The id attribute is currently unused. The systemId attribute specifies the Unique ID used by GameCreate to identify this game server. It is suitable for use with GameCreate's web services whenever a server Unique ID is required.

The gameRef attribute uniquely identifies the game type of this server. It matches exactly one <game>'s id attribute. The hostRef attribute uniquely identifies the host this server is assigned to. It matches exactly one <host>'s id attribute.

The running attribute specifies if the server is currently configured to be running or not running (corresponding to requesting the server "Start" or "Stop" respectively). It can be one of two values:

  • "yes": The server is configured to be running

  • "no": The server is configured to not be running

Note that this does determine if the game server is actually available right now. For example, you will find running="yes" when the server's host computer is switched off or not working correctly.

Each <server> has six subelements: <name>, <port>, <permanent>, <playerCount>, <playerLimit>, <mapName>. <name> specifies the name of the server, as configured in GameCreate. <port> is the host port used on the server's host.

<permanent> specifies if this server is permanent. It can have one of two values:

  • True: The server is permanent.

  • False: The server is temporary.

Temporary servers are included in the XML only while they are scheduled to be running - so if a temporary server is in the XML it should be 'live' and usable by players.

<playerCount> specifies the number of players currently using the server. <playerLimit> is the maximum number of players permitted on the game server, as specified in GameCreate. <mapName> is the map currently being played on the server.

47. Games

This file can be retrieved by making a HTTP request to [WWW] http://yourdomain.cc.gamecreate.com/bookings/Games.xml.aspx , using your domain's hostname. For example, Mammoth Media's file would be at [WWW] http://mammoth.au.gamecreate.com/bookings/Games.xml.aspx . It is important you use your domain's hostname as this allows GameCreate to locate your domain's servers.

This resource does require any authentication to request. It contains a list of all games supported by GameCreate. As such, it is a handy way to programmatically retrieve game Unique ID's for use with GameCreate's web services.

Here is a (cut down) example file:

<?xml version="1.0" encoding="utf-8"?>
<gameList>
    <programs>
        <program id="program-16" systemId="16">
            <name>America's Army</name>
            <queryCode>AAS</queryCode>
        </program>
    </programs>
    <games>
        <game id="game-29" programRef="program-16" systemId="29">
            <name>America's Army</name>
        </game>
    </games>
</gameList>

The root element is <gameList>. It contains two elements: <programs> and <games>.

47.1. <programs>

The <programs> element contains a list of <program> elements. Each <program> element details one program in use by your domain.

"Programs" are a concept you do not run into when using the GameCreate interface: however they are included here if you have a need for the information. A program represents the underlying executable program that is used to run the game server. Multiple games can share the same program.

The <program> element has two attributes: id and systemId. The id attribute matches one or more <game> element's programRef attribute (see next section). The systemId attribute specifies the Unique ID used by GameCreate to identify this program. (Note: GameCreate's web services do not require the specification of a program Unique ID. It is included here for completeness).

Each <program> has two subelements: <name> and <queryCode>. <name> specifies the name of the program. <queryCode> is a short string used by GameCreate to determine how to query a game server for status information. [WWW] http://www.qstat.org/ uses similar (although not always identical) codes for querying game servers.

47.2. <games>

The <games> element contains a list of <game> elements. Each <game> element details one game in use by your domain.

The <game> element has three attributes: id, systemId, and programRef. The id attribute is currently unused. The systemId attribute specifies the Unique ID used by GameCreate to identify this game. It is suitable for use with GameCreate's web services whenever a game Unique ID is required.

The programRef attribute uniquely identifies the program this game is for. It matches exactly one <program>'s id attribute.

Each <game> has one subelement: <name>. <name> specifies the name of the game.

The temporary servers subsite (at [WWW] http://yourdomain.cc.gamecreate.com/bookings/ ) can be integrated into your web site. This appendix describes the steps required to do so.

48. Overview

To integrate the temporary servers section into your website you will need a few things:

The temporary servers subsite consists of three pages: the calendar view, the user's server list, and the create/edit server page. The subsite can be integrated by creating pages of the same name on your website, performing HTTP requests to the actual GameCreate site on your user's behalf, and then returning the HTML to the user.

49. Creating the pages

The integration works by creating three pages on your site named View.aspx, Edit.aspx, and List.aspx. Alternativly, they may contain .php extensions as shown in the example below. All three files must be in the same directory. The actual directory used is not important - that is, it does not have to be /bookings.

Each of the three pages will need to make a HTTP request to the page of the same name on the GameCreate site. For integration purposes, GameCreate provides a HTML output with no template from [WWW] http://yourdomain.cc.gamecreate.com/externalbookings/ . So, an (incomplete) implementation of View.php by Mammoth Media using PHP might look something like this:

$data = file_get_contents("http://mammoth.au.gamecreate.com/externalbookings/View.aspx");
print str_replace("/externalbookings/","", $data);

That is, the contents of the page are read from GameCreate and then sent to the user. The string /externalbookings/ is removed so that all links are relative to the active directory.

The HTML returned does not contain any sort of navigation (that is, the "Calendar", "Make A Booking", and "My Booking" tabs on the standard temporary servers subsite are not included). It is up to you where and how you incorporate the navigation into your site.

50. Styling the HTML

Having created View.php, Edit.php, and List.php its time to style the HTML to your liking. The HTML supplied makes use of a number of different CSS classes for its elements: all you need to do is supply some definitions. Here's a few pieces from the normal GameCreate stylesheet to get you started:

.GamecreateServerSchedule { width: 100%; border-collapse:collapse; border: 1px solid black; }
.GamecreateServerSchedule TH { color: white; background-color: #888; text-align:left;  border-left: 1px solid white; }
.GamecreateServerSchedule TR.AlternateRow { background-color: #eee; }
.GamecreateServerSchedule .Server { background-color: #eef; border: 1px solid #888; text-align: center; font-size: 9px; }
.GamecreateServerSchedule .AlternateRow .Server { background-color: #bbc;  }

.GamecreateCalendar .Title { background: none #034ea2 top repeat-x; color: white; text-align: left; }
.GamecreateCalendar td.TodayDay { background-color: #034ea2; }
.GamecreateCalendar .TodayDay a { color: white; font-weight: bold; }
.GamecreateCalendar .Title table { margin: 4px; }
.GamecreateCalendar .NextPrev a { color: white; font-size: 9px; }
.GamecreateCalendar { width: 220px; height: 150px; }
.GamecreateCalendar td { font-size:11px; }
.GamecreateCalendar td.DayHeader { background-color: #888; color: white; font-size: 9px; font-weight: bold; }
.GamecreateCalendar .OtherMonthDay { background-color: #eee; padding: 4px; }
.GamecreateCalendar .OtherMonthDay a { color: #888; }
.GamecreateCalendar { border: 1px solid #888; }

Here is the full stylesheet if you need to see some of the other styles: [WWW] http://world.gamecreate.com/stylesheets/stylesheet.css

51. Authenticating the User

If you have tried to use your Edit.php or List.php you have probably noticed that so far, they do not work. That is because these pages require an authenticated user, and since your website has not supplied any user details the page returned is for an anonymous user.

As mentioned earlier, this solution requires the use of external authentication.

We need to send GameCreate information about the logged in user so that it can show the correct information for that user. We do so by performing a HTTP POST to the GameCreate page and supply the following URL-encoded values:

  • __domainlogin__ : The login name for your domain (the same one entered when installing the GameCreate client software)

  • __domainpassword__ : The password for your domain (the same one entered when installing the GameCreate client software)

  • __externalid__ : The Unique ID of the user, as would be returned by your external authentication service

  • __externalname__ : The name of the user, as would be returned by your external authentication service

This task could be performed in PHP for the Mammoth Media domain using Curl with the following code:

// Render the requested GameCreate page
$url = 'http://mammoth.au.gamecreate.com/externalbookings/' . $page . '.aspx';

// Build an associative array of key/value pairs to post
$postparts = array();

// Include our user information in the array    
$postdata["__domainlogin__"] = "mydomainlogin";
$postdata["__domainpassword__"] = "mydomainpassword";
$postdata["__externalid__"] = 5029;
$postdata["__externalname__"] = "Joe Bloggs";

// Attach the form data
foreach ($postdata as $key => $value)
        $postparts[] = urlencode($key) . '=' . urlencode($value);

// Get a post string to use with curl
$poststring = join("&", $postparts);

// Read the page data using curl
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $poststring);
$result = curl_exec($handle);
curl_close($handle);

// Retrurned page result, need to replace specific text in order to allow the page links to work correctly
$search = array('/externalbookings/', 'List.aspx', 'Edit.aspx', 'View.aspx');
$replace = array('', 'list.php', 'edit.php', 'view.php');

$result = str_replace($search, $replace, $result);

// Echo the page contents to browser
echo $result;

52. Sending query string and form data back to GameCreate

Now that the user's ID and name are being sent to GameCreate, the displayed page will reflect that user. However, any data the user submits to your web site (either via a form or by the query string) is not yet being passed to GameCreate. To complete our integration, we must include the supplied query string and form data into the HTTP request sent to GameCreate. Here is the previous PHP code, revised to send the required data:

// Render the requested GameCreate page
$url = 'http://mammoth.au.gamecreate.com/externalbookings/' . $page . '.aspx';

// Attach query string to end of URL
$url .= '?' . $_SERVER['QUERY_STRING'];

// Build an associative array of key/value pairs to post
$postparts = array();

// Include our user information in the array    
$postdata["__domainlogin__"] = "mydomainlogin";
$postdata["__domainpassword__"] = "mydomainpassword";
$postdata["__externalid__"] = 5029;
$postdata["__externalname__"] = "Joe Bloggs";

// Attach the form data
foreach ($postdata as $key => $value)
        $postparts[] = urlencode($key) . '=' . urlencode($value);

// Get a post string to use with curl
$poststring = join("&", $postparts);

// Read the page data using curl
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $poststring);
$result = curl_exec($handle);
curl_close($handle);

// Retrurned page result, need to replace specific text in order to allow the page links to work correctly
$search = array('/externalbookings/', 'List.aspx', 'Edit.aspx', 'View.aspx');
$replace = array('', 'list.php', 'edit.php', 'view.php');

$result = str_replace($search, $replace, $result);

// Echo the page contents to browser
echo $result;

With this step completed, the user can now interact with the temporary servers subsite directly through your own website.

52.0.1. Example

A fully working example may be downloaded from [WWW] http://www.gamecreate.com/downloads.php

53. Configuration File

See File.

54. Domain

A Domain is a virtual 'box' that GameCreate uses to store information on your servers, hosts, and games. It is also used to hold information about your games service, such as a name and contact email. As a GameCreate customer, you will receive your own domain name to access your domain and its contents.

55. File

In GameCreate, a file is a text-based game configuration file managed using the GameCreate interface. GameCreate can maintain multiple definitions for the one filename (such as two copies of "server.cfg", one for team gameplay and one for duels). Each server can select the file definitions it needs to use.

Apart from the normal contents of configuration files required to run the server, files can contain property substitutions and tags. Together, these features allow GameCreate's configuration screen to have full control over the contents of a file without the need to edit it manually.

56. Game

A Game is the software and accompanying data files required to run a particular server. A game can be installed on a host, allowing a game server to be created on that host. In particular, note that game modifications, or mods, are generally treated as separate games in GameCreate.

57. Game Server

See Server.

58. GameCreate Service

The GameCreate Service is the GameCreate.com web interface and associated software that the GameCreate client communicates with. Generally, we will not refer specifically to the 'service' and instead will just refer to GameCreate as a whole. However, it is important to point out at a high-level how GameCreate works. By installing the GameCreate client on your host, you allow GameCreate.com and your host to communicate over the internet. In turn, by accessing GameCreate.com you can manage game servers on that host.

59. Host

A Host is a physical computer. Game software is installed on a host, allowing one or more servers to be run on the host. In GameCreate, a host is specifically a physical computer on which the Game Create Client software has been installed.

60. Property

A Property is a configuration option that affects a game server in some way. In GameCreate, there are two types of properties: built-in, and game-specific. Built-in properties are shared by all servers regardless of game type: properties such as "Name" and "Maximum Players" are built-in. Game-specific properties are provided as a means of configuring various options for particular games. For example, a game may have a properties such as "Time Limit" and "Friendly Fire".

Properties have a 'type' such as "SELECT" or "TEXT". The type determines how the property appears on the server configuration screen. A "SELECT" property will display a drop down list of values ot choose from, whereas a "TEXT" property allows arbitrary text input. Values selected on the server configuration screen are then placed into configuration files using Property Substitution.

61. Property Substitution

Property Substitution is the process of taking the values selected for Properties and placing them into configuration files. Each Property in GameCreate has a variable name that identifies the property: for example, a "Time Limit" property may have "timelimit" as its variable name. Configuration files will indicate where to insert the value of the Time Limit property by including the word "%timelimit%" (that is, the variable name surrounded by percentage signs) in the file. When the configuration file is written to a host's disk, "%timelimit%" will be replaced by the value for Time Limit selected in the server configuration area.

62. Property Value Inheritence

In GameCreate, property values are inherited whenever a default value is selected. Consider the server configuration screen: default property values are shown in grey, non-default values are shown in white. The initial default value for a property comes from the property itself. If the property's default value is changed, all servers using the default value (that is, have the property shown in gray) will use the new default value for the property.

The default value is then inherited from any templates applied to the server, that specify a value for the property. If multiple templates have a value for the same property, the template number determines which template is used (highest number being the selected template).

For the value from a template to be used, the property must be shown in grey (ie, default value) on the configuration screen. If the property is shown in white (ie, non-default value), the template's property value will not be used and changes to the template's property value will have no affect on the server.

63. Server

A server is the individual location that players connect to when playing a game. At the computer level, a server is a running instance of the dedicated server software provided by a game's developer. In particular, note that we will never use the word server when referring to an actual computer.

GameCreate supports two types of servers: permanent and temporary. Permanent servers are the type you are likely familiar with: they are intended to be running 24x7. Temporary servers are a unique GameCreate feature that allows your users to create servers that run for a short time (typically a few hours) and which the user has full control over it.

64. Tag

A tag is a word that can appear in a file to affect what is written to the host's disks. Tags can perform tasks such as selecting between blocks of text based on some condition, including other files, and manipulating property values. For example, usePassword=<gc:if>%password%<gc:then>1<:gcelse>0</gc:if> would result in usePassword=1 being written if there was a password set in the configuration screen, and usePassword=0 if there was not.

65. Template

A template is a named collection of one or more property values - or in other words, a partial configuration. Servers that share similar property values can make the relationship explicit by creating a template containing the common property values. The template is then applied to each configuration server. This is advantageous because a change made to the template will then affect all servers using the template (although see Property Value Inheritence for exceptions).

last edited 2006-08-23 07:44:45 by AdamWilliams

© Mammoth Media 2001-2007.
GameCreate™ is a trademark of Mammoth Media Pty Ltd. GameCreate® is a registered trademark in Australia.