marvelous-bob
marvelous-bob copied to clipboard
libGDX Client and Server architecture for multiplayer game (with CI/CD done for deploying Docker images on AWS ECS)
Marvelous Bob
Top-down multiplayer coop Defend-Your-Base game.
Project structure
This repository contains 4 modules:
- client
- server
- common
- desktop
The common
is used by both the server
and the client
.
The desktop
is the launcher for the client
.
Other folders
-
.github
: CI/CD (GitHub Actions) -
.run
: the provided IntelliJRun Configuration
-
utils
: miscellaneous stuff for the developers
Tech Stack
Common to all modules
- Java 14 (language)
- Gradle (build)
- JPackage + JLink (lightweight releases)
- libGDX (framework)
- KryoNet (networking)
- Lombok (boilerplate)
- Slf4j (logging)
Server module
- AWS ECS (cloud)
- Docker (container)
- GitHub Actions (CI/CD)
(older) Demonstrations
Above is a static image showing the console once SSH'd into the server. Below is a recording of that same interaction. In both cases, two different computers were used to connect to the remote server.
Below is a recording of me manipulating 2 clients (green and white) simultaneously connected to the remote server, while my partner manipulates 2 other clients on his own computer (red and purple).
Below is a showcase of the procedurally generated levels.
Useful references concerning real-time multiplayer games
- Short and sweet, a high-level overview of the different challenges, with images: Client-Server Game Architecture
- Very detailed step-by-step coding guide specifically for a libGDX game: Developing Lag Compensated Multiplayer Game
- Deep dive into the complexities of OverWatch's NetCode: Overwatch Gameplay Architecture and Netcode