Jump to content
FORUMS
Sign in to follow this  
Starym

The Workshop In-depth Walkthrough and Explanation

Recommended Posts

A733IJ2VOJGF1556085996085.jpg
 

Now that we've learned about the awesome Workshop feature coming to the game soon and live on the PTR now, we're getting an in-depth walkthrough of the editor. There's a whole bunch of info below on how to create, debug and share your script and more, and definitely make sure to read the post on the official site if you're interested in specific examples of scripts.

Blizzard LogoThe Workshop (source)

Create games in ways previously unimaginable with the Workshop! The Workshop is a simplified game scripting system that expands the customization features available in the Game Browser. Within the Workshop, you'll create a Script to add Rules and unique play Conditions on top of the established Overwatch game modes you already know and love. Rules can do many things, like change how a hero's movement and abilities work, modify how players are damaged or healed, or even display text under certain circumstances.

One hot game mode you can create is Molten Floor, where your hero will catch on fire if they're on the ground:

Table of Contents

Accessing Workshop

To access Workshop, click Play > Game Browser > Create > Settings > Workshop.

Creating a Script

To create a Script, you must:

  1. Add a Rule
  2. Select an Event
  3. Add a Condition (Optional)
  4. Add an Action

Once you do this, you can add as many Rules, Conditions, and Actions as you have room for.

Adding a Rule

Rules are highly customizable pieces that make up your Script. Each Script must have one or more Rules.

Each Rule has an optional comment and contains:

  • Event: Defines when the Rule will be executed. For more information, see Selecting an Event.
  • Conditions: An optional list of things that must be true for the Rule to apply. For more information, see Adding a Condition.
  • Actions: A list of things that happen when the Event and Conditions are met. For more information, see Adding an Action .

 

To add a Rule, click Add Rule.

Selecting an Event

An Event defines when the Rule will be executed. When an Event happens in-game, an Instance of the Rule is created. Each Instance evaluates Conditions and executes Actions independently of other Instances.

Once a Rule is created in the editor , an Event is automatically added. You must specify what type of Event you'd like.

To specify an Event type:

  1. Click the drop-down next to Event.
  2. Select one of the following:

  3. If necessary, specify the Team or Player that should be impacted by this event. The options are:

    Option comment
    All Event applies to all teams, including players in free-for-all modes
    Team 1 (or Current Team Name) Event only applies to members of this team
    Team 2 (or Current Team Name) Event only applies to members of this team
    Option comment
    All Event applies to all players
    Slot 0 through Slot 5 Event only applies to players in the specified slot. In a team-based game, two players may occupy one slot (one for each team).
    Slot 6 through Slot 11 Event only applies to players in the specified slot. This only applies in free-for-all game modes.
    Specific Hero Event will only apply to players who have spawned as that hero

Adding a Condition

After you've added a Rule and an Event, you have the option to add one or more Conditions. Conditions are a list of things that must be true before the Rule can execute its list of Actions. If the Condition belongs to a Rule with an Event type of "Ongoing - Global" or "Ongoing - Each Player," it's checked continuously to see if it's true. If it belongs to a Rule with any other type, it's checked whenever the specified Event occurs. If a Rule has no Conditions, the Action list will attempt to execute as soon as the Event occurs. Each Condition is made up of two Values, which use an Operator to compare and check to see whether or not they are True. See Values for more information.

To add a Condition:

  1. Click Add next to Conditions.
  2. Fill in the Value fields.
    • Note: When a Value itself has an Input (such as the "Hero Of" Value, which needs to know the player from whom to acquire the hero), then the Input for that Value will show up indented below it.
  3. Select an Operator. The Operators are:
    • == Equals
    • != Doesn't equal
    • > Is greater than
    • >= Is greater than or equal to
    • < Is less than
    • <= Is less than or equal to

Adding an Action

An Action is something that modifies the game. They are executed in order from top to bottom. For the list of Actions to start executing:

  • The Event associated with the Rule must have occurred
  • All Conditions of the Rule must be true (or there are no Conditions)
    • If the Event type is "Ongoing - Global" or "Ongoing - Each Player," the list of Actions will execute when every Condition passes for the first time. Whenever the list of Conditions fails and then passes again, the Actions will attempt to execute again.

With the exception of the Wait Action (see Wait Action for more information), all Actions execute and finish immediately. Each Action is made of zero or more Inputs, which describe how the game is modified. Each Input is given a Value, which is a piece of information or an instruction on how to get information. For more information, see Values.

To add an Action:

  1. Click Add next to Actions.
  2. Select an Action, which describes how the game will be modified.
  3. Select a Value in the drop-down for each new Input that appeared.
    • Note: Some Actions will create an object or ongoing behavior. Such Actions may have an Input called "Reevaluation." This Input determines whether the other Inputs for this Action are fixed (leaving the object or ongoing behavior unchanged) or dynamic (changing the object or ongoing behavior as the Value assigned to the Input changes).

Actions

  • Pause Match Time: Pauses the time of the current match
  • Modify the Global Variable(T, Add, 5): Increases the Global Variable T by 5
  • Set Invisible(Event Player, Enemies): Makes the player executing this Rule invisible to enemies

Actions with a Reevaluation Input

  • Create Icon(All Players(All Teams), Global Variable(P), Alert, Position): Create an Alert icon that's visible to everyone at the location specified by Global Variable "P". Reevaluate the Position continuously, so if the Global Variable "P" changes later, the icon's position will change to the new location.
  • Create Icon(All Players(All Teams), Global Variable(P), Alert, None): Create an Alert icon that is visible to everyone at the location specified by Global Variable P. Do not reevaluate anything, so even if the global variable P changes later, do not update the position of the icon.

Action Types

