How joshua-z-luo/cmpt362_project_manhunt works
Manhunt is an Android location-based multiplayer tag game. Players create or join a room, the host configures rules and starts play, and the app assigns roles and synchronizes a countdown before showing role-specific live maps. A match ends when runners are caught or time expires. The README documents the backend and Maps integrations; file names indicate profile and statistics features, but their implementation and wiring were not sampled, so those links are omitted where uncertain.
Main entry points: RunnergameActivity.kt Runner Game · HuntergameActivity.kt Hunter Game · SyncService.kt Room Sync · CountdownActivity.kt Countdown
Components 23
App and Lobby
- App Entry
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/MainActivity.kt - Lobby
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/HomeActivity.kt - Game Settings
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/SettingsActivity.kt
Match Gameplay
- Room Sync
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/SyncService.kt - Countdown
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/CountdownActivity.kt - Hunter Game
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/HuntergameActivity.kt - Runner Game
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/RunnergameActivity.kt - Hunter State
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/HunterViewModel.kt - Runner State
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/RunnerViewModel.kt - Caught Screen
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/CaughtActivity.kt - Match Result
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/GameEndActivity.kt - Game Models
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/model
Player Records
- Player Profile
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/ProfileActivity.kt - Profile State
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/ProfileViewModel.kt - Match History
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/GameHistoryEntity.kt - Player Stats
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/PlayerStatsEntity.kt - Stats Repository
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/StatsRepository.kt - Stats Access
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/StatsDao.kt - Local Database
app/src/main/java/joshua_luo/example/cmpt362projectmanhunt/AppDatabase.kt
External Services
- Rooms Backend
- Google Maps
- Device GPS
Other components
- Player
Connections 30
- Player → App Entry: opens app
- App Entry → Lobby: opens lobby
- Player → Lobby: creates or joins
- Lobby → Room Sync: room actions
- Room Sync → Rooms Backend: syncs room
- Player → Game Settings: configures rules
- Game Settings → Room Sync: updates settings
- Lobby → Countdown: starts match
- Countdown → Room Sync: coordinates start
- Countdown → Hunter Game: routes hunter
- Countdown → Runner Game: routes runners
- Hunter Game → Hunter State: updates state
- Runner Game → Runner State: updates state
- Hunter Game → Game Models: uses game rules
- Runner Game → Game Models: uses game rules
- Hunter Game → Device GPS: reads location
- Runner Game → Device GPS: reads location
- Hunter Game → Google Maps: shows live map
- Runner Game → Google Maps: shows live map
- Runner Game → Caught Screen: reports caught
- Caught Screen → Room Sync: updates match
- Hunter Game → Match Result: finishes match
- Runner Game → Match Result: finishes match
- Player → Player Profile: opens profile
- Player Profile → Profile State: loads profile
- Profile State → Stats Repository: requests statistics
- Stats Repository → Stats Access: queries records
- Stats Access → Local Database: reads and writes
- Local Database → Match History: stores history
- Local Database → Player Stats: stores stats