Multiplayer galactic game written in Golang
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
backend Add health check endpoint. It is used by Kubernetes Load Balancer. Mar 16, 2018
deployment_volume Automatically deploy new image to Kubernetes after successful Build &… Apr 10, 2018
docker Tag images with the build number. Aug 22, 2018
kubernetes Automatically deploy new image to Kubernetes after successful Build &… Apr 10, 2018
math
protobuf Fix animation before joining May 15, 2017
superstellar_utils Fix animation before joining May 15, 2017
webroot Set 80 as a default BACKEND_PORT. It is necessary for Kubernetes Load… Mar 16, 2018
.editorconfig
.gitignore
Dockerfile
Jenkinsfile
LICENSE.md Create LICENSE.md Jun 1, 2017
README.md
docker-compose.yml
generateProto.sh
main.go

README.md

superstellar

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

  1. Clone this repository to your $GOPATH/src directory
  2. cd to that directory
  3. Run go get
  4. Run go build && go install
  5. Run $GOPATH/bin/superstellar to run a server instance
  6. Open new console and go to the game source directory.
  7. cd webroot
  8. npm install
  9. npm run dev
  10. 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.

  1. cd superstellar_utils
  2. go build && go install
  3. 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.

  1. Run server
  2. 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