Ideas for Areas to Explore
- Customise the game:
- Replace the sound samples (16k, 8bit mono) with your own. Microcontroller Compatible Audio File Conversion can help with this.
- Replace the three sprites - the 48x16 bmp file can be changed without changing the code if the dimensions are preserved.
- Enhance the game:
- Use the accelerometer to detect shaking as an alternate way to start the transmission of the player's choice.
- Add a cumulative high score table to the Advanced game.
- Enhance the Circuit Playground Bluefruit only version to show players joining on the NeoPixels.
- Port the Simple game to the Circuit Playground Express using infrared for communication - this is very directional and would need careful alignment making the game finickety to play.
- Bluetooth related:
- Update the RSSI number on the player list screen as new Bluetooth packets arrive if you are interested in this value.
- Write a distance estimation function and add a feature for the right button to toggle between RSSI and a distance estimate.
- Test different communication conditions to see how the RSSI varies and how the game degrades or fails. Distance, different types of obstacles and close proximity to busy Wireless Access Points are all interesting factors to experiment with.
- Try implementing another multi-player game. Note: A connection based approach is likely to be a better solution for two-player games and may also suit card games featuring a dealer.
- Investigate lots of players. The Advanced game has been tested and works well with six players. It would be interesting to see how well it works in a classroom environment with 20+ devices. The
MAX_PLAYERS
will need increasing as it's currently set to8
but this is only because it's how many players fit on the joining screen with the chosen font size. This can be increased and they should just overspill harmlessly.
Related Projects
- CircuitPython BLE Advertising Beacons
- Bluetooth LE Sensor Nodes to Raspberry Pi WiFi Bridge
- Build an ML Rock Paper Scissors Game with Lobe - object/gesture recognition with machine learning on a Raspberry Pi 4.
Further Reading
- Numberphile: Winning at Rock Paper Scissors (YouTube) - Hannah Fry describing research and strategies against human players.
- Bluetooth SIG: Topology Options - high level comparison of point-to-point (1:1), broadcast (1:many) and mesh (many:many with forwarding) communication.
- Introduction to Bluetooth Low Energy
- Maxim Integrated: Bluetooth Low Energy: Understanding GAP Roles - Part 3 of 7 (YouTube) - fairly detailed explanation of advertising in BLE GAP.
- American Scientist: Random Paths to Frequency Hopping - the history of inventions relating to spread spectrum communication.
- Bluefruit nRF52 Feather Learning Guide - C++/Arduino progamming for the nRF52832-based Feather nRF52 Bluefruit LE
- Bluetooth SIG: An Intro to Bluetooth Mesh part 1
- Yin, Yang, Cao, Liu, Zhou, Wu: A Survey on Bluetooth 5.0 and Mesh: New Milestones of IoT
- Networking With The micro:bit - an online book from Nominet using the BBC micro:bit to explain networking principles. There is also a MicroPython Edition.
- code.org: The Internet: Packets, Routing & Reliability (YouTube) - a short, high-level introduction to TCP/IP.
- Hannah Makes: Project 3: Use two microbits to help you keep your distance (YouTube) - a straightforward demonstration of approximate distance estimation using the BBC micro:bit, MakeCode and radio RSSI.
- Tom Jennings' Gas Tube Random Number Generator - using a thyratron to produce random numbers like it's 1948.
- ERNIE (Electronic Random Number Indicator Equipment) - the original machine ERNIE 1 resides in the Science Museum London's collection. This used a neon tube to produce random numbers in 1957.
- General Post Office: The Importance of being E.R.N.I.E. (1964) (YouTube) - video showing ERNIE 1 being used to choose Premium Bond winners.
- Rand Corporation: A Million Random Digits with 100,000 Normal Deviates (1955) - a useful book for insomniacs.
- Secura: Zerologon: Unauthenticated domain controller compromise by subverting Netlogon cryptography (CVE-2020-1472) - a serious flaw discovered by Tom Tervoort in the NTLM protocol in Microsfoft Windows caused by an elementary blunder setting an initialization vector.
Page last edited March 08, 2024
Text editor powered by tinymce.