TSANCHEZ'S BLOG

Jak And Daxter: The Lost Post Mortem

By Travis Sanchez

Introduction

It’s been a long time, and many of the details have faded from memory, but hopefully someone finds these thoughts useful.

Jak & Daxter was a long road to gold. From the start, there was an idea that ~50% of the game would take place in the air. This is something that we hadn’t done at HIG before. While the previous Ratchet titles had “rail shooter” giant clank segments, there was no free-range flight involved. Free range flight imposes a lot of challenges, many of which we only partially solved by the end of the project.

Lets start this off with a nice video that shows much of what I’ll be talking about. This is the flight training level of Jak & Daxter: The Lost Frontier:

This level goes over the basic motions, the special maneuvers, and combat using the machine guns.

Player Controls

From the start, our gameplay programmer Alex Hampton worked on the player controls for the game with the assumption that we wanted an arcade experience. This wasn’t going to be a sim, or anything close to it. To get a feel for what we wanted, we looked to Microsoft Game Studios’ Crimson Skies, and Access Game’s Ace Combat X.

While trying to reproduce select design elements from those games we came to some interesting revelations. For starters, we were having issues getting the right feel for flight maneuvering. Flying a plane just didn’t look or feel right on screen. That dawned the first counter intuitive leap that setup the world we were making. Arcade like flight isn’t achieved through flying a plane, but flying the camera. Our final player controls actually put the player in control of the camera, swerving and dodging through space. The plane became a completely reactionary visual element. Its motions controlled by secondary characteristics of the camera’s motion. By tilting the plane up, down, and side to side, we can fool the player into thinking the plane is what is moving. By adding some inertia to the cameras moves, while quickly rotating the plane we make it feel like the plane is moving before the camera follows. By letting the plane drift opposite the motion direction, we make it feel like the camera is chasing the plane while at the same time making it feel like there is more camera space in the leading direction to where you are going.

A “prop” of a plane poses a new challenge, how are you supposed to shoot anything? Again, it’s kinda cheating. Our player is actually shooting from the camera. Buy using some fuzzy aiming selection for the autoaim, we select targets near enough to the reticule to hit. As long as the targets are in front of our puppet of a plane, we can direct the bullets from the plane’s guns directly to the impact point. This gives the feel that the plane is shooting, while providing the user friendlyness of having the bullets properly sighted from the camera and not the plane. Combine those guns with a variety of lock-on missiles, and the sky pirates will rue the day they crossed you.

Enemy Planes

Now that we have our hero flying around, he needs things to shoot. After many iterations between Chris Matsumoto and I, we ended up with a variety of aerial targets to shoot down. Again, like the player, much of the enemy plane’s flight was faked. It took many mistakes to get to a working product, and the final enemies you see in the game are very different machines from what was originally planned.

The origional enemies were planned to be a lot more “interesting” than the final results. They had planned maneuvers, like loops, dives, rolls, and split formations. Much of this didn’t end up working out from a gameplay perspective. 550% of our testers found that it was too easy to lose the enemy, even with radar. Unlike a ground mission, or one of the enclosed tunnel flight missions, the open-air hub zones couldn’t provide enough information for an internal map. It’s hard to know how high everything is from the ground, or exactly how far you are from some cliff face. You can’t easily measure out how far you’ve moved in the past 20 sec. So, people couldn’t keep track of where they were, or where the radar was telling them the enemy was. So, early on we had to abandon the idea that the enemy planes would fly around just like your plane. They had to be much smarter about where they were in 3d space. Maneuvers ending up being the oposite of what we needed, as they sent planes to a vertically different position (something our radar wasn’t good at showing) causing targets to quickly become un-locatable. Even the non-vertical maneuvers became frustrating, as the PSP’s analog nub didn’t provide much fidelity to your motions. Any amount of dodging on behalf of the enemy resulted in many missed shots. In the end, our planes tried to seek out the player’s vertical height, and tried to fly in straight lines. As a final move to help the player, the enemy planes would also boost ahead of the player to get in front of him before turning around to shoot him head-on.

With all the behaviors working, we still had the technical challenge of making them behave properly in the open-air hub levels. Due to poor planning, and poor scheduling, the navigation system was never really flushed out till the end of the project. Through a bunch of trial and error we ended up with a two-pronged approach. First off, the planes had a dumb obstacle avoidance routine that incorporated basic steering behaviors. This let the planes mostly avoid stuff in their way. The stuff they couldn’t avoid, they could “slide” over with the appropriate facing so that it didn’t look like they were stuck on something. That alone wasn’t enough to get them navigating the open space though, as there were many things like mountains that would get in the way and couldn’t be steered around. With the help of Ken Strickland, we got the planes navigating a waypoint node graph for the overall path. Each open-air level was filled with many spherical nodes, connected in a graph. Each node represented an area of mostly open air, while each edge represented an open corridor in the volume between two spheres. Enemy planes could meander around inside the spheres, and take corridors between spheres. Using a pre-calculated connectivity list, the planes could quickly plot paths along the corridors to lead them around the larger obstacles in the level.

All the targets in the world isn’t going to pose much of a challenge though, so we had to make things shoot back at the player. The biggest problem we’d see in play testing ground levels was the lack of use of the ground-strafe controls in our games. Player’s never really got ahold of the idea that they could move side-to-side to avoid enemies. The air levels forced the same issue again, as the hero’s plane can’t slide side to side. What this means in either case is that the enemies have to let you stare right at them and shoot without retaliating. On the ground, you can achieve this with long tells on the shots so you know when the enemy is about to fire. You can place the camera above the action, so that it is easy to tell the distance a shot is from you. And, you can have slow shots that you can dodge when you see it coming. In the air, that isn’t possible, nor is it fun. We chose to go the route of having everything shooting you almost all the time. With all the faking going on, everything was allowed to shoot in a fairly large cone around their facing direction. They used that leeway to target a common location near the player. That location was on a spring that slowly brought the shots closer and closer to the player’s plane. The player would see dozens of streams of bullets narrowing in on them. That target location was also setup to get pushed away from the player whenever they moved their plane. The result is any dodge like motion of the controls would send the target point off in the opposite direction from where the player dodged. The player’s plane also had some maneuvers like somersaults that would also cause the enemy to lose targeting. Those maneuvers would also cause missiles to break their lock.

The long road

Jak & Daxter the lost frontier was a long road to publication. From scheduling issues and attempts to get even more content into the game, to some very hard to fix bugs, we all put in a lot of effort in the last months of the project to get it shipped. J&D has many minigames and side quests, but more were planned. It had more hubs planned, but we settled for making some sections more linear. We worked in a streaming content system to the game that attempted to remove the need for the player to ever see a loading screen, though the plane-to-ground transitions ended up having to take the controls away from the player as we swapped out the different classes of content. In the end, everyone at High Impact Games hopes that Jak & Daxter: The Lost Frontier is a game you’ll enjoy.

Copyright © 2002-2019 Travis Sanchez. All rights reserved.