• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[Mapping] Multiple Endings

Multiple Outcomes

Tutorial by Jazztastic

What are Multiple Outcomes, and why would I want to use them?

Simply put, multiple outcomes are when a game has a few different outcomes for a situation, one of which will be chosen based upon the choices the user makes. We use multiple endings to make the user feel like their actions had some effect on the story, or their inactions had some consequence.​

Two different types of Outcomes

Imagine a long tunnel. There are three exits which you can go through. Depending on which exit the player walks through, he will either be killed, given a fortune, or be forced to fight a tiger. There is no reasoning to which path the player will choose. The player will have a 1/3 chance of of each option.

This type of outcome can be useful in a dungeon situation, in which you give the player a path to choose. By going along path A they fight path A monsters, by going along path B they fight path B monsters. These random outcomes are the easiest to make, it can be as simple as path in a dungeon.

Imagine you are the king of a thriving city. A boy is brought before you, accused of stealing. The boy promises to never steal again, and begs not to lose his hand. As the king, you must decide whether to punish the boy by cutting off his hand, or let him go with a scolding.

If the player lets the boy go, he becomes a straight arrow and later in life becomes the kings trusted military tactician. If the player cuts off the boys hand, he harbors deep anger for the city his entire life, and later raises an army to attack it.

Which would in turn lead to another situation. Is the king overthrown? The player would have to escape his city and try to reclaim it later. Is the villian stopped? It would boost morale and more young men would enlist in the kings army.

This type of outcome is determined by the players actions, instead of random chance. It is incredibly useful in any game with a storyline, as it increases replayability and adds depth to the story. Taking the time to make multiple outcomes creates new playable situations and might add a whole new dimension to a game.​

How do I use Multiple Outcomes?

You might be thinking "Great, but that can't be used in warcraft at all." Multiple outcomes can be used in warcraft with great ease. It is just a simple check of conditions, and whatever you want the outcome to be.

Using the example from above with the city, let's look part of a trigger.

  • Actions
    • Set active = True
    • Set enemy = False
    • Set betrayed = False
These three booleans alone give us a total of 8 possible outcomes. We calculate this by doing (2x2x2). The equation could also be written as 2^x, where x is the number of booleans, and 2 is from the fact that there are only 2 possible outcomes to each boolean.

To actually use these three booleans, you would have to put each of them under a corresponding event.

  • Enemy of the Kingdom
    • Events
      • Unit - boy <gen> Dies
    • Conditions
    • Actions
      • Set active = True
And you would select other important events for the others.

How can we Determine an Outcome?

You must use an if/then/else check to determine the outcome of the situation.

  • Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • Enemy Equal to True
      • Then - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • active Equal to True
          • Then - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • Betrayed Equal to True
              • Then - Actions
                • -------- Enemy = true --------
                • -------- active = true --------
                • -------- betrayed = true --------
              • Else - Actions
                • -------- Enemy = true --------
                • -------- active = true --------
                • -------- betrayed = false --------
          • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • Betrayed Equal to True
              • Then - Actions
                • -------- Enemy = true --------
                • -------- active = false --------
                • -------- betrayed = true --------
              • Else - Actions
                • -------- Enemy = true --------
                • -------- active = false --------
                • -------- betrayed = false --------
      • Else - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • active Equal to True
          • Then - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • Betrayed Equal to True
              • Then - Actions
                • -------- Enemy = false --------
                • -------- active = true --------
                • -------- betrayed = true --------
              • Else - Actions
                • -------- Enemy = false --------
                • -------- active = true --------
                • -------- betrayed = false --------
          • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • Betrayed Equal to True
              • Then - Actions
                • -------- Enemy = false --------
                • -------- active = false --------
                • -------- betrayed = true --------
              • Else - Actions
                • -------- Enemy = false --------
                • -------- active = false --------
                • -------- betrayed = false --------
As you can see in the example trigger, there are 8 unique outcomes based upon 3 simple boolean checks. For each of the outcomes you would place in what you would want to happen.​

What is a Solid Example of this Technique?

The Playstation 3 game "Heavy Rain" is a perfect example of this technique. The actions of players are remember and there are 16 unique endings based upon player choices. Different characters can live or die depending on how well you play, and what you choose to do. It is a very good game and I recommend everyone to play it to get a good idea of what multiple outcomes are.​
 
Please give comments/suggestions to improve this tutorial. The subject material requires a lot of examples to be comprehended due to the fact it is a tool for creating stories. If there is anything you would like me to touch more in-depth on in this tutorial please don't be afraid to ask.

Hope this helps out some people creating maps. My next project will definitely be using this technique.

EDIT: Yes this is general mapping. It fits better here then in GUI.
 
So you're teaching people the way to use an if/then/else. :p

Sigh, basically. I was talking to red and bob yesterday and they thought it would be hard to have multi-pronged outcomes in a situation. Basically it's teaching a school of thought and a way to add depth to a map by using the if/then/else appropriately.

Sure the information may be a bit basic, but I'm hoping that rpg's in WCIII won't be so linear in the future. Honestly making a main storyline with multiple paths is not hard but I for one haven't seen it. I guess if you deem it too simple you can reject, but this is information that people honestly don't know. And please don't tell me that [self=http://www.hiveworkshop.com/forums/general-mapping-tutorials-278/creating-mass-unit-upgrade-like-orcs-berserker-upgrade-143755/]a lot simpler tutorials[/self] haven't been approved. And [self=http://www.hiveworkshop.com/forums/general-mapping-tutorials-278/bounty-units-6722/]here's another example.[/self]
 
First of all, I realize that my message was not the most friendly one (though I did try to balance it with the use of the emoticon), but you could make a tutorial about RPG's in general and what could map makers keep in mind (including the alternative outcomes you spoke of); I don't find it practical in its current state, when it is heavily based on a plain If/Then/Else. By the way, the tutorials you linked are kind of old; it's rational that they "teach" something this easy, because the further we go back, the less people knew of the Editor.
 
This tutorial was meant to make people think about a non-linear story. I haven't published a map so I think it would be silly for me to publish an RPG map-making guide. I understand how it seems basic, it really is, but despite that fact you never see people using the if/then/else in this way. That gives me reason to believe that people don't think about things always the same way I do; if I have a good idea to add depth to a map I should share it. A non-linear story would be so refreshing in WCIII, so many RPG's now have full screen inventories and systems galore, but are bound by a stale story that is the exact same every single time you play.

And this kind of thinking isn't bound just to RPG's, there are so many practical uses of thinking like this. Imagine an AoS map, both the teams fight in the middle and try to push into the enemies bases. You wreck that base and the playable bounds shift to a base farther back, and you try to push the enemy to the edge of the screen. Or a tag inside a tag, where once you are tagged you become a spirit, who also has to run from another person. What I'm saying is that there is the extreme possibility for another level of play, in all genres, but the new maps created are static rather then dynamic.

I guess a better title for this would be "How to make your map more dynamic."

And the if/then/else block is just the tool we use to accomplish the desired effect. If it was a different function, we would use that. The layered if/then/else blocks serve as a flowchart for design.
 
Level 26
Joined
Aug 18, 2009
Messages
4,097
So you're teaching people the way to use an if/then/else. :p

That's what I thought when I read the title.

It's not comparable to those cheap global systems. You use an if/then/else you do so because you cannot condense it otherwise or it does not make sense to.

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Triggering player) Equal To Player 1 (Red)
    • Then - Actions
      • Player - Set name of Player 1 (Red) to selected
    • Else - Actions
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Triggering player) Equal To Player 2 (Blue)
    • Then - Actions
      • Player - Set name of Player 2 (Blue) to selected
    • Else - Actions
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Triggering player) Equal To Player 3 (Teal)
    • Then - Actions
      • Player - Set name of Player 3 (Teal) to selected
    • Else - Actions
  • ...
This obviously can be shortened by putting (Triggering player) as the argument in the Set name-action directly and negletting all those ifs. That's an example for a system.

Another story, however, would be when you do something fundamentally different in the selection branches like

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Triggering player) Equal To Player 1 (Red)
    • Then - Actions
      • Player - Set name of Player 1 (Red) to selected
    • Else - Actions
      • Player - Set Player 1 (Red) Current gold to 750
So what am I getting at? The second scenario requires you to write more and also most-likely to observe and think of more cases. In contrast to independent systems, that's actual content work. As a player of RPG Maker games, I can see that the author needs to keep a lot in mind updating a changing world. For example when you do some actions in the later game progress and then return to the starter regions, the player may expect some effects that altered the content there like different NPC dialogs. Then again, in an open world, the player might never stumble upon those changes because he/she is free to choose by the selections. This means, the author might saddle oneself with a lot of unseen work and accounts for a lot of variables (you even mentioned combinations).

I can see that a lot of developers lack innovation (and not just about case differentiation) but as for a tutorial, it would be more interesting to give a lead how to organize things, minimize work, maximize the player's pleasure and how to approach projects in general.

A well known feature of replayability of RPGs and shooters are secrets for example.
 
I'm not sure how to exactly respond. It is a well-purposed tutorial, and it is very correct, but it is a bit simple. I think that it is a bit brief on what could be talked about:
WaterKnight said:
it would be more interesting to give a lead how to organize things, minimize work, maximize the player's pleasure and how to approach projects in general.

It is easy to tell someone that if they want multiple endings, they can simply use if-then-else. They might not need to read this tutorial. However, this could serve a greater purpose if it dealt more with the concept of multiple endings, in order to inspire users to create non-linear maps. In that tutorial, there would be some cool samples of what it could be like, and just general ideas that users should consider.

It is a well-written tutorial, but I think it could find more use if it was expanded a bit. :) Otherwise it may not be as useful as a linkback.

It is up to you whether you want to update it. Or, you can refute what I said and I may turn in favor of approving it. Let me know if you are going to update it.
 
Top