Although there are many potential Actions, there are a few you should be aware of:

Loop is an Action that causes the execution of the list of Actions to restart from the beginning. There are four types of Loop Action:

  • Loop: Always restart the Action list
  • Loop If: Restarts the Action list if the Action’s Condition Input evaluates to a value other than 0 or False
  • Loop if Condition Is True: Restarts the Action list if all of the Rule’s Conditions are currently passing
  • Loop If Condition Is False: Restarts the Action list if any of the Rule’s Conditions are currently failing

A Loop Action is only allowed if a Wait Action is guaranteed to execute before the start of the Action list.

Good Bad

This is allowed, since it waits before looping.

 

This is not allowed, since it would execute forever without waiting.

Wait is an Action that causes time to pass before a subsequent Action can execute. The minimum wait time is 0.25 seconds.

There are three behavior options for the Wait Action:

  • Ignore Condition: If this is selected, the execution of the Actions can't be interrupted by Conditions or other Events.
    • If the Event type is "Ongoing - Global" or "Ongoing - Each Player", Conditions transitioning between failing and passing will not cause anything to happen.
    • If the Event is of any other type and an event of that type occurs with the same Event Player, the event is ignored entirely.
  • Abort When False: If this is selected, the Action list stops executing if the Conditions start to fail.
  • Restart When True: If this is selected, Action execution will reset to the first Action if one of the following happens:
    • The Event type is "Ongoing - Global" or "Ongoing - Each Player" and the Conditions transition from failing to passing.
    • The Event is of any other type, an event occurs with the same Event Player, and the Conditions all pass.

Additional Information

The String Value generates a string. It has the following Inputs:

  • String: The text to display. If the text contains a number inside curly braces, it will be replaced with the Value provided to the corresponding Input.
  • {0}: The Value that will be converted to text before replacing the {0} in the String. This Value may be of any type.
  • {1}: The Value that will be converted to text before replacing the {1} in the String. This Value may be of any type.
  • {2}: The Value that will be converted to text before replacing the {2} in the String. This Value may be of any type.
  • String(“Hello”, Null, Null, Null): Produces the string “Hello”
  • String(“{0} vs {1}”, Hero(Ana), Hero(Pharah), Null): Produces the string “Ana vs Pharah”

Strings can be combined to form more complex strings:

  • String(“{0} vs {1}”, Hero(Ana), String("{0} and {1}", Hero(Pharah), Hero(Genji), Null), Null): Produces the string “Ana vs Pharah and Genji”

Strings can't be used in Conditions or stored into Variables because of complications with players using different languages in the same Custom Game.

A Value is a piece of information—or an instruction on how to obtain information—provided to the Input of a Condition, an Action, or another Value. Values can be combined with each other.

There are many, many Values, so we won't define them all here. However, they are defined in the Workshop Editor. Here are a few that you're likely to see:

Value comment
Number Provides a real number in a range specified by the Input
Vector Provides a three-dimensional value in a range specified by the Input. This is used for positions and directions.
Team Indicates a specific team, such a Team 1, Team 2, or All Teams
Hero Indicates a specific Hero
Null Indicates the absence of a Player or Entity
True Provides the value of True
False Provides the value of False
Compare Provides either True or False, depending on whether or not the comparison it describes was true or not
Event Player Provides the Player that's executing the Instance of the Rule or Null if there's no such player
Attacker Indicates the Attacker for the Instance of the Rule or Null if there isn't an Attacker
Victim Indicates the Victim for the Instance of the Rule or Null if there isn't a Victim
Current Array Element Provides the current Value being considered when used along with the If True For Any, If True For All, Filtered Array, or Sorted Array Value

A Value may be stored into an Array, which is a collection of multiple Values.

  • Several Actions and Values can create or modify an Array.
    • For example, the "All Players" Value gives you an Array of every player currently in the game.
    • You can also build your own arrays using the "Append To Array" operation of the "Modify Global Variable" Action or "Modify Player Variable" Action.
  • If an Input expects an array but receives some other kind of Value, the Value is copied into an array of a single element for the benefit of the Input. Similarly, if an Input expects some other kind of Value but receives an array, the first Value in the array is used (or 0 if the array is empty).

A Variable is a place where a Value can be stored and retrieved later. With the exception of Strings, any Value can be stored in a Variable. All Variables start with a Number Value of 0.

There are two types of Variables in a Script:

  • Global Variable: There are 26 Global Variables, named A through Z. Each Variable holds a separate Value or array of Values.
  • Player Variable: Each Player has 26 Variables, named A through Z. Each Variable holds a separate Value or array of Values.

There are three operations that can be performed on a Variable:

  • Setting: "Set Global Variable" and "Set Player Variable" will set the Variable to a new Value, replacing the previous Value.
  • Modifying: "Modify Global Variable" and "Modify Player Variable" modify the Value in a Variable using a particular arithmetic operation (such as Add, Multiply, etc.) or Array operation (Append, Remove).
  • Chasing: "Chase Global Variable Over Time", "Chase Player Variable Over Time", "Chase Global Variable at Rate", and "Chase Player Variable at Rate" gradually change the Variable over time or at a specified rate.
    • The Destination for the Chase can be a Number or a Vector (or any Value that results in a Number or Vector).
      • If the Destination is a Number, the Variable Value needs to be a Number before the Chase begins so that the Chase will work correctly.
      • If the Destination is a Vector, the Variable Value needs to be a Vector before the Chase begins so that the Chase will work correctly.
      • If Reevaluation is enabled for the Destination, the Chase will update as needed to pursue a changed Destination, even if the Destination had been reached before. For more information on Reevaluation, see Adding an Action.
    • You can cancel a Chase using the "Stop Chasing Global Variable" Action and the "Stop Chasing Player Variable" Action.
      • When a Chase is cancelled, the Variable keeps its current Value, which may be somewhere between what it was when the Chase began and the Destination.

