Fools Rush In - Part Ten

This time we're going to set up the end game. Fleet support finally get around to sending a dropship to pick up our girls, but they set it down a way away from the bunker. Typical. The Angels will have to break cover and make a last dash under fire for the safety of their waiting transport.

So first off we need a dropship model. In the original game the Liandri Angels are brought in by such a vehicle so we'll recycle that one. A quick scan through the static mesh browser gives us this one:

This version has all of its doors welded to it, but I've half a mind to have one of the doors open when it lands so we'll use the version that has the doors as separate models.

Because we're going to animate the dropship flying in to land we have to treat this static mesh as a special case. When we put the bunker in we could just plonk the parts down because they aren't ever going to be anything other than stationary geometry. For the dropship we need the static mesh to, er, move. (It transpires that a 'static' mesh is static because it's always in memory, not because it doesn't move anywhere. That's why programmers are so much cleverer than you or I. Unless you are one, in which case come here, we need to talk about what you choose to call things. And also '0' is NOT a number.)

To move the static mesh around we need to convert it into a 'mover brush'. 'Brush' is a term used to describe a bit of geometry that is used in describing to the computer the way the map looks. They never look remotely brush-like. Unless it's a brush of a brush, I suppose, but I can't say I've ever seen one of those. (No seriously, Mr. Programmer, come here.) A Mover Brush is special type of brush that... moves. They are purple.

When activated Movers progress through a series of predefined 'keyframes'. These are positions that you set in the editor in a sequence. The term originally comes from hand-drawn animation, where the senior artist would draw the main frames, maybe three positions of Bugs Bunny stretching his arm out and then an army of underpaid scrotes would set-to filling in the 'in between' frames or 'tweens'. Unfortunately, we don't have an army of underpaid scrotes but fortunately they were all rendered pretty much obsolete by the advent of the computer. All we have to do is set the key positions and in the game the computer works out how to animate the mover from one to the next. Result.

The first keyframe is Keyframe 0 (grr). We want the dropship to wait here until it's ready to be called towards the end of the game, so it'll have to be out of sight. I chose a point behind the hills in the distance. Here it is:

This sets the dropship quite low, which is fine for hiding it but the game engine interpolates between the keyframes in a pretty much linear fashion. Usually, that's also fine, but as we gain some height and travel across the map, if we don't make sure the dropship clears the terain it'll pass straight through it and look weird. So we need to do height and travel in two stages, firstly we'll set the second keyframe, Key 1 (grr), as a simple vertical lift.

...then we can start off across the map. We'll add a little turn in too, it a maneuvre I like to call Swoopiness, or alternatively, Swooposity.

Gaining some confidence, we can add a majestic arc over the bunker to generate some drama and more turning to give the impression that this big spaceship is screaming in all thrusters blazing in a near-spin. So this next key is where the dropship hovers over its landing site.

And then we gently lower the dropship into a landing...

Let's give it an event name (DropShipFlight) trigger it from a Dispatcher (Eventname: DropShip) and see what it looks like in game:

Keyframe 1...

Keyframe 2 (ish)...

Keyframe 3...

Keyframe 4...

That'll do.

Now, the doors. The doors are added as movers in just the same way as the main body of the dropship. This time we tell them to go where the ship goes by changing their 'attachtag' to the same name as the main body. While we're at it, we'll attach a few Particle Salamanders, similar to the ones we used for the sand storm but with a different sprite, to make it look as though the engines are venting something powerful.

When the dropship reaches the final keyframe, we can trigger a second mover event in the dispatcher. This time the keyframe is a simple rotation for the door.

...so the door opens invitingly when the dropship lands.

This satisfies the basics, but since no-one is immune to feature creep we might as well spice it up a bit. Let's have some of the crew come out and provide some covering fire from the landing zone. Apart from adding a bit of extra action this will serve another purpose in giving a player who has LOST most of her comrades a fighting chance to complete the game.

We can adapt the exact same technique we used for Sarah and Beth, scripting the dropship crew to remain dormant until the door opens and then sending them to a specific actor. We can order them to crouch there too, to give the impression they are trying to take cover in the open.

I've used the helmeted light trooper for the dropship crew, the only model that isn't used for the main NPCs, to add a bit of distinction and show that these Angels have a different role to the ground troops.

Cool. Just because I read about it on Matthias' website I want to try out the 'agentcall' scripting command, so we'll another crewwoman at the foot at the ramp that periodically waves to the Angels as they run towards the dropship. Her script looks like this:

debugmode 11
dormant 1
ontrigger DropShipDoor gotolabel Move1
sleep

:Move1
sleep 10
dormant 0
onevent AutoBegin gotolabel Move1
ontrigger DropshipTakeOff gotolabel Move2
gotoactor Pathnode160
turntoactor SunLight3
agentcall Event_U_Wave 1
call Move1

...and here she is waving:

Right, that's enough for now. We've got the bones of the end sequence in place but I definitely want this part to become the climax of the show. The player should feel overwhelmed and hopeless just as the dropship comes soaring over to rescue her raising spirits until she realises that to reach safety she has to run across open terrain with the Izanagi bearing down. Any remaining NPCs will also play out their own arcs during this finale, but that's for thinking about another time.

For now, we'll cross it off the plan and next time we'll have a closer look at the opposition, the Izanagi.

Comments: on the _blackbored

Next: Part Eleven