How colochampre/snake-soccer works
Snake Soccer is a browser multiplayer game combining Snake movement with soccer matches. A player registers or signs in, enters the lobby, creates or joins a room, and plays a real-time match; player statistics and rankings provide a post-match progression view. The documented product also includes multiple team sizes, quick chat, and snake/ball customization. The sampled source confirms server setup, authentication, room management, ranking, and P2P coordination; unsampled room and game internals are represented only where paths and ownership are supported by the tree or README.
Main entry points: app.js Express app · P2PManager.js P2P manager · rankingController.js Ranking controller · userModel.js User model
Components 23
Web entry and UI
- Game browser
public/js/main.js - Lobby UI
public/js/lobbyUI.js - Room UI
public/js/roomUI.js - Game renderer
public/js/gameRenderer.js - Express app
app.js - Pug views
views
Identity and profiles
- Auth routes
routes/authRouter.js - Auth controller
controllers/authController.js - Auth middleware
middlewares/auth.js - User model
models/userModel.js
Rooms and gameplay
- Room routes
routes/roomRouter.js - Room controller
controllers/roomController.js - Room sockets
server/roomSocket.js - P2P manager
public/js/webrtc/P2PManager.js - Host game
public/js/webrtc/HostGame.js - Client game
public/js/webrtc/ClientGame.js - Peer connection
public/js/webrtc/PeerConnection.js - Game rules
server/gameLogic.js
Player progression
- Ranking routes
routes/rankingRouter.js - Ranking controller
controllers/rankingController.js - Player stats
models/playerStatsModel.js
Other components
- Player
- Database
config/db.js
Connections 28
- Player → Game browser: uses
- Game browser → Express app: requests pages
- Express app → Pug views: renders
- Express app → Auth routes: mounts
- Express app → Room routes: mounts
- Express app → Ranking routes: mounts
- Auth routes → Auth controller: dispatches
- Auth controller → User model: authenticates
- Auth middleware → User model: checks identity
- User model → Database: reads/writes
- Player → Lobby UI: chooses room
- Lobby UI → Room routes: requests room
- Room routes → Room controller: dispatches
- Room controller → Pug views: renders room
- Express app → Room sockets: sets up sockets
- Express app → Room controller: provides Socket.IO
- Room UI → P2P manager: starts match
- P2P manager → Host game: creates host
- P2P manager → Client game: creates client
- Host game → Peer connection: manages peers
- Client game → Peer connection: connects peer
- P2P manager → Game renderer: forwards updates
- Room sockets → P2P manager: relays room events
- Player → Ranking routes: views rankings
- Ranking routes → Ranking controller: dispatches
- Ranking controller → Player stats: loads rankings
- Player stats → Database: reads/writes
- Ranking controller → Pug views: renders ranking