Skip to content
Experiment / In process: text-based massively multiplayer online role-playing
JavaScript Ruby
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


Space Suckers Chronicles logo

"Oh yes. It runs on the world’s most powerful graphics chip, imagination" – Dc. Sheldon Cooper

I have improve this exercise adding a server layer and starting what is could be a console client layer.

Next Iteration

  • clean up and stabilize the client layer.

I also would like to work on:

  • Persistence layer
  • Multiuser
  • Attack

But I'm afraid I am going out of time so I prefer to focus in finish the client layer and clean up everything


I have defined the most basic 3 layers needed for the game.

Each one of them is intentioned to be release as independent gem but for a more agile development I think is better to have them all together.

I have separate each one of them in a subfolder of the project:

  • /gem
  • /server
  • /client

The gem

In the gem folder we have all the elements that implements the business logic of the game.

  • The models
  • The surrounding Universe
  • The infinite loop

The server

The server initialize an Universe, starts it and exposes it to network request through a REST API.

How to initialize it

cd server
ruby bin/s2c_server.rb


  • show universe: get "/universe"
  • show planets: get "/universe/planets"
  • show ships: get "/universe/ships"
  • show planet: get "/universe/planet/:name"
  • create planet: post "/universe/planet?name=<planet_name>"
  • build mine: post "/universe/planets/:name/mines"
  • build ship: post "/universe/planets/:name/ships"
  • travel: post "/universe/ships/:identity/travel?planet_name=<planet_name>"

The client

Please don't make a review of this part of the code since I just have write on the air and just to have something to use to interact with the server layer.

How to initialize it

First you have to initialize the server.


cd client
ruby bin/s2c_console.rb


You can check this command session, it is for the stand alone version but it should work just the same.

You can’t perform that action at this time.