Multiplayer game engine written from almost scratch, using only SFML library as the base for rendering and multiplatform socket wrapper. Engine supports host and client server architecture.
Notable features:
- Multithreaded socket/packet processing (split between Socket/Context/Backend interfaces).
- Protocol for efficiently sending unreliable and reliable packets over UDP with minimal latency (utilizes acknowledgments and redundancy), including support for ordered packets.
- Tested with Clumsy to ensure that implementation is resiliation to packet loss, corruption and delays.
- Object replication system from server to all connected clients (with events such as creation, destruction and update).
- Host and client server architecture where player can connect at any point of the game (game state can also be saved to file).
- Serialization that can write entire game state to buffer and transfer it to connecting player.
- Custom RTTI solution for instancing arbitrary game objects from integer identifier.
- Written to compile under Linux (not actually tested if it runs).
- Build/ - Directory where build configuration is stored and where building takes process.
- Source/ - Directory with all of our custom written source code.
- External/ - Directory where third party libraries and external dependencies are stored.
- Deploy/ - Directory where compiled binaries and exported assets will be stored, ready for shipping.
- Assets/ - Asset files that have not been exported yet to cooked format and which will not be shipped.
- Install latest stable CMake release from the official page
- Clone our repository using Git and run Build\CMake-VS2017.bat file
- Wait for Visual Studio to open and then press F5
- Create new source file(s) in Source directory
- Open CMakeLists.txt in the main project directory (can be opened from Visual Studio)
- Append path to new source file(s) to SOURCE_FILES variable
- Either run Build\CMake-VS2017.bat again or build CMake/ZERO_CHECK project in Visual Studio
- Added files should now appear in Visual Studio's project structure
- Piotr Doan - Game engine and networking code
- Jeremiasz Kacprzak - Tank and tile sprites
- Damian Pacholak - Design and map/camera coding
- Tomasz Herbrich - Soundtrack (not included)