Skip to main content

Lessons to learn from Mass Effect: Andromeda quest design

As I promissed, here is a post about the quest design (or lack of it) in Mass Effect: Andromeda, translated from my other blog.

I have been playing ME: Andromeda for about 20 days now. It is a long game, and mostly a boring one, I have to say. Each location has a dozen of small secondary quests that forces the player to move from one point of the map to the other. Other span through several locations, those are the worse because we have to move through all the galaxy. Nothing new so far, it is a known trick to inflate the playing time.

The big problem with ME: Andromeda is that almost all those tasks  are variation of the same. For example, the monoliths quest: in every planet you must activate 3 monoliths, and the visit the chamber. After doing that in two planets, you start to hate the monoliths, the chambers and the stupid task of jump from one place to another to find a console to open a door in the other corner of a hughe scene. This is unavoidable, as it is part of the main quest.

The optional quests are basically variations of the same idea: go to X places (never less than 3) and find X objects. Their narrative weight in the plot is nul, which is not bad, cause after all, they are just secondary missions, but they are a good method to fall asleep. Maybe they are optional, but we all know that no RPG fan would leave more than 10% of the side quests incomplete. Besides, they are supposed to provide progression, what would we do in an RPG without secondary quests?

The original trilogy was much more polished in this aspect. The side quests were trivial, yet they generated some interest.  They were not boring. The narrative in Mass Effect 1/2/3 was light years ahead of ME: Andromeda's, I guess we all know that.

In the end, this is a good leasson for RPG writers: avoid that most your main quest be repeating the same task 3-4 times. It is annoying and the gamers are not stupid (well, maybe some are, but even those will notice). Second: do not inflate your side quests with variations of the same task. Honestly, I expected much more from Bioware.

In the next post, I will be talking about dialogs.


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 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…