Mobile Augmented Reality survival shooter built with Unity 6 and AR Foundation. Detect horizontal planes, place an arena in real space, survive timed enemy waves, and track local high scores.
Student: Mwiza Cannelle
Unity Version: 6000.5.0f1
Target Platform: Android (ARCore)
Main Scene: Assets/AR_Survival.unity
This project fulfills the AR Survival Shooter assignment requirements:
- AR plane detection and anchored gameplay
- Custom plane tracker with student name
- Two enemy types (Melee and Shooter)
- Object pooling for projectiles
- Complete game loop (Start → Play → End)
- Full UI system with difficulty selection
- Local leaderboard (latest 5 sessions)
- Integrated sound design
- OOP architecture with design patterns (Singleton, Factory, State, Observer, Object Pool)
| Feature | Description |
|---|---|
| Custom AR Plane Tracker | Teal textured planes with Mwiza Cannelle label; replaces default Unity visualizer |
| Melee Enemy | Close-range pursuit, 2 hits to kill, score +5 |
| Shooter Enemy | Ranged attacks with pooled bullets, 5 hits to kill, score +10 |
| Object Pooling | BulletPool and EnemyBulletPool — no runtime Instantiate/Destroy for bullets |
| Difficulty Modes | Easy (120s) and Hard (90s) with different spawn rates and enemy speed |
| UI | Start menu, in-game HUD, end screen, leaderboard panel |
| Audio | Shoot, death, spawn, melee attack, and shooter attack sounds |
| Leaderboard | Local persistence via PlayerPrefs (top 5 sessions) |
- Start Menu — choose Easy or Hard difficulty, view leaderboard
- Scan & Place — move device to detect planes (custom tracker visible), tap to place arena
- Survive — shoot enemies, avoid damage, beat the timer
- End Screen — view score, kills, time survived; restart or return to main menu
- Managers:
GameManager,UIManager,AudioManager,LeaderboardManager,DifficultyManager,ARPlacementManager,EnemyFactory - Enemies:
Enemybase class →MeleeEnemy,ShooterEnemy - Pooling:
BulletPool,EnemyBulletPool - AR:
CustomPlaneVisualizeronAR Default Planeprefab
Full technical details: Docs/TechnicalDocumentation.md
- Unity 6000.5.0f1 with Android Build Support module installed (Unity Hub → Installs → Add modules)
- Physical Android device with ARCore support
- Open the project in Unity
- Open
Assets/AR_Survival.unity - File → Build Profiles → Android → Switch Platform
- Player Settings → XR Plug-in Management → ARCore enabled
- File → Build Settings → Build (or Build → Build Android APK)
- Install the APK on your Android device
Note: APK files are zip-based internally — that is normal. Upload the
.apkfile directly for submission.
| Deliverable | Location |
|---|---|
| GitHub Repository | This repo |
| Android APK | Built .apk (Android / ARCore) |
| Technical Documentation | Docs/TechnicalDocumentation.pdf |
| Demo Video | Device recording from Unity splash through full gameplay |
| Pattern | Usage |
|---|---|
| Singleton | GameManager, AudioManager, UIManager, pools, factories |
| Object Pool | Player and enemy projectiles |
| Factory | EnemyFactory.CreateRandomEnemy() |
| State | GameManager.GameState (Start, Playing, End) |
| Observer | OnScoreChanged, OnStateChanged events |
- Enemy character models and animations: Mixamo (
Assets/Characters and Animations/) - Sound effects: free clips in
Assets/Sounds/ - AR Foundation, ARCore, XR Interaction Toolkit (Unity packages)
Academic project submission — Mwiza Cannelle, 2026.