After the excitement and success of the original Battlebits, we decided to take it to the next level for Shmoocon 2017! We went all out and built a new, more challenging arcade version of Battlebits. The look and feel as well as the game play and the backend of Battlebits changed to form Battlebits2. Basically, Battlebits2 is an entirely new game other than the one thing that remained the same; the main purpose of the game is still converting hex to binary.
Battlebits2 is a significant enhancement over the original Battlebits and a complete change of gameplay. The new version is played on an arcade box and is a head to head matchup of two players. The players compete in a pong style game bouncing bytes back and forth by entering the correct binary conversion for each byte. If a player does not enter the conversion correctly in time, the byte will smash their stack. Once a player’s stack is completely destroyed, the opponent will win the game! The game screen is pictured below with some of the mentioned features highlighted.
Battlebits 2 Gameplay
The gameplay follows the pong idea in that the players must move their player left and right to align in the appropriate column. Once in the column they must enter the correct byte value in order to bounce it back at their opponent. Players are only able to bounce bytes that are heading toward their stack. Watch out! The speed of the byte increases with every successive bounce! In addition to the bouncing bytes, players have powerups that will allow a certain advantage over their opponent.
In total we designed 5 power-ups, 2 of which are given to the players at the start, and the other 3 can be collected through gameplay. The first 2 powers, which are given at the start of the game, are more useful to save the player in stressful situations. The first power-up shoots a missile at the byte, changing its direction, just incase a player is running out of time to solve the byte. The second powerup will slow down the speed of the byte. As bytes are continued to be solved, they will increase in speed, this is just one way to help the player out. The player should only use these two power-ups if desperate. They are only given at the start and aren’t available to be collected during the game
The other three power-ups are given to the player when he solves byte that is flashing. One of the target bytes is randomly assigned to contain a powerup, and when it does it will start to flash. There are two offensive power-ups and one defensive one, there is a small time restriction after each power-up that will prevent a player from using all of their power-ups at once. The defensive one, when activated will solve half of the byte for you, or effectively the first nibble. This makes it easier for the player, as they only need to configure 4 bits, which is really helpful towards the end of the game.
The next two power ups affect the opposing player. At the start of selecting a byte to solve, the byte is all zeros, and the player must toggle the necessary bits to a one. One of the power-ups will invert the starting bits. So instead of toggling the appropriate bits to a logical one, they must be toggled to a logical zero. The other power-up will swap the endianness of the bit. So as opposed to starting big-endian, where the cursor is only the most significant bit and moving to the right to the lease, the byte is now swapped to little-endian and must be solved going from least to most significant bit.
Battlebits2 is similar to the original Battlebits in that it is built from IoT components but in this version the components are not networked. The game is a standalone piece of software written in python using the pygame library. All of this is implemented on a Raspberry Pi, and encased in the arcade box. The limited capabilities of the Pi made it necessary for us to optimize the python code in order to improve the speed and experience of gameplay. Soon, we will have another blog post detailing how you can build your own arcade using the same materials and processes we used to build Battlebits! The code is open source the code so stay tuned for that update!