Home > Automata, Mindstorms > GRINDER Bot


November 28th, 2017 Leave a comment Go to comments

A Mindstorms EV3 bot created to operate an Xbox controller in a manner allowing it to pretend to be a live player in the Star Wars Battlefront 2 game.


Completion date: 26/11/2017
Power: electric (EV3 Mindstorms)
Dimensions: length 26 studs / width 18 studs / height 13 studs (not including the EV3 unit)
Weight: 0.879 kg (including the Xbox controller)
Motors: 4 x EV3 Medium

A simple build of the “creative laziness” kind. I was one of the many buyers of the EA’s new Star Wars Battlefront 2 game who liked to play it, but didn’t appreciate the progression system based on random loot boxes and requiring hours and hours of grinding. After a while, I’ve noticed that even doing nothing netted you a few credits in the game’s Galactic Assault multiplayer mode – however, doing literally nothing would result in getting kicked from the game for idling. The bare minimum needed to stay in game seemed to be doing some moving around and shooting. And since Galactic Assault worked like a playlist, with one match starting automatically after another, a device that does some moving and shooting could theoretically play match after match indefinitely.

I’ve decided to try to create a LEGO device that would operate an Xbox controller in a possibly lifelike manner. I have initially tried to use the LEGO Boost set for it, but programming the device proved difficult as the Boost app was simply not flexible enough when it came to custom builds. So I’ve turned to the EV3 Mindstorms set, with which the programming was pretty straightforward. I’ve built the device around the controller so that four motors could operate two joysticks (one only in X and the other only in Y axis, so as to walk and turn around) as well as two buttons: the weapon trigger for shooting and the X button for jumping and confirming character class upon respawn (basically, mashing the X button would help to respawn faster if my character got killed). Next, I’ve created a Mindstorms program that ran a loop in which the type, order and duration of each action was randomized within certain range, so as to “play” the game with a high degree of randomness and thus bypass any bot detection system that might be built into it. The resulting bot would repeatedly walk and turn around, jump and shoot, but always in different order and for different time.

I had the bot playing the game for no more than 1 hour when developing it and filming it, because I didn’t want to hurt the performance of my multiplayer team too much, nor risk bot detection. Still, even for such a short period of time it was extremely funny to watch a mindless, random device play together with live players. In a way, it behaved pretty much like a Star Wars stormtrooper, by running into walls and shooting blind. It never scored a hit or kill against an enemy player that I’ve seen, but it got shot a few times. For most of the time it didn’t progress far beyond the spawn location because the tight and complex structure of the multiplayer maps made progress by walking randomly difficult. It was cheating, of course, but it was also creative and hilarious, and I have effectively created a LEGO device that turned electric power into Star Wars credits 🙂


01.JPG IMG_1313.JPG IMG_1325.JPG IMG_1332.JPG IMG_1336.JPG


Media coverage:

Makezine, Reddit

Categories: Automata, Mindstorms Tags: , , ,
  1. No comments yet.
  1. No trackbacks yet.