This article came out the other day showing a bug where you could catch up to Tommy in #TheLastofUsPart2. I thought it would be fun to use this as a springboard to talk about why that can happen and how the sequence is made in general! thread kotaku.com/the-last-of-us… via @kotaku
This sequence actually started off as a systemic prototype for a sniper enemy I made way back in 2016. This person was going to live in a number of levels and they would reposition if they saw you too close to them.
Running away they would seek a high perch and their friends would try to route you out to give them a better shot. It felt fun!
Here's a tiny insight into how that prototype worked. I manually placed little points around the map in good spots for the sniper to be in, and rated them based on rays and distance to the player. When you got too close the sniper would run to the point with the highest rating.
So at one point in development, we were trying to make this into a sniper boss fight, and the idea came down from Neil that this would be Tommy. This was pretty exciting, but it also changed a lot.
Tommy wasn't going to die in this sequence, so we had the extremely difficult challenge of creating a boss fight where you weren't going to win, AND one where you couldn't even shoot him.
It's a realistic game so if you shot him and he didn't die, you'd realise straight away that he had 'plot armour' and it would ruin the tension.
There were a ton of iterations of a more open space, but in the end it was just too hard to reconcile all these issues so we went for something more linear. Here's one spliced together from other layouts and bits of library geo.
But eventually we landed on a linear design. Not being a level designer, I picked out a space in the seattle marina and an environment artist, Todd Foster, made a quick blockout of it. I shifted around pieces to make a very rudimentary first version.
There was going to be a large office block on the left with huge glass windows for Tommy to shoot out, and eventually you would run up to the roof of the building on the right where Manny would die in a split second as you ran through a set of doors.
In fact before this you were actually going to take the opposite route, going up those stairs on the right and over the bridge using a movable cart for cover
after a chase through the far-left building you would come back to the original space in the middle for the final fight. I wish I had better footage of this version but, I couldn't dig any up.
So eventually Morgan Wilson, an amazing Level Designer came on board and he's responsible for the final version which really changed to consider pacing much more effectively. He changed some of the beats around, and made the end shootout sequence in the ferry terminal lobby.
So with that, I could focus more on the scripting. This whole sequence is pretty custom, and Tommy has a controller in each beat that will kill the player when out of bounds and punish them if they try to get a shot off at him.
We had to make sure it always felt fair, so in almost all the beats Tommy gets into position before you can get to a good vantage point. So that you can't ever really discover that Tommy is essentially invincible, he will shoot you pretty much as soon as you try to aim at him.
Again we were really worried this would feel frustrating, so we support this with voice lines warning you not to do it (Morgan Wilson made the system for the VO on here). But ultimately the rule was, it had to feel fair so he had to already be aiming at you.
Here's another cool thing. There's a system in here that we turned up to its most extreme - when Tommy misses you, he will intentionally hit a nearby destructible object to try and make him feel as dangerous as possible. and well... it's just cool.
There was also a custom script on the cars for a little custom directional jiggle effect when they got hit. (Twitter seems to be bending under the weight of how long this thread is at this point, so I'm going to tweet it and keep adding)
This was a cool beat also with a lot of custom stuff. Tommy shoots objects near to the player and that lures the infected to you. He's also scripted to be very inaccurate when you're out in the open fighting the infected and not trying to shoot him.
Before that it was just really annoying to be punched into the open by an infected and then murdered by Tommy. We actually do this kind of thing a lot in our games - if we can detect that the player is TRYING to play well, we go a little easier.
Manny is also tuned to be able to kill absolutely everyone here, to make you really like him before... something not good happens to him later. Our work on the buddies came in handy here, but I also force his target to be the enemy that's the closest and the most screen-centered.
Oh yes and there's also a script that's subtly slowing down the animations of all but the closest infected. They tended to bunch up if people ran away so I did this to draw them away from each other over time.
Next (briefly) is the section across the bridge. This was set up so that Manny would get to his spot first and have to cover from Tommy's shots. This I only mention because... it worked first time! Playtesters did not try to charge Tommy down for the most part.
This was of course down to the fact that this mechanic of not charging up has been reinforced up until this point, but still, you never know how people will behave. When something like this works straight away it's such a relief - months of iteration you won't have to do. Woo.
So NEXT finally we get to that lobby fight. Where the streamer caught up to Tommy and grabbed him!
This next section was, to be blunt, a fucking huge pain in the ass to make work, but actually a lot of fun to do. I love doing this stuff. We wanted it to feel like you were just catching up to Tommy, that you almost had him, and that it was your brazenness that gets Manny killed
If this area was more spread out, more uniform then it might have been a little easier to make, but I wanted to support Morgan’s vision for the space and that usually means a lot of tricky scripting.
So this how it works. It’s a ton of regions that cause tommy to retreat to carefully chosen spots. He retreats based on a ton of things. Distance, line of sight, and we actually let you shoot him here too.
We always want you to think you've just grazed him so he has custom hit reactions that will always make him stumble back into cover - so you can't just hit-stun him.
I actually used a set of custom positions, each one defining different distances and spaces where he would stand ground, or retreat. It turns out a lot of the time you actually DON'T want him to run when you're close, it's better for him to stand ground.
Tommy also has this custom shoot controller when he's in cover that allowed us to define the rhythm of his back and forth fire with Manny. Something's broken with the shooting in this build but you can just about see the debug for this controller at the top of the screen.
It would prioritise taking pot-shots at the player, or responding to them if they became too aggressive, but otherwise fall back to this pre-choreographed series of cover and shooting commands that was synced between him and Manny from one place.
At the same time Manny is advancing to try and look cool onscreen, and if you go through the space faster, so does Manny, shortcutting his commands to move forward.
We really wanted to make it feel like you were working together, hunting him down and cornering him. There was a line that got cut from this where Abby would scream ‘nowhere left to run, bitch!’. It always made
me laugh. probably not the intended effect.
You can also really use Manny’s positioning here to move through the space in a variety of ways - learning from our work on the buddies and how if they stay in a more stable position, it’s easier to use them to flank enemies.
You can really snake around this space and Tommy will cut you off before you can get to him (errr.... mostly.. apparently)
We made custom fixes and tweaks for a ton of places in here to fix you catching up to him, (which is why that bug kept coming back - each place was a different spot fix).
QA are so good at playing the game that they managed to keep finding new ways to get up to him. still, when you have to play this sequence 100’s of times to be able to do this? ultimately I think it’s ok.
I the end I think this chunk suffers a little because it’s just not long enough to let the beat breathe. I think it needed to be a much larger space, with more forced route crossing and zigzagging and way way more destructible things for tommy to hit as he shoots at you.
It’s not quite the matrix lobby fight I wanted it to be, but I hope it’s still cool.
I was thinking about this sequence a lot post-launch, because it was just SO much work but that work isn't especially noticeable. We're trying to prevent the player from doing something they've done all game so-far, and have it not be frustrating and that was SO hard.
But ultimately, when you play it you don't FEEL the effort that's been put in like you would with a bigger more dramatic set piece. The point really is to sell a story moment, and I really hoped that had worked...
and then I saw this, and it made it all worth it.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Asher Einhorn

Asher Einhorn Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(