TaterTech - Questing in A Purrtato Tail

Purrtato Tail is a big game. As a player, you will get to explore a full island populated by various cat fruit and cat vegetable creatures. With so many sentient creatures, there is a lot they will need to have done - and wouldn't you know it, you're the best cat to help them out!

Throughout the design process, our world expanded from just a few towns and areas to a vast landscape of cities, dungeons, and secrets. With all of this world to explore, we realized we needed a way to help guide the player through the game. Quests have become somewhat standard in entertainment, and it felt right to include them in Purrtato Tail as well! Quests can be earned through all kinds of means - such as talking to NPCs, witnessing an event, or just needing to complete a core task.

We split the quests in two different kinds - Key and Optional. Key Quests must be completed for the game to be completed. These include things such as "Rescue the Elderstar" - the event that begins Queen Pixel's entire journey. Key Quests are the main guidance for the player on what they should be doing in the game, and where they should be going in the world. 

What is The Catterwalling? It is up to you to find out...

Optional Quests, on the other hand, are pretty much exactly what they sound like - they're optional! Compared to Key Quests, there are a tremendous amount of Optional Quests in the game to earn the player extra items, Memory Shards, clothing items, and more. The trick with Optional Quests however - many of them only be completed up to a certain event. For example - there is a part of a game where an entire town becomes frozen in ice. There are some Optional Quests related to this. Once the player has saved the town however, those Optional Quests can no longer be completed, because the state of the world they needed no longer exists! Don't worry, though - it is generally pretty clear when an Optional Quest will no longer be available, or the player is given in-world warnings that an Optional Quest would be lost. We area also considering marking the "Expiration Requirement" on quests to make this more clear as well.

Once a quest has been given, it can be found in Pixel's Journal, separated by Active and Completed quests. Quests that are no longer able to be completed become forever listed at the very bottom of the Active quest list, and are marked that they cannot be completed.

The art isn't finished / some is placeholder and we're still working on the layout, but this is the general idea.

The questing system we have produced is pretty thorough and easy to expand, and like most things in A Purrtato Tail - we have an easy to use editor for building out our quests. Each quest is broken down into 6 key parts: The Name, Description, Quest Type (Key or Optional - shown as 'Bonus' in the editor), Reward Text, Quest Requirements, and Quest Results. Like everything in the game, all text typed into here gets automatically injected into our multilingual system - meaning it is already available for translation and localization with no additional work.

The Quest Editor. Through this we can control it all.

If you read our previous DevBlog entry about our StateFlag system, the Quest Requirements might look familiar. This is because our quest requirements are ALL state flags - making them extremely easy to track and modify. With this, we don't have to manually update any quest requirements, and everything is automatically handled. It also means if the player enters a situation where they need 4 of an item to complete a quest, get 4, then lose 3, the system will automatically know that the quest requirement went from Finished to Incomplete. While our art is unfinished, here is a quick example of the Journal displaying a completed Quest Requirement.

 

Complete a requirement, cross it off.

Quest Results are interesting. In many cases, they are used to quickly give the player something when the quest is finished - but they are not required by our system for a quest. Instances where they would not be required might be, for example, initiating an event, which occurs when a quest is turned in. How do we handle events though? Perhaps that is a topic for the next DevBlog...