Skip to content
wooshrow edited this page Aug 19, 2022 · 9 revisions

Lab Recruits

Lab Recruits is a 3D computer game intended for testing AI. It is work in progress as we work on adding more game features. The play goal can be to simply explore a given game level, or to collect as many points as possible. Since version 2.2 it is possible to have a goal-flag with id "Finish". Touching this flag will mark the game as finished/gameover. The player(s) cannot see objects' ids though, so he/she will have to try to find out which flags are the finish-flag.

A distinctive feature of Lab Recruits is an ASCII-based level definition that allows AI researchers to define their own AI challenge.

You can create a level like the one shown in the screenshots above. Currently you can place buttons/switches and doors. Doors block access, and buttons can open (or close) them. They can be in many-to-many relation to build a pretty challenging level.

Gameplay

After the game is launched, you can load a level-file. This will load a level to play.

Player character(s) have health (100 points). A level may contain hazards (fire). You can walk through fire, but this will hurt your character. Since version 2.2 a level may also have infected humans. If a player gets too close to an infectee, it will go after the player. Fortunately, these infected humans are not very fast, but if they touch you it will hurt. There is no gun or chainsaw to destroy them (violence is not our way!). Fortunately, the infectee will pause after it touches you (perhaps your touch soothes its pain?); ... run before it starts following you again.

Visiting a button for the first time is awarded some small point. Turning a button on for the first time is also awarded. A level may have goal flags. "Touching" these such a flag heals the player (and awards a lots of points). Since version 2.2 one flag can be given id "Finish". Touching this flag marks the game as finished (gameover). It also gives lots of points. Importantly, this will also pacify all infected humans in the level. You can still play the game after it is marked as gameover if you want.

Game control (as a human player)

  • Direction: use wasd keys.
  • 'e' key: interact with a game-object (currently button).
  • 'r' key: toggles between the 3rd person view (default) and the 1st person view.
  • Camera control:
    • In 1st person view: use the mouse to move around your viewing camera (the angle of your view towards the game).
    • In 3rd person view: move the mouse while holding its right button to move around your viewing camera.
    • Zooming: use the mouse's scroll wheel to bring the camera closer or move it away (zooming in/out).
  • Switching between characters. A level can create multiple characters that the player can control. When played by human, the game does not support multi-playing (multiple humans playing the same level). Instead, the single player can control all the characters, but one at a time. Available characters are shown in the top-right of the playing window. Click one of them to switch focus to the corresponding character (from this point on you would control this character, until you switch to another).

Creating a level

A level can be defined with a CSV file which can be loaded into the game. An example is shown below.

More on defining a level: here

Programmatically controlling player characters

There is a set of Java classes that will allow you to programmatically control player characters, hence allowing you to test your AI through this interface. Currently this interface is still located in a sister project; I will separate it for modularity. TODO :)

For now, to connect your AI to control Lab Recruits player characters you need to use the java library from a sister project iv4xrDemo. This library will provide an interface.

Light intensity control The light intensity can also be controlled from the Java-side, e.g. to create/simulate a darker play.

Binary download

No longer provided. Build it from Unity :)

Contributors

Original: Adam Smits, August van Casteren, Bram Smit, Frank Hoogmoed, Jacco van Mourik, Jesse van de Berg, Maurin Voshol, Menno Klunder, Stijn Hinlopen, Tom Tanis, Quinto Veldhuyzen, Sophie Meester. Later: Naraenda Prasetya, Wishnu Prasetya.