Just a couple of days ago, I finished setting up a very complex scripted sequence after about 5 hours of work (and several more the previous night). The scripting itself wasn't particularly advanced, but the level of tedium I experienced manually numbering all of the actors (over 600) involved and manually positioning the 300 in-game actors was more than I have ever done before. Best part? It all worked flawlessly the first time I tested it!
It's a boss battle where the rocks come alive and start shooting homing fireballs at you. Here's how it happens:
- The player enters the battle arena (this area) and triggers a Dispatcher (topmost one) that begins the sequence by triggering a small earthquake and sound, starting the fight music, triggering some bolt effects from the sky, and then activating the main sequence where the real complexity comes in.
- A second Dispatcher (second from top) with a longer initial delay then kicks in, which activates 18 other Dispatchers (third row) all at the same time (the parallel ones--more than 8 are activated at once by adding a "Next1" event at the end of the first, which triggers the second, and a "Next2" on the second that triggers the third, etc.). The 18 Dispatchers are activated by a sequence of 4 Dispatchers, as you can see. The 18 Dispatchers are needed to cover the 150 events necessary for this whole thing to work.
- Each one of these Dispatchers triggers an AttachMover. Every event has an 0.25-second delay so that not all of the movers are tripped at the same time--this is just for effect. Every event in each of these Dispatchers goes like AF001, AF002, etc. All the way to AF0150 (yes, I pasted in the first 0 before I realized I wouldn't need it for the latter two thirds, but like hell was I going to bother removing it). AF = Arena Fight.
- All of these AttachMovers, when triggered, bring up ONE Dice actor each that is set to be a Sprite and display a glowy red texture.
- After all of the AttachMovers have been triggered, one event goes off that activates all the Gasbags, which thus begins the boss battle.
Gasbags, you ask?
Oh yeah. All of that up there is just the beginning; see, I placed all of the Dice on the rock formations (five of them--including the two really tall ones) before I started doing any of this; the location of these glowing Dice would serve as the location for the specially-coded Gasbags I made.
Basically, I manually placed these Dice and positioned them--all 150 of them--until I had covered the rocks in a way that looked good and didn't result in too much uneven clustering. Next, I placed my specially-coded Gasbags (invisible in-game and set to Ignore the player by default) on the rocks exactly where the dice were. These two phases took a really long time, but nothing took as long as labeling the Events, Tags, and AttachTags of all the actors involved.
See, when I had all the Gasbags in place, I had to make it look like the rocks were just normal, black rocks before the battle begins. Red-spotted rocks would look too obvious. So, to set this up, I took one AttachMover and moved it waaaaaay below the map; I then duplicated it and moved it up to where it was even with one of the Dice. Then I duplicated it again. I then selected all the Dice and ONE of the upper movers (making sure to select its vertex to keep it exactly on the grid). I then dragged the entire group--150 dice + one mover--until the mover was even with the lower-level one. This ensured all my dice would move up by exactly the same amount and that they would end up in the positions I originally placed them in once triggered. The Gasbags were left alone, of course, since they can't exist outside the world. To protect them before the battle begins, I put large bShoot Triggers around each area which are moved away when the battle starts. Since no other monsters are in this area, it is unlikely a player will want to shoot anything and possibly disrupt the sequence, but since killing one before the battle starts has the potential to break it, I wanted to be sure. It IS still possible to kill some of them with splash damage, but again, it is unlikely someone will aim for the right place for no reason.
Anyway, I duplicated out 150 AttachMovers and gave them all the AF001, AF002, etc. tags and ArenaFight001, ArenaFight002 AttachTags. I also gave each GASBAG an EVENT that fit this scheme. The Dice, of course, had ArenaFight001 Tags and AttachTags so that they would move properly. ALL of the Gasbags had a WakeTheBags tag so they could be triggered once all of the dice were in place on the map.
Since the Gasbags had the same event as their respective movers' tags, this meant that killing one Gasbag would toggle its AttachMover, which would remove the Dice, making it appear that one of the glowy fireball spawners had been destroyed!
In order to keep track of how many of the 150 Gasbags have been killed, I have 150 Counters each set to trigger after 2 counts. This is because the first count for each Counter happens when the master list of Dispatchers initially brings out the Dice. Killing each individual Gasbag, which again toggles each mover, results in the second count for each Counter. A master counter, meanwhile, waits until all 150 counters have tripped it, ending the scripted scene and beginning Phase II of the battle.
Here's what it all looks like zoomed out. I did everything as orderly as possible to avoid making mistakes, and it paid off. I also made extra "markers" out of dummy AttachMovers to indicate the 50- and 100-mover mark in the row so I could more easily isolate a problem if one occurred. Fortunately, none did!
The result looks fantastic and it works perfectly in-game. It's quite intimidating to see the rocks suddenly start becoming speckled with demonic red flares--only to have ALL of them start shooting at you seconds later! Don't worry, though; each fireball, though nearly impossible to dodge thanks to UArchitect's seeker missile code, only does 1 damage each. But when you have 150 of these things, well... if you aren't careful, you'll take damage in a hurry.
But by far the most tedius part of the construction was numbering everything. Even with some amount of copy/pasting to make things easier, I still had to type in hundreds of numbers by hand. I also had to make sure that the Gasbags' Events matched up to their respective Dice's Tags. Since the Dice were placed fairly unevenly on uneven surfaces, numbering them in an orderly way proved to be a challenge. I had to be sure I didn't miss any while I was numbering, AND I had to make sure I didn't make any typos or duplicate a number, which could have thrown off the whole sequence by causing it to not end properly.
Wow. Congratulations if you read all of that and understood it! Now, what other crazily complicated shit have you guys made? It doesn't have to be UED; just, ideally, something Unreal-related.