Game design notes for BoneQuest: Quest for the Bone: This doc probably doesn't contain any spoilers 🤷 Development occurred across 3 decades - 15 years, roughly 2008-2023 - Game design (2008+) - Early implementation (c. 2012) - Modern Implementation (2015-2020) - Beta 1: semi-public testing (2019) - Upgraded from Python 2 to 3 (2020) - Given a forever home at bonequest.gg (2022) - Beta 2: public test (2023) Early designs were all over the place: - Several Macromedia Flash proof-of-concepts were made (2008) - An early integration with IRC was scrapped - At some point it was decided we were making a text adventure, not a graphical video game The Numbers: - 150 objects - 87 rooms - 9 actors (non-player characters) - 30 quests - About 250 commands are required to win the game Designing for multiple concurrent players is, like, hard: - Puzzles generally reset themselves after being solved - Some puzzles require 2 players working together to solve - Some exits are one-way, preventing new players from simply following others into forbidden areas On Movement: - Slightly-improved experience: "You can't go in that direction. You can go north." - Type `EXITS` for a list of available directions - Sometimes you can go NW, NE, SW or SE but these compass points are minimized - Sometimes you can go UP or DOWN - You can go into things: `GO CAVE`, `GO INTO OUTHOUSE` Account data stored on the server: - Allows player state (objects in inventory, current location, quests) to be saved - Players can reconnect without losing progress - Players have a home page and can also opt-out of any public presence with `.private` command Instead of a game score, BoneQuest has a quest system: - Quests are part of a chain, assigned one after another - The game has many quest chains - Completing all the quests wins the game - Players can use the "QUESTS" command to view progress Players are prevented from making a huge mess: - Only 1 object of a type can be dropped in a location - Only 1 object of a type be in a player's inventory - We have a janitor - Nothing really done to prevent objects from being shared between players On Griefing: - Players can't block each other from playing or progressing - Players can't hoard objects that prevent others from winning - Commands to mute/unmute other players are available - Flood control is in effect Under The Hood: - Game code is 277,000 lines of Python 3, Markdown, JavaScript, HTML, CSS, bash and Golang - World is built from a single configuration file - About 90% of the game engine is generic, 10% specific to this game - Subsystems include: - Authentication server (codename "BORT") - Websocket server (codename "HEN") - NGINX front-end - Game runs in about 30MB of memory with no players connected Have a question? - Discord: discord.gg/jn7zhX4tjK - Email: game@bonequest.com - Thank you / for your / great pleasure - Last updated: 22-Feb-2025 11:34 - Play Now