Adventures in AR: The Quest for Questing

Ever since I started not so subtly mentioning the quest system, I've wanted to write a post to outline what exactly the player will do for a quest. Naturally, this still isn't fully planned out, but I wanted to get some of my thoughts down for posterity, if nothing else. Usual disclaimers apply, nothing is final, everything is subject to change, yada yada. With that out of the way, let's get to it.

In case you've forgotten, the plan with ARventure is to allow players to create quests in the real world. Players will be able to create quests at real world locations and other players will be able to find and complete the quest. I'm not sure if I've ever explicitly stated, but the quests will be text-based, in a Choose Your Own Adventure fashion. Players will be presented with some text, and some actions they can perform. Then it's on to the next objective.

Like any game, the quests in ARventure will consist of a string of tasks the player will need to complete. These tasks will be comprised of two components: Markers and Nodes. Markers are the locations on the actual map that the player can interact with. Nodes are the pieces that make up the quest, consisting of text explaining the situation and actions the player can perform. Markers will always be the entry point for a Node, but multiple Nodes may be strung together at a single Marker.

There will be several different types of Nodes, which players will be able to choose from when building their own quests. The goal is to provide a large enough toolset to create interesting quests without bogging quest creators (or a certain developer) down with complexity. That said, here's the types of Nodes I currently have planned:

Quest Start Node - This one is fairly straightforward. The Quest Start will be a simple Node which will present the player with text to introduce the quest and buttons to accept or decline the quest. Obviously, these Nodes will always be the first Node in a quest and cannot otherwise be created manually.

Quest End Node - Another straightforward Node type. This Node will not appear as a location on the map, it will simply be activated upon completion of the final Node set in a quest. This Node will display some text, plus show any rewards the player received. Like with the Quest Start, the Quest End cannot be manually created, it will always be the last Node in a quest.

Text Node - Text Nodes are the most basic type of Node. They will simply provide some text and a continue button. These Nodes are more or less intended more for exposition, giving quest creators a means to simply dump some text on the player.

Skill Check Node - I previously mentioned potentially adding levels and character stats to the game. While such a system hasn't been planned out much, Skill Checks would be one of the uses for stats. Like with the Text Node, this Node type will present the player with some text. However, the player will then have one or more options to use their stats to resolve the skill check. For instance, the player may encounter a locked treasure chest. Their choices could be "Smash the lock" which would use their strength or "Pick the lock" which would use their dexterity. Succeeding at a skill check will always advance the quest and may provide additional rewards, while failure may result in a penalty or simply advance the quest without the reward. Finally, a skill check will always provide a button to back out, in case they want/need to level up first.

Combat Encounter Node - Like with skill checks, combat encounters aren't fully fleshed out, but would be the primary purpose for stats. My current plan for combat would be basically a Pokémon-like turn-based system. Players can attack, use items, or flee. Damage is based on the stat corresponding to the player's weapon type, with a speed stat deciding who moves first. Not overly complex, but this sort of system does afford some interesting opportunities, such as cooperative multiplayer combat encounters. Not to get too far ahead of ourselves, but this would be an awesome way to foster grand "slay the dragon" sort of quests with multiple people adventuring together in the real world.

Chance / Multi-Nodes - Chance Nodes wouldn't actually be a Node on their own, but rather several locations tied to a single objective. The player would have multiple Markers on the map, but only one would actually advance the quest. The correct Node could either be preset, always the last one visited, or have a chance of being the correct one (based on the number of Nodes left). For simplicity, each Marker may have to be a Text Node, but it would be cool if each Marker could be a different type of Node. For instance, there could be 2 incorrect locations that lead to combat encounters, while the third is treasure.

Additionally, I would like to be able to set Markers as hidden. Hidden Markers would not appear on the map until the player is in close proximity. This would allow quest creators to make geocaching style quest objectives, where the player must use hints provided by the previous Node to suss out where to go next. A hidden Marker containing a Text Node is also basically all I'd need to support the type of quest I had in mind for the Explorer NPC. This will require some additional thought put into how the player can access information from previous Nodes, but we'll cross that bridge when we get to it.

It goes without saying that this plan is still very much a work in progress. However, I do believe it was important to write up this post and get my thoughts together before jumping head first into coding the system. With that in mind, I think my next step is to implement the Marker system and the framework for Nodes. Then we'll start to be in business.