Halo inspired laser tag (LTTO hack)

Bringing Halo style game play to Laser Tag Team Ops

Similar projects worth following
I bought a bunch of laser tag guns off ebay for cheap (the tiger electronics Laser Tag Team Ops guns from the early 2000's) to use with my church's youth group. We quickly outgrew their capabilities. So began my project to replace the guts of each gun and write my own code.

The main objective was to get custom laser tag gaming on an arduino based platform as cheap as possible. Kids would be able to play pickup games easily at our church. I wanted to add a lot of really useful features and the list just kept on getting longer and longer. 

The current feature set:

Everything runs on the Teensy 4.1 by PJRC

upgraded from 6xAA batteries to lipo battery with built in recharging

replaced monochrome screen to full color LCD st7789 screen

i2s class D amplifier for audio effects (using the stock speaker) 

added large vibration motor in the handle and small vibration motor embedded in the trigger

added visible laser 

added neopixel strips down each side of the gun and drilled out holes 

replaced navigation panel buttons with joystick and 2 tactile switches

added rfm69 packet radio for long range communication 

I'm still using the original housing/shell, the optics, the barrel tx/rx, the dome tx/rx, switches and triggers, but everything else inside the gun is scrapped. 

In addition, I'm using Circuit Playground Express boards by Adafruit as bases/respawn points. they also have rfm69 packet radios attached and they function as a node network to keep the current state of the game and aid in long range communication throughout the church

Game play is modeled after Halo. there are multiple weapon types: AR, pistol, shotgun, sniper, rocket launcher

each weapon has unique abilities:

the AR is full auto, low damage, low accuracy, high magazine size and high total ammo size, long reload time. Full auto has a side effect ability in that it is harder to get shot at while you are shooting, it acts like a shield. This is mainly because while a gun is sending out IR signals I have to ignore those signals being reflected back into the dome receiver. 

the pistol is semi auto, medium damage, medium range, and has the ability to lock on to a target and confirm a head shot single kill. This is accomplished using the rx barrel and a beacon sent out of every gun's dome much like how the original LTTO worked (but without the "warning warning" voice prompts). the pistol also has a silencer option.

the shotgun used to shoot out of the dome, but that didn't work as well as I expected, so now it shoots using the radio. This doesn't make it very shotgun-like: it's spread is 360 degrees, it shoots through walls, etc. But this ended up being really important to balance the guns because this means it can interrupt the AR's full auto, and it can increase damage the closer you get to your target. Too far away and it won't do any damage, right next to someone and it will kill them in one shot. The shotgun is also needs to be pumped for each shot and held for full reload with a long reload time. 

the sniper is also able to get headshot one-shot kills, with high damage otherwise. it is long range.

the rocket launcher is the highest damage and can actually kill groups of people. If you are hit with a rocket, or if a base is hit with a rocket, the blast will repeat and anything in the near area will get hit. At first I was using the dome to relay the hit, but I changed to sending a command via radio

Adding the radios was a game changer because I was able to get RSSI values that gave a good estimate as to how far away to player were to each other or how far a player was from any number of bases. This allowed me to implement some incredibly awesome features.

There are 10 bases throughout my church, and on the screen of the gun I've painstakingly drawn out a map of each level of the church. using the RSSI beacons from all the bases each gun is able to triangulate and estimate its position. Boom. Radar. 

I also use the RSSI values to set the range of certain weapons and to detect when you are at a certain base. The bases act as respawn points and the can hold bonus items, weapons, ammo, flags, etc. 

Health is regenerative like in Halo. That was one feature...

Read more »


This video shows the different weapon types and LED animations

MPEG-4 Video - 27.28 MB - 12/01/2021 at 15:46



This video shows what it looks like to get hit by the different weapons (shooting from a Circuit Playground Express)

MPEG-4 Video - 26.65 MB - 12/01/2021 at 15:46



Video of my first attempt at radar. The screen displays a map of the church's main level and locations of all the bases (circuit playground expresses). Blue rings are drawn with radii proportional to the RSSI signal strength. Where they overlap and add is about where I am.

MPEG-4 Video - 16.77 MB - 12/01/2021 at 15:46



remote starting a game. host gun broadcasts start to the bases, the bases send start codes every second during the count down.

MPEG-4 Video - 10.28 MB - 12/01/2021 at 15:46



Rocket explosion with coordinated LEDs

MPEG-4 Video - 4.35 MB - 12/01/2021 at 15:45


View all 38 files

  • 16 × teensy 4.1
  • 10 × Circuit Playground Express

  • 24 gun salute

    dave.verlee03/21/2024 at 03:34 0 comments

    I completed another round of 8, bringing me to a total of 24 guns. I still could make 8 more, but currently have no need for it, so I will switch my focus to trying to make the game play work better and keep working on Capture The Flag!

    Also, I should have done this a long time ago, but I also put in a handy hidden debug menu that lets me check and test all the subsystems. I can check all the switches, read the radio queue, turn on/off all the lights and motors, read the IR sensors, and monitor the cheat detection. It was great to have during the final test of each new gun. Make time for test functions! 

  • Charging, custom cases, no more marshmallows

    dave.verlee09/10/2023 at 03:31 0 comments

    I 3D printed a docking station for the guns that also enables 5V charging. I mounted it inside a custom sized box that also houses the base stations inside the lid. 8 guns per box. Also, the base stations now mount directly to the walls at my church. They used to be mounted at the end of telescoping marshmallow sticks that attached to the 5V wall charger. The purpose for this change was to get the bases above your head so you couldn't stand in front of it and block it from other players. 

  • Round Robin messages, minor tweaks, baby #2

    dave.verlee05/02/2023 at 03:09 0 comments

    I drastically improved the way mass messages are shared across the whole system by using (what I'm calling) the round robin method. There is a single path from base to base that goes in a big circle around the whole church. When a base needs to share a message with the whole system, it sends the message tagged as a round robin message, and only sends it to the next base in the circle. It then waits for the message to come back. This process takes less that 50ms and is quite stable. 

    I've fixed the way weapons and items are distributed throughout the game. At edit, you can determine how many are available, how quickly the respawn after pickup, what percentage of the game must pass before the item is revealed, whether or not the item is distributed randomly after respawn, or if it should only go to specific bases. 

    Radar is now an item that can be picked up. it reveals on the map where items are and where enemies are. 

    On April 10th my wife gave birth to our second born, so play testing is slowed but I still find time to make minor code updates every now and then. I would say that the first game mode (Team Slayer) is nearly complete, and I'm wanting to start working on capture the flag next. 

  • Sweet sixteen

    dave.verlee02/17/2023 at 04:16 0 comments

    Milestone reached: arsenal doubled from 8 to 16.

  • Base Item 3D printed display

    dave.verlee12/02/2022 at 19:57 0 comments

    I'm currently spending all my laser tag dev time building up 8 more guns, but I had this quick idea to make an add-on graphic display so the bases can show what items they currently have available for pick up. It's hard to get a good picture - it looks really good in person, and the different colors are visible from far away. It's easy to implement and will allow player to rely less on the tiny map icons to know where stuff is to pick up. I can also add one more item - I think it's going to be radar. 

  • Version Control and Rocket Launchers

    dave.verlee08/24/2022 at 18:52 0 comments

    If your project code isn't currently being tracked with version control like git, it's time to start. I was able to go back through my log and find the bug that caused my "terrible playtest". It was actually quite a simple bug that broke everything and caused a very complicated result. The real REAL root cause of the issue was terrible engineering practices by me. In my radio communication scheme, I have 3 different versions of almost the same message for distributing the game rules. I added a feature and forgot to update just one of those 3 messages. What I ought to do is simplify this messaging system down to one somehow to make updates and new features easier to implement. 

    A couple more code improvements after perusing the base code, everything is back to being fast and stable. 

    I was testing the rocket launchers with some friends and discovered that the antenna strength of the bases are not the same. This is kind of an issue because I'm trying to make the blast radius consistent. What I decided to do instead was use the radar on the map to determine how far away you are from a blast. If this works, then I can also confine explosions to whatever room the are in too. 

    While testing weapon pickup and radar, I discovered that with 8 players there is too much radio congestion to have reliable weapon pickup, so I'm going to table that feature for now and think of a better way to share every player's location in a more efficient way.  (edit: this was also due to a bug. while experimenting with how quickly/how often the location finding algorithm worked, I inadvertently also increased the radio traffic. this was easily fixed and I think I might still have multiplayer radar available) 

  • A terrible playtest

    dave.verlee08/11/2022 at 03:36 1 comment

    Sometimes, everything works, everything is great, you feel like you're almost there, and then other times nothing works, everything is broken, and you feel like you need to start over. 
    I had a terrible playtest after two awesome playtests that made me feel I needed to rethink my radio messaging scheme from the ground up. Right now, it's basically a shouting match. I got to this point by just barely getting things to work - if a critical message wasn't getting through, just send it 4 times instead of one, there are tons of delays based on arbitrary values (note: they're actually "delayAndRead()" functions that read the radio while waiting). There are a bunch of retries, there's no real sense of priority in the messaging system, and there is no coordination. 
    I think what I need to do is attempt to coordinate all radio nodes to time slices. There's a fixed number of radio nodes, 10 bases and up to 32 players. So I think I can get away with 42 time slots spaced at 10ms. Need to do a lot of testing to see if that window is big enough, but I feel like it's more than enough. My hope is that this new method brings about stability into the system and I can reduce the retries and the redundant messaging. 

    R&D can have big setbacks like this, but it's important to remember lessons learned. Have no fear of doing something wrong the first time - even if it means having to redo it later. 

  • New team selector

    dave.verlee08/08/2022 at 16:51 0 comments

    using map icons to display all teams at once

  • Motors and radios

    dave.verlee08/08/2022 at 16:45 0 comments

    I got to root cause for one of my more frustrating stability bugs. The culprit was noise generated by the large vibration motor being in close proximity to my radio antenna. These large voltage spikes on the battery voltage rail were causing the radio to become unresponsive to receive messages and in more extreme cases causing it to lock up and freeze the program. My current work around it to try and keep the battery voltage bus far away from the radio and antenna inside the gun, but I think I will be moving the motors to dedicated motor driver ICs that appear to do a better job of keeping the voltage rail clean.

  • 5-way Nav Switch

    dave.verlee07/19/2022 at 04:11 0 comments

    The function button on the side of the gun was feeling pretty useless, and I really wanted to fit a joystick with a center button in that hole somehow. I was very fortunate to find a cheap 5-way nav switch that fit. However, I didn't want to run extra wires down the length of the gun. I was able to still fully use all 5 switches on one wire buy making a resistor divider network and reading in the voltage at each node.  The switch fits on a small oshpark pcb I designed.

    This worked so well, and was so much cheaper and easier to build that I also decided to scrap the analog joystick and extra buttons on the main control panel for a second one of these. 10 switches on only 2 wires! This only works well in this case because the switch physically prevents you from actuating more than one switch at a time.

View all 14 project logs

Enjoy this project?



dracinn wrote 04/23/2024 at 14:50 point

How doable is this for a newbie?

  Are you sure? yes | no

dave.verlee wrote 04/24/2024 at 18:51 point

I've made it pretty complicated by adding a bunch of stuff, and it's not well documented at the moment - I don't have any tutorials, my code is a mess, there are some custom PCBs I made. All that said, the basic part of just taking a gun apart, reusing some of the parts, and putting in your own arduino I'd say is pretty doable. it just depends on how much extra you want to do. 

  Are you sure? yes | no

dave.verlee wrote 03/09/2022 at 17:22 point

I briefly looked into directional antennae and decided I wasn't a good enough RF engineer to do it. Though it would be really cool, I think the shape of a cardioid antenna wouldn't fit inside the gun for 915mhz. And as you said, I don't know how to switch between omni and cardioid without adding a second radio. so yea, I scrapped that idea

There is currently an overshield! I just finished the animation and got to testing it last night. works! The other pick up items are silencer for pistol, active camo, and a laser sight. I might add grenades at some point if I can figure out how to do them - they might just function the same way the rocket launcher does but with a time delay. Active camo is simple but cool - when you get tagged out all the lights on your gun turn off, and when you activate the active camo it does the same. so not only does it aid in hiding in the dark, it also makes you look "out" to others playing. 

Yes, all of the voice prompts will be there, "slayer" "killing spree" "red team has the flag" all that, plus some additional ones that I think I have to do myself, "cheating detected" "stop cheating" this is your last chance to stop cheating" "game over because you wouldn't stop cheating" 

  Are you sure? yes | no

Hackamonth wrote 03/08/2022 at 03:17 point

First, this is awesome. Thank you for existing and doing this.

Secondly, have you considered making the radio directional? A simple PCB antenna could significantly limit your radiation pattern and reenable the use of that for the shotgun, and significantly increase the range of the sniper, if relevant. 

You'd need two antennas, that and an omni for reception (and use with the gravity hammer), but it might be a tractable problem depending on what your hardware setup is. 

Are there overshields? Other pickups? Does the original Halo guy announce the game type? "Slayer." 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates