As part of the Creature Contest, I thought it would be a great idea to cover Hosting and Site Operations in extensive detail. I'll be demonstrating how you can use multiple Site Operations and the Host/Hosting Fields to attach units to each other, designate launch/impact locations and otherwise create your own patchwork units. For our example we'll be covering the Uberlisk despite there already being multiple tutorials out for it. The reason for this is my Uberlisk actually has the 6 spine crawlers it's supposed to in the locations they are supposed to be. I've also improved upon the concept and adjusted the spine crawlers further to show you just how realistic you can make attachments appear.
Take a look:
(I'm lazy and don't have video recording, but video tutorialist OneTwo was awesome enough to make this for me!)
Also, as a warning, this tutorial is quite lengthy and as such it is entirely likely that I made several typos or forgot a step. If you see such an instance let me know right away so I can fix it. Do not hesitate to ask questions either as I'll be available to help as best I can :)
The Basics
Hosting and Site Operations are nothing more than points of reference for alignment instructions. Either you're linking two objects together with references so that they can "speak" to each other, or you're telling an object that it needs to be here and/or moved to there. If actors are the puppeteers, units are the puppets and behaviors/effects are the puppets features then hosting/site operations are the strings. They tell everything where they need to be.
Before we begin, it's important to understand how Local Offset, Explicit Rotation and Variance Rotation Site Operations work as a large part of combined models involves them. To help visualize, open any unit in the previewer and move the camera until you are facing the front of your unit. Now overlay the the coordinate system in your mind and that's how these Site Operations will base their directional adjustments.
Local Offsets
This Site Operation moves objects in any direction while preserving its facing and rotational axis. Using the objects original point as the origin:
+X is right of the object, -X is left of the object
+Y is towards/into the object, -Y is away from/out of the object
+Z is above the object, -Z is below the object
One thing to note is that while it preserves its rotational axis, some anchor (attachment) points will actually tilt this axis to align it with the plane it's attached to. In other words, if you attach it to a surface that's at a 45 degree angle to ground, the attached model will also be at a 45 degree angle. Thus it's important to pick the right anchor point to move from before applying offsets.
Explicit (Static) Rotation
This Site Operation changes and locks an objects facing and/or rotational axis. The directions from offsets are the same, but instead of moving the object you are going to create new vectors. Forward is the facing vector and Up is the rotational axis vector. Some examples:
Face North
Forward - (X: 0.0,Y: 1.0, Z: 0.0)
Up - (X: 0.0,Y: 0.0, Z: 1.0)
Face Up
Forward - (X: 0.0, Y: 0.0, Z: 1.0)
Up - (X: 0.0, Y: 0.0, Z: 1.0)
Face South West
Forward - (X: -1.0, Y: -1.0, Z: 0.0)
Up - (X: 0.0,Y: 0.0, Z: 1.0)
Tilt West
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: -1.0, Y: 0.0, Z: 0.0)
Tilt North East
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: 1.0, Y: 1.0, Z: 0.0)
Flip Upside Down
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: 0.0, Y: 0.0, Z: -1.0)
It's important to note that the actor won't rotate with its host if used on attachments. In order to function like an attachment should, you must enable Local. If you do not, the rotations will be use the map coordinates instead of the unit's facing as a reference.
Variance (Dynamic) Rotation
Unlike Explicit Rotation, this Site Operation does not change a units facing or rotational axis. Instead, it changes its relationship with its existing facing and axis. More specifically, it allows you to tilt a unit away from its facing/axis without being locked in that direction. This makes it ideal for attachments to mobile objects. While still facing your unit, the Up Angle tilts it to the left of its axis and the Forward Angle tilts it up from its facing. Given that both fields are only angles, it's pretty easy to tilt as desired once you understand what direction you are tilting.
One very important disclaimer is that this Site Operation is currently very buggy. Sometimes the angle will tilt the object in the opposite direction which is bad for Forward Angles as it puts their face in the ground. If used with other Site Operations, especially if you attach to an anchor, the model will slowly "fall" into the ground as the object moves about. This can be especially frustrating if you have the perfect setup and suddenly the attachment droops. That being said, be sure to test repeatedly to make sure you achieve the desired effect. As of now, I don't know any way to ensure 100% success and I suspect it's just another area of the editor Blizzard isn't finished fleshing out.
The Uberlisk
First and foremost, I have not included the Uberlisk's abilities because they are not related to the tutorial and would just be extra work. I am willing to update the tutorial by attaching a 2nd map that has the abilities incorporated if this is the popular demand, but I won't be adding them to this tutorial. In a future tutorial I might pull that map off this thread and create an Actor/Ability tutorial that walks through making those abilities for the Uberlisk you've already created with this tutorial. I won't make any promises at this point in time, however. For now, focus on the Hosting and Site Operations as those are what allow the Uberlisk to function.
Effects Tab
Create a new effect named Impaler Tentacle L1 (Damage) with Effect Type: Damage
set Combat - Amount to 15
set Effect - Kind to Ranged
set Impact Location + to Target Unit
Duplicate the above effect 5 times and change L1 to L2, L3, R1, R2 and R3
(Because we have a lot to make I'll be having you duplicate frequently.)
Create a new effect named Impaler Tentacle L1 (Missile) with Effect Type: Launch Missile
add Return to Flags
set Impact Effect to Impaler Tentacle L1 (Damage)
set Return Delay to 0.1750
set Movers + to (SpineCrawlerTentacleExtendShort (Unknown) at <or= to 3; SpineCrawlerTentacleExtendLong (Unknown) at <or= to 7)
set Return Movers + to (SpineCrawlerTentacleRetractShort (Unknown) at <or= to 3; SpineCrawlerTentacleRetractLong (Unknown) at <or= to 7)
Duplicate the above effect 5 times and change both L1s to L2s, L3s, R1s, R2s and R3s
Simply match the Damage to its Missile. We'll come back and pick our ammo unit later on.
Models Tab
Create a new model named Uberlisk Spine with Model Type: Generic
set Model to SpineCrawler.m3
Weapons Tab
Create a new weapon named Impaler Tentacle L1
set Effect to Imapler Tentacle L1 (Missile)
set Arc to 360
set Backswing to 0.0
set Damage Point to 0.1
set Period to 1.5
set both Random Delay Maximum and Minimum to 0
set Range to 7
set Damage Display Effect to Impaler Tentacle L1 (Damage)
set Icon to btn-upgrade-zerg-seismicspines.dds
set Allowed Movement to Moving
set Legacy Options to No Deceleration
open Options and check (Hidden and Continuous Scan) while unchecking everything else.
set Target Filters to exclude [Dead/Hidden/Invulnerable/Missile/Stasis] and require [Ground/Visible]
Duplicate the above weapon 5 times and change all L1s to L2s, L3s, R1s, R2s and R3s, matching the weapon to its missile and damage effects.
also change the Damage Point to 0.2 (R1), 0.3 (L2), 0.4 (R2), 0.5 (L3), 0.6 (R3)
Damage Point determines when during the period a weapon attacks. By layering them like this the attacks will attack consecutively rather than in one volley
Units Tab
Create a new unit named Impaler Tentacle L1 with Unit Type: Generic,Based On: Missile_Invulnerable (Unknown) and Object Type: Projectile
set Editor Prefix* to "Missile -"
Duplicate the above unit 5 times and change L1 to L2, L3, R1, R2 and R3
Duplicate Ultralisk and check the following boxes:
Start by renaming the Ultralisk model Uberlisk. Go on to rename the actor Uberlisk and the weapons Kaiser Blades ("Uberlisk -" in the Editor Prefix field) and Head Attack ("Uberlisk -" in the Editor Prefix field). Now delete any abilities, command card buttons or behaviors you don't want and decide on your stats (HP, armor etc). Finish by renaming the unit Uberlisk and the effects Cleave (Damage) ("Uberlisk -" in the Editor Prefix field) and Head Attack (Damage) ("Uberlisk -" in the Editor Prefix field).
open Weapons + and add all 6 Tentacle weapons using Spine Crawler as the turret for each one
Go to the Kaiser Blades weapon
set Editor Prefix* to "Uberlisk -"
set Effect to Uberlisk - Cleave (Damage)
set Backswing to 0.0
set Period to 1.0
set both Random Delay Maximum and Minimum to 0
set Range to 1
set Damage Display Effect Uberlisk - Cleave (Damage)
open Options and check (Can Initiate Attack, Melee, Only Fire At Attack Target and Only Fire While Attacking) while unchecking everything else
It's important that Backswing is 0.0 because this number determines how the unit can fire any of its weapons after using this weapon. If it's anything but 0.0, other weapons used after it will be delayed. It's also important to uncheck Linked Cooldown so that multiple weapons can fire at once.
Go to the Head Attack weapon
set Editor Prefix* to "Uberlisk -"
set Effect to Uberlisk - Head Attack (Damage)
set Backswing to 0.0
set Period to 1.5
set both Random Delay Maximum and Minimum to 0
set Range to 1
set Damage Display Effect Uberlisk - Head Attack (Damage)
open Options and check (Can Initiate Attack, Melee, Only Fire At Attack Target and Only Fire While Attacking) while unchecking everything else
Actors Tab
Because we have a lot of actors and each one has an important role, we're going to divide this tab into multiple sections so that we can better understand what is happening.
Site Operation Actors
Create a new actor named SOpAttachSpineL with Actor Type: Site Operation (Attachment)
set Attachment Query + to (Direct) Target 07 (Index)
Create a new actor named SOpAttachSpineR with Actor Type: Site Operation (Attachment)
set Attachment Query + to (Direct) Target 08 (Index)
These two actors are going to "anchor" our Spine Crawlers to the Uberlisk's attachment points so that they move with its animations. Without these, the attached actors will just float in the air where you put them while following the Uberlisk around. We won't need to make one for each Spine Crawler because these simply pick the starting point and the angle relative to the Uberlisk.
Create a new actor named SOpAdjustSpineL1 with Actor Type: Site Operation (Offset)
set Local Offset to (0.7, -0.2, -0.35)
Create a new actor named SOpAdjustSpineL2 with Actor Type: Site Operation (Offset)
set Local Offset to (0.45, -0.9, -0.15)
Create a new actor named SOpAdjustSpineL3 with Actor Type: Site Operation (Offset)
set Local Offset to (0.1, -1.8, -0.1)
Create a new actor named SOpAdjustSpineR1 with Actor Type: Site Operation (Offset)
set Local Offset to (-0.75, -0.15, -0.4)
Create a new actor named SOpAdjustSpineR2 with Actor Type: Site Operation (Offset)
set Local Offset to (-0.6, -0.85, -0.2)
Create a new actor named SOpAdjustSpineR3 with Actor Type: Site Operation (Offset)
set Local Offset to (-0.25, -1.75, -0.1)
These actors are what move the Spine Crawlers from their anchor point. I've already done the tweaking part, but normally you would guess where you want them and then slowly nudge them until you've got the model where you want it. By combining these actors you can move a model anywhere along the Uberlisk's head. If you want another part of the body, simply change the anchor point and adjust the offsets.
Model Actors
Go to the Uberlisk's actor
set Scale to (2.0)
open Events + and remove EVERYTHING, then add the following events:
Create a new actor named SpineL1 with Actor Type: Model and Based On: ModelAddition
set Model to Uberlisk Spine
set Scale to (0.3, 0.3, 0.4)
set Host + to _Unit (Subject > Alias)
set Host Site Operations + to SOpAttachSpineL and SOpAdjustSpineL1
open Hosted Attachments + and add a new value with (Attachment Query > Methods: AMFilterWeapon (Methods); Name: SpineL1Tentacle (Custom))
open Events + and create the following events:
UnitBirth.Uberlisk
Create
ActorCreation
Animation Play (Name: Attach; Animation Properties: Stand, Burrow; Flags: Play Forever)
Effect.ImpalerTentacleL1Missile.Start
Animation Play (Name: Attack; Animation Properties: Attack)
WeaponStop.ImpalerTentacleL1.AttackStop
Animation Clear (Name: Attack)
Signal
Animation Play (Name: Return; Animation Properties: Attack, End)
Signal
Reference Clear (Name: SpineL1Tentacle (Custom))
UnitDeath.Uberlisk
Destroy
Now there is currently a bug that prevents you from adding a SubName to Signal events. So we're going to have to manually edit them with Raw Data View. Press Ctrl + D and double click on Events +. This will now allow you to type anything you want into this field. Find both instances of "Signal" and change them to "Signal.*.Returned" so that the event will work properly. Once finished, press Ctrl + D again to clear Raw Data View. DOUBLE CHECK THAT YOU MADE THE CORRECT CHANGES. Now it's time to explain what all the Hosting fields and Signals are for.
Host + determines what the actor will attach itself to. By adding the alias _Unit, this actor will find an actor with this alias (in our case the Uberlisk) and attach itself when it is created. You DO have the option of picking a specific actor and sometimes this is better than using aliases. A good example would be when you are attaching multiple objects together that share aliases. If your main model has _Unit and the first attachment has _Unit, the next attached model might be confused on which to attach to and end up attached to the wrong model. Specifying the actor helps avoid this.
Host Site Operations + determines where on the "Host" actor this actor will attach itself. The Site Operations we have tell the unit to anchor itself at the given location and then adjust itself by the given values. This puts our Spine Crawler where it needs to be. It is VERY important that you include a space between each operation otherwise it won't stick when you click ok. Furthermore, the ONLY way to use multiple Site Ops is by using a space between them. Many mappers have made the false conclusion that you can't use more than one Site Op because they didn't figure out that you have to use a space instead of a comma or semi-colon. Don't let this be you!
Hosted Attachments + is somewhat complicated, but the basic idea is that it allows the actor to be a reference point for other actors. In our case, it will allow the Tentacle's attack actor to animate the "stretch" attack. Without this hosted attachment, the tentacle won't stretch to the target at all. It will just "wiggle" a little each attack. Additionally you can use this field to create multiple reference points for complex multi-attachment units.
Lastly, Signal's are how the Tentacle Missile and the Spine Crawler will communicate. One event will tell the Spine Crawler to play an animation every time it receives the signal named "Returned" and the other will clear the reference point (the Hosted Attachment) after each attack. If you don't clear the reference point after each attack, all animations will work as intended, but after attacking the tentacle will be pinned to the air above where the Spine Crawler is until it attacks again. If there is nothing to attack, it will stay there while you walk away to another target, stretching the entire way until it has an opportunity to attack something. (If your missile doesn't return, you don't need signals!)
Duplicate above actor 5 times and change all L1s to L2s, L3s, R1s, R2s and R3s, being careful to link each Actor to the correct parts.
This duplication process is the most common source of errors for this actor and all following actors. Be sure to double check that you have associated all L1s with L1s, L2s with L2s and so forth at each step so that your tentacles will attack properly.
Site Actors
Create a new actor named Spine L1 Site with Actor Type: Site
set Host + to SpineL1 (Subject > Actor)
set Host Site Operations + to SOpAttachHardPoint
open Events + and create the following events:
ActorCreation.SpineL1
Create
ActorDestruction.SpineL1
Destroy
Duplicate the above actor 5 times and change all L1s to L2s, L3s, R1s, R2s and R3s, being careful to link each actor to the correct parts.
This particular actor is what will allow your tentacle to fire from location we want. It attaches itself to the Spine Crawler actor at the given anchor point. This anchor point is where an actual Spine Crawler's tentacle originates from so naturally we want our tentacles to originate from this point as well.
Missile Actors
Create a new actor named Spine L1 Missile with Actor Type: Missile and Based On: GenericTentacleMissile (Uknown)
set Unit Name (Token) to Missile - Impaler Tentacle L1
set Model to Invisible
set Host Return + to SpineL1 (Subject > Actor)
set Host Return Site Operations + to SOpAttachHardPoint
These events aren't your typical events, but they are very important. Motion Phase Start is how your missile will reference the Spine Crawler it shoots from, allowing it to stretch from the hosted attachment (SpineL1Tentacle) to the target. Once it reaches the target, Missile Tentacle Return is what allows the tentacle to retract back to the Spine Crawler. Without this it will simply stretch out and "pin" itself to the target, twitching periodically to signal attacks. Knowing this, you can actually use this to purposely pin targets with this animation so long as you ensure that the missile only fires once. Then you can have Missile Tentacle Return action occur when the effect that immobilizes the target ends. Thus the missile fires, sticks the target which is immobilized by an effect and then retracts when the effect ends or the target dies. Think "Neural Parasite" but without that annoying infestor.
Host Return + is simple. This is the actor the tentacle returns to. Without this the tentacle might drag along the ground, shoot off screen or any number of things depending on what you have and haven't setup correctly. (If your missile doesn't return, skip this!)
Host Return Site Operations + is how you specifically pick what part of the actor the tentacle returns to. If you've specified the host return but not the Site Op then your tentacle will, again, drag along the ground awkwardly. Limp tentacle is a serious problem >:( (If your missile doesn't return, skip this!)
Host Supporter + there isn't really a great way to explain what this does exactly as it has a lot of uses, but with our Uberlisk, this is how you let the events that target "::Supporter" know what actor you're talking about. Even if you pick the actors attachment, you still need this to complete the "reference." If the hosted attachment is one board and the missile actor is the board you want to attach to it, the host supporter is the nails/screws that hold them together. Event if you put them side by side and they know what to do, they won't stick together without it. (If your missile doesn't return, skip this!)
Duplicate the above actor 5 times and change all L1s to L2s, L3s, R1s, R2s and R3s, being careful to link each actor to the correct parts.
Attack Actors
Create a new actor named Spine Attack L1 with Actor Type: Attack and Based On: GenericAttack
set Impact Effect (Token) to Impaler Tentacle L1 (Damage)
set Launch Effect (Token) to Impaler Tentacle L1 (Missile)
set Missile to Spine L1 Missile
open Launch Assets + and set sound to SpineCrawler_AttackLaunch
open Impact Map + select the 1st row and set sound to SpineCrawler_AttackImpact
in Impact Map + set Flesh Model Reaction to Spine Crawler Attack Impact Reaction Flesh
in Impact Map + set Light Armor Model Reaction to Light Armor Target Impact
in Impact Map + set Metal Model Reaction to Metal Target Impact
set Launch Site to Spine L1 Site
open Events + and create the following events:
Effect.ImpalerTentacleL1Missile.Start
At Caster (Term)
Create
Effect.ImpalerTentacleL1Dmg.Start
At Caster (Term)
From Effect tree Descendant (Term)
Action Impact
Duplicate the above actor 5 times and change all L1s to L2s, L3s, R1s, R2s and R3s, being careful to link each actor to the correct parts.
Wrapping Up
Return to Impaler Tentacle L1 (Missile)
set Ammo Unit to Missile - Impaler Tentacle L1
Repeat for L2, L3, R1, R2 and R3
At this point it's a good idea to double check everything. All your data objects should be created so quickly flipping through and making sure they only reference other data objects with the same L# or R# is easy to do. Save your map, throw some victims on the map and unleash your Uberlisk! :D
If you encounter problems that you can't fix, let me know about it here and we'll figure out what happened.
First off thanks for the awesome tutorial I'm sure it took lots of work. I got stuck at one point though.
Where you say to
Create a new actor named SOpAttachSpineL with Actor Type: Site Operation (Attachment)
set Attachment Query + to Target 07 (Direct)
I wasn't able to modify the number to 7. It would always stay at 0. Even in your example file, it's set correctly to 7 but I'm not able to modify the value.
When selecting direct attachment points, there is the field where you select the name and then a 0 below it by the word "Index." Change this to 7 to set it to Target 07 :)
Hey I try to create a Thor with a Turret on the Shoulder thats fires some rockets.
I only have one Problem left with this: I cant get the Missles fired out of the turret :/
I have created the Model on the Thor with Site Operation (Loacl Offset).
But i dont understand why you have a Site that gets created with the Model. I did the same and changed in the Action Actor the Launch Site to my new Site. But nothing happens :/
When you begin attaching models to other models, only one of these models can be designed as the "unit" with everything being an extension of that unit. The only exception that I have seen is if you use triggers to make units appear on top of each other and chained together. So in your case, the Thor is the unit and the Missile Tower is just an extension of the Thor. The problem with this is that you can't simply tell the effect to launch from a point on the Missile Tower because it only uses the unit as a reference for launching projectiles. Everything on the Missile Tower doesn't exist.
Site Actors allow you to create a new point for your missile to launch from that isn't on your unit. Right now your missile is probably shooting from the ground beneath the Thor, right? To work properly you need to make sure the Site Actor has the events to create it when the Missile Tower attachment is made. It also needs to have its Host + field set to the specific Missile Tower you made (so it knows this is the model to attach to) and then the part of the Missile Turret its attached to specified with Host Site Operations +. You'd then complete the process by putting this Site Actor in the Launch Site + field under your missile's attack actor. An Example:
Missile Turret's Actor: ThorMissilePod
Site Actor: ThorMissilePodSite
set Host + to ThorMissilePod (Actor)
set Host Site Operations + to SOpAttachWeapon01, SOpAttachWeapon02, SOpAttachWeapon03 or SOpAttachWeapon04
open Events + and created the following events:
ActorCreation.ThorMissilePod
Create
ActorDestruction.ThorMissilePod
Destroy
Missile Attack Actor: MissilePodAttack
set Launch Site to ThorMissilePodSite
This tells the Site to create itself at one of the Missile Towers weapons and tells the missile to fire from the site that is now attached to the Missile Tower. Does this make more sense? Also, does it help fix your problem?
This is very well done ProzaicMuse. I understood all of it since I wrote the original guide on this. I like how detailed you got about what each option actual does and I have to admit I never thought about using the Attachment Offset Actor to properly control the placement of the SpineCrawlers to the Uberlisk. This is much more inline with the Uberlisk that was showcased at Blizzcon. I look forward to seeing all the crazy creatures people come up with using your guide as a template!
And Thus is why i stopped making Tutorials, other people are far much better at explaining things than me! (Plus the fact im waiting for launch to play with the editor again xD im a lazy bastard)
Great work on the tutorial, i wouldnt have the patience to replicate the Uberlisk nor do a write-up like this about it mad props from me
@Kroemel - I'm looking at your map right now, but I don't have an immediate solution. I've made some improvements (like the missile firing from the Thor instead of the ground), but I think your problems are stemming from the fact that you have your copied Effects and Actors linked to some of the stock Effects and Actors. You should go through and duplicate the stock objects you are using so that you can rename them and ensure that only your edited stuff is linked together.
While you're doing that, I'll see what I can do about getting it to launch from the correct location on the current map. For what it's worth, you've actually got the Hosting an Site Operations setup correctly. The only issue is you used ALL of them rather than just some of them. You only need the Site Actor, Site Operations Actor and the Host actor to make this work. You don't need the Return Actor, Return Site Operations, Hosted Attachments or Host Supporter.
@Everyone else - Thank yeh kindly for the praise :D
I believe I've almost got this, but I absolutely cannot find what is causing my tentacles to not actually reach out and hit the target and instead do that little "wiggle" thing that was mentioned in the hosted attachments section. I'm about to say screw it, turn them into spores, and just have him shoot spores instead.
@JPLetters - Have you checked your Host Supporter + field and the missile's actor events that target the ::Supporter? This is what transfers the animations to the Spine Crawler. So if you have Host Attachments + setup properly it's possible this is what's causing the trouble.
(By Popular Demand: Beginner Attachments Tutorial)
As part of the Creature Contest, I thought it would be a great idea to cover Hosting and Site Operations in extensive detail. I'll be demonstrating how you can use multiple Site Operations and the Host/Hosting Fields to attach units to each other, designate launch/impact locations and otherwise create your own patchwork units. For our example we'll be covering the Uberlisk despite there already being multiple tutorials out for it. The reason for this is my Uberlisk actually has the 6 spine crawlers it's supposed to in the locations they are supposed to be. I've also improved upon the concept and adjusted the spine crawlers further to show you just how realistic you can make attachments appear.
Take a look:
(I'm lazy and don't have video recording, but video tutorialist OneTwo was awesome enough to make this for me!)
Also, as a warning, this tutorial is quite lengthy and as such it is entirely likely that I made several typos or forgot a step. If you see such an instance let me know right away so I can fix it. Do not hesitate to ask questions either as I'll be available to help as best I can :)
The Basics
Hosting and Site Operations are nothing more than points of reference for alignment instructions. Either you're linking two objects together with references so that they can "speak" to each other, or you're telling an object that it needs to be here and/or moved to there. If actors are the puppeteers, units are the puppets and behaviors/effects are the puppets features then hosting/site operations are the strings. They tell everything where they need to be.
Before we begin, it's important to understand how Local Offset, Explicit Rotation and Variance Rotation Site Operations work as a large part of combined models involves them. To help visualize, open any unit in the previewer and move the camera until you are facing the front of your unit. Now overlay the the coordinate system in your mind and that's how these Site Operations will base their directional adjustments.
Local Offsets
This Site Operation moves objects in any direction while preserving its facing and rotational axis. Using the objects original point as the origin:
+X is right of the object, -X is left of the object
+Y is towards/into the object, -Y is away from/out of the object
+Z is above the object, -Z is below the object
One thing to note is that while it preserves its rotational axis, some anchor (attachment) points will actually tilt this axis to align it with the plane it's attached to. In other words, if you attach it to a surface that's at a 45 degree angle to ground, the attached model will also be at a 45 degree angle. Thus it's important to pick the right anchor point to move from before applying offsets.
Explicit (Static) Rotation
This Site Operation changes and locks an objects facing and/or rotational axis. The directions from offsets are the same, but instead of moving the object you are going to create new vectors. Forward is the facing vector and Up is the rotational axis vector. Some examples:
Face North
Forward - (X: 0.0,Y: 1.0, Z: 0.0)
Up - (X: 0.0,Y: 0.0, Z: 1.0)
Face Up
Forward - (X: 0.0, Y: 0.0, Z: 1.0)
Up - (X: 0.0, Y: 0.0, Z: 1.0)
Face South West
Forward - (X: -1.0, Y: -1.0, Z: 0.0)
Up - (X: 0.0,Y: 0.0, Z: 1.0)
Tilt West
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: -1.0, Y: 0.0, Z: 0.0)
Tilt North East
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: 1.0, Y: 1.0, Z: 0.0)
Flip Upside Down
Forward - (X: 0.0, Y: -1.0, Z: 0.0)
Up - (X: 0.0, Y: 0.0, Z: -1.0)
It's important to note that the actor won't rotate with its host if used on attachments. In order to function like an attachment should, you must enable Local. If you do not, the rotations will be use the map coordinates instead of the unit's facing as a reference.
Variance (Dynamic) Rotation
Unlike Explicit Rotation, this Site Operation does not change a units facing or rotational axis. Instead, it changes its relationship with its existing facing and axis. More specifically, it allows you to tilt a unit away from its facing/axis without being locked in that direction. This makes it ideal for attachments to mobile objects. While still facing your unit, the Up Angle tilts it to the left of its axis and the Forward Angle tilts it up from its facing. Given that both fields are only angles, it's pretty easy to tilt as desired once you understand what direction you are tilting.
One very important disclaimer is that this Site Operation is currently very buggy. Sometimes the angle will tilt the object in the opposite direction which is bad for Forward Angles as it puts their face in the ground. If used with other Site Operations, especially if you attach to an anchor, the model will slowly "fall" into the ground as the object moves about. This can be especially frustrating if you have the perfect setup and suddenly the attachment droops. That being said, be sure to test repeatedly to make sure you achieve the desired effect. As of now, I don't know any way to ensure 100% success and I suspect it's just another area of the editor Blizzard isn't finished fleshing out.
The Uberlisk
First and foremost, I have not included the Uberlisk's abilities because they are not related to the tutorial and would just be extra work. I am willing to update the tutorial by attaching a 2nd map that has the abilities incorporated if this is the popular demand, but I won't be adding them to this tutorial. In a future tutorial I might pull that map off this thread and create an Actor/Ability tutorial that walks through making those abilities for the Uberlisk you've already created with this tutorial. I won't make any promises at this point in time, however. For now, focus on the Hosting and Site Operations as those are what allow the Uberlisk to function.
Effects Tab
(Because we have a lot to make I'll be having you duplicate frequently.)
Simply match the Damage to its Missile. We'll come back and pick our ammo unit later on.
Models Tab
Weapons Tab
Damage Point determines when during the period a weapon attacks. By layering them like this the attacks will attack consecutively rather than in one volley
Units Tab
Duplicate Ultralisk and check the following boxes:
Start by renaming the Ultralisk model Uberlisk. Go on to rename the actor Uberlisk and the weapons Kaiser Blades ("Uberlisk -" in the Editor Prefix field) and Head Attack ("Uberlisk -" in the Editor Prefix field). Now delete any abilities, command card buttons or behaviors you don't want and decide on your stats (HP, armor etc). Finish by renaming the unit Uberlisk and the effects Cleave (Damage) ("Uberlisk -" in the Editor Prefix field) and Head Attack (Damage) ("Uberlisk -" in the Editor Prefix field).
Go to the Kaiser Blades weapon
It's important that Backswing is 0.0 because this number determines how the unit can fire any of its weapons after using this weapon. If it's anything but 0.0, other weapons used after it will be delayed. It's also important to uncheck Linked Cooldown so that multiple weapons can fire at once.
Go to the Head Attack weapon
Actors Tab
Because we have a lot of actors and each one has an important role, we're going to divide this tab into multiple sections so that we can better understand what is happening.
Site Operation Actors
These two actors are going to "anchor" our Spine Crawlers to the Uberlisk's attachment points so that they move with its animations. Without these, the attached actors will just float in the air where you put them while following the Uberlisk around. We won't need to make one for each Spine Crawler because these simply pick the starting point and the angle relative to the Uberlisk.
These actors are what move the Spine Crawlers from their anchor point. I've already done the tweaking part, but normally you would guess where you want them and then slowly nudge them until you've got the model where you want it. By combining these actors you can move a model anywhere along the Uberlisk's head. If you want another part of the body, simply change the anchor point and adjust the offsets.
Model Actors
Now there is currently a bug that prevents you from adding a SubName to Signal events. So we're going to have to manually edit them with Raw Data View. Press Ctrl + D and double click on Events +. This will now allow you to type anything you want into this field. Find both instances of "Signal" and change them to "Signal.*.Returned" so that the event will work properly. Once finished, press Ctrl + D again to clear Raw Data View. DOUBLE CHECK THAT YOU MADE THE CORRECT CHANGES. Now it's time to explain what all the Hosting fields and Signals are for.
Host + determines what the actor will attach itself to. By adding the alias _Unit, this actor will find an actor with this alias (in our case the Uberlisk) and attach itself when it is created. You DO have the option of picking a specific actor and sometimes this is better than using aliases. A good example would be when you are attaching multiple objects together that share aliases. If your main model has _Unit and the first attachment has _Unit, the next attached model might be confused on which to attach to and end up attached to the wrong model. Specifying the actor helps avoid this.
Host Site Operations + determines where on the "Host" actor this actor will attach itself. The Site Operations we have tell the unit to anchor itself at the given location and then adjust itself by the given values. This puts our Spine Crawler where it needs to be. It is VERY important that you include a space between each operation otherwise it won't stick when you click ok. Furthermore, the ONLY way to use multiple Site Ops is by using a space between them. Many mappers have made the false conclusion that you can't use more than one Site Op because they didn't figure out that you have to use a space instead of a comma or semi-colon. Don't let this be you!
Hosted Attachments + is somewhat complicated, but the basic idea is that it allows the actor to be a reference point for other actors. In our case, it will allow the Tentacle's attack actor to animate the "stretch" attack. Without this hosted attachment, the tentacle won't stretch to the target at all. It will just "wiggle" a little each attack. Additionally you can use this field to create multiple reference points for complex multi-attachment units.
Lastly, Signal's are how the Tentacle Missile and the Spine Crawler will communicate. One event will tell the Spine Crawler to play an animation every time it receives the signal named "Returned" and the other will clear the reference point (the Hosted Attachment) after each attack. If you don't clear the reference point after each attack, all animations will work as intended, but after attacking the tentacle will be pinned to the air above where the Spine Crawler is until it attacks again. If there is nothing to attack, it will stay there while you walk away to another target, stretching the entire way until it has an opportunity to attack something. (If your missile doesn't return, you don't need signals!)
This duplication process is the most common source of errors for this actor and all following actors. Be sure to double check that you have associated all L1s with L1s, L2s with L2s and so forth at each step so that your tentacles will attack properly.
Site Actors
This particular actor is what will allow your tentacle to fire from location we want. It attaches itself to the Spine Crawler actor at the given anchor point. This anchor point is where an actual Spine Crawler's tentacle originates from so naturally we want our tentacles to originate from this point as well.
Missile Actors
These events aren't your typical events, but they are very important. Motion Phase Start is how your missile will reference the Spine Crawler it shoots from, allowing it to stretch from the hosted attachment (SpineL1Tentacle) to the target. Once it reaches the target, Missile Tentacle Return is what allows the tentacle to retract back to the Spine Crawler. Without this it will simply stretch out and "pin" itself to the target, twitching periodically to signal attacks. Knowing this, you can actually use this to purposely pin targets with this animation so long as you ensure that the missile only fires once. Then you can have Missile Tentacle Return action occur when the effect that immobilizes the target ends. Thus the missile fires, sticks the target which is immobilized by an effect and then retracts when the effect ends or the target dies. Think "Neural Parasite" but without that annoying infestor.
Host Return + is simple. This is the actor the tentacle returns to. Without this the tentacle might drag along the ground, shoot off screen or any number of things depending on what you have and haven't setup correctly. (If your missile doesn't return, skip this!)
Host Return Site Operations + is how you specifically pick what part of the actor the tentacle returns to. If you've specified the host return but not the Site Op then your tentacle will, again, drag along the ground awkwardly. Limp tentacle is a serious problem >:( (If your missile doesn't return, skip this!)
Host Supporter + there isn't really a great way to explain what this does exactly as it has a lot of uses, but with our Uberlisk, this is how you let the events that target "::Supporter" know what actor you're talking about. Even if you pick the actors attachment, you still need this to complete the "reference." If the hosted attachment is one board and the missile actor is the board you want to attach to it, the host supporter is the nails/screws that hold them together. Event if you put them side by side and they know what to do, they won't stick together without it. (If your missile doesn't return, skip this!)
Attack Actors
Wrapping Up
At this point it's a good idea to double check everything. All your data objects should be created so quickly flipping through and making sure they only reference other data objects with the same L# or R# is easy to do. Save your map, throw some victims on the map and unleash your Uberlisk! :D
If you encounter problems that you can't fix, let me know about it here and we'll figure out what happened.
@ProzaicMuze: Go
Man you're good at typing haha.
I practice in front of the mirror each night before I go to bed. . .
<.<
.>
First off thanks for the awesome tutorial I'm sure it took lots of work. I got stuck at one point though.
Where you say to
Create a new actor named SOpAttachSpineL with Actor Type: Site Operation (Attachment)
I wasn't able to modify the number to 7. It would always stay at 0. Even in your example file, it's set correctly to 7 but I'm not able to modify the value.
Any help is appreciated! Thanks!
When selecting direct attachment points, there is the field where you select the name and then a 0 below it by the word "Index." Change this to 7 to set it to Target 07 :)
Hey I try to create a Thor with a Turret on the Shoulder thats fires some rockets. I only have one Problem left with this: I cant get the Missles fired out of the turret :/
I have created the Model on the Thor with Site Operation (Loacl Offset). But i dont understand why you have a Site that gets created with the Model. I did the same and changed in the Action Actor the Launch Site to my new Site. But nothing happens :/
Could need help :)
When you begin attaching models to other models, only one of these models can be designed as the "unit" with everything being an extension of that unit. The only exception that I have seen is if you use triggers to make units appear on top of each other and chained together. So in your case, the Thor is the unit and the Missile Tower is just an extension of the Thor. The problem with this is that you can't simply tell the effect to launch from a point on the Missile Tower because it only uses the unit as a reference for launching projectiles. Everything on the Missile Tower doesn't exist.
Site Actors allow you to create a new point for your missile to launch from that isn't on your unit. Right now your missile is probably shooting from the ground beneath the Thor, right? To work properly you need to make sure the Site Actor has the events to create it when the Missile Tower attachment is made. It also needs to have its Host + field set to the specific Missile Tower you made (so it knows this is the model to attach to) and then the part of the Missile Turret its attached to specified with Host Site Operations +. You'd then complete the process by putting this Site Actor in the Launch Site + field under your missile's attack actor. An Example:
Missile Turret's Actor: ThorMissilePod
Site Actor: ThorMissilePodSite
Missile Attack Actor: MissilePodAttack
This tells the Site to create itself at one of the Missile Towers weapons and tells the missile to fire from the site that is now attached to the Missile Tower. Does this make more sense? Also, does it help fix your problem?
Prozaic - you are a data editing beast. Good work again.
lol I do what I can :)
@ProzaicMuze: Go
This is very well done ProzaicMuse. I understood all of it since I wrote the original guide on this. I like how detailed you got about what each option actual does and I have to admit I never thought about using the Attachment Offset Actor to properly control the placement of the SpineCrawlers to the Uberlisk. This is much more inline with the Uberlisk that was showcased at Blizzcon. I look forward to seeing all the crazy creatures people come up with using your guide as a template!
Its me again :)
thanks for help i think that i do now understand the Meaning of Site Actors. But it dont work for me, I hope i did all right that you said.
Hmm perhaps its impossible or i just did some mistakes ^^
If someone want to see my results so far:
And Thus is why i stopped making Tutorials, other people are far much better at explaining things than me! (Plus the fact im waiting for launch to play with the editor again xD im a lazy bastard)
Great work on the tutorial, i wouldnt have the patience to replicate the Uberlisk nor do a write-up like this about it mad props from me
I just also wanted to say excellent job, it's a very helpful tutorial.
I just hope blizz fixes the variance rotation by launch, it's very frustrating to the point of being useless trying to attach anything using it
@Kroemel - I'm looking at your map right now, but I don't have an immediate solution. I've made some improvements (like the missile firing from the Thor instead of the ground), but I think your problems are stemming from the fact that you have your copied Effects and Actors linked to some of the stock Effects and Actors. You should go through and duplicate the stock objects you are using so that you can rename them and ensure that only your edited stuff is linked together.
While you're doing that, I'll see what I can do about getting it to launch from the correct location on the current map. For what it's worth, you've actually got the Hosting an Site Operations setup correctly. The only issue is you used ALL of them rather than just some of them. You only need the Site Actor, Site Operations Actor and the Host actor to make this work. You don't need the Return Actor, Return Site Operations, Hosted Attachments or Host Supporter.
@Everyone else - Thank yeh kindly for the praise :D
Could you make a bug report about that, I'm not sure that they are aware of it :)
I believe I've almost got this, but I absolutely cannot find what is causing my tentacles to not actually reach out and hit the target and instead do that little "wiggle" thing that was mentioned in the hosted attachments section. I'm about to say screw it, turn them into spores, and just have him shoot spores instead.
Wow Prozaic Wall of text!
@JPLetters - Have you checked your Host Supporter + field and the missile's actor events that target the ::Supporter? This is what transfers the animations to the Spine Crawler. So if you have Host Attachments + setup properly it's possible this is what's causing the trouble.
@XYZMuffin - What can I say? I like walls ;)
Aha! That was it! I missed that little target box up there. :P
Thank you!
All is well now... ahhh.
Glad I could help :D