Tina Kesova 08 October, 2016

BGPHP ‘16 Hackathon Task: Ready Player Two

workshop

Objective: Create a multiplayer web based game.

Requirements:

  • It must have a back-end implemented with PHP.
  • Two or more players must be supported.
  • The client side must run on a modern vanilla browser without any plugins or extensions.
  • The game must be controlled with keyboard and/or mouse.
  • You must participate as a team of 3 or 4 people.

Scoring

Each team will receive a score from 0 to 100. Milestones will represent half of the score and are awarded if the conditions described are met.

Achievement Description Reward
What’s Yours Is Mine Having the code on a public github repo1 10 pts
A Humble Beginning A round2 of the game can be started 10 pts
Yo Adrian, We Did It! A round2 can be completed without issues 10 pts
Time Lords Ready before the deadline 10 pts
Friends Request Matchmaking interface3 10 pts

1. This is required if you want to get points for Code Readability, Testability and S.O.L.I.D.-ness
2. A round shall be a full gameplay cycle until the game objectives are achieved. If the game has continuous style of gameplay or a it takes longer than 5 minutes to complete, then the first 5 minutes of gameplay will be considered a round.
3. Having a lobby for all the logged in players and the ability to select who to play a round of the game with.

Each judge will score the task based on his subjective option for the following criteria:

Achievement Description Reward
Time Of My Life How much fun did the judge have playing. 0-10 pts
Riddle Me This Code readability. 0-10 pts
Looks Are(n’t) Everything How good do the game graphics look. 0-10 pts
Structurally Sound S.O.L.I.D.-ness of the code. 0-10 pts
Trust Me, I’m An Engineer Unit testing and security against cheating. 0-10 pts

The average of the three judges’ scores will be added to the milestone score to form the final score for the team. In the event that two or more teams have an even score, the one that finished the task first shall be declared winner.

Example 1

A game, where two players from all that are logged in a lobby, can engage in a round of backgammon. The players take turns of “Rolling the dice”. The result is randomly generated by the backend and can not be cheated with a client-side manipulation. The pieces are moved by drag-and-drop. When a piece is dropped, an ajax call is sent to the backend, the move is registered and relayed and executed in player two’s client side. The backend checks the validity of the moves and does not allow cheating. The first player to remove all the pieces from the board wins.

Example 2

A game, where two players from all that are logged in a lobby, can engage in a round of cooperative lunar lander with a twist. One of the players controls the rotation of the lander and the other the thrust. They must land on the lunar surface with a speed below a given threshold or else their craft will explode into millions of pieces.

Subscribe for #bgphp17 updates