Recalling the Leviathan Axe
~After spending the last several years working on God of War, I was trying to figure out what to do with a sudden surge of free time. After talking about it with several other designers on the project, I thought it might be nice to just ramble on about some of the stuff I spent the last 5 years of my life working on. So full disclosure: there's a good chance nothing here will be of interest or use to anyone...
With that said, the first mechanic I wanted to talk about was something that ended up being a pretty unique and well regarded mechanic - recalling the Leviathan Axe after throwing it. It was also one of the earliest gameplay/combat prototypes that we tackled.
Despite knowing all the way back in 2015, maybe even 2014, that we wanted to do this mechanic, we were still putting the finishing touches on it months ago. It really did take several years of tweaking and noodling and messing with it. Special thanks to George Mawle for dealing with a ridiculous amount of obscure and difficult code requests and features for the Axe recall alone!
The basic functionality is super simple -- once the Axe is either in flight, stuck in an enemy, or stuck in the world, you can push triangle to call it back.
Its original purpose was really just functional. We were certain we needed a ranged attack, and before we attempted having the Axe fire some kind of projectile, we wanted to see if we could just throw the the weapon itself. Hitting an enemy with a solid / large object is just more satisfying than using a projectile/particle effect.
We realized pretty quickly that in addition to some strong fantasy fulfillment, the mechanic also came with some additional game play benefits we weren't predicting. One of the first things we realized was that hitting enemies on return was basically mandatory. It wasn't only what you would intuitively expect, it was something that was both satisfying to do on purpose and have happen accidentally.
The first of many little helper features that we added was to tweak the return path so that it would specifically move through enemies in order to ensure that it hits them. We used a pretty tight angle to define when the Axe should do this. (Although there is a special pommel late in the game that opens that auto-seeking behavior to 180 degrees!!)
The animation for the recall actually went through several versions. The first version actually required the player to be static while it returned. And, the animation was more in line with the old god of war in that we went for a bombastic, high profile (hand in the air), facing completely forward approach.
After we moved on to an additive animation that would allow the freedom to navigate, block or evade, we reworked the animation aesthetically quite a bit. The first thing we did: make it feel more casual and less stressful by simply lowering his arm. The second thing we did was rotate Kratos towards the camera, in order to play into the camera a bit more so you could see more of his chest /upper body and not just his back. We also really emphasized both the initial recall moment and the catch moment with a few specifically placed frames and 0 tween time.We wanted the beginning of the recall to feel weighty, almost like a mini-attack, something forceful. For the catch, we wanted to make sure that it feels strong, but we were very careful not to make it feel like Kratos can't handle the Axe or that it's too heavy for him. We had to strike a very specific balance so that the catch feels casual, like he does it all the time, but still carry some momentum through so you can feel the Axe's speed.
A lot of time was also spent tweaking the arc and timing of the Axe flying back. Originally we simply set an acceleration/max speed value and returned the Axe in a straight line to his hand. This was problematic for a couple of reasons:
- The further away you were from the Axe, the longer it would take to get back to you. This was extremely frustrating in combat.
- It traveling in a straight line often meant you didn't see it.
And, to be honest, the linear path just didn't look very good. After much noodling with George, we settled on a nice curve from the initial recall location to the hand. This increased the chance you would see the Axe return, as well as just looked nicer. There were also quite a few tricks done so that the Axe spins cleanly on the way in. Only in the last second before it goes into Kratos's hand does it rotate itself around correctly. Attempting to rotate the Axe in flight made it look too messy/out of control.
For the speed issue, we eventually came up with the idea to use a hard time-out in addition to a base speed/acceleration. The idea was to make sure that if the Axe was close to you, it came back a little bit faster but was still visible. But, if that distance/speed was going to take more than 1.5 seconds, we would simply increase the speed to whatever was necessary. This allowed us to easily control the max possible time that the player would be spent waiting for the Axe.
One of the more subtle little mechanics (that was notorious for breaking numerous times during development) is a wiggle the Axe does before it rips itself out of an enemy or wall. We wanted the Axe to feel like it was really wedged into the surface. In order to do that we created a programmatic wiggle that happens for the first 0.1 seconds before beginning its return flight. It used to be much longer, but we started getting complaints that the Axe felt like it was taking too long to come back. And strangely enough, it actually didn't matter if we sped up the return to compensate because it was the added delay before moving that made it feel longer. Some even had the perception that their inputs were delayed.
Polish & Presentation
On top of the movement and animation for the recall, we added a few little things to really polish it off. For sound, we attached the emitter to the Axe itself so that you can actually hear it come closer. The sound itself is also actually tied in with the rotation speed of the Axe. And there are actually 3 separate rumbles used on the recall -- one for the initial triggering, one for the flight, and one for the catch. (Side note: I was actually thinking of doing a blog post solely on rumbles, since I can be pretty obsessive about them!) Lastly, a little camera shake always helps things feel strong.
Despite how much work it took, this mechanic might be the one I'm most proud of in the game. Of course we took some inspiration from a certain Marvel character... but from a game play standpoint I feel like it really did open a lot of doors we weren't expecting.