Building a Game Board

Building a game board is pretty straightforward, although getting everything lined up can be a challenge. Here you’ll find all the information needed to design and build your own game board.


Recommended Tools

  • A table saw, or a circular saw and cutting guide (or a helpful lumberyard/hardware store employee)
  • A router with a 1/2 inch strait cut bit and a 1/4 inch strait cut bit
  • Two C-clamps or Bessy clamps
  • Tape measure and/or measuring stick
  • Carpenter’s square, framing square, or speed square


Make sure that you are familiar with how to use these tools safely or are working with someone who does, and use proper safety equipment; these tools are potentially dangerous and as cool as RoboRukus is, it’s not worth losing fingers for it!

Making the Board Squares

A standard RoboRally board consists of a grid of 12×12 squares. For RoboRuckus each space should be at least 5″ (inches) square, so a standard board would be 60 square inches. However, to make sure the robots have plenty of room inside each space, making the spaces 5-1/4″ square is a good idea, which makes the overall board 63″ square.

If you have the room, you can make one large board, but to make the board more portable and easier to store it can be divided into nine smaller pieces, each 21″ square.

First, cut your MDF into nine 21″ by 21″ squares using the table saw or circular saw. It’s very important to make sure the board pieces are exactly square and exactly 21″ on a side; if the pieces aren’t square and true the magnetic strip won’t line up and your robots won’t navigate correctly. Make sure to account for the kerf, or the width of the wood that the saw blade removes every time it cuts. If you just measure out four lines 21″ inches apart your last square could be 3/8 of an inch shorter than your first one.

Alternatively, your local hardware store or lumberyard may offer cutting services for a nominal fee. While these services are fast and easy, you should make sure they’re accounting for the kerf of the blade, as mentioned above.

Getting the board squares cut.

Next, draw a line across a board square 2-5/8″ from any edge. This is going to be the center of where your first strip of magnetic tape will go, and again it has to be marked accurately in order to line up with the other board squares. Mark three more lines at 5-1/4″ intervals from the first. This should result in a line 2-5/8″ from either edge and two more lines evenly spaced 5-1/4″ apart between them in the center. Once you’ve finished this, turn your square ninety degrees and repeat this process. You’ll end up with an evenly spaced grid that, when it’s placed next to the other board pieces, will have a bunch of squares spaced 5-1/4″ center-to-center. Repeat this process for the other eight board squares. We found the easiest thing to do was to make two marking guides, both 21″ long. Cut one to 2-5/8″ wide and the other to 5-1/4′ wide. If you cut these correctly you can use them to make accurate strait lines over and over again on your board squares.

Next install the 1/2″ strait cut bit into your router. Measure how thick your magnetic tape is and set the depth of cut on the router to that thickness. Ours was 1/16″, but yours may vary so be sure to measure. Now comes the part where you’ll have to do some figuring: You need to determine how far the edge of your router’s base is from the center of the bit. To do this, measure the router base from one edge to the other strait across the middle. Halve this measurement and write it down. You’re going to use this measurement to place a routing guide (a strait piece of scrap wood) exactly one half the width of your router’s base away from one of the grid lines you drew previously. The routing guide will let you route out a 1/2″ channel exactly centered on the grid you drafted out in the previous step. This channel is where you’re going to lay the magnetic tape.

Lay your board square on your work surface with the grid side up, then lay your routing guide parallel to a grid line and “half of the router base” distance away from the line and clamp the guide down; it’s best to start at one edge and work your way across. Start the router and run it along the routing guide, cutting a channel exactly big enough for your tape to lay in. Repeat this process for the all the other grid lines until you have a grid of channels evenly spaced across the surface of your board. Do this again for the rest of your board squares. This process of measuring, marking, clamping, and routing can get tedious, so you might want to make a routing jig (a frame or guide attached to your bench) to make the process much faster. Making a jig is an article all by itself, so it won’t be covered here, but however you do it, route the channels into all nine board sections.

You’re almost done, but there’s a little more work to do before you can start laying tape into the channels. Each intersection on the grid has to have a neodymium magnet embedded under the magnetic tape. To do this, change the router from the 1/2″ to the 1/4″ bit. Now measure the thickness of the magnets and add that to the thickness of the magnetic tape that you used in the last step (alternately, measure the thickness of the tape and magnet together). Set the router’s depth to this measurement and freehand a pocket big enough to accept the neodymium in the center of every intersection. Don’t worry about making perfect circles, just make sure your circles don’t get outside the channels. If you have a vinyl mat printed, you can lay that on the completed board sections to check the fit.

The finished board.

The finished board.

Installing the Magnets

The first step is to glue one of the neodymium magnets into each of the routed pockets at the intersection of the channels. It’s important to make sure the same pole (face) of the magnet is facing up for every magnet. While which side of the magnet you chose doesn’t really matter, to use the same one we use you can take a single magnet and lay it flat on a surface, then move one of the magnetometers slowly over it while reading the Z-axis value (you can follow these instructions for setting up the magnetometer). The value should drop and go more negative as it approaches magnet, if it goes more positive first then drops towards negative, flip the magnet over. If you use a different face than we did, the robot control program might need some tweaking.

