How sabbir248/arenastrike works
ArenaStrike is a browser-based multiplayer arena shooter backed by a Spring Boot service. Players authenticate or use guest accounts, create or join a lobby, launch a match, and exchange movement and combat events over STOMP/WebSocket; the server maintains game state and verifies shots, then records match results for player statistics. The frontend renders the game and supplies audio. The README documents the stack but not product flows; edges below are limited to source-index references and shown calls/routes, so unsampled integrations are not inferred.
Main entry points: GameStateService.java Game state service · main.js Browser client · LobbyService.java Lobby service · StatsService.java Stats service
Components 21
Game client
- Browser client
frontend/js/main.js - STOMP client
frontend/js/network/stomp-client.js - Game renderer
frontend/js/game/renderer.js - Sound manager
frontend/js/audio/sound-manager.js
Identity and players
- Auth endpoints
backend/src/main/java/com/arenastrike/auth/AuthController.java - OAuth endpoints
backend/src/main/java/com/arenastrike/auth/OAuthController.java - JWT service
backend/src/main/java/com/arenastrike/auth/JwtService.java - Player service
backend/src/main/java/com/arenastrike/player/service/PlayerService.java - Player records
backend/src/main/java/com/arenastrike/player/repository/PlayerRepository.java
Lobby management
- Lobby API
backend/src/main/java/com/arenastrike/lobby/controller/LobbyController.java - Lobby WebSocket
backend/src/main/java/com/arenastrike/lobby/controller/LobbyWebSocketController.java - Lobby service
backend/src/main/java/com/arenastrike/lobby/service/LobbyService.java - Lobby records
backend/src/main/java/com/arenastrike/lobby/repository/LobbyRepository.java
Live match
- Game WebSocket
backend/src/main/java/com/arenastrike/realtime/controller/GameRoomWebSocketController.java - Game state service
backend/src/main/java/com/arenastrike/realtime/service/GameStateService.java - Room state
backend/src/main/java/com/arenastrike/realtime/service/GameRoomState.java - Combat system
backend/src/main/java/com/arenastrike/combat
Stats and records
- Stats endpoints
backend/src/main/java/com/arenastrike/player/controller/StatsController.java - Stats service
backend/src/main/java/com/arenastrike/player/service/StatsService.java - Match history
backend/src/main/java/com/arenastrike/match/repository/MatchHistoryRepository.java
Other components
- Player
Connections 27
- Player → Browser client: plays through
- Browser client → Game renderer: renders with
frontend/js/main.js - Browser client → STOMP client: connects through
frontend/js/main.js - Browser client → Sound manager: plays effects
frontend/js/main.js - STOMP client → Game WebSocket: publishes commands
frontend/js/network/stomp-client.js - STOMP client → Lobby WebSocket: publishes start
frontend/js/network/stomp-client.js - Player → Auth endpoints: requests identity
- Auth endpoints → JWT service: issues tokens
backend/src/main/java/com/arenastrike/auth/AuthController.java - Auth endpoints → Player service: creates guest
backend/src/main/java/com/arenastrike/auth/AuthController.java - OAuth endpoints → JWT service: issues tokens
backend/src/main/java/com/arenastrike/auth/OAuthController.java - OAuth endpoints → Player service: finds or creates
backend/src/main/java/com/arenastrike/auth/OAuthController.java - Player service → Player records: reads and writes
backend/src/main/java/com/arenastrike/player/service/PlayerService.java - Player → Lobby API: creates or joins
- Lobby API → JWT service: validates token
backend/src/main/java/com/arenastrike/lobby/controller/LobbyController.java - Lobby API → Lobby service: handles requests
backend/src/main/java/com/arenastrike/lobby/controller/LobbyController.java - Lobby WebSocket → Lobby service: handles commands
backend/src/main/java/com/arenastrike/lobby/controller/LobbyWebSocketController.java - Lobby service → Lobby records: reads and writes
backend/src/main/java/com/arenastrike/lobby/service/LobbyService.java - Lobby service → Player records: loads players
backend/src/main/java/com/arenastrike/lobby/service/LobbyService.java - Game WebSocket → Game state service: dispatches commands
backend/src/main/java/com/arenastrike/realtime/controller/GameRoomWebSocketController.java - Game state service → Room state: updates state
backend/src/main/java/com/arenastrike/realtime/service/GameStateService.java - Game state service → Combat system: verifies shots
backend/src/main/java/com/arenastrike/realtime/service/GameStateService.java - Game state service → Lobby records: loads lobby
backend/src/main/java/com/arenastrike/realtime/service/GameStateService.java - Player → Stats endpoints: requests statistics
- Stats endpoints → Stats service: queries statistics
backend/src/main/java/com/arenastrike/player/controller/StatsController.java - Game state service → Stats service: records match
backend/src/main/java/com/arenastrike/realtime/service/GameStateService.java - Stats service → Player records: updates player totals
backend/src/main/java/com/arenastrike/player/service/StatsService.java - Stats service → Match history: saves match history
backend/src/main/java/com/arenastrike/player/service/StatsService.java