Show / Hide Table of Contents

Creating a new Game

In order to create a new game, you can use a combination of the Game and GameConfiguration objects. You must first create a new GameConfiguration object to tell the Game how to generate its state and map. Once the GameConfiguration object has been created, you can pass it into the Game constructor to create a new game. It is important to note that a GameConfiguration object requires a list of the players who will be in the game.

For a Multiplayer game, this will be a list of the players in the game, for a single player game these can be players with a random ID. An example of this is shown below:

// Create a list of players for the game
List<Player> players = new List<Player>();
players.Add(new Player(1));
players.Add(new Player(2));
players.Add(new Player(3));
players.Add(new Player(4));
// Add more if needed
            
// pass in players to GameConfiguration constructor
GameConfiguration config = new GameConfiguration(players);

// Configure the map generation as required with the GameConfiguration object.
config.seed = 1234;
config.dormantsPerPlayer = 3;
config.maxiumumOutpostDistance = 100;
config.minimumOutpostDistance = 5;
config.outpostsPerPlayer = 7;     

// Pass the game config to the game to start the game.
Game game = new Game(config)

Once the game has been created, most interaction will be done through the TimeMachine class. This class manages the game's simulation and allows you to advance and rewind through the game as well as get the GameState at the current tick.

The TimeMachine is globally accessible and can be obtained anywhere after a Game has been created by using the following snippet:

TimeMachine timeMachine = Game.timeMachine

Once you have access to the TimeMachine object, you can get the current game's state with the getState() method. The GameState lets you access anything related to the game. For example, all subs, all outposts, all players, all specialists, and more. The following code snippet shows how you can use the GameState to get some basic info.

GameState currentState = Game.timeMachine.getState()

// Get all outposts
List<Outpost> outpostList = currentState.getOutposts();
foreach(Outpost o : outpostList) {
    Console.WriteLine(o.getDrillerCount());
}

// Get all subs
List<Sub> subList = currentState.getSubs();
foreach(Sub s : subList) {
    Console.WriteLine(s.getDrillerCount());
}

// Get a list of the players
List<Player> playerList = currentState.getPlayers();
foreach(Player p : playerList) {
    Console.WriteLine(p.getPlayerName());
}

There is much more you can do with the GameState object and this is further documented by looking at the API documentation.

Back to top Generated by DocFX