Space shooter (itch) (Mathieu Schmerber)
About
This project was made in the context of my 3rd year of college at Epitech (France). I teamed up with 3 other students for this project which was developed in 2 months.
The requirements of this project was to build a networking game engine in C++ using a client/server architecture and make a R-Type replica using it. This project also needed to be cross-OS accross windows and linux and built using the connan package manager.
On the technical aspect, we had to write in C++ with the SFML graphic library. The only code libraries allowed were STD and BOOST.
In the end, we made a random shooter game with our engine, using the sprite sheets of the R-Type. This project was awarded as the best project of our promotion.
EngineThe engine is built using the ECS architecture pattern. The engine provides the core architecture and abstraction that the client and server can then work with. The server holds the main gameplay alongside a lobby system and the connection management. The client is only responsible for drawing whatever it receives from the server on the screen. The engine features:
- Networking abstraction (UDP & TCP sockets)
- Rendering:
- Sprite & textures
- Fonts
- Audio management:
- Musics
- Sound effects
- Scene management
- General purpose systems:
- Parent/Child restraints
- Rendering
- Input management
- Parallax
- 2D Physics
- Text management
- Dynamic window size
- Animation
- Button
The server is responsible for handling incoming connections. It features a multi threaded lobby or "game room" system and handles every game.
Our RFC protocol can be found on our Github repository (link below).
To ensure an enjoyable online experience, the game implements entity interpolation and projectile prediction.
GameplayIn this game you can play alone or with up to 4 friends.
Each player controls a spacecracft that is capable of moving and shooting. Your goal is to play through the whole stage until reaching the final boss.
Whenever an enemy gets killed, there's a random chance of it dropping an item. Items will essentially provide the player with automatic turrets that can be upgraded thanks to other bonus dropped by enemies.
Controls (Keyboard):
- [UP/DOWN/RIGHT/LEFT]: move
- [SPACE]: shoot (hold to charge a powerfull projectile)
Team- Mathieu Schmerber: Game engine, core gameplay, client-server game networking
- Cyprien Ricque: Game engine, ai programing, dynamic library loader
- Emillien Delevoye: Server, lobby management, core socketing
- Paul Surrans: Client UI and scenes