03 Level Generation Machines

Setting up the machines generating the level.

In this tutorial we’ll add the schematics we created in the previous tutorial using an Auto Machine and 3 Tagged Machine components.

First, create a new empty game object (e.g. using the Unity menu: Game Object > Create Empty), rename it to GameManager and place it at X=-5, Y=4, Z=0. We’ll be adding the machine components to this game object.

Board Manager: Auto Machine #

The BoardManager schematic handles generating the level – we’ll use an auto machine to do this at the start of the level.

Add an auto machine component to the GameManager (e.g. using the component menu: Makinom > Machines > Auto Machine) and change the following settings.

Start Settings #

  • Start
    Enable this setting.

Machine Execution Settings #

  • Schematic Asset
    Select BoardManager.
  • Execution Type
    Select Single.
  • Update Type
    Select Update.
  • Stop On Destroy
    Disable this setting.

Local Start Variables #

The Machine Start Variables we’ve set up in the schematic are automatically added here with their default values – since the default values are already what we need, we don’t have more to do here. Make sure all variables are enabled.

That’s it for the auto machine.

Random Placement: Tagged Machines #

We’ll add 3 tagged machines for the random placement.

Walls #

Add a tagged machine component to the GameManager (e.g. using the component menu: Makinom > Machines > Tagged Machine) and change the following settings.

Start Settings #

Click on Add Starting Tag to add a tag that can start this machine.

  • Starting Tag
    Set to walls.

Machine Execution Settings #

  • Schematic Asset
    Select RandomPlacement.
  • Execution Type
    Select Single.
  • Update Type
    Select Update.

Resource Overrides #

Expand the Resource Overrides to change the used prefabs.

  • Override Prefabs
    Enable this setting.

Click on Add Prefab multiple times – we’ll need 8 prefabs in total.

  • Prefab
    Select Wall1 to Wall8.
    The prefabs can be found at Assets/Tutorial Resources/Prefabs/.

Local Start Variables #

  • Set Start Variables
    Enable this setting.

Click on Add Variable to add a start variable.

  • Variable Key
    Set to objectCount.
    Use the Value string type.
  • Type
    Select Int.
  • Operator
    Select Set.
  • Float Value
    Select Value > Random.
  • Value
    Set to 5.
  • Value 2
    Set to 9.

We’ll be adding between 5 and 9 walls to the level.

Food #

Copy the previous tagged machine by right clicking on the component’s name and selecting Copy Component. Add it by right clicking on the name again and selecting Paste Component As New.

Change the following settings.

Start Settings #

  • Starting Tag
    Set to food.

Resource Overrides #

Expand the Resource Overrides to change the used prefabs.

We only need 2 prefabs this time, i.e. remove the not needed amount.

  • Prefab
    Select Food and Soda.
    The prefabs can be found at Assets/Tutorial Resources/Prefabs/.

Local Start Variables #

Change the random numbers – we’ll be adding between 1 and 5 food items to the level.

  • Value
    Set to 1.
  • Value 2
    Set to 5.

Enemies #

Again, copy the previous tagged machine by right clicking on the component’s name and selecting Copy Component. Add it by right clicking on the name again and selecting Paste Component As New.

Change the following settings.

Start Settings #

  • Starting Tag
    Set to enemies.

Resource Overrides #

Expand the Resource Overrides to change the used prefabs.

  • Prefab
    Select Enemy1 and Enemy2.
    The prefabs can be found at Assets/Tutorial Resources/Prefabs/.

Local Start Variables #

The enemy objectCount will be set by the BoardManager that calls this tagged machine, so we don’t need local start variables this time.

  • Set Start Variables
    Disable this setting.

And that’s it for now – don’t forget to save the scene.

Testing #

Click on Play to test the game. The text message will be not yet be displayed (Day 1), since we haven’t set up the UI box prefabs yet, but after the screen faded in you’ll see the generated level – each time you start the game, different level will be generated.

The next tutorial will handle the player controls.