Been working on the web backend for the community features of Ananias Roguelike (Gold Version), as well as the infrastructure required to support linking it with the free version. The current funding campaign has stalled, but gotta push onward!
To recap, the Free version will always be fully functional, with the gold version adding community features and additional content, as well as being a way to support the further development of the game 🙂
The first community features to be deployed are:
- Knowing about your friend’s adventures in semi-real time (i.e. “Slash’s Paladin was just killed by a Ghost on Level 4”) as you play.
- Competing with your friends in a shared ranking.
It will be a nodejs REST API powered by expressjs and backed by mongodb. (Click for full size)
To design it, I followed the following top to bottom approach:
- Made a rough draft including the features intended to be supported in the game and the potential integration points to be required.
- Decided on the architecture for the web backend and the technology stack.
- Cleaned up and designed an API blueprint.
- Functional analysis for all API operations, describing in general terms how each one would work in terms of data and “business logic” operations.
- Define the document model (master documents, transactional and facts) based on the blueprint and the functional model.
- Design the prototypes for the Data Access and “Business Logic” components based mainly on the functional analysis.
If you are curious, I’ve published the detailed design process here, take a look, it’s fun 🙂
Future community features will also include:
- Joining guilds to more quickly extend your friend base
- Competing on a global leaderboard.
- Saving your game in the game servers, allowing you to continue your game anywhere.
However one thing will remain: the core game will stay the same in spirit, with these additions only affecting how you indirectly interact with other players. In that regard the game will always be single player.
Coming up is the actual implementation of this both client and server side, with the client side bringing some challenges (will ajax connectivity work ok with CocoonJS for the android and iPhone versions? how to better handle alphanumeric input for the signup process? how to properly display the notifications without disturbing the game experience?) but before diving into that I’ll launch another 2 versions, one with some minor adjustments and another one including using the new roof tiles which should enhance the game appearance greatly.