Over the last couple of months, I have started development of a new microcontroller project in my spare time.
The aim of my project is to produce an inexpensive “Laser Tag” system that can be used to play multiplayer games. Of course, you can buy such systems from a toy shop, see here…
But this is a very simple “point score” implementation of the concept that does not allow for the creation of custom games such as “Capture the flag” or team based games.
My aim is to produce a system where a centralised server (think Raspberry Pi or a laptop) controls the game, all devices communicate with the game server over WiFi and the game devices (such as a tactical vest or gun) simply send messages to, or receive command messages from the main server.
This will allow for a great deal of flexibility in the game creation and should make for a very exciting platform that can be expanded upon.
I have a few criteria that must be met.
- The hardware must be cheap
(we are talking < £100 for enough equipment to run a five-person game)
- It must be possible to write games without a knowledge of microcontrollers or electronics.
- The game must perform well
- The game should allow the possibility that it may be integrated with external systems and frameworks (such as a mobile application or Unity3D app)
- Audio should be considered at some point during the implementation.
I am currently doing experiments with the ESP8266 microcontroller to assess it’s suitability for this project, it seems like a good candidate as it has Wifi, a number of GPIO pins and runs at a decent clock speed (up to 240Mhz under normal “warranty safe” conditions)
Specifically, I am looking at these areas at the moment;
- Infrared send & receive
- Wifi communication speed & latency via various techniques
- Which one is most reliable, HTTP, UDP packets, MQTT?
- Can a good message rate be sent to the microcontroller and is it dealt with in a timely fashion?
- Can the microcontroller send messages to the central server at an adequate rate?
These questions are deliberately vague on the details so that I can explore these questions from a few different angles and hopefully come up with the best way of establishing “real-time” communication between the server and game devices.
I will write more as I work on this.