Examples

Ready to get into the Action? Try creating one of these game modes! We'll walk you through what you need to add and why:

We're going to walk you through creating Molten Floor, a game where heroes burn and take damage if they're on the ground.

  1. First, let's make sure you'll play the game on the desired map(s).
    • Click Play > Game Browser > Create > Settings > Maps.
    • Select the map you'd like to test the game on and disable all others.
  2. Next, enter your Workshop.
    • Click Back.
    • Click Workshop.
  3. Now it's time to make a Script! Let's add our first Rule.
    • Click Add Rule.
    • In the Comment section, enter Start Burning If On Ground. This lets you know that this Rule is what makes players start to burn when they touch the ground.
    • Now, change the Event type so we know when this Rule should be executed.
      • In the Event drop-down, select Ongoing - Each Player. This indicates that the Rule will be evaluated separately for every player in the game.
      • Leave the other drop-downs with the default options.
    • Now, let's add a Condition. This Condition will determine whether or not the Rule will execute. You can also just leave this empty if you always want the Rule to execute!
      • Under Conditions, click Add.
      • In the first Value drop-down, select Is On Ground. This value returns true whenever the player is on the ground.
      • Leave all other drop-downs with the default options and click OK.
        • Event Player means "The player that the Rule is currently running on".
    • Finally, we'll add an Action. Actions are what happens if the Condition is true.
      • This Action will make it so a hero will start to burn when on the ground.
        • Under Actions, click Add.
        • In the Action drop-down, select Set Status.
        • In the Status drop-down, select Burning.
        • Under Duration, change the number slider to 10,000.
        • Leave all other drop-downs with the default options and click OK.
  4. Let's test if your hero is on fire while on the ground!
    • Click Back twice.
    • On the Create Game screen, click Start.
    • Select a hero.
    • As soon as you enter the game, your hero should be on fire.
    • Press Esc and click Open Workshop Editor to keep building your Script.
  5. Now, let's add another Rule that ensures a hero won't be on fire if they are jumping or in the air.
    • Instead of adding a new Rule from the beginning, let's copy the last one we created.
    • Next to the Rule you created, click Copy. N4CL54VAX4E31555714631366.png
      • Click Paste Rule.
      • Change the decription to Stop Burning When In the Air. This lets you know that this Rule is what makes your hero stop burning when they are in the air or jumping.
      • Keep the existing Event type.
      • Now, let's edit the Condition. This Condition will determine whether or not the Rule will execute.
        • Click the existing Condition that says "Is On Ground(Event Player) == True."
        • In the Value drop-down, select False.
        • Leave all other drop-downs with the existing options and click OK.
      • Next, let's edit the Action. This Action will make it so your hero will stop being on fire if they're not on the ground.
        • Click the existing Action that says "Set Status (Event Player, Null, Burning, 10000)."
        • In the Action drop-down, select Clear Status.
        • In the Status drop-down, select Burning.
        • Leave all other drop-downs with the existing options and click OK.
  6. Let's test if the hero stops being on fire when in air!
    • Click Back twice.
    • As soon as you enter the game, your hero should be on fire. Jump and see if your hero is no longer on fire.
    • Press Esc and click Open Workshop Editor to keep building your Script.
  7. Finally, we'll start to damage a hero while they're on the ground.
    • Expand the "Start Burning If On Ground" Rule.
    • Under Actions, click Add. This Action will make the hero take damage while on the ground.
      • In the Action drop-down, select Damage Over Time.
      • Under Duration, change the number slider to 9999.
      • Under Damage Per Second, change the number slider to 30.
      • Leave all other drop-downs with the default options and click OK.
    • Expand to the "Stop Burning If Not On Ground" Rule.
      • Under Actions, click Add . This Action will make the hero stop taking damage while not on the ground.
      • In the Action drop-down, select Stop All Damage Over Time .
  8. Let's test if your hero takes damage while on the ground and doesn't take damage while in the air or jumping.
    1. Click Back twice.
    2. Exit the spawn room and see if your hero begins taking damage.
    3. Jump and see if your her stopped taking damage.
  9. You did it! The floor is now lava!

Here's a more extensive walk through of a game mode, Mirrored Deathmatch. In this game, there are multiple short rounds where everyone plays the same hero. At the end of each round, each player respawns where they were as the next hero in a randomized, predetermined list. When the final round ends, the player with the most kills wins.

For example, in one match, everyone might start as McCree and then switch to Pharah in the second round. In a different match, they might start as Widowmaker and then switch to Ashe in the second round. Because of how this list is generated, it's unlikely that you'll ever play through the same list of heroes twice!

So, let's make a Script for Mirrored Deathmatch!

  • Click Play > Game Browser > Create > Settings > Workshop.
  • First, we'll create the Rule that makes a list of heroes that can potentially be played.
    • This list will be stored in Global Variable "L" as an Array.
      • Arrays can be anything, like a list of players, a list of heroes, a list of numbers, a single value, or even no values at all (known as an “empty” array).
      • Each value in the array is stored at a unique Index starting at 0 and counting up. An index and its value are sometimes referred to as an Element.
      • The order of an array matters, so [Reaper, Winston, Mercy] is a different array than [Mercy, Winston, Reaper].
      • Arrays may contain a mixture of types. For example, it’s possible to have the following array: [123, Reaper, True, -4.5].
      • If an Input expects an Array, but a single Value is provided, the Input will receive that single Value packed into an Array of one Element.
      • If an Input expects a single Value but is provided an Array, the Input will receive the first Value in the Array (or 0 if the Array is empty).
    • Add a Rule and enter a comment so you know what this Rule will do.
    • Set the Event type to Ongoing - Global. This means only a single instance of this Rule will be executed.
    • Since the Rule doesn't have any Conditions, it will start executing as soon as the game starts.
    • Add an Action with:
      • Action: Set Global Variable
        • Variable: L
      • Value: Hero
        • Hero: A hero you'd like to be playable.
      This creates the hero Array. The "Set Global Variable" Actions sets "L" to the initial hero in the list.
    • Only having one playable hero in the game would be boring, so let's add more! Add as many Actions as you'd like with:
      • Action: Modify Global Variable
        • Variable: L
      • Operation: Append
      • Value: Hero
        • Hero: A hero you'd like to be playable.
      This appends additional heroes to the Array we created before in "L". If the the first Action started with "Modify Global Variable" instead of "Set Global Variable", the Array would begin with 0. All variables are 0 by default, so if you don't set it to something else you'll end up with an array like [0, Pharah, Hanzo, Ana,...] .
    • Let's add the last Action for this Rule. This Rule will take a randomized copy of Global Variable L (the Array of heroes), copy a part of the now randomized Array starting at the 0 position, and include the number of heroes the game mode should have. This copy is then stored back into Global Variable L, resulting in a randomly shuffled subset of the original list of heroes you provided.
      • For Example: If the initial hero list were [Ashe, Doomfist, Hanzo, McCree, Pharah, Soldier: 76, Zenyatta, Widowmaker, Ana] , the randomized Array might be [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist, Soldier: 76, Zenyatta, McCree] , and the slice might be [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist] .
  • The next Rule guarantees that, no matter what, every player is playing the same hero at all all times.
    • Add a Rule and enter a comment so you know what this Rule will do.
    • Set the Event type to Ongoing - Each Player. This means each player will execute their own Instance of the Rule.
    • Add two Conditions, which must be true for the hero to be forced:
      • The number of the round, Global Variable "R", must be less than the total number of heroes in the hero list. If it isn't, the game is finished, and no more heroes will be forced. The round number starts at 0 and counts up, so if there are 6 rounds, the final round number is 5. It's okay that Global Variable "R" is never set to 0 since all variables start with a default value of 0.
        • Value: Global Variable
          • Variable: R
        • Operator: <
        • Value: Count Of
          • Array: Global Variable
            • Variable: L
      • This checks to see if the hero currently being played by a given player must be different than the desired hero for that round number. The "given player" is represented by Event Player, a special Value that refers to the player currently executing an Instance of the Rule. The "desired hero" for the current round is the hero stored at the corresponding index of the hero list (Global Variable "L"). Since the current round is stored in Global Variable "R," the desired hero can be obtained using "Value In Array".
        • Value: Hero Of
          • Player: Event Player
        • Operator: !=
        • Value: Value in Array
          • Array: Global Variable
            • Variable: L
          • Index: Global Variable
            • Variable: R
    • Once we know the player must change heroes, add two Actions that will execute:
      • The first Action will force the Event Player to the desired hero. The first Input in this Action is the player whose hero should be forced. The second Input is the hero, so the desired hero is provided.
        • Action: Start Forcing Player To Be Hero
        • Player: Event Player
        • Hero: Value In Array
          • Array: Global Variable
            • Variable: L
          • Index: Global Variable
            • Variable: R
      • The second Action preloads the next hero in the list so the player doesn't experience a long delay before seeing their hero switch. Each player preloads the hero separately, even though everyone will play the same hero. This is because each player might need to preload a different skin for the hero. The use of the Add value to add 1 to Global Variable "R" instructs the Action to preload the next hero rather than the current hero. On the last round, this will yield an Array Index that's out-of-bounds for the Array Global Variable "L". This is okay since all out-of-bounds values for an Array are considered to be 0, so any Action that expects a hero and receives 0 just won't do anything.
        • Action: Preload Hero
        • Player: Event Player
        • Hero: Value In Array
          • Array: Global Variable
            • Variable: L
          • Index: Add
            • Value: Global Variable
              • Variable: R
            • Value: Number
              • Number: 1.00
  • The next Rule we'll make sets up each round if it hasn't been initialized yet.
    • Add a Rule and enter a comment so you know what this Rule will do.
    • Set the Event type to Ongoing - Global. This means only a single instance of this Rule will be executed.
    • Add three Conditions, which must be true for the round to start:
      • The game must be in progress. This means that the Assemble Heroes screen and Setup time have already occurred, but the game hasn't finished yet.
        • Value: Is Game In Progress
        • Operator: ==
        • Value: True
      • The Global Variable I must be False. This variable is used to indicate if the current round is initialized. If the Global Variable I has never been set, it will have a value of 0, which is equivalent to False in comparisons like this.
        • Value: Global Variable
          • Variable: I
        • Operator: ==
        • Value: False
      • The round number, Global Variable "R", must be less than the total number of heroes in the hero list.
        • Value: Global Variable
          • Variable: R
        • Operator: <
        • Value: Count Of
          • Array: Global Variable
            • Variable: L
    • Once we know the Conditions are all true, the round needs to be initialized. Add a few Actions that will do that:
      • The first Action tells the core game mode that the match shouldn't end because of normal criteria. For a Deathmatch, it means the game won't end because time runs out or someone reaches the score limit. Once this Action executes, the match won't end until the script re-enables the built-in game more completion or a winner is explicitly declared.
        • Action: Disable Built-in Game Mode Completion
      • The next Action sets the game mode's current timer to the length of a round.
        • Action: Set Match Time
        • Time: Number
        • Number: 60.00
      • This Action sets the Global Variable "I" to True so initialization won't happen again until Global Variable "I" is set back to False.
        • Action: Set Global Variable
        • Variable: I
        • Value: True
  • This Rule waits for the time to run out in the current round before advancing to the next one.
    • Add a Rule and enter a comment so you know what this Rule will do.
    • Set the Event type to Ongoing - Global. This means only a single instance of this Rule will be executed.
    • Add two Conditions, which must be true for the game to advance to the next round:
      • The game must be in progress. This means that the Assemble Heroes screen and Setup time have already occurred, but the game hasn't finished yet.
        • Value: Is Game In Progress
        • Operator: ==
        • Value: True
      • The current match time must be 0, meaning time in the round has run out.
        • Value: Match Time
        • Operator: ==
        • Value: Number
          • Number: 0.00
    • In response to these Conditions being true and the round being over, the match will advance the round number and mark the round as uninitialized. Add two Actions to do this:
      • This Action lets the other Rules know that the match has transitioned to the next round.
        • Action: Modify Global Variable
        • Variable: R
        • Operation: Add
        • Value: Number
          • Number: 1.00
      • This Action sets Global Variable "I" to False, letting the other Rules know that a new round needs to be initialized.
        • Action: Set Global Variable
        • Variable: I
        • Value: False
  • The final Rule ends the match when all rounds have been played.
    • Add a Rule and enter a comment so you know what this Rule will do.
    • Set the Event type to Ongoing - Global. This means only a single instance of this Rule will be executed.
    • Add one Condition, which will check to see if Global Variable "R" equals the number of elements in Global Variable "L." If it does, it means that a round has been played for each hero on the hero list. When this happens, the match should end.
      • Value: Global Variable
        • Variable: R
      • Operator: ==
      • Value: Count Of
        • Array: Global Variable
          • Variable: L
    • Once the Condition is true, this Action will re-enable built-in game mode completion. Since the timer will be at 0, the game mode will immediately finish the match and the standard end-of-match flow will begin.
      • Action: Enable Built-in Game Mode Completion

Debugging Your Script

Once you've created a Script, you can use the Workshop Inspector to view your Script executing in-game, see what Actions and Conditions are active, and view any issues with your Script.

To access the Workshop Inspector:

  1. Begin a game with the Script you created.
  2. Press Esc.
  3. Press Open Script Debugger.
  4. Press Enable. This feature is not enabled by default.

The Workshop Inspector is composed of a few things:

  • Entry: The Entry lets you know what is happening
  • Comment: This displays the comment associated with the Rule.
  • Condition: Lists what Conditions need to pass in order for Actions to execute
  • Action: Lists what Action executed
  • Timeline Scrubber: The Timeline Scrubber allows you to move forwards or backwards in time through the game's progress.

Sharing Your Script

Once you've created an awesome Script, you can share it with the world (or just your friends) for the next six months. The scripts you create can be used on any platform, regardless of which platform you made it on.

To share a Script:

  1. Click Play > Game Browser > Create > Settings > Share DMEOY2IKZRZ11555714631854.png .
  2. Click Copy.
  3. Send the link to others!

Opening a Script

If someone has shared a Script that you'd like to use:

  1. Click Play > Game Browser > Create > Settings > Import MXOWBNBS7LQO1555714631411.png .
  2. Enter the link.
  3. Click OK.

Tips and Tricks

  • It's easier to access the Workshop Inspector if you set a keybinding for it. To do this, click Esc > Options > Controls. Scroll down until you see Open Workshop Inspector and bind a key.
  • Workshop Inspector will not only tell you what happened, but also what didn't happen (and why)!
  • Don’t forget about the preset games! There may be certain settings already provided that you can use instead of coming up with a new solution by hand.
  • If an Event isn't firing as expected, your Event Player may already be executing the list of Actions. Take a look at the Wait Action(s) in your Rule, especially if any are set up to ignore Conditions.
  • To pick a specific location on the map, use the "Vector" Value and click the Camera icon.
  • The "Has Spawned" Value is useful if you only want logic to run after a player has a hero in the game.
  • If you only want your Rules to execute after the Setup and Assemble Heroes phases of the game, use the "Is Game In Progress" Value.
  • Assigning a Value to a Variable and watching it in the Workshop Inspector is often the easiest way to understand what the Value is returning during gameplay.
  • You can store the last created effect or icon into a Player Variable using the "Last Created Entity" Value. This lets you reference the entity later for destruction.
  • Combining Filtered Arrays with Values such as "All Players On Objective" or "Players Within Radius" allows you to easily filter players who meet certain criteria (dead, alive, status effect, etc.).
  • If you need branching behavior, you can use the "Skip If" Action to skip any number of Actions if a given Condition is true. If you do this, the skipped Actions may need to include an "Abort" Action to prevent both branches from executing.
  • You can filter through the drop-down lists by typing.
  • If your Value expects an Array as a parameter but doesn’t receive one, it will cast the Input into an Array of size one.
    • The same goes for the reverse. If your Value expects a single piece of data but receives an Array, it will use the element in the 0 position of that Array.
  • Splitting your work into multiple Actions or Conditions will help you more easily figure out what is going wrong.
  • If you're unsure what an Action, Value, or Input does, you can mouse-over it on PC or choose "Show Details" on console to see an explanation.
  • Always fill out the Comment section so you remember what your Rule is doing!
  • Test often!

Share this post


Link to post
Share on other sites

Can't wait to see the most popular modes from other games waving over to overwatch.

All McCree, TTT Mode. I'm in.

Might bring me and my friends back to overwatch. 🙂

This is honestly a really great addition. More power to the players, brings creativity, brings dedication, unites the fanbase more.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Starym
      A small patch has hit the PTR with only bug fixes, for Havana, the Workshop and Genji!
      PTR May 31 (source)
      BUG FIXES
      General
      Havana PvP – Fixed a bug that could cause the payload to get stuck leaving the Distillery checkpoint. Fixed a bug that could cause the Play of the Game animation to be cut off before it ends. Workshop
      Fixed a bug that prevented Sombra and D.Va from using their Ultimate abilities when using the ‘Set Ultimate Charge’ action to grant 100% Ultimate charge Fixed a bug that prevented players from focusing on the Rule checkbox when using a controller. Fixed a bug that prevented the "Stop holding button" from clearing the action when using a wait before the action. Fixed a bug that caused players to always be returned to the Custom Game Browser when backing out of any game, if the player had been to the Custom Game Browser previously. Heroes
      Genji Fixed a bug that prevented Genji’s damage boost from being applied to deflected projectiles.
    • By Starym
      Jeff Kaplan took to the forums to talk about the success of the Workshop and the custom game modes players have been coming up with, focusing on how many hours have been spent in the top ones for NA, EU and Korean servers! Unfortunately these stats only cover the live version of the Workshop, which has only been around for 10 days, but the numbers are pretty impressive nonetheless.
      Apparently Uno is very popular in the US particularly, as it's topping the charts for both western regions combined. Here a video showcasing the mode in action:
      And here are the stats themselves, including the codes so you can check the modes yourselves in the game. Korean players seem to really be enjoying the Workshop creations, as they've spent a lot of time on them in these 10 days:
      Live Workshop Stats (source)
      Wow, the response to the Workshop has been overwhelming. You all are creating some amazing content!
      We just got some stats that I figured you’d all be interested in.
      Thanks so much for all of this great content!
      First off, here are the NA/EU Charts:
      link duration hours num matches avg players desc WMVZC 1370 1556 11.3 uno 9DFF3 1246 899 8.2 floor is lava parkour 9J4NE 1048 1261 8.2 mcree hot potato JWY47 942 1271 9.5 hammond racing 9655A 940 1469 8.2 gun game 6ZBX5 897 1094 8.2 dva bumperkart 4QY7N 765 1966 8.2 flappy bird TGT12 681 823 9.0 floor is lava BD9WP 633 1291 8.2 dva racing PJTY1 598 493 9.0 endgame 0V9FF 598 657 8.5 emote to kill W2ZMG 596 843 9.0 dva space battle Y1S15 586 817 11.3 play as two heroes BE2J7 550 726 8.2 portal gun R98SS 540 592 9.0 “tea” mode 7KR0G 519 641 8.2 top down overwatch 8E1CK 503 708 8.2 bastion turret ffa P3DNC 491 1010 9.0 flappy bird NVFTS 423 753 9.0 3rd person mode 2SQKT 394 574 8.2 super smash bros E5NGZ 389 698 8.2 helicopter mode JBWH8 386 660 8.2 surfer mei PH0BJ 340 558 9.0 lucio racing 7DC42 328 491 8.2 hero gauntlet From our Global Insights group:
      "In NA, someone has managed to recreate UNO, the card game. Surprisingly, it has the most hours played out of any link. This may be a result of consolidation; there is only 1 version of UNO floating around, but hundreds of accuracy trainer variations.
      Workshop has been extremely well received in KR; the most popular game mode in KR has a total of 5667 hours played so far, more than 4x the top link in NA. It is called “High Blood Pressure Marathon” (혈압마라톤) which is a mode with no cooldowns, infinite ultimates, and some other crazy things mixed in."
      And here are the KR top charts (forgive any localization issues or typos here):
      link total hours num matches avg players english korean BJFYV 5447 4870 18.6 High Blood Pressure Marathon 혈압마라톤 XSC7P 4858 8994 21.0 RPG w/shop RPG 상점모드 NMJZD 3098 3129 14.0 Infinity Stones 흙수저 맥크리 1T630 2873 2996 15.1 Crossy Road 길건너 친구들 9H9N7 2245 3814 20.6 RPG w/shop, no cheat key RPG 상점모드 키트키X 07CDJ 1943 1734 12.6 Ratating Bomb 폭탄돌리기 V42EB 1813 2205 12.8 Death Jump Rope 죽음의 줄넘기 PDQXT 1648 1533 17.6 Freeze tag 얼음땡 YD66G 1640 1674 18.2 Cop and Thief 경찰과 도둑 9YV2E 1640 2628 12.0 battle royale battle royal
    • By Stan
      A new Overwatch patch is now available for testing on PTR and comes with various Hero updates and replays, a new feature which allows you to watch your previous matches from any vantage point.
      Replays
      Overwatch replays allow you to watch your previous matches and support first-person, third-person, and bird's-eye view.
      Blizzard (Source)
      Experience your past Overwatch games from a whole new perspective with the Replay feature, now available on the Overwatch Public Test Realm (PTR). Replays allow you to watch your previous matches from any vantage point. Whether you want a first-person, third-person, or a bird’s-eye view, you can see it all with this tool.
      Hone your strategies by slowing down or speeding up the game to see exactly how a critical moment played out, or get a better view of the action from on high with or without the UI. The Replays feature is currently available on the PTR for PC only, but will be coming to consoles soon.
      Accessing Replays
      You can view available Replays from your Player Profile under the Replays tab. There you'll be able to load up your 10 most recent matches in all game modes (except for Tutorial and Practice Range). Replays will be available for the duration of a patch; as with Highlights, your Replays will be reset when a new patch launches.
      Keyboard Shortcuts
      Here are some handy default keyboard shortcuts to get you started and spark some ideas about what you can control in Replays.
      N: Show/hide controls W, A, S, and ? Move camera around on a plane Q and E: Move camera up and down Scroll Wheel Up: Increase playback speed Scroll Wheel Down: Decrease playback speed (Ctrl+P): Toggle play/pause Spacebar: Toggle between first-person and third-person view Left/Right Mouse Button: Detach from first-person and third-person view to free camera F1–F12: Spectate players (corresponds with player list in media controls) 0: Snap to the objective (Ctrl+L): Show map overlay (Ctrl+1) – (Ctrl+9): Save bookmarks 1–9: Restore camera bookmarks A complete list of shortcuts can be found by pressing Esc and selecting Options > Controls > Spectate. These keyboard shortcuts are fully customizable.
      Observe Like a Pro
      Here are a few tips to help you level up your Replays experience:
      If you want to learn how a specific player uses a hero, make sure to spectate both them and the enemy they’re attacking. This will help you understand the difference in their play styles. Using the map overlay (Ctrl+I) to watch a match will help you understand how team fights unfold. The icons for each hero provide status indicators so you can see exactly what is happening to that player. For the best view when using the map overlay, position your camera high in the sky and look straight down at the ground. This allows you to see an overhead map when using the tool. Setting up static cameras in specific locations can help you view fights from multiple perspectives and better understand team rotations. Remember to bookmark your locations each new match. If you’re creating highlight footage for videos, don’t overuse slow motion. For the most dramatic effect, slow down the most impactful moments of a play or a team fight. Hero Updates
      The patch also comes with multiple Hero updates:
      Blizzard increased the amount of ammo for Baptiste and duration of Amplification Matrix. The length of D.Va's Defense Matrix  has been reduced from 15 meters to 10 meters. McCree's primary fire recovery on peacekeeper is down to 0.4 secs (from 0.5 secs). Orisa can now deploy her Protective Barrier without interrupting reload. Symmetra's Teleporter interact range was increased to 1.5 meters from 1 meter. Torbjörn's secondary Fire damage per pellet on Rivet Gun has been reduced from 12.5 to 10.5. Blizzard (Source)
      A new Overwatch patch is currently in development and now available for testing! To share your feedback or report and issue, please post in the PTR Feedback or PTR Bug Report forums. Please note that the below patch notes only include changes currently available for testing on the PTR. While many of these changes will also be available on PlayStation 4 and Xbox One in a future patch, the PTR is PC-only and only reflects changes coming specifically to that platform.
      PATCH HIGHLIGHTS
      New Feature: Replays
      Experience your past Overwatch games from a whole new perspective with Replays. Replays allows you to watch your ten most recent matches from any vantage point. Whether you want a first-person, third-person, or bird’s-eye view, you can see it all with this tool. Hone your strategies by slowing down or speeding up the game to see exactly how a critical moment played out, get a better view of the action from above, or even turn off the UI completely.
      Learn more about Replays: Blizz.ly/OverwatchReplays
      HERO UPDATES
      Baptiste
      Biotic Launcher Increased heal ammo from 10 to 12. Amplification Matrix Ultimate duration increased from 8 seconds to 10 seconds. Developer Comments: Given the dual nature of Baptiste’s weapon, he ends up having to reload often. We’re increasing the amount of ammo he has to work with so he can get more firing time while healing. Similarly, increasing the duration of Amplification Matrix will allow allies more time to get into position to make use of it.
      D.Va
      Defense Matrix Reduced length of Defense Matrix from 15 meters to 10 meters. Developer Comments: Defense Matrix is a very powerful defensive ability and can often feel oppressive from far away. Reducing the range on it will require D.Va to position herself more carefully to take advantage of its effects.
      McCree
      Peacekeeper Primary fire recovery reduced from 0.5 seconds to 0.4 seconds. Developer Comments: On average, McCree’s damage output wasn’t quite making up for the relatively low mobility or utility in his kit. Reducing his weapon’s recovery time improves the potential damage output without affecting the number of successful shots to kill an enemy.
      Orisa
      Protective Barrier Barrier can be deployed without interrupting reload. Developer Comments: Orisa has one of the longest weapon reloads and interrupting it to deploy a new barrier felt too disruptive to her gameplay. This change allows her to reload as needed while still being able to protect herself and her team.
      Symmetra
      Teleporter Teleporter interact range increased from 1 meter to 1.5 meters. Developer Comments: This is primarily a quality of life improvement as it was possible to create a teleporter that Symmetra was unable to interact with unless she moved toward it.
      Torbjörn
      Rivet Gun Secondary Fire damage per pellet reduced from 12.5 to 10.5 (105 dmg total per shot). Developer Comments: The combined damage output of Torbjörn’s secondary fire with his Overload ability was too high given his recently increased survivability.
      GAME MODE UPDATES
      Assault
      Time awarded for capturing Point A on all Assault maps has been reduced from 4 minutes to 3 minutes. Upon losing Point A, any defenders that are dead, or that die shortly thereafter, will have a maximum respawn of 3.5 seconds. Developer Comments: Assault match lengths are averaging higher than we’re happy with, particularly in Competitive where there are multiple rounds. We’re also concerned with how often Offense fully captures Point A and Point B. Reducing the round time from 8 to 7 minutes should address both these concerns, as less overall time rewards better Defense.
      Additionally, sometimes Defenders fight late with good intentions at Point A and end up staggered from their team when A falls, leaving their team with uneven footing to defend a rush to B. In these situations, temporarily lowering the respawn time to get those Defenders back with their team should be a better match experience and doesn’t punish players so harshly for wanting to defend Point A.
      WORKSHOP UPDATES
      General
      Visual update applied Check boxes added to support operations on multiple conditions/actions/rules. You can now disable conditions/actions/rules without deleting them. (PC) When copying conditions/actions/rules, the contents will also be copied to your clipboard in a text format. (PC) When pasting conditions/actions/rules, the editor will use the text from your clipboard. Increased maximum number of effects from 64 -> 128. Added ‘Modify Global Variable At Index’. Added ‘Modify Player Variable At Index’. BUG FIXES
      General
      Communication Wheel: “Acknowledge” pings triggered through the Communication Wheel can now target objectives. Fixed a bug where explosions could play in the wrong position if a mispredicted impact happened on the client. Custom Game: Fixed a bug where AI Soldier: 76 wouldn’t fire his Helix Rocket at the same target twice. Custom Game: Fixed an issue where ‘Nearest Walkable Position’ would use a location in a spawn room instead of the specified location when the spawn room doors were closed. Tutorial: Weapon UI is now hidden until your weapon is available. Heroes
      Ana Anti-Heal will be cleared when Sombra uses her translocator to teleport.
        Sombra Translocator will now escape slippery surfaces more easily and not be able to be stuck to them. Fixed an issue where a material effect on Sombra’s hair would cause it to cast a shadow while invisible.
        Torbjörn Fixed a bug where Torbjörn’s turret was sometimes able to shoot through walls.
    • By Starym
      Here come the patch notes for today's update, featuring the already announced Anniversary event, but also bringing the biggest update to Overwatch in a long time to live servers - the Workshop has arrived! You can check out a detailed walkthrough for the new tool here.
      Baptiste and Hammond also receive some fixes to how their abilities interact with moving platforms and there's a whole lot of bug fixes as usual.
      May 21 (source)
      New Seasonal Event: Overwatch Anniversary 2019
      Celebrate Overwatch’s third anniversary with brand new items, including Legendary and Epic skins like Riot Police Brigitte, Academy D.Va, Carbon Fiber Doomfist, Honeydew Mei, Orbital Pharah, Gargoyle Winston, and many more! Did you miss any Overwatch festivities over the previous years? Don’t worry—you’ll be able to unlock items from past events using credits (or by opening Loot Boxes!) Relive the thrill of previous seasonal brawls in the Arcade, with a brawl of the day rotating throughout the Anniversary celebration. Thank you so much for playing Overwatch with us over the past three years! Your continued support and enthusiasm help drive us to keep creating. We look forward to celebrating with you in-game!
      Workshop
      We’re excited to share a new in-game feature called the Workshop! The Workshop greatly expands the game customization features available in the Game Browser by providing a simplified game scripting system. Enhance the Overwatch game modes you know and love with new game rules, new victory conditions, adjustments to the hero movement and abilities, and much more. Once you’ve designed an awesome new game mode, create a code to share it with your friends or the whole community*! To get started using the Workshop, see our Workshop blog post. We’re excited to see what you come up with! (* Codes created in China cannot be shared with the rest of the world. Codes created outside of China can’t be used by players in China.) Note that Workshop is a complex feature that we’re still iterating on, so we may need to adjust or turn it off as we work to improve it. Please post any questions or issues in the Workshop forum.
      HERO UPDATES
      Baptiste
        Immortality Field If it lands on a moving platform, it will move along with the platform
        Wrecking Ball

      Minefield If a mine lands on a moving platform, it will move along with the platform BUG FIXES
      Heroes
      Baptiste
      Fixed a bug where Immortality Field would become stuck under some objects Fixed a bug where Immortality Field would behave oddly when placed on a moving platform Fixed a bug where a healing grenade would appear in his Biotic Launcher when it is out of ammo Fixed a bug where the healing grenades from the Biotic Launcher wouldn’t hit teammates when deflected by Genji’s Deflect D.Va
      Fixed a bug where D.Va’s speed when using Boosters decreased dramatically when flying over some platforms Genji
      Fixed a bug where Genji couldn’t climb up certain pillars on the Havana map Hanzo
      Fixed a bug where Hanzo couldn’t climb up certain pillars on the Havana map Moira
      Fixed a bug with Moira’s Scientist skin where her lab coat would clip into itself while using the Erlenmeyer victory pose Orisa
      Fixed a bug where damage boosting from a teammate’s ability (such as Baptiste’s Amplification Matrix) would count towards Orisa’s damage amplified statistic when using Supercharger  
       
       
       
       
      KNOWN ISSUES
      Overwatch Anniversary
      Some event rewards (Skins, Icons, etc.) aren’t translated into Japanese. We’re working on finishing up these translations. We’ll add these translations in an upcoming release. Workshop
      The in-game link to the Workshop Forum will currently send you to the English, Chinese, or Korean forum, depending on your region. This will be fixed in an upcoming release. Workshop isn’t completely translated into Japanese. We’re working on finishing up the translations. We’ll add these translations in an upcoming release.
    • By Starym
      The 2019 Anniversary event has arrived! We have all the brawls returning, a whole lot of old and new skins and dances, and a whole lot more. First off there's this great intro video featuring a lot of stats from last year:
       
      Anniversary (source)
      Earn a Legendary Anniversary Loot Box Just for Logging In!
      To celebrate Overwatch’s third anniversary, we’re adding a cavalcade of new skins, highlight intros, emotes, and sprays, plus making all seasonal brawls and items from past years available once again! That’s not all: log in between May 21 and June 10 to earn a Legendary Anniversary Loot Box containing at least one legendary item. Don’t miss Overwatch’s biggest anniversary celebration yet!
      THE BRAWLS ARE BACK
      PLAY YOUR FAVORITES OUT OF SEASON!
      A different seasonal brawl will be featured in the Arcade each day (full schedule here).
      Summer Games
      Halloween Terror
      Winter Wonderland
      Lunar New Year
      Overwatch Archives
       
      And here come the new skins for this year, featuring possibly the best skin of all time, the new Winston Gargoyle:
        
        
        
        
        

×
×
  • Create New...