Choice Provisions has been a long-time client, since before they were called “Choice Provisions”! I have helped them update and/or develop new websites before, so when they wanted to add online leaderboards and a community level sharing feature to their latest game, BIT.TRIP RERUNNER, I was happy to help.
I had been working with Laravel for some other projects at the time and was really enjoying the use of modern object-oriented PHP 8+, and as an API-only project this would let me really hone my back end programming chops.
While initially planned as a very thin layer for accessing a database of player-created levels and leaderboards, the server quickly grew to accommodate features that the local game client alone just could not do, such as:
- Securely logging in users without a password prompt
- Tracking likes, downloads, and playthroughs on player-created levels
- Calculating measured level difficulty based on playthrough data
- Calculating next suggested level and level of the day/week
- Calculating global player rank
- Hosting game news updates
I made heavy use of job queues, caching, and other tricks for optimizing server performance to spread out the CPU load, as well as some advanced MySQL queries for efficiently performing rank calculations and even conditional logic for level of the day/week selection criteria.
Oh, and for anyone who stumbles on this page looking for an explanation about why there’s no cross-platform level sharing/leaderboards, well, here’s the deal: we built it to be cross-platform, and it absolutely could be, but platform certification for games with user-created content is complicated. Users on a hypothetical GameDepot 5 console must be able to block other users’ content, which works based on GameDepot user IDs, and users on Vapor don’t have GameDepot IDs. If you want to complain and/or praise the very skilled developers, check out the official Choice Provisions Discord!
Check out the game on these platforms:
- BIT.TRIP RERUNNER on Steam
- BIT.TRIP RERUNNER on PS5
- Other platforms TBD