Hark not, the lack of updates on the Legends of Aesthir project does not mean progress has halted, only briefly paused (mostly on account of Skyrim). In retrospect, having set a hard deadline for completion of the minimum viable product was unwise, since I had little room to play with either the scope or the timeline (and, as with anything fairly complex, something always has to give).
In any case, these are the items from the roadmap that I managed to complete:
- When a player creates a game, it is asynchronously loaded into other players’ lobbies.
- When the second player enters a game, the game controls are displayed, and the game started.
- When a player enters a game or a lobby, a “Player has entered” message is displayed.
- Two “bases” and two unit cards were designed
- Cards were entered into the database.
- Starter decks were populated with new cards and “bases”.
- When a player creates an account, the starter decks guarantees that a “base” card is present in each deck.
- When the game starts, the players are assigned random positions on the board’s corners, and their bases deployed there.
- When the game starts, a random starting player is selected.
As well as these necessary support items:
- Hide ‘Start Game’.
- Show/hide ‘Start Game’ when switching game tabs for ready games.
- When the second player enters, the game is put into a ready state.
- When the game ready state is broadcast, the client shows the “Start Game” button area.
- Reduced lobby system complexity: only one lobby in the database.
- Added new game state ‘ready’ (ready to start, not yet started).
- When clicking on ‘Start Game’, AJAX message sent to server.
- Server broadcasts the game ready to everyone in room.
- When client receives ready state, client adds to buffer and displays similarly to ‘joined’ message.
- Add ‘ready’ state in the game-players table.
- When server receives start game, it marks the player as ready in the game_players table.
- When second player is ready, begin game start procedures (below).
- Battlefield JavaScript cleanup (mostly comments and spacing).
Currently in the Works
- The start game message includes starting position for each player.
- Ensure the starting position is only sent to the visible player.
- The start game message also includes the base information.
- When the start game command is received, controls are displayed.
- Along with sending the message, the game state is changed to active.
- Along with sending the message, the game’s board is written to the database with the bases’ positions.
- When a player reloads the page, the board positions of their visible cards is revealed.
Remaining Items
- When the game starts, the player will be sent a message that it is his/her turn.
- When a player ends his/her turn, the game will notify the other player of his/her turn.
- Upon turn notification, game controls will be disabled/enabled.
- Upon turn notification, the current player’s name will be highlighted.
- Turn phases will be recorded in the database per player.
- When the turn begins, the player will be placed in the “Draw” phase.
- In the draw phase, players will be allowed to press the “Draw” button, and draw one card from their decks (note, this can be automated later on, but is fine for now).
- When the draw phase ends, the player will be put in the “Exploration” phase, in which he/she may play cards as terrain.
- During the exploration phase, the “End Exploration” button will be active, which, when clicked, will put the player in the “Deploy” phase.
- During the deploy phase, players will be able to deploy cards as units.
- During the deploy phase, players will be able to move units on the board.
- During the deploy phase, players will be able to attack units on the board.
- During the deploy phase, the “End Turn” button will be active, which, when clicked, will send the turn notification message to the opposing player.
- If a player’s “base” reaches 0 HP, that player loses the game.
- Upon game completion, the game is put in a completed state, at which point players may exit the game.
After two weeks of Skyrim sucking up most of my time, I’m beginning to feel the waning of its influence over me, accompanied by the itch to get back to work on game development. I’ll aim, this time slightly more conservatively, to have a playable build by the next Global Games Jam, at the end of January.