Cthulhu Wars Digital

Cthulhu Wars Digital (Self run project, Lead Developer using Unity / Node.js)

A self started project beginning from a GameJam prototype that just had pieces moving around a board. I developed the prototype further and presented it to the original board game creators in a series of meetings as a hobbyist project. Working with a few friends who helped test and design, I developed the prototype with a focus on gameplay and playability over visuals with an aim of getting it funded via help from the board game creators.

Created in Unity and using Node.JS as the server side solution. this project was an educational experience in remote client interaction and highly scalable client/server communication through websockets and Unity.

Project Brief

To bring the highly successful Cthulhu Wars board game to a digital platform by presenting a highly playable prototype to the board game creators and developing on their feedback.

To design a network and game environment that could facilitate large numbers of active games at once. These should be joinable from mobiles & pc devices at any time.

Players must be able to participate in potentially several games at once, allowing for casual as well as normal play. Each game can have between 3-6 active players.

To implement all the rules of the Cthulhu Wars board game and make the game as accessible as possible with room for expansions.

Challenges faced

-Efficient network solution
Using a Node.js server hosted on a Ubuntu instance. This server would act as a matchmaker for active games and a manager of game states and messages. Clients send messages and states to the server via HTML websockets which are checked by other clients to prevent cheating.

-Game accessibility
Being originally a board game, it presented a challenge bringing the ruleset to a digital platform. By producing iterative functional versions early, the testers & board game designers could play the game and identify what worked and what didn't early on in the cycle.

-Replayable, always joinable games
Games were managed by messages and game states and so players could always join a game they are involved in. As well as actively watch other peoples games and saved replays from any websocket capable device.

Lessons Learnt

  • Communicating an existing gameplay design set in a board game to a digital medium is challenging due to the nature of information available within a board game. Each player has to be aware of a potentially large amount of information without crowding the UI.
  • NoSQL databases are fantastic systems (Redis was used in this case) for storing current sessions, but ideally require a supporting SQL database for storing previous sessions.

Share by: