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
      Today's PTR brings a lot of Hero tweaks and will be a pretty large download when it goes live, as it's a remaster. We're getting changes to D.Va, Orisa, Roadhog, Sigma, Winston, Baptiste, Lucio, Mercy, Moira, Doomfist, Sombra, Symmetra and Tracer, of varying significance.
      PTR Patch September 24 (source)
      ANNOUNCEMENT
      Patch 1.41 is a remaster and will require a relatively large download for all platforms. HERO UPDATES
      D.Va
      Defense Matrix
      Regeneration rate increased from 12.5% to 16% per second Delay before regeneration begins lowered from 1 second to 0.75 seconds Orisa
      Protective Barrier
      Cooldown increased from 9 to 10 seconds Roadhog
      Scrap Gun
      Ammunition increased from 5 to 6. Sigma
      Kinetic Grasp
      No longer blocks Chain Hook and Whip Shot Gravitic Flux
      High gravity effect duration reduced from 1.2 to 0.9 seconds Experimental Barrier
      Regeneration rate reduced from 175 to 150 per second Now has a 1 second cooldown after recalling the barrier Initial 0.2 second cast time removed Winston
      Barrier Projector
      Duration increased from 6 to 9 seconds Health increased from 600 to 700 Baptiste
      Immortality Field
      Health decreased from 250 to 200 Lucio
      Crossfade
      Speed boost’s effect increased from 20% to 25% Amp It Up
      Speed boost’s amplification increased from 50% to 60% Wall Ride
      Speed buff reduced from 40% to 30% Mercy
      Valkyrie
      The extra beams created by Valkyrie now ignore enemy barriers Moira
      Biotic Grasp
      Self-healing reduced from 30 to 20 health per second Doomfist
      Rocket Punch
      Time to reach max charge increased from 1 to 1.4 seconds The Best Defense…
      Shield health gained per hit reduced from 35 to 30 Sombra
      Translocator
      Cooldown increased from 4 to 6 seconds Cooldown now begins immediately upon deploying the beacon or if it is killed by an enemy Symmetra
      Photon Barrier
      Duration reduced from 15 to 12 seconds Health reduced from 5000 to 4000 Sentry Turret
      Damage per second reduced from 50 to 40 Photon Projector
      Players impacted by the primary fire beam should now hear a louder impact sound Tracer
      Pulse Pistols
      Damage falloff now starts at 13 meters, up from 10 meters BUG FIXES
      General
      Fixed a player profile issue preventing hero win percentages from being displayed for competitive arcade mode seasons Heroes
      Brigitte
      Fixed a bug with Brigitte’s Rally checking line of sight from her feet instead of from her head Fixed a bug with Inspire’s position being affected by the player’s aim pitch Doomfist
      Fixed a bug that allowed Doomfist to use Meteor Strike before taking impact damage from Sigma’s Gravitic Flux Sigma
      Fixed a bug that allowed Sigma’s Gravitic Flux to ignore line of sight through some ceilings Sombra
      Fixed a bug with EMP’s position being affected by player’s aim pitch Winston
      Fixed a bug that caused Winston’s Barrier Projector to not consistently play its destroyed visual effects
    • By Starym
      Update: You can now also pre-order the game and get a free golden loot box, with a guaranteed legendary inside, as well as Widownmaker's Noire skin.

      The Nintendo Switch will be receiving its second Blizzard game soon, as Overwatch will be arriving on the console on October 15th! It will come bundled with 15 skins and 3 months of Nintendo Switch Online membership, which is required to play the game.
      October 15th will see the Heroes arrive to Nintendo's console.
    • By Starym
      We have more Sigma tuning in this edition of the PTR, with a whole lot of bug fixes for the new Hero as well as ones for Reinhardt, Sombra and Wrecking Ball.
      PTR July 31 (source)
      HERO UPDATES
      Sigma
      Kinetic Grasp
      Can now be cancelled by Accretion. Experimental Barrier
      Can now be recalled while Kinetic Grasp or Accretion are in use. BUG FIXES
      General
      Placement previews should now be much smoother (Reaper Shadowstep, Mei Ice Wall, etc). Placement previews will now hold their position after clicking, until they’ve been confirmed by the server. Fixed a bug where first person animations sometimes wouldn’t play when abilities were used immediately after being frozen. Fixed a bug where orientation toggles for placements could flicker at higher latencies (Ice Wall, Amplification Matrix, Photon Barrier). Workshop - ‘Set Max Health’ now functions as intended. Heroes
      Reinhardt
      Fixed a bug that caused charge knockback to be applied multiple times. Sigma
      Accretion now correctly deals half damage to self. Accretion projectile no longer gets destroyed when impacting Symmetra turrets. Gravitic Flux can now move Pharah during Rocket Barrage. Fixed a bug where victims of Gravitic Flux could get stuck on slippery rooftops. Fixed a bug where Gravitic Flux would fail to work on Dropship doors. Fixed a bug that allowed Sigma to avoid an enemy’s Gravitic Flux effect by activating his ultimate. Fixed a bug that allowed Sigma to retain some of his movement ability when he was incapacitated (stunned, slept, etc) during his Gravitic Flux. Fixed a bug which caused Gravitic Flux to not be cancelled if you switch to another hero while it is active. Sombra
      Fixed a bug where Sombra couldn’t gain ultimate charge for one second after EMP hack auras end on targets. Wrecking Ball
      Fixed a bug that could cause Wrecking Ball to be temporarily stuck when using Piledriver on a slippery terrain.
    • By Starym
      This particular PTR is getting plenty of updates and fast, as we have a small one today lowering Sigma's Kinetic Grasp cooldown and shield mechanic, nerfing Moira's Fade and fixing some bugs.
      July 25 (source)
      GENERAL UPDATES
      Practice Range
      Practice Range has been re-enabled. HERO UPDATES
      Moira
      Fade
      No longer usable while stunned. Sigma
      Kinetic Grasp
      Cooldown reduced from 15 to 13 seconds Shield per damage conversion increased from 0.33 to 0.40 BUG FIXES
      Heroes
      Ashe
      Fixed a bug where jumping while scoped shooting could cause the gun to clip into the camera slightly. Wrecking Ball
      Fixed a bug where Wrecking Ball could get stuck in his slam animation if landing on very flat slippery surfaces.
    • By Starym
      We have two back-to-back PTR patches today, the first one featuring Hero 31 arriving for testing, endorsements coming to many alternative modes, Role Queue improvements and some more Workshop additions. The second patch brought several Hero changes, from D.Va's pilot ult cost reduction, to Symmetra's Teleporter cooldown decrease and more!
      PTR July 23 (source)
      PATCH HIGHLIGHTS
      New Hero: Sigma
      Sigma is an eccentric astrophysicist and volatile tank who gained the power to control gravity in an orbital experiment gone wrong. Manipulated by Talon and deployed as a living weapon, Sigma’s presence on the battlefield cannot be ignored. Sigma launches two Hyperspheres (gravitic charges), which bounce off walls and implode after a short duration, damaging enemies within a sizable radius. Using Experimental Barrier, he propels a floating barrier to a location of his choosing and he can dismiss the barrier at any time. With Kinetic Grasp Sigma freezes incoming projectiles in midair, converting them into shields. Accretion allows Sigma to gather a mass of debris and flings it at an enemy to knock them down. Unleashing his full powers with Gravitic Flux, Sigma takes flight, lifts enemies in a targeted area, and launches them into the sky before slamming them back down. Learn more about Sigma on his hero page 2.
      GENERAL UPDATES
      Role Queue
      Updated the end of match screen so that players are sorted by role. Fixed a bug that made it difficult to see which Role Card was in focus when using a controller. Quick Play (with Role Queue Enabled) Feature Update: Endorsements
      Players can now endorse each other in the following game modes: Mystery Heroes No Limits Deathmatch Total Mayhem Low Grav All the PVE Event game modes (Uprising, Retribution, Storm Rising) Game Mode
      Mystery Heroes - On Control maps, Heroes are now reset between rounds. Workshop
      New Events:
      Player Dealt Healing Player Received Healing Player Joined Match Player Left Match New Actions:
      Start Transforming Throttle Stop Transforming Throttle New Values:
      Healer Healee Event Healing Host Player Developer Comment: A commonly requested feature for the Workshop is the ability to track healing, so we’ve added two new Event types and three new Values to make this possible. We’ve also added Events to make it easier to detect players joining and leaving matches. To support the creation of admin-style privileges for custom games, the owner of the game can now be detected using Host Player. Finally, we’ve added the ability to scale, invert, and rotate a player’s input throttle to make controlling characters in third person easier.
      BUG FIXES
      General
      Custom Game: The Presets UI in Custom Game is now displayed in the proper order. Heroes
      Brigitte
      Fix for Brigitte heal throws that were too loud. Zenyatta
      Fixed a delay in Zenyatta’s first person quick melee animation when interrupting primary fire. Orisa
      Fixed a bug that caused some VFX to stop playing upon successive viewings of Orisa’s “Oh!” highlight intro in Hero Gallery. Genji
      Fixed a bug where Genji could fail to deal damage if he rapidly used Swift Strike on a single target (PTR bug only). Sombra
      Fixed an animation issue with EMP (PTR bug only).
       
      PTR July 24th (source)
      GENERAL UPDATES
      Practice Range
      Practice Range has been temporarily disabled on PTR-only. For players looking to try out Sigma’s abilities in a solo setting, private Custom Games can still be made in the Game Browser. Role Queue
      Fixed a bug that caused the Ready button to be displayed when no roles had been selected, when using a controller. Fixed a bug that could cause players to be on multiple regional leaderboards at the same time. Fixed a bug that could cause players to appear on the Top 500 All leaderboard when 1 or more roles are still in placement matches. Fixed a bug that caused players who allow the "Waiting on you to select role" timer to expire, to get into an unusable state if they were grouped in LFG. Fixed a bug that prevented players from interacting with the role selection invite using a gamepad if inside the Play menu. Fixed a bug where queue time wasn’t displayed properly while in skirmish. HERO UPDATES
      D.Va
      D.Va Pilot ultimate cost reduced by 12% Sombra
      EMP
      (Reworded from previous patch notes for clarity) Activation time increased from 0.2 to 0.35 seconds. Symmetra
      Teleporter
      Cooldown decreased from 15 seconds to 12 seconds Teleport re-use time decreased from 1.5 seconds to 1 second Wrecking Ball
      Minefield
      Decreased projectile speed from 13 to 12. BUG FIXES
      General
      Fixed a bug that prevented Competitive groups being found in LFG Fix rare instances of ‘avoid as teammate’ not working Heroes
      Sigma
      Fixed a bug where Gravitic Flux would do ground impact damage to training bots before they hit the ground. Fixed a bug that allowed Sigma to fire more than two Hyperspheres at once. Fixed a bug that cause Sigma’s “Hello” voice line to not play.  
×
×
  • Create New...