Game Server Challenge


The Game Server Challenge is to create a game server which can be played over HTTP.
[ The game ]          [ Submission ]           [ Scoring ]           [ Helper Doc ]           [ FAQ ]

The game
Minimum number of players -2, maximum number – 5
One player initiates a new game instance on the server and is hereby referred to as the ‘admin’.
On instantiation of a new game, the admin gets a game_id which can be passed manually to other players to join the game.
When a new game is ‘created’, the server generates a 15X15 grid of English language alphabets, with at least 10 words from the English dictionary. The words can be obtained from /usr/share/dict/words (after filtering out words with accents/apostrophes)
Once the admin decides that all players have joined the server, he can then ‘start’ the game.
The game goes in turns in the order of players joining (or in a random order perhaps).
Each player has to identify a new word(not previously identified) in the grid from the English dictionary (the server’s dictionary). The new word can be located horizontally/vertically/(diagonally?) in the grid. A player also has the option to pass his turn.


The server checks for the word and returns a success message to the player, and moves the turn to the next player.
Each player can see the game state like has the game started, current player, words_identified, and so on.
The game ends when there are no more words left in the grid, or all the players have passed consecutively.

More details can be found in the helper doc.


Submission Requirements
You are expected to submit the following:

  • You are expected to deploy the application on the web and send us the link to the application.
  • The application code with instructions on how to install/run the application. The code should be hosted online preferably on BitBucket or GitHub.
  • One(or two) page report on the application and database design/architecture with the motivation behind the approach and explaining instructions to use the API.
  • Your solution should include at least sample cURL requests for each of the API, or if possible for an entire game sequence (with the words blanked out).
  • How the application would scale when required to serve more data/QPS (more users/ concurrent games)?


Scoring
The scoring will be based on the following factors:

  • Correctness of the game is the most basic criteria.
  • Scalable code architecture will be appreciated. The application should be extensible enough to allow number of concurrent games and players.
  • Overall code structuring, class definitions, game modelling.
  • Any extra features added to improve game experience.

FAQ
Q: Which web application framework are allowed for this ?
A: For server-side development we would prefer if you use Python(Django) or Ruby(RoR). However, you can use of any other framework if you feel it can provide a better implementation.

Q: Where to deploy the application?
A: We would suggest using any free hosting service. For example: 000webhost for PHP+MySQL, Heroku for Ruby on Rails, Google app engine for python etc. If the hosting service does not provide access to all the services you would like to use,please let us know. We will either provide you a hosting account,or ask you to develop the application locally. Other viable options could be cloud development solutions like c9.io and other similar services.

Please feel free to get in touch with us if you have any queries.
You can send an email to data-science-challenge (AT) tworoads (dot) co (dot) in to reach us.