Running a Game


Every RoboRuckus game needs a game master to set up and run the game. That doesn’t mean the game master can’t also play, since their duties are mostly confined to starting the game and managing things between rounds. This guide assumes you’re using the Raspberry Pi server described in Setting Up the Game. The game supports mobile devices, but for clarity only clicks will be referred to, although taps can be substituted for clicks.

Starting the Game

To begin, connect to your Raspberry Pi via its RoboRuckus Wi-Fi network and start the Kestrel server via SSH (terminal). Turn on all the robots you’ll be using in the game, their LED displays should show the letter “A” when they have successfully connected to the server.

If you’ve installed nginx and dnsmasq, open the set up page in a web browser by going to http://roboruckus.com/Setup, otherwise go to http://192.168.3.1:8082/Setup.

At the setup page, select the number of players and choose a game board to play. The number of players is the maximum number allowed in the game, contingent upon enough robots being available. Optionally, drag between one and four flags onto the board; if no flags are used, a “deathmatch” robot game will be started. You should use vinyl decals, stickers, tape, or something like that to indicate on the physical game board where the flags are. Once you’ve finished setting everything up, click the “Setup” button to start the game; you will automatically be taken to the monitor page. The game will not be started yet. When all the players are ready, click the “Start Game” button to deal the first hand of cards and start the game.

The setup page.

Setting the maximum number of players.

Selecting a game board.

Adding flags to the game.

Finishing the setup.

Starting the game.

Tuning the Robots

Tuning the robots should be done regularly to ensure the robot movement is as reliable as possible. Ideally, the robots should be tuned before each day of use. Tuning modifies a number of parameters described below that each robot uses to move and navigate. These parameters are stored in the robot’s EEPROM so they will persist until they are changed again.

To enter tuning mode, navigate to the game setup screen as described above. Make sure all the robots you want to tune are turned on and connected to the game server (their LED displays should show a letter “A”). Once at the setup screen, select the button that says “Tune Robots”. From there you can select the robot you’d like to tune. When a robot has been selected and has entered tuning mode its LED display will switch to showing the number “0”. Any robots being tuned should be placed on the game board in a square as if ready to play.

Entering turning mode.

Select a robot to tune.

Tuning options.

Tuning mode has a number of parameters which fit broadly into two categories: speed and navigation. A robot’s speed should be tuned first followed by the navigation. The only option that falls outside those two categories is the robot’s name (the last option). You can use the text field here to type in a new robot name for the robot to use in the game. When the “Finish” button is selected the name, along with all the other tuning parameters, will be saved to the robot. You can abort a robot tune and revert to the previous settings by turning the robot off and back on again at any time before you’ve hit “Finish” button. You will also need to navigate manually back to the initial setup screen and start the process over.

Tuning Speed

There are four parameters that control the robot’s speed:

  • Left Forward Speed
  • Left Backward Speed
  • Right Forward Speed
  • Right Backward Speed

These control how fast each wheel turns when moving forwards or backwards, increasing the value means increasing that wheel’s speed in that direction. After adjusting the parameters select the “Speed Test” button to see how they work. The robot will drive forward for three seconds and then backwards for three seconds. You want to adjust the speed parameters so that the robot moves in a reasonably straight line each way and covers approximately three board squares each way (i.e. the ideal robot speed is approximately one square per second). You will need to select “Speed Test” each time you change a speed parameter for it to be sent to the robot. Selecting “Finish” will commit these changes to the robot’s EEPROM.

Tuning Navigation

The remaining parameters control how the robot navigates the game board using magnetic path following and the gyroscope. They are:

Z Threshold: This controls how aggressively the robot stops when sensing the large magnetic field at the center of each board square. If the robot is driving too many or too few spaces, this is a good parameter to adjust. Making it less negative will make the robot more likely to stop sooner and vice versa.

Turn Boost: This controls how quickly the robot moves to correct itself when drifting off course. Increasing this value can help the robot stay on course, but increasing it too much will cause the robot to oscillate back and forth quickly when moving. This parameter is related to the next two which all aim to keep the robot moving straight, so if this doesn’t help try adjusting the other parameters as well.

Drift Threshold: This adjusts how sensitive the magnetometer is to the robot drifting of course. Decreasing this value will make the robot more aggressive in trying the follow the magnetic line. Decreasing it too far will cause the robot to always act like it’s off course even when it’s not.