Once you’ve decided on a face to use, place a drop of glue or epoxy in each pocket and press a magnet into the glue until every intersection has a magnet. Repeat this for all nine of the board squares.

Installing the magnetic tape requires the same attention to orientation as the neodymium magnets. The way it’s currently set up, the white tape side of the magnet strip faces up, if you’d like to reverse this, you’ll need to alter the robot movement code, which isn’t recommended unless you’re confident in your understanding of the code.

To install the strips, cut a length long enough to reach from one board edge to the other. You might get cleaner results by cutting the piece slightly long and trimming it once it’s installed. Try pressing the strip into the channel and make sure it’s flush and not bulging up anywhere; you can try to flatten any troublesome areas by pressing the edge in with a screw driver, or trying to flatten it with a rolling pin or similar item. If the channel is too tight, you can trim the tape lengthwise with scissors or a paper cutter to make it narrower, else if the channel is too lose a few dollops of glue can help hold the strip in place.

Repeat this for the next three strips until you have four parallel strips running across the board. Carefully cut smaller strips and fill in the perpendicular channels, butting the smaller strips up against the longer strips as exactly as you can; the idea is to have the robot “see” each direction as one continuous strip. Repeat this for all nine board squares and then peel the white protective tape off of all the strips.

Magnet installation workstation.

Installing the strips.

The installed strips.

A completed board square.

Once the magnets are installed you’ll want to prime or paint the board. The board pieces need to be sealed against moisture so that they don’t warp over time (plus they just look neater). Don’t use a heavy coat and make sure to cover the top, sides, and bottom. Painting only one side might cause exactly the kind of warping that we’re trying to avoid.

A painted board square.

A painted board square.

Painting was the last step, so sit back and enjoy your craftsmanship as your bots raise a ruckus down on the Factory Floor! Patience and accuracy are going to be your best friends while you’re working on this, so make sure not to rush through any of the processes. If you do this correctly you’ll be able to lay your board squares down in any position and turned any direction and still have all the lines match up.

The Game Mat

A game mat printed on vinyl provides an excellent surface for the robots to drive on, as well as providing the obstacles the robots need to navigate. For copyright reasons, we currently don’t have any printable boards that can be shared (though you can find an unofficial list of official RoboRally boards here), however you can find all our custom assets for the various board elements in the GitHub repository.

Using your favorite image editing program, you can lay out a grid of squares to match your board. You can then add the board elements in whatever pattern you’d like. Once you’re happy with your board, you can have it printed at a site like You can print as many boards for the game as you want, and can print them double-sided for more boards on less vinyl. It’s a good idea to include a red dot or some other mark in the lower left corner of your board to indicate the [0, 0] (origin) coordinate.

The flags can be printed on reusable stickers purchased from a place like Sticker Genius (4″x4″ is the recommended size) using the assets in the GitHub repository, or they can be printed directly on the board.

Adding the Board to the Server

The last step is to get your board into the game server (this assumes you’ve already read Setting Up the Game). The first step is to encode all the important information about your board in a JSON file (a plain text file with a .json extension).

The first part of the file looks like this:

You should change the name and size of the board to match yours. The size is the zero-ordered number of spaces [x, y] in your board, so if your board is 12×12 spaces, use [11, 11]. The rest of the file contains the board elements, which should match the ones on your printed board. For example:

The above example shows two of each of the supported elements (more could be added where the ... are). If you don’t have any of a particular element, leave the space between the brackets for that element blank, e.g. "lasers": [ ],. The currently supported board elements are (though more may be added in the future):

  • wrenches – This element consist of an array of [x, y] coordinates for each wrench on the board.
  • pits – Much the same as wrenches, this is an array of [x, y] coordinates for each pit on the board.
  • turntables – This element consists of the [x, y] coordinate of each turntable and the direction each turntable rotates (right for clockwise, left for counterclockwise).
  • lasers – This element consists of the starting [x, y] coordinate of each laser, the ending [x, y] coordinate of the laser, the number of beams (i.e. the damage it does), and the direction the laser fires towards.
  • conveyors – This element consists of the [x, y] coordinate of each conveyor piece on the board, the side of the square the conveyor enters (starts) on, and the side of the square the conveyor exits (ends) on. Note: Merging conveyor spaces are not currently supported.
  • expressConveyors – The same as conveyors but for the express conveyor spaces.
  • walls – This element consists of the [[x1, y1], [x2, y2]] coordinates of the two spaces each wall stands between.

A full example of the JSON encoding of the RoboRally board Chop Shop is included below (click or tap to expand):

Save your board file with the same name as your board, but with the spaces removed, so Chop Shop becomes ChopShop.json; be sure to match the capitalization. Now put your JSON file in the sever directory ~/RoboRuckus/GameConfig/Boards/.

Lastly, you should save a PNG image of your board, with the same name as your board file (e.g. ChopShop.png), and put it in the server directory ~/RoboRuckus/wwwroot/images/boards/. When you next start a game you should see your board in the selection menu, now go play it!