A 2d online multiplayer arena game
Project Ghost is a multiplayer arena game. The goal is simple, you have 3 lives and you must kill your opponent using the weaopn of your choosing, but there's a catch, your enemy is invisible unless they fire their weapon! There are 5 weapons; Blaster, Laser, Vortext, Fast Boots and Boomerang. Each weapon provides a unique play style, each having there advantages and disadvantages (i.e Laser's chargeup freezes the player, making them an open target while it charges up). Players become visible when they fire their weapon AND when they take damage. If a player stays in one place for to long then they become visible. Items add another layer to the game, allowing the player to "fake out" the enemy by getting them to reveal their position (i.e a shield item can be used to absorb a hit).
The game backend is programmed entirelly in Java using netty.io, the game frontend is programmed in Java/Kotlin using LibGDX (I may end up switching to Unity or Unreal engine however). The server handles all the game logic and is capable of running many game instances at once.
The current goal is to get a public beta out to the general public, while the game is playable, it is very buggy.
A general overview in video format of Project Ghost can be found here
Contributions are always welcome! Please read the CONTRIBUTE.md file before submitting your pull request
There is currently no central server hosting the game, so testing the game involves self hosting your own test server. Check out the wiki for instructions on how to setup a test server.
Once a test server is setup, you can pass these command-line arguments to the game client to connect to it
java -jar client.jar <ip:port> --test --debug
The --test
field tells the client this is a TEST SERVER and will not attempt to authenticate. The --debug
field is optional and simply logs debug info to the console.
This repo uses gradle to build and test.
Building:
gradle
Starting a game server:
gradle :server:gameserver:run
Starting a matchmaking server
gradle :server:matchmaking:run
To import the repo, simply select the build.gradle
as the file to import. This will import all relavent projects into IntelliJ.
Coming Soon
- TCP/UDP Protocol
- Login Server API: Proper documentation coming soon
- Matchmaking Server API: Proper documentation coming soon