In this post, i’m going to introduce my hobby project, RESTwars to you. RESTwars is a multiplayer game like the good old browser games, but with a twist: instead of preventing bots from the game, it encourages bots to play the game. RESTwars itself has no GUI, it is playable, as the name suggests, via a REST interface.
The game is set in a sci-fi universe with planets, ships and stuff. When you create an account, you start with a planet and some buildings on it. Now you can build buildings on the planet, build a shipyard and some ships and start harassing the other players. Of course there are many empty planets which just wait to be colonized by you.
RESTwars started as an idea in my head and it stayed there for serveral months. At that time I was playing around with Scala, so I wrote the first version with it. After realizing that Scala projects become a mess without the proper discipline and without a Sc.D. in type theory, I wrote the second version in Java.
I’ve used some well-known technologies and some technologies not so well-known and battle tested. I’m using:
- Dropwizard for the REST webservice
- jOOQ for database access
- Swagger for REST API documentation
- Dagger for dependency injection
- Atmosphere for websockets
As debugging a REST webservice means working with Postman or curl or some other tool and manually building the requests, I’ve soon decided to write a minimalistic UI for RESTwars. It is called RESTwars UI (you couldn’t have guessed that!). And because HTML5 Single Page Applications are the hype at the moment, I decided to use ember.
I’ve organized a hackaton with my friends to hack some bots which will play the game for us. There is already a webservice client for RESTwars written in Java, so I’ve decided to use a JVM-based language. You already know that Scala doesn’t meet my taste, now I’m giving Kotlin a try.
Now you have an overview about which technologies I’m currently working with in my spare time. About some of the technologies I’ll write a blog post in the future, for example the Dropwizard / Atmosphere combination.
If you are interested in how to implement an efficient bot for RESTwars, you should check out the blog from Florian, turbocache3000.de.