- Introduction
- Project Structure
- Installation Guide
- Module Descriptions
- Challenges Faced
- Conclusion
- Additional Files
The QR Tag Project is an interactive gaming experience combining mobile QR code scanning, location tracking, and real-time game mechanics. Players engage in a competitive game where they tag each other by scanning QR codes. The project consists of multiple modules, including location tracking with ESP32 devices, a mobile application for interaction, a game server for real-time updates, and a 3D game area modeled in Unreal Engine 5.
qr-tag-project/
├── AndroidApp/
├── Arduino/
├── UnrealEngine/
├── QtApp/
└── README.md
Each folder contains source codes and necessary files for specific modules.
Follow the instructions below to install and run the components of the QR Tag Project:
-
Install Qt and required tools:
sudo apt update sudo apt install qt5-default qtcreator build-essential -
Generate the Makefile:
qmake server_desktop_app.pro make -
Run the server application:
./server_desktop_app
- Install Android Studio and open the project:
- Go to
AndroidApp/
directory. - Select "Open Existing Android Project" in Android Studio.
- Sync Gradle:
- Click "Sync Project with Gradle Files" button.
- Build the APK:
- Go to Build > Build APK(s).
- Run on a connected Android device.
-
Install the Arduino CLI:
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh sudo mv bin/arduino-cli /usr/local/bin/ -
Set up ESP32 board:
arduino-cli config init arduino-cli config set board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json arduino-cli core install esp32 -
Compile ESP32 code:
arduino-cli compile --fqbn esp32:esp32
scanner.ino
Purpose: Track player positions using ESP32 devices in the game area.
Technologies: ESP32, C/C++.
Development Environment: Arduino IDE.
Challenges: Signal strength issues and frequent disconnections due to large game area.
Purpose: Manage game settings, track player positions, and visualize the game area.
Technologies: Unreal Engine 5, C++, TCP/UDP Protocols.
Development Environment: Visual Studio, Unreal Engine 5.
Challenges: Issues with real-time data integration and 3D model collisions.
Purpose: Implement game rules and mechanics (health points, tagging, score management).
Technologies: C/C++, Arduino.
Challenges: Delays in physical indicators (LEDs), ensuring accurate game rule enforcement.
Purpose: Provide an interface for players to interact with the game, display real-time stats, and scan QR codes.
Technologies: Android NDK, ZXing Library.
Development Environment: Android Studio.
Challenges: QR scanning issues with certain devices and preventing exploitative gameplay mechanics.
Purpose: Manage the server-side logic, display 3D visualization of the game area, and handle game-related events.
Technologies: Qt, C++.
Challenges: Configuring the 3D model and managing server IP configurations.
- Location Tracking: Difficulty in obtaining real-time location updates due to ESP32 signal limitations.
- Game Server: Problems with player movement and real-time data synchronization in the 3D model.
- Mobile App: Camera issues with QR scanning and preventing misuse of game mechanics (e.g., self-kill).
- Game Logic: Managing game rules with physical indicators like LEDs using multi-threading.
The QR Tag project successfully combines mobile technology, server communication, and real-time game mechanics to offer an engaging multiplayer experience. Despite several technical challenges, each module was developed and tested thoroughly to create a cohesive gaming system.
For more information, including a demonstration video, our website, the final project report and user manual, you can access the following links: