A 2D top-down multiplayer shooter built in C++ using SFML. Developed as coursework for the CMP501 Network Game Development module (MSc Computer Games Technology, Abertay University).
This is the client repo. The server lives at Project-Vector-SFML-Server.
Project Vector explores the fundamentals of networked game development from scratch — no engine, just C++ and SFML. Players connect to a dedicated server and control a spaceship in a top-down arena, firing at opponents while the server handles authoritative state, collision resolution, and latency compensation.
The codebase has a clean separation between game logic (Game.cpp), networking (NetworkManager.cpp), and health/damage (HealthManager.cpp).
- Authoritative client-server multiplayer architecture
- Real-time player position and projectile synchronisation
- Server-side collision detection and hit resolution
- SFML-based rendering, input handling, and audio
- Configurable network settings via
net_config.txt
- Language: C++
- Library: SFML 2.6.0 (bundled)
- Networking: TCP/UDP via SFML Network module
- Architecture: Authoritative server, thin client
- IDE: Visual Studio (
.slnincluded)
SFML 2.6.0 is bundled in the SFML-2.6.0/ directory.
- Open
ProjectVector.slnin Visual Studio - Ensure SFML include and lib paths point to
SFML-2.6.0/ - Build the solution (x64 / Release or Debug)
- Edit
net_config.txtto set the server IP and port before running:
127.0.0.1
5000
- Start the server first (see Project-Vector-SFML-Server), then run the client
Game.cpp / Game.h # Core game loop, rendering, input
NetworkManager.cpp / .h # Client networking — send/receive state
HealthManager.cpp / .h # Player health and damage handling
Spaceship.cpp / .h # Player entity
Main.cpp # Entry point
net_config.txt # Server IP and port config
assets/ # Textures, fonts, audio
SFML-2.6.0/ # Bundled SFML library
MIT