superstellar
Massive multiplayer galactic game written in Golang. It has been inspired by the old arcade space shooter called Asteroids.
Live demo
http://superstellar.u2i.is
Rules
Destroy moving objects and don’t get killed by other players and asteroids. You’ve got two resources – health points and energy points. You lose your health with every hit you get and every contact with the asteroid. Energy points are consumed when shooting and using a boost drive. The more objects you kill, the bigger your health bar grows. Good luck
Story behind the game
https://medium.com/u2i-blogs/we-made-a-multiplayer-browser-game-in-go-for-fun-242a5990ce29/
Installation & running
- Clone this repository to your
$GOPATH/src
directory
cd
to that directory
- Run
go get
- Run
go build && go install
- Run
$GOPATH/bin/superstellar
to run a server instance
- Open new console and go to the game source directory.
cd webroot
npm install
npm run dev
- Go to http://localhost:8090
Running stress test util
You can run a stress test util that spawns any number of clients which connect to the server and send ramdomly correct user input messages.
cd superstellar_utils
go build && go install
- Run
$GOPATH/bin/superstellar_utils 127.0.0.1 100 50ms
for spawning 100 clients, with 50 ms interval.
Live profiling
It's possible to dump various information from the running server, e.g. stacktraces of all goroutines which might be useful in case of a deadlock.
- Run server
- Go to http://localhost:8080/debug/pprof/
Using JS __DEBUG__
flag
If you run DEBUG=true npm run dev
you will see additional debugging
informations. You can add your own debugging info in code. Just detect that
we're in the debug mode:
if (__DEBUG__) {
console.log("I'm in debug mode!");
}
Compiling protobufs
Run ./generateProto.sh