serverlobby.io

Customizing Orbis - Part 2: Adventure and Quest creation

Posted on Written by

Welcome to the second part of our series about customizing Orbis. If you haven't read Part 1 dedicated to the world's generation, we strongly encourage you to do so!


Disclaimer: This is not an official Hytale blog post but an attempt to give you more details about the customization capabilities of Hytale. Most information you'll see here have already be confirmed, or are very likely to be true.


In the previous story, we were excited about the personalization opportunities for the world's generation. This time we're looking at the mechanics behind the adventure in Orbis, specifically quests and objectives. As always, we'll discuss all of this from the perspective of a modder or a server willing to customize the game.

A few words about quests

Quests are a key element of all adventure games. And it's even more exciting in open-world games: Because the world is vast, there are lots of places to explore, a rich history, and lots of quests. For example, do you know how many quests there are in World of Warcraft? 29,000. Yeah, you did read 29,000. That's one of the elements of the game that I really enjoyed.

Quests, when well designed and diversified enough, are fun for the player. On the one hand, the quest sets a goal for you to reach, which is a great source of motivation. Then when you have put your heart and soul into completing a quest, a sense of satisfaction emerges, often accompanied by a well-deserved in-game reward!

Trork objective

Please note that we are talking about quests in the broadest sense of the word, not just the main scenario of the game. Indeed, in most open-world games, quests that are part of the main storyline represent only a minority of all possible quests in the world.

So let's dig a little deeper into the subject, starting with what a quest is and what it's made up of.

What is a quest made up of?

  • Pre-requisites (conditions to be met to start the quest, e.g. having a certain level, having completed another quest beforehand)
  • A trigger, which will start the quest (by talking to an NPC or entering a place for example)
  • A scenario or story (typically all the blah blah blah of the NPC who gave you the quest)
  • Achievement conditions (the objectives to be reached in the quest: enemies to kill, resources to harvest, object to find...)
  • Rewards: monetary value, resources, equipment, experience...

Now, back to Hytale.

Quests in Hytale

Will there be quests in Hytale?

Yes, there will be quests in Hytale. Although they have not been the topic of a specific article, the quests have been mentioned several times on the Hytale blog. Starting with the blog post presenting the game's user interface: we learnt there that the World Map can be used to find quests, just like in MMORPGs.

World map in Hytale The World Map will allow to find new quests

We can also expect a quest log, gathering all the quests you have started. This is suggested by the book icon also present in the game interface (unless it's something else, could also be a skill book).

Hytale Quest Journal A book icon in the game interface: Maybe a quest log?

Hytale will also have an objective system that we have seen live in this video:

Notice the number of skeletons to be killed that appears as players enter the room. This type of objectives are triggered when the player enters a designated area. It is also known that these objectives will be achievable in a group, and will therefore be shared with nearby players.

Finally, these objectives can be linked together (i.e. a mission can be composed of several objectives). This objectives system will probably be used in the quests of Hytale, especially in the main scenario.

Quests with a wide range of objectives

Earlier we mentioned the importance of variety in quests. This is of course important in order for the player not to get bored and to encourage them to adopt original and different strategies when faced with varied and complex objectives. It's also important for modders and server creators: More flexibility in quests means more possibilities and therefore more ways to express creativity and be original.

Due to the sandbox nature of Hytale, we can imagine a great diversity in the gameplay of the quests, each of which can be based on the numerous mechanics of the game. Here are a few examples of what you can expect to find in quests:

  • Dungeons: Defeating the Boss of a Dungeon
  • Battle: Killing creatures
  • Resources: Collecting minerals, wood, etc...
  • Exploration: Discovering a new area
  • Agriculture: Setting up a farm
  • Craftsmanship: Crafting legendary equipment
  • Construction: Building your first house
  • Factions: Helping the Kweebecs

Hytale Farming The farming system in Hytale will be very advanced, so why not side quests in this theme?

Variety of objectives are backed by rich interactions. And the latest official blog posts have shown us that Hytale will be well furnished in this respect, notably thanks to the advanced behaviors of the creatures inhabiting Orbis. While in many games, attacking is the only option available when facing an enemy, Hytale will offer you other alternatives such as diversion or stealth. This can lead to interesting quest objectives or challenges such as :

  • Breaking into a Trork camp without being noticed
  • Crossing a swamp in zone 3 without any weapons (and we saw that torches would be a precious asset).

Can you take advantage of the sleep of these Trorks to invade their camp?

Creating your own quests in Hytale

Will Hytale servers be able to create their own quests?

It seems so. It has been confirmed that the game's objective system will be extensible by server creators. Knowing this, it is safe to say that server creators will be able to build their own quests and adventure storylines. What technical choices the game's developers will make for quest creation is still to be seen. I'm going to speculate a little bit here. There are two approaches that appear plausible to me: either the quests will be described in JSON format, or they will be scriptable in Javascript.

Hypothesis #1: JSON

Quests may well be defined in JSON format. There are two supporting points: On the one hand, we know that this format is already used to define NPCs' behaviors. On the other hand, just like NPCs' behaviors, this format fits very well for declaring quests, while remaining simple and readable!

Quests often don't need to be "programmed", but can simply be "described". As we saw at the beginning of the article, quests can be described by a set of properties: pre-requisites, list of objectives, rewards... If the quests all share a common structure, then a language such as JSON is well suited for their definition.

If JSON was indeed chosen for this, this is what the definition of a simple quest of killing 10 Trorks might look like. The quest would only be given if the player didn't sympathize with the Trorks faction and the reward would be a bronze sword and 100 experience points.

{
  "id": 1,
  "title": "Kicking Trork' butts",
  "requirements": {
    "FACTION_NOT_IN": ["Trork"]
  },
  "objectives": [
    {"type": "KILL", "entity": "Trork", "amount": 10}
  ],
  "rewards": {
    "items": {"BRONZE_SWORD": 1},
    "xp": 100
  }
}

Hypothesis 2: Scripting with Javascript

The other option would be to be able to create quests in the same way as you mod the game. We know that Javascript will probably be the language used for live scripting. Compared to the JSON format, scripting has the advantage of being more flexible. On the other hand, it is a little less intuitive. If the quests are defined using Javascript, this will probably be done via event programming. That is to say that each quest will be a Javascript class that will react to different events occurring in the game. In our previous example, our quest would react each time an entity is killed, to check if it is a Trork, and increment a counter if so.

This is what the same quest would look like in Javascript:

class KickTrorkButtQuest extends Quest
{

  constructor(player, state) {
    super("Kicking Trork's butts", player, state) 
  }

  static canStartQuest(player) {
    return !player.isAmicalWith("Trork")
  }

  function onEntityKill(killer, killedEntity) {
    if(killer != this.player || killedEntity.type.name != "Trork")
       return;

    this.state.killCount += 1
    this.checkCompletion();
  }

  function checkCopletion() {
    return this.state.killCount == 10;
  }

  function onQuestCompleted() {
    this.player.addExperience(100)
    this.player.giveItem(new Item("BRONZE_SWORD"))
  }
}

In conclusion, quests will be essential to any Roleplay server in Hytale and I can't wait to learn more about them in an official blog post. With its sandbox environment and rich interaction, Hytale has the potential to host many MMORPGs created by its community. Quests should be one of the foundation of these adventures.

This completes the second part of our "Orbis Customization" series. I hope you enjoyed it! If you've learned anything, don't forget to share this article, it helps us a lot and join our Discord to keep up to date with the release of new articles.