• Stars
    star
    276
  • Rank 149,319 (Top 3 %)
  • Language
    Go
  • License
    MIT License
  • Created about 8 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Multiplayer galactic game written in Golang

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