Skip to main content

First steps in a open world: properly designing the first quests of your RPG

As I mentioned before, I have been implementing a basic quest system, which I consider that can be greatly improved. But I'm not going to talk about it, because... well, it is crap.

But working on the quest system made me revisit the script and think about the first quest that the player will find in the starting location. Those first quests must fulfill certain basic requisites:

  • Introduce the player to the environment (here other elements lie encounters or conversations are important too) and give him a glimpse of what to expect.
  • Familiarize the player with the gameplay mechanics, like using objects, trading, combat and using skills.The main quest should provide some sort of backup or redundant activities, in case the player misses some of the basic quest.
  • They must be simple and quick. There is a reason why the first quests are easy: the player is starting the game and doesn't knows how things work, even if he/she is a hardcore RPG player. Anything taking more than five minutes or demanding deep research will be boring. The time to make the player think or face hard fights will come later. It is valid, though, to set the foundations for long term quests, like discovering some mystery that requires collecting clues through all the game world.
And of course, these quests should provide at least one level, to give a sense of progression; after all, an RPG is about getting levels and better items! A classic example of this is the Temple of Trials, in Fallout 2. There you learn to fight, but also how to interact with containers, about traps and how to use the corresponding skill to disable them, lockpicking and using explosives. In a few minutes you get a tutorial covering most of the game mechanics!

In a next post, I will talk about what can we learn from Mass Effect: Andromeda quest design.

Comments

Popular posts from this blog

Unity3d isometric camera tutorial

I had pending this since a month ago, so Im forcing myself to post it today. The goal is to provide a fully functional isometric like system that you can use with few or none modifications in your own game. So, lets get started.

Start Unity3d and in your scene, add an empty GameObject, we will call it target. Create a camera object and drag it to target to make it child. The result looks like this:


Now select Camera and set the values to this:


For a true isometric like feeling, ortho projection is essential. You could use perspective, but it is not the same. Play with Size to suit your needs (we will be using this later, when implementing zoom).

Now, lets create an script named CameraController, or whatever, and drag it to target GameObject. Lets implement scrolling, the easier part: go to Update() and add the following code:

if (Input.GetKeyDown(KeyCode.W)) {
            dir = UP;
        } else if (Input.GetKeyDown(KeyCode.S)) {
            dir = DOWN;
        } else if (Input.GetKeyD…

TPS with free look tutorial, version 2 (and bugs)

After working a bit to improve the third person camera system I mentioned a couple of days ago, I found a few problems that I could fix, and other I cant. Here is the updated code:

public class PlayerControl : MonoBehaviour {

    public GameObject pivot;
    Animator anim;
    int direction = 0;
    int FORWARD  = 1;
    int BACKWARD = 2;
    int LEFT = 3;
    int RIGHT = 4;

    // Use this for initialization
    void Start () {
        //cam = gameObject.GetComponent<Camera> ();
        //Cursor.visible = false;
        //Cursor.lockState = CursorLockMode.Locked;
        anim = gameObject.GetComponent<Animator> ();
    }

    // Update is called once per frame
    void Update () {
        Vector3 rot;

        if (Input.GetKeyDown (KeyCode.W)) {
            direction = FORWARD;
        } else if (Input.GetKeyDown (KeyCode.S)) {
            //go back
            direction = BACKWARD;
        } else if (Input.GetKeyDown (KeyCode.A)) {
            direction = LEFT;
        } …

Tutorial: building a modular character

Building character models with body parts have been an obsession for me in the last weeks. I have googled, asked, googled, and asked again, played with Unity3d editor, tested code, and so on. You can see the result of my work in the previous post. First of all, I have to say that what I achieved is mostly derived from this thread and the sample posted there. My code is a copy&paste of that sample. Also, you can find a more extense solution in this Gamedev.net forum thread.

First, lets start with the model, which obviously, is divided in the required sections. Lets say we have head, torso and legs. Each part must be exported to a separate fbx file, but it must include the skeleton. Then, export the skeleton without geometry to another fbx.

Im going to assume that you want to instantiate all components, and even player, at runtime, from a  C# script (no Unity editor involved, except for creating prefab an position marker), so, we will place the sections, the skeleton and everything…