• 0

    posted a message on [Data] Working with Beams (Beginner Difficulty)

    It's most likely due to the other tutorial I previously made of a similar nature. Those who were first looking already saw that. No biggie, I just know some asked for a more accessible version.

    Glad I could help! :D

    Posted in: Tutorials
  • 0

    posted a message on [Data] Working with Beams (Beginner Difficulty)

    ((This post is reserved for modifications and other such purposes))

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    There are a few reasons why your beams might not be showing up even if you have the same actions and events (though I recommend double checking).

    1) If you didn't set the "Launch Locations" on the Damage effects correct, you'll end up with the beams being told to start from the point where the damage launches (it's target) and end where it lands (its target as well). This makes your beams become dots which usually don't show up. In some cases you might see little flashes of light which hints that this is the case.

    2) If you failed to put a search on the first buff or the apply behavior in the first set, the entire chain will be unlinked from the attack. This is a very easy mistake to make given how many effects you're trying to link together. It's always a good idea to walk through the chain from beginning to end by physically clicking on each field and seeing what it points to (target) and where it points from (launch).

    3) Another common mistake is to use the same Animation Properties as I did with different beams. For example, some beams only have Birth and Death or even just Stand. In this case if I say to use Death but it doesn't have that animation, it won't show up. This just gets worse if you used the same beam for multiple bounces. Check your animations in the previewer to see if they actually have the animation variation you're telling the actor events to create.

    If none of this solves your problem, shoot me a PM with your map uploaded some where and I'll take a peak :)

    Also, for the AoE, that has to do with how I've setup the beam chain. Try taking 1-2 zealots to attack the tower with. You'll notice no AoE goes off. You might also notice that sometimes an attack won't land when a unit dies mid-chain. This has to do with how the chain is currently configured. If you look through the effects the majority of them have a launch location of "Source Unit." That means that if the source unit dies, no more bouncing. In my experience this isn't always the case as you've obviously killing the zerglings in one hit, but it still kills 3 at a time (3/4 bounces). Thus far I haven't figured out an exact way to tell what will and won't land, down the road I might do so and update this tutorial. I DO know, however, that if you lower the damage so that it doesn't kill the Zerglings in 1 hit, all the attacks land. You can test this by making each bounce damage 1 and the splash damage 100. All the hits will land and the splash will go off :)

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    @ralme360 that's the NullifierBeam.m3 correct? If so, I'm actually using it in my tutorial. That actor event is actually fine. What's likely the problem is the Animation Play for both models:

    • Actor Creation
      • AnimPlay (Name: AoE, Animation Properties: Death (this model doesn't have a "Stand" animation), Flags: - , Blend In: -1.0, Blend Out: -1.0, Time Variant: -1.0, Time Type: Automatic)

    I assume you used this, but have a different explosion. With automatic it bases it's animation time on the models actual scene length (time from start to finish). So if it's only got a length of 0.5 it's going to explode and disappear very quickly. You can fix this by changing the Time Type: to Duration and setting the exact time you want with Time Variant: If you don't want an exact time use Time Scale and it will apply a multiplier to the scene length. This is more touchy though as you need to know the length ahead of time. Duration gives you exact control.

    For the beam it's likely that you have Animation Properties: set to an animation the model doesn't have. Check your animation in the previewer. In bottom it should show a red bar and then a smaller bar with a word on it. That's the animation it's using in the previewer. Right click on it and go to "change animation" to see what other variations it has. When you've decided which one you want, that's the name you put into the Animation Properties: If it has a number (as in the case of VoidRayMissile) you would do Attack (1st drop down menu), Variation N (2nd drop down menu)

    Let me know if this solves the problem :D

    Posted in: Tutorials
  • 0

    posted a message on [Data] Working with Beams (Beginner Difficulty)

    First things first, I expect that if you're reading this, you're clueless when it comes to beams. Why? Because you saw beginner and came to this tutorial. That being said, my job is to help you no longer be clueless and show off your awesome beam weapons and abilities in your future maps :D This will also help to prepare you for my more advanced beam tutorial.

    The Basics

    Beams are nothing more than models. They can't do anything on their own and unlike missiles they aren't a physical unit that travels from point A to B. In order to get a Beam to do anything you must rely on actors and effects. Thus every proper Beam is made up of the following parts:

    • Models
    • Actors (Control everything from size to location to whether or not your beam will crash the game)
    • Effects (This is how you shoot at units and do damage)

    We will be spending all of our time in these 3 tabs. If you have to go to another tab for any reason other than to make a turret, weapon or unit, you're in the wrong place. This is going to be all about the simple mechanics behind how beams work.



    Goals

    No introductory learning tool is complete without laying out goals. So we're going to make 3 of them:

    • A Unit that fires a beam weapon
    • A Vehicle that fires a beam that shoots 2 additional beams in a burst
    • A Non-Combat Structure that fires a beam that bounces twice

    Let's get started!



    Testing My Map

    Before you create the beams it's important that you see what it is they do in game. Look at the terrain before you Test Document (Ctrl + F9). In the middle are the two units that shoot beams and in the NE corner is the tower that shoots lightning. All the other zerg units are stock. Now test the document. It's going to say it's tied (I ignore triggers in example maps) so click "Return to game."

    Start by attack-moving all the Lancers (Marines) into the SW corner. Pew pew pew! Lots of dead zerg by colossi beams.

    Now attack-move all the Ionic Splitters (Hellions) into the SE corner. Notice that it shoots a green void ray beam (instead of blue) that forks. This is done using Actor Events. If you pay close attention, you'll also notice that the forks will almost always hit the Ultralisks. This is done using Target Sorts

    Now take both groups and attack-move into the NW corner. Again, notice that Ionic Splits will hit their target and then fork to the Ultralisks until they are almost dead.

    Lastly, take everything and attack-move into the NE corner. Uh oh, massive lightning tower! If you've played any TD maps prior to this, you might notice that the lightning beams aren't coming from the very top. Instead they're coming from the rod slightly below that. It looks more realistic. This is done using Site Operations. Also, the beams are brighter/thicker than they normally would be (you might not notice this if you haven't seen them as they normally are). That's more Actor Events.

    Everything you see was done with Models, Actors and Events.



    The Lancer

    Make sure your Data Editor (F7) is open and ready to go. You can either open the Previewer (Ctrl + Shift + V) to select the beams you want or you can use the sames ones I did. If you choose your own beams it will be up to you to swap them in where I place my beams and match their animations when we go into Actor Events. I will give reminders along the way to help those who want to do this.

    Effects Tab

    Open with Data Type menu if needed

    We've only got one effect to make: damage. Click on the effects tab. The effects will show up on the upper left box, it's links (objects that are tied to it) will show up in the bottom left box and the entire right hand area is the data editing field. Make sure all 5 buttons (ignore the 6th on the other side of the divider) left of the search bar are pressed. This will allow you to follow my "short hand."

    • Create a new effect (upper left box) named Lancer (Damage) with Effect Type: Damage
      • set (right side) AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount to 20
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee

    AI Notify Flags, Flags and Response Flags are VERY important to apply to every damage effect you make. If you don't, the AI won't know what to do when attacked by them which will prevent units you attack from returning fire if your units aren't within their proximity auto-acquire range. In my more advanced tutorials I won't include these as I expect experienced mappers to know this and apply it on their own as needed. Additionally it can help to NOT have units return fire if you need them to hold still long enough to see what happens visually. Keep this in mind when testing abilities. The rest of this tutorial will have these included to help you get acquainted with these fields, however.

    Models Tab

    Open with Data Type menu if needed

    • Create a new model named Lancer Beam with Model Type: Generic
      • set Model to ColossusBeam.m3

    Actors Tab

    Open with Data Type menu if needed

    • Create a new actor named Lancer Beam with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Lancer Beam
      • set Art - Scale to (0.5, 0.5, 0.5)
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam1; Animation Properties: Death; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 1.0; Time Type: Duration)
        • Animation Done
          • AnimName: Beam1 (Custom)
          • Destroy

    If you are using a different model, make sure you set Animation Properties to whichever animation actually shows up such as Birth or Stand. Some models don't have more than one animation. For example most impact models just have a Death animation.

    • Create a new actor named Lancer Beam Attack with Actor Type: Action and Based On: GenericAttack
      • set Art - Beam to Lancer Beam
      • open Combat - Launch Assets + and change sound to Colossus_AttackLaunch
      • open Event - Events + and create the following event:
        • Effect - Lancer (Damage) - Start
          • Create
      • open Target - Impact Map + and select the 1st row and set sound to Colossus_AttackImpact

    Now your beam will show up every attack and make the proper sounds.

    Units Tab

    Open with Data Type menu if needed

    Duplicate Marine and check the following boxes:

    Marine

    Start by renaming the Marine model Lancer. Go on to rename the actors Lancer and Lancer_Death and the weapon Plasma Lance ("Lancer -" in the Editor Prefix field). Now delete any abilities, command card buttons or behaviors you don't want and decide on your structure stats (HP, armor etc). Finish by renaming the unit Lancer.

    Go to the weapon
    • set Effect - Effect to Lancer (Damage)
    • set Stats - Period to 1.5
    • set both Random Delay Maximum and Minimum to 0
    • set Stats - Range to 7
    • set UI - Damage Display Effect to Lancer (Damage)
    • set UI - Icon to btn-upgrade-protoss-extended-thermallance.dds
    • set Weapon - Target Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible]

    Now you have a beam weapon :D



    The Ionic Splitter

    Effects Tab

    • Create a new effect named Splitter (Damage2) with Effect Type: Damage
      • set AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount to 30
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee
    • Create a new effect named Splitter (Search) with Effect Type: Search Area
      • set Search - Areas + to (Arc: 360; Effect: Splitter (Damage2); Maximum Count:2 and Radius: 4)
      • set Search - Exclude + to Target
      • set Search - Search Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible] and uncheck ally/player
      • set Target - Target Sorts + to TSLifeLargestFirst(Unknown)
    • Return to Splitter (Damage2)
      • set Target - Launch Location + to Splitter (Search) at Target Unit/Point

    This will cause the damage to originate from the search allowing your beams to connect from this impact as opposed to your unit. This is VERY important if you want your beams to chain in any capacity.

    • Create a new effect named Splitter (Damage) with Effect Type: Damage
      • set AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount to 15
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee
    • Create a new effect named Splitter (Set) with Effect Type: Set
      • set Effect - Effects to include Splitter (Search) and Splitter (Damage)
      • set Effect - Maximum Count to -1

    This should allow you to shoot a target and have two more beams shoot from that target to units close to it. If you find that not all of your effects are landing, there is a chance that Effect - Maximum Count<</color>> on the Effect - Set<</color>> is set to 1 instead of -1. This field sets the maximum number of effects the set can create at once. Thus -1 is infinity and 1 is only a single effect.

    If you want more beams, set a higher Maximum Count on the Effect - Search Area. The Target Sort will also cause the forking beams to hit beefier targets first. You could even add bonus damage against armored/massive targets if you want the bounces to be extra effective against larger targets.

    Models Tab

    • Create a new model named Splitter Beam with Model Type: Generic
      • set Model to WarpRayMissile.m3
    • Create a new model named Splitter Beam 2 with Model Type: Generic
      • set Model to SoulHunterBeam3.m3

    Actors Tab

    • Create a new actor named Splitter Beam with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Splitter Beam
      • set Art - Scale to (0.75, 0.75, 0.75)
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam1; Animation Properties: Attack, Variation 02; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 0.75; Time Type: Duration)
        • Actor Creation
          • Set Tint Color: (255 Red, 255 Green, 128 Blue)
        • Animation Done
          • AnimName: Beam1 (Custom)
          • Destroy

    This will make your void beams a similar shade of green as their forking beams.

    • Create a new actor named Splitter Beam Attack Launch with Actor Type: Action and Based One: GenericAttack
      • set Art - Beam to Splitter Beam
      • open Combat - Launch Assets + and change sound to VoidRay_WeaponStart
      • open Event - Events + and create the following event:
        • Effect - Splitter (Damage) - Start
          • Create

    Notice that I didn't put an impact sound. This is because we're going to attack it to the forking beams instead. This is because you don't want the impact sound to play if the forking beams aren't actually hitting anything. If you want a separate noise for the void beam itself, you can, however, add that. I left it out to avoid sound clutter.

    • Create a new actor named Splitter Beam 2 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Splitter Beam 2
      • set Art - Scale to (0.5, 0.5, 0.5)
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam2; Animation Properties: Birth; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 0.8; Time Type: Duration)
        • Animation Done
          • AnimName: Beam2 (Custom)
          • Destroy
    • Create a new actor named Splitter Beam 2 Attack with Actor Type: Action and Based One: GenericAttack
      • set Art - Beam to Splitter Beam 2
      • open Event - Events + and create the following event:
        • Effect - Splitter (Damage2) - Start
          • Create
      • open Target - Impact Map + and select the 1st row and set sound to Stalker_AttackImpact

    Units Tab

    Duplicate Hellion and check the following boxes:

    Hellion

    Start by renaming the Hellion model Ionic Splitter. Go on to rename the actor Ionic Spliter, the turret Ionic Splitter and the weapon Ion Cannon ("Ionic Splitter -" in the Editor Prefix field). Now delete any abilities, command card buttons or behaviors you don't want and decide on your structure stats (HP, armor etc). Finish by renaming the unit Ionic Splitter.

    Go to the weapon
    • set Effect - Effect to Splitter (Set)
    • set Stats - Period to 2.0
    • set bothRandom Delay Maximum and Minimum to 0
    • set Stats - Range to 8
    • set UI - Damage Display Effect to Splitter (Damage)
    • set UI - Icon to btn-techupgrade-terran-particlecannon.dds
    • set Weapon - Target Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible]

    Actors Tab

    Because we have a turret, we need to enable it before it will be able to fire properly.

    • Create a new actor named Ionic Splitter Turret with Actor Type: Turret
      • open Event - Events + and create the following event:
        • Turret Enable - Ionic Splitter
          • Create

    Now you have a forking beam weapon :D



    The Lightning Tower

    Effects Tab

    • Create a new effect named Beam Bounce 3 (Damage) with Effect Type: Damage
      • set AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount to 30
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee
    • Create a new effect named Beam Bounce 2 (Search) with Effect Type: Search Area
      • set Search - Areas + to (Arc: 360; Effect: Beam Bounce 3 (Damage); Maximum Count:1 and Radius: 4)
      • set Search - Exclude + to Target
      • set Search - Search Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible] and uncheck ally/player
      • set Target - Target Sorts + to TSLifeLargestFirst(Unknown)
    • Return to Beam Bounce 3 (Damage)
      • set Target - Launch Location + to Beam Bounce 2 (Search) at Target Unit/Point
    • Create a new effect named Beam Bounce 2 (Damage) with Effect Type: Damage
      • set AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount to 45
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee
    • Create a new effect named Beam Bounce 2 (Set) with Effect Type: Set
      • set Effect - Effects to include Beam Bounce 2 (Search) and Beam Bounce 2 (Damage)
      • set Effect - Maximum Count to -1
    • Create a new effect named Beam Bounce 1 (Search) with *Effect Type: Search Area**
      • set Search - Areas + to (Arc: 360; Effect: Bounce Beam 2 (Set); Maximum Count:1 and Radius: 4)
      • set Search - Exclude + to Target
      • set Search - Search Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible] and uncheck ally/player
      • set Target - Target Sorts + to TSLifeLargestFirst(Unknown)
    • Return to Beam Bounce 2 (Damage)
      • set Target - Launch Location + to Beam Bounce 1 (Search) at Target Unit/Point
    • Create a new effect named Beam Bounce 1 (Damage) with Effect Type: Damage
      • set AI - AI Notify Flags to Hurt Enemy
      • set Combat - Amount* to 60
      • set Effect - Flags to Notificatin
      • set Effect - Kind to Ranged
      • set Effect - Response Flags to Acquire, Flee
    • Create a new effect named Beam Bounce 1 (Set) with Effect Type: Set
      • set Effect - Effects to include Beam Bounce 1 (Search) and Beam Bounce 1 (Damage)
      • set Effect - Maximum Count to -1

    It might not make complete sense working backwards, but this is how the series works:


    Weapon Fires > Set 1 [Search 1 + Damage 1] > Search 1 Impact: Set 2 [Search 2 + Damage 2 (Launches from Search 1)] > Search Impact 2: Damage 3 (Launches from Search 2)

    Following this pattern you can make the chain as long as you want :)

    Models Tab

    • Create a new model named Bounce Beam with Model Type: Generic
      • set Model to ArchonBeamSuper.m3

    Actors Tab

    • Create a new actor named SOpLowerBy1p25 with Actor Type: Site Operation (Local Offset)
      • set Actor - Local Offset to (0.0, 0.0, -1.25)

    This actor is what is going to allow us to adjust where the beam chain shoots from on our structure.

    • Create a new actor named Bounce Beam 1 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Bounce Beam
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam1; Animation Properties: Birth; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 2.0; Time Type: Duration)
        • Actor Creation
          • Set Tint Color: (255 Red, 255 Green, 255 Blue); HDR Multiplier: 3
        • Animation Done
          • AnimName: Beam1 (Custom)
          • Destroy
      • set set Hosting - Host Launch Site Ops + to SOpLowerBy1p25
    • Create a new actor named Bounce Beam 1 Attack Launch with Actor Type: Action and Based One: GenericAttack
      • set Art - Beam to Bounce Beam 1
      • open Combat - Launch Assets + and change sound to Archon_AttackLaunch
      • open Event - Events + and create the following event:
        • Effect - Beam Bounce 1 (Damage) - Start
          • Create
      • open Target - Impact Map + and select the 1st row and set sound to Stalker_AttackImpact
    • Create a new actor named Bounce Beam 2 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Bounce Beam
      • set Art - Scale to (0.75, 0.75, 0.75)
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam2; Animation Properties: Birth; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 1.95; Time Type: Duration)
        • Actor Creation
          • Set Tint Color: (255 Red, 255 Green, 255 Blue); HDR Multiplier: 3
        • Animation Done
          • AnimName: Beam2 (Custom)
          • Destroy
    • Create a new actor named Bounce Beam 2 Attack with Actor Type: Action and Based One: GenericAttack
      • set Art - Beam to Bounce Beam 2
      • open Event - Events + and create the following event:
        • Effect - Beam Bounce 2 (Damage) - Start
          • Create
    • Create a new actor named Bounce Beam 3 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • set Model to Bounce Beam
      • set Art - Scale to (0.5, 0.5, 0.5)
      • open Event - Events + and create the following events:
        • Actor Creation
          • Animation Play: (Name: Beam3; Animation Properties: Birth; Flags: [empty]; Blend In: -1.0; Blend Out: -1.0; Time Variant 1.6; Time Type: Duration)
        • Actor Creation
          • Set Tint Color: (255 Red, 255 Green, 255 Blue); HDR Multiplier: 3
        • Animation Done
          • AnimName: Beam3 (Custom)
          • Destroy
    • Create a new actor named Bounce Beam 3 Attack with Actor Type: Action and Based One: GenericAttack
      • set Art - Beam to Bounce Beam 3
      • open Event - Events + and create the following event:
        • Effect - Beam Bounce 3 (Damage) - Start
          • Create

    Units Tab

    Duplicate Sensor Tower and check the following boxes:

    Sensor Tower

    Start by renaming the Sensor Tower model Lightning Tower. Go on to rename the actor Lightning Tower. This structure doesn't have a weapon so you'll have to add one. Hop over to the Weapons Tab and make a new weapon named Energy Coil using the default settings. Add "Lightning Tower -" in the Editor - Editor Prefix field. Now return to the unit to delete any abilities, command card buttons or behaviors you don't want and decide on your structure stats (HP, armor etc). Finish by renaming the unit Lightning Tower and adding a new weapon to Combat - Weapons + using the Ionic Splitter turret and your newly created weapon.

    Go to the weapon
    • set Effect - Effect to Beam Bounce 1 (Set)
    • set Stats - Period to 3.0
    • set bothRandom Delay Maximum and Minimum to 0
    • set Stats - Range to 10
    • set UI - Damage Display Effect to Beam Bounce 1 (Damage)
    • set UI - Icon to btn-ability-terran-protoss-psistorm.dds
    • set Weapon - Target Filters to exclude[Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] and require [Visible]

    Now you have a beam chain weapon :D



    If you have any questions or concerns, feel free to post them here. Especially if you see typos or possible errors. I'll do my best to keep to correct such issues ;)

    If you'd like to learn a more advanced method of beam chaining, see my Dynamic Beam Chains tutorial.

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    Thank you kindly :)

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    In the tutorial, it works exactly as you first thought it did. The Target Sorts being used require unique targets so my sentence is accurate. However, when you brought up Markers (another great way to make chains), I was pointing out that I used Target Sorts instead of Markers because it is the most dynamic way create an adaptable beam chain.

    I included behaviors, validators and target sorts so that anyone who uses my tutorial can make their beam chain do just about anything they can imagine. It's far more complex, yes, but that was done on purpose as this tutorial is aimed at experienced users who are struggling to get a beam chain that does what they want.

    Technically, all you need to make a beam chain is:

    Weapon Fire > Set > [Search + Damage] > Set > [Search + Damage] > ....

    With your damage effects having Location+ linked to the previous search. Then you can quickly enable Marker IDs and add the "No Markers" Validator.

    Is that more clear?

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    Typo fixed :D

    And Riley, you understood what I meant in that quote correctly. The Target Sorts are to prevent any unit from being hit multiple times during a single chain of attacks. My understanding is that with Markers you either have them "On" and you're not able to hit any target more than once or they are "Off" and it's a FFA in terms of what gets hit. With Target Sorts you don't have the either or. You can have it bounce to unique targets, bounce to the targets with the most/least % health etc.

    In other words if there are only 3 targets but you bounce 5 times, with a Target Sort to "most health" it'll go:

    Target 1 > Target 2 > Target 3 > Target (1/2/3) depending on health > Target (1/2/3) depending on health

    With Markers it would only strike 3 times and the other 2 hits wouldn't land. If that is something you can do with Markers as well then I'll take it all back and would love to know how :D

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    So you're able to achieve the following with your Marker IDs?

    Weapon Fires > Hits Target 1 > Hits Target 2 > Hits Target 1 again > Hits Target 3

    Posted in: Tutorials
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    I used Target Sort because it's more dynamic despite being slightly more involved to make. As mentioned in the tutorial, you can add things like "Lowest life %" or "most HP first" in order to make chain lightning overlap if you have multiple towers. With Marker ID, you can't have two lightning chains hit the same unit . While my setup can't either, I can easily fix that by simply swapping from one Target Sort to the other. So if you are making a TD for example, Target Sorts could be more useful than Marker ID. If you're making an RPG or some other "single unit" chain implementation, then Marker ID would definitely be easier to use :D

    Posted in: Tutorials
  • 0

    posted a message on Behaviors Bug

    As far as beam chains go, if you use behavior buffs to set off searches, the last buff in your chain must apply it's effect at the end of its period or it won't register at all.

    A simple diagram:

    Set1 > [Buff1 (starts search1) + Dmg1] > Search1 > Set2 > [Buff2 (starts search2) + Dmg2] > Search2 ...

    Buff1 can apply it's effect through "Effect - Initial," but Buff 2 MUST apply it's effect through "Effect - Periodic." Thus in order to prevent a delay, you set the period of the last Buff to something very small as to "appear" instantaneous.



    If someone discovers otherwise, please share :) Also, I have yet to test if this is the case with other applications as well.

    Posted in: Galaxy Editor Bugs and Feedback
  • 0

    posted a message on [Data] Dynamic Beam Chains (Intermediate Difficulty)

    If you are looking for an beginner level tutorial, start with my Beams Tutorial

    What separates this tutorial from other bounce attack tutorials? We WON'T be using missiles. Period. I've read the tutorials, seen the videos and frankly I'm not impressed with missile based chain lightning. It's a messy and restrictive way of connecting the dots. Before we begin, take a look at this picture:

    Beam Chain

    This is a custom Structure with a custom model that shoots a beam bouncing 3 times and finishing with an AoE splash. This means we'll need to make the following:

    1 Unit
    2 Unit Actors
    1 Unit Model
    1 Turret
    1 Turret Actor
    1 Weapon
    3 Behavior Buffs
    3 Validators
    3 Target Sorts
    15 Effects
    2 Beam Actors
    2 Beam Attack Actors
    2 Beam Models
    1 AoE Actor
    1 AoE Sound Actor
    1 AoE Model

    It seems like a lot, but that's because we're adding extra parts. We'll be using the Previewer (Ctrl + Shift + V) to select models and effect animations that aren't currently in use, so let's start there:

    We want to make our Beam-chain as cool as possible, so let's start by going to Assets > Doodads. Scroll down to Temple Column > TempleColumn_17.m3. Double click it and check out this awesome doodad that will soon be our tower of death. It is important to note that it doesn't have any attachments, so we will be restricted on where the lightning originates: the ground. However, we can create a workaround by applying a Site Operator to the beam's actor causing it to shoot from a height above the ground. If this bothers you, choose a structure model with attachment points. Now that we have our desired model, let's pick out some effects. I decided to use MothershipPhotonBeam.m3 as the first attack, NullifierBeam.m3 as the 3 bounce attacks and DetonateImpact.m3 as the final AoE. Keep track of the models you chose unless you're going to follow along with me. Close the Previewer and open the Data Editor (F7). From here on out I'm going to short hand as much as possible.

    I could fill several pages with heavy details, but for the sake of brevity I'm going to expect you to have intermediate knowledge of the Data Editor. If you DON'T, you should probably start with other tutorials before reading this.



    Models tab

    • New model named Beam Tower
      • set model to TempleColumn_17.m3
    • New model named Beam 1
      • set model to MothershipPhotonBeam.m3
    • New model named Beam 2
      • set model to NullifierBeam.m3
    • New model named AoE Splash
      • set model to DetonateImpact.m3

    You may be tempted to mess with sizes and so for, but don't. This is your generic model. We will use actors to change anything and everything we want. This prevents redundancies.



    Effects tab

    • New effect named Beam Bounce 4 (Splash Damage) with Effect Type: Damage
      • set Amount: 40
      • set Death: Blast
      • set Kind: Splash
      • set Area +: Arc: 360, Fraction: 1, Maximum Count: -1 and Radius: 1.5
      • set Exclude +: Target
      • set Search Filters: [Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] exclude and [Visible] required uncheck ally and player
      • set Launch Location +: Target Unit
    • New effect named Beam Bounce 1 (Damage) with Effect Type: Damage
      • set Amount: 60 > set Death: Electrocute
      • set Kind: Ranged
    • Duplicate above effect and name Beam Bounce 2 (Damage) with Amount 50
    • Duplicate above effect and name Beam Bounce 3 (Damage) with Amount 40
    • Duplicate above effect and name Beam Bounce 4 (Damage) with Amount 30
    • New effect named Beam Bounce 1 (Search) with Effect Type: Search Area
    • Duplicate above effect and name Beam Bounce 2 (Search)
    • Duplicate above effect and name Beam Bounce 3 (Search)

    We'll come back to these effects after creating other parts of the chain



    Behaviors tab

    • New behavior named Bounce 1 Buff with Behavior Type: Buff
      • set Effect - Initial: Beam Bounce 1 (Search)
      • set Duration: 0.5
      • set Flags: Hidden
    • Duplicate above behavior and name Bounce 2 Buff with Effect - Initial: Beam Bounce 2 (Search)
    • Duplicate above behavior and name Bounce 3 Buff with Effect - Periodic: Beam Bounce 3 (Search) and Stats - Duration: 0.1

    For whatever reason, the last buff in your chain must apply it's effect at the end of its period or it won't register at all. It doesn't change a whole lot mechanic wise other than that you have to remember this or you'll find yourself 1 beam short. In our case it would mean no AoE splash either and we certain don't want to lose our big explosion!

    Now you might be confused as to why we're making behaviors and why our behaviors are search for targets. The simple explanation is that applying buffs to a target allows you to change the buffed unit to the origin of any effects it activates. This is how you "chain" attacks. Without buffs, all of your beams would shoot from your unit/structure despite the damage being chained. You could argue this is exactly the same as missiles, but there is a one major difference: buffs allow you to directly apply behaviors while continuing the chain. With missiles you would need behaviors AND missiles in order to achieve the same thing. The best example would be an implementation of WC3's healing wave. Using buffs, your effect sequence would be:

    Apply Behavior > Buff > Search > Apply Behavior > Buff > Search > etc

    The best part is you can even use Search Target Sorts to pick units with the lowest health % first. Your buff could even add a HoT to boot! Now imagine using missiles to achieve the same thing. . . . nightmare!



    Validators tab

    • New validator named Beam Buff 1 with Validator Type: Unit Compare Behavior Count
      • set Behavior: Bounce 1 Buff
      • set Compare: Not Equal To
      • set Value: 1
    • Duplicate above validator and name Beam Buff 2 with Behavior: Bounce 2 Buff*
    • Duplicate above validator and name Beam Buff 3 with Behavior: Bounce 3 Buff*

    These will prevent your buffs from stacking.



    Effects tab

    • New effect named Beam Bounce 1 (Buff) with Effect Type: Apply Behavior
      • set Behavior: Bounce 1 Buff
      • set Validators: Beam Buff 1
    • Duplicate above effect and name Beam Bounce 2 (Buff) with Behavior: Bounce 2 Buff and Validators: Beam Buff 2
    • Duplicate above effect and name Beam Bounce 3 (Buff) with Behavior: Bounce 3 Buff and Validators: Beam Buff 3

    Now let's link everything together

    • New effect named Beam Bounce 1 (Set) with Effect Type: Set
      • set Effects: Beam Bounce 1 (Buff) and Beam Bounce 1 (Damage)
      • set Maximum Count: -1
    • Duplicate above effect and name Beam Bounce 2 (Set) with Effects: Beam Bounce 2 (Buff) and Beam Bounce 2 (Damage)
    • Duplicate above effect and name Beam Bounce 3 (Set) with Effects: Beam Bounce 3 (Buff) and Beam Bounce 3 (Damage)
    • Duplicate above effect and name Beam Bounce 4 (Set) with Effects: Beam Bounce 4 (Damage) and Beam Bounce 4 (Splash Damage)


    Target Sorts tab

    • New target sort named NotHitByBeam1 with Target Sort Type: Behavior Count
      • set Behavior: Bounce 1 Buff
      • set Unit+: Target
      • set Value: 1
    • Duplicate above target sort and name NotHitByBeam2 with Behavior: Bounce 2 Buff
    • Duplicate above target sort and name NotHitByBeam3 with Behavior: Bounce 3 Buff

    These will prevent your search effects from picking units hit earlier in the chain.



    Effects tab

    • Return to Beam Bounce 1 (Search)
      • set Area +: Arc: 360, Effect: Beam Bounce 2 (Set), Maximum Count: 1 and Radius: 6
      • set Exclude +: Target
      • set Search Filters: [Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] exclude and [Visible] required uncheck ally and player
      • set Target Sorts +: NotHitByBeam1
    • Return to Beam Bounce 2 (Search)
      • set Area +: Arc: 360, Effect: Beam Bounce 3 (Set), Maximum Count: 1 and Radius: 6
      • set Exclude +: Target
      • set Search Filters: [Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] exclude and [Visible] required uncheck ally and player
      • set Target Sorts +: NotHitByBeam1 and NotHitByBeam2
    • Return to Beam Bounce 3 (Search)
      • set Area +: Arc: 360, Effect: Beam Bounce 4 (Set), Maximum Count: 1 and Radius: 6
      • set Exclude +: Target
      • set Search Filters: [Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] exclude and [Visible] required uncheck ally and player
      • set Target Sorts +: NotHitByBeam1, NotHitByBeam2 and NotHitByBeam3

    Now your entire effects chain should be linked together as follows:

    Set 1 > [Buff 1 + Damage 1] > Search 1 > Set 2 > [Buff 2 + Damage 2] > Search 2 > Set 3 > [Buff 3 + Damage 3] > Search 3 > Set 4 > [Damage 4 + Splash Damage]



    Units tab

    • Duplicate Photon Cannon and check the following boxes:

    Photon Cannon Duplicate

    Start by swapping the Photon Cannon model under the actor with Beam Tower, the model we created before. Go on to rename the actors Beam Tower and Beam Tower Splat, the turret Beam Tower and the weapon Energy Salvo ("Beam Tower -" in the Editor Prefix field). Now delete any abilities, command card buttons or behaviors you don't want and decide on your structure stats (HP, armor etc).

    Go to the weapon
    • set Effect: Beam Bounce 1 (Set)
    • set Period: 3.0
    • set Range: 8
    • set Random Delay Maximum and Minimum: 0.0
    • set Damage Display Effect: Beam Bounce 1 (Damage)
    • set Target Filters: [Dead/Hidden/Invulnerable/Missile/Resource(both)/Self/Stasis] exclude and [Visible] required

    Now all we have left is our actors. You should notice that all of your effects are now linked to your unit. You can test it and shoot it, but you won't hear anything and you certainly won't see anything other than units taking damage.



    Actors tab

    • Select actor named Beam Tower
      • set Scale to (1.0, 1.0, 1.1)
    • New actor named Beam 1 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • if your model doesn't automatically link, set Model: Beam 1 (Actor)
      • set Scale: 0.75, 0.75, 0.75
      • open Host Launch Site Ops + and enter SOpsHigherBy5 (This causes the beam to shoot from the top instead of the ground)
      • open Events + and create the following events:
        • Actor Creation
          • AnimPlay (Name: Beam1, Animation Properties: Stand, Flags: - , Blend In: -1.0, Blend Out: -1.0, Time Variant: 2.0, Time Type: Duration)
        • Animation Done
          • AnimName: Beam1 (Custom)
          • Destroy
        • Effect - Beam Bounce 1 (Damage) - Start
          • Create

    If you use different beams, make sure they actually have a "Stand" animation to put in "Animation Properties" otherwise they still won't show up. Also, "Time Type:" is how you can control your animation speed. Duration sets the animation to the exact Time Variant while Time Scale applies the Time Variant as a multiplier.

    • New actor named Beam 2 with Actor Type: Beam (Simple) and Based On: BeamSimpleAnimationStyleOneShot (Unknown)
      • if your model doesn't automatically link, set Model: Beam 2 (Actor)
      • set Scale: 0.5, 0.5, 0.5
      • open Events + and create the following events:
        • Actor Creation
          • AnimPlay (Name: Beam2, Animation Properties: Stand, Flags: - , Blend In: -1.0, Blend Out: -1.0, Time Variant: 2.0, Time Type: Duration)
        • Animation Done
          • AnimName: Beam2 (Custom)
          • Destroy
        • Effect - Beam Bounce 2 (Damage) - Start
          • Create
        • Effect - Beam Bounce 3 (Damage) - Start
          • Create
        • Effect - Beam Bounce 4 (Damage) - Start
          • Create
    • New actor named Beam 1 Attack Launch with Actor Type: Action and Based On: GenericAttack
      • set Beam: Beam 1
      • set Launch Attachment Query +: Center (Direct)
      • open Launch Assets + and change sound to Mothership_AttackLaunch
      • open Impact Map + select the topmost row (Beam1AttackImpact (Unknown)) and set sound to Mothership_AttackImpact
      • open Events + and create the following event:
        • Effect - Beam Bounce 1 (Damage) - Start
          • Create

    This actor is what will trigger your sounds and allow your first beam to launch from your structure properly. Keep in mind that a unit will have different attach points so you'll want to pick their weapon for Launch Attachment Query+

    • New actor named Beam 2 Attack with Actor Type: Action and Based On: GenericAttack
      • set Beam: Beam 2
      • set Launch Attachment Query +: Center (Direct)
      • open Events + and create the following events:
        • Effect - Beam Bounce 2 (Damage) - Start
          • Create
        • Effect - Beam Bounce 3 (Damage) - Start
          • Create
        • Effect - Beam Bounce 4 (Damage) - Start
          • Create

    This actor will make sure your bounces connect with the targets and originate from their center so that you don't have strange looking beams.

    • New actor named Beam Tower Turret with Actor Type: Turret
      • open Events + and create the following event:
        • Turret Enable - Beam Tower
          • Create

    This actor will allow your structure to "turn" to attack units. Without this, some structures can't attack at all.

    • New actor named AoE Splash with Actor Type: Model and Based On: ModelAnimationStyleOneShot
      • if your model doesn't automatically link, set Model: AoE Splash
      • open Events + and create the following events:
        • Actor Creation
          • AnimPlay (Name: AoE, Animation Properties: Death (this model doesn't have a "Stand" animation), Flags: - , Blend In: -1.0, Blend Out: -1.0, Time Variant: -1.0, Time Type: Automatic)
        • Effect - Beam Bounce 4 (Splash Damage) - Start
          • At Effect (Term)
          • Create
        • Animation Done
          • AnimName: AoE (Custom)
          • Destroy
    • New actor named AoE Splash Sound with Actor Type: Sound and Based On: SoundOneShot
      • open Events + and create the following events:
        • Sound Done
          • Destroy
        • Effect - Beam Bounce 4 (Splash Damage) - Start
          • Create
      • set Sound: SiegeTank_AttackImpact


    With that, you now have a working Beam Chain Tower with an AoE Splash finale! I've attached a test map as a reference. I've also attached a 2nd map illustration a Beam Burst in which a unit fires a beam at a target and then beams fire out from that target at surrounding targets. If you've played red alert, think of the "Prism Tank."

    Beam Burst

    For those interested in making one, keep in mind that the effect chain is as follows:

    Weapon > Set > [Buff + Damage] > Search > Damage x N Targets

    1 Unit
    1 Unit Actor
    1 Unit Model
    1 Turret
    1 Turret Actor
    1 Weapon
    1 Behavior Buff
    5 Effects
    2 Beam Actors
    2 Beam Attack Actors
    2 Beam Models



    If you have any questions or concerns you can try here or on the IRC room where I'll be hanging out whenever I'm online and in the editor.

    Posted in: Tutorials
  • To post a comment, please or register a new account.