Turn Drift Threshold: Much like above, this controls how sensitive the gyroscope is to the robot drifting off course. Decreasing this value will make the robot more aggressive in avoiding any turning while moving straight. Decreasing it too far will cause the robot to rely solely on the gyroscope for navigation and not the magnetometer which is not very reliable. Ideally, the gyroscope should be used to correct the robot’s movement until it’s close enough to the magnetic line for the magnetometer to take over.

Turn Factor: This controls how far the robot actually rotates when attempting to make a 90 or 180 degree turn. Increasing this value will have the robot rotate further and vice versa.

After adjusting the above parameters, select the “Navigation Test” to see how they work. The robot will attempt to navigate the board and move two spaces forward, back up one space, rotate right, rotate left, and lastly rotate 180 degrees. You will need to select “Navigation Test” each time you change a navigation parameter for it to be sent to the robot. If the robot is able to successfully execute this pattern reliably then select the “Finish” button to commit the changes to the robot’s EEPROM.

When you’ve finished tuning all of the robots, select the “Done” button to return to the setup screen where you can continue the game setup as described above.

The Game Monitor

The monitor page displays the current game state, which is useful both for the game master and observers. At the top it shows the maximum number of players allowed in the game, and below that is the game board map marked with all the flags and current positions and orientations of all the robots in the game. The game board map is useful if a robot accidentally wanders off course on the real game board, you can see where it should be and pick it up and place it on the correct space.

The monitor page

The monitor page.

Next to the board (or below, depending on the screen size) is a list of the current players in the game and their statuses: The player number, their current damage, their current number of flags touched, and their lives remaining. Next to (or below) that is an indicator showing the current player move or board element being executed.

At the bottom of the page are three buttons. First, if the “Timer Enabled/Disabled” toggle is enabled, the thirty-second player timer, for the last player picking their program, will be used; this will only work if there is more than one player in the game and can be toggled anytime as long as two ore more players are programming their robots. Clicking “Restart Game” will restart the current game, with the current players sent back to the Player Setup page. Clicking “Reset Program” will return the game to the initial state, kicking the current players out and allowing the game master to set up the game from scratch with new (or the same) players.

Clicking on any player number (the yellow squares) will pop-up a window that will allow you modify that player. You can change their robot’s location, damage, number of flags touched, lives, or even switch them to a different robot altogether. This feature is still in testing, and there is no input validation (you could move the bots to a location off the board, for instance), and if you increase a bot’s damage to the the point where additional cards would be locked, the game server will crash. You can only modify a player in-between rounds, not during.

Re-entering Robots

When a robot, or robots, are destroyed in the game the monitor page will show them in the Player Moves section after the end of the round. Below each robot is the zero-ordered [x, y] coordinate of the last checkpoint (wrench or flag) the robot touched, or the starting coordinate of the robot. The round will be paused and no new cards will be dealt until all the bots are re-entered.

The checkpoint is a suggestion that you, as the game master, can choose to ignore as you drag-and-drop the dead robots back onto the board. After dropping a robot onto the board, clicking it will rotate its orientation.

When a robot is destroyed during a round, it should immediately be picked up and removed from the physical board until it’s re-entered at the end of the round, and then placed on the appropriate space.

The interface to re-enter robots.

Placing a robot back on the board.

Submitting the bots for re-entry.

Once you’ve re-entered all the robots and set their orientations according to the RoboRally rules, click “Re-enter Bots” to submit the new bot positions and start the next round. After a robot is killed three times the player is out of the game, and they won’t be available for re-entry.

URL Organization

If you or a player gets lost or hits the back button in the browser and can’t find the correct interface page, don’t worry, you can manually get to any page if you know the player number. Use the following guide to direct the players to the appropriate pages when needed, substituting # for theĀ  player’s number (1, 2, 3, etc…). Here, http://roboruckus.com refers to the game server’s address.

  • http://roboruckus.com/Setup/ – The setup page for the game master, redirects to the monitor address if the game is already set up.
  • http://roboruckus.com/Setup/Monitor – The monitor page shows the current status of all the players and robots in the game, also allows the game master to re-enter destroyed robots into the game.
  • http://roboruckus.com/Player/playerSetup/# – The player set up page, which allows a player to pick a robot and enter the game.
  • http://roboruckus.com/Player/Index/# – The main player interface page, where a player can enter their programs to control their robot.

Visiting these pages out of order, like going to a player’s interface page before that player is set up, is potentially unsafe and could cause the server to lock-up, so be careful when manually visiting specific pages.