Quests are an important part of an RPG. Quests guide the player to various places, tell stories and give a reason to do all the monster and item hunting. So we decided to add quests to Cube World as well.
There were some challenges due to Cube World's procedural generation: The world is generated on-the-fly in a small region around the player while he's exploring it, but we wanted to be able to define quests more globally. E.g. there should be quests that send you from one end of a land to the other. So I developed a system which allows me to create quests in areas that haven't been generated yet. Complicated, isn't it? ;) Also NPCs, monsters and items need to be generated before the actual landscape, so they can be logically linked to quests.
We first started with an MMO-style quest system with quest-givers and many icons on the map, indicating quest locations, NPCs and so on. While it turned out to be a refreshing way to play Cube World, after a while we realized that it wasn't in line with the original Cube World feel: You felt forced to visit all those quest locations and to find quest-givers - there wasn't much reason to explore the world on your own.
So we made the system more exploration-based: we removed quest-givers and also removed all markers from the world map. Quests are just there and players can find them by exploring. E.g. you might find an old crypt and when you enter it, there is a skeleton boss that you have to defeat. Maybe the boss will drop a key or a treasure which is needed for another quest.
We added a quest journal with quest objectives and previews of creatures and items. The journal is updated automatically by fighting, finding items or talking to NPCs. Some NPCs give hints about quests that haven't been discovered yet.
By removing all quest markers from the map, players are forced to study the world around them more actively rather than following an icon on the map. It makes finding the quest target part of the quest itself and leads to a much more immersive gameplay.
Being an RPG, we want to make the quest system deep and inscrutable, so we're currently adding more quest variations, items and locations. Here are some screenshots:
I'd like to give you a preview of the new quest system that will be included in the next update.
There are different types of quests:
- Dungeon Quests are "Defeat the ruler of that dungeon" quests. They're depicted as a red dungeon icon on the map.
- Monster Quests are about defeating big monster bosses like trolls, saurians etc. They have a red skull icon on the map.
- Mini Quests are quests that can spawn randomly everywhere in the world. They can be discovered while traveling and, if you have already discovered the part of the map, have a silver shield icon on the map. They are meant as small side quests that you can do during your explorations.
- Main Quests are random quest lines that are generated for each land. They often send you to various locations in the land, like dungeons or ancient ruins, and sometimes just into the wilderness. Target locations are marked with a golden sword icon on the map. The objectives are varying and can involve fighting gangs, finding NPCs, examining objects, carrying things around and more.
During development, there were several challenges: I wanted to have complex quest objectives while keeping data representation of quests simple and also usable in multiplayer. Thanks to the procedural generation of quests I came up with a nice solution which requires only storing a small set of variables for each quest. Also generating quest texts for random quests isn't trivial. I had to create a basic grammar system and dictionary to be able to generate texts for arbitrary combinations of creatures, objects and locations.
Currently we're adding more quest variations to make it as non-repetitive as possible. In the screenshots below, you can see a few samples of what to expect.
As mentioned before, I'm adding an option to have a smaller graphical user interface (GUI). This is especially useful for lower resolutions where widgets become really big and are overlapping.
I'm designing the GUI elements in my own 2D graphics tool Plasma (screenshots 4-6). It is based on a self-made 2D engine for displaying scalable graphics (similar to vector graphics). Plasma Engine supports Direct3D and OpenGL an can be used for things like GUIs in games. It also features edge-based antialiasing and animations. I'm developing it alongside Cube World and I'm planning to release it when it's more developed.