Inside Kingmakers: the big Digital Foundry tech interview
Talking animation, AI, performance and gameplay with the developers of 2024's biggest gaming surprise.
Recently revealed game Kingmakers seems to perfectly capture the childhood thrill of smashing together characters from different worlds, with its debut trailer featuring a huge medieval army being demolished by a modern soldier with automatic weapons, a beat-up pick-up truck and command of a helicopter. Beyond that now-infamous plot twist at the 23 second mark, there's a lot going on: third-person shooter gameplay, real-time strategy elements and a massive scale to the proceedings with thousands of soldiers on-screen; it's like dropping a guy from Battlefield into Medieval: Total War.
The developers behind the title are Redemption Road Games, best known for the Road Rash spiritual successor Road Redemption that featured in our retrospective of that iconic series. Following that piece's publication late last year, the development team reached out to offer an interview about what they were working on next.
Here's that interview, which features John Linneman speaking to four members of Road Redemption Games: co-founders and programmers Ian Fisch, Paul Fisch and Daniel Balazs, and programmer Trace Myers. As usual, the text has been lightly edited for length and clarity, with the full interview available via the video embed below.
I want to start on the tech side, as this is Digital Foundry. I don't know anything about the underlying tech yet - are you using an engine like Unity or is this all made from the ground up?
Ian Fisch: We're using Unreal Engine, but there are a few different aspects of the tech that make it special. The goal of this game was really to push this generation forward; this is not something that can run on last-gen, this is a next-gen game.
So one aspect is the rendering. In a medieval battle, historically, you would have thousands and thousands of soldiers, and that's not something you can do with traditional skeletal animation. Especially if you want the kind of fidelity you get from a third-person or first-person shooter. We actually use vertex animation that is computed on the GPU. Every frame of every animation these soldiers have is written to a line of pixels in an offset section that actually tells you where each vertex should be. And there's another texture, that's all the normal values for all of the different parts.
Paul Fisch: Yeah, essentially, like the shaders run the animation for most of the soldiers, that's how we have thousands of soldiers on-screen.
Ian Fisch: Instead of the skeletal animation being calculated on the CPU, it's all vertex animation on the GPU. But it's not your typical vertex animation shader, which you know, maybe has a transition between one or two animations, it is a full fledged blend space: you can have eight-way walks that blend into three-way runs that can blend into attacks. It's a really complex shader with a bunch of custom HLSL code.
You might notice from the trailer that some guys have different weapons and shields, so those are also separate meshes that have their own vertex animation shader to keep them in position. These are also powered partially through Niagara, so every soldier's helmet, shield and weapon are individual Niagara particles and we're communicating via various data interfaces to see the position and rotation of each of these particles. We're also piping in, for instance, an integer which defines the colour, so you can have five teams of soldiers and thousands of different variations all within a very small amount of texture memory for the offset textures. Once once the player starts to interact with these guys, they become skeletal and that way we can have another thousand animations with a seamless switchover.
I wanted to ask about that, because we've seen big crowd scenes before, but the amount of fidelity in the individual animations and the interaction with the player seems next-level. Plus, it seems when you actually attack them, eg driving through the crowd in a truck, you get realistic reactions - this is the main differentiating factor with the crowd system and it does look good.
Paul Fisch: We spent around four years on the tech [to switch from vertex to skeletal animation].
Ian Fisch: You'd think that they'd be vertex-animated the whole time, but as soon as you shoot them, you could make them skeletal. But Unreal needs a few frames to get the skeletal guys into position, so what actually happens is that we make them skeletal when the player hovers their crosshair over them, or when they're within a few metres of the car. We have a pool of 20 guys that we swap [the animation] in and out. It's seamless, you can't even tell - and that's how we can keep performance so good that we can even run on lower-end systems.
Ian Fisch: If you compare this to Ultimate Epic Battle Simulator, for instance, there are a few things different, like the skeletal switching, but also the vertex animation is much more advanced, where you have this eight-way walk blend space happening in vertex, which is not something we've seen before.
I'm curious then, how many of these guys can you get on screen at once? And how much of the render budget is this eating up per frame?
Paul Fisch: Currently we're limiting it to 4000 [guys on screen at once], but technically we could probably go higher if we wanted to!
Ian Fisch: Certainly a lot [of the render budget]. Processing such a complicated shader is not easy, and it shows up, so we forgo various things, like we're not using Lumen, screen-space global illumination or Nanite. We profile constantly to make sure [performance is good], but it's costly.
Paul Fisch: Because they're all vertex animated, they're all actually the same mesh; that's why it's not that costly, because it's highly parallel.
Ian Fisch: It saves on draw calls. The main reason for using the vertex shader is not having to do the CPU computations.
How does the crowd work in terms of AI? Is it like a swarm-based system? How does this actually function in terms of reacting to the player?
Ian Fisch: If you look at games like Total War, they use pretty simple AI for individual soldiers, maybe a flow field type of thing that works well in two dimensions. We want to make a game with the same fidelity as you'd expect from any first or third-person shooter, so [we need AI that can deal with] intricate castles that are four stories tall with 100 rooms. We want pathfinding through three-dimensional spaces; no compromises, we want the real thing.
Paul Fisch: So we have an AI that's heavily optimised, heavily multi-threaded, that can run with extreme detail.
Trace Myers: They actually brought me on because I was working on making my own navmesh and pathfinding stuff in Unreal Engine. A lot of what I've done is make it so that we can make 4000 guys all use navmesh pathfinding at the same time at the same time, which has not been easy. The amount of the amount of [original] Unreal code we're actually running at this point is very small compared to our own stuff, though, of course, we still use the Unreal navmesh. We have all-custom pathfinding algorithms that can run on a completely separate thread so we can ensure that it all gets handed out to the soldiers in a reasonable amount of time. We have our own collision solver for soldiers and cavalry...
On the same thread that we're running our pathfinding, we're also doing multiple clustering algorithms that allow the soldiers to target each other in a really smart way, especially horses that like to target large masses of soldiers as they charge through them. I have a statistics background, so I really enjoy this sort of stuff.
Paul Fisch: Unlike a game like Total War where you're constantly looking overhead and you can micro your units, that's not happening in our game so our AI has to be a lot smarter. The cavalry have to run around autonomously and intelligently to charge the right enemies. You can redirect them, but they move far more intelligently than in your normal RTS.
So given these intricate environments at scale, how does this function in terms of gameplay? How do the enemy and the player work together within these structures? Are there going to be missions that take you through buildings and interior spaces?
Ian Fisch: Yeah, absolutely. The plot of the game is that you're trying to take over the UK in the 15th century... you can choose whether you want to play as England, Wales or Scotland, then you can try to take it over. That involves building up castles and then invading other people's castles in this sandbox kind of way. You'll get placed in a map, and there'll be various enemy forts, and a giant enemy castle a lot of times, and the whole thing will be interactable. You'll go and invade these castles and defend your own, and the enemies will navigate through it with the same fidelity and pathfinding you'd expect from a first-person shooter.
To rewind then, this is the latest attempt at the "straction" genre, as it was called in the late 90s, marrying action with strategy. There are RTS elements here, but there's a clear premium placed on individual actions. In terms of your core mechanics for the player, what are you doing in terms of the way you interact with the enemies. What are the individual battles like from that perspective, more generally what does unit control look like and how do you interact with this game?
Ian Fisch: We focused first on the third-person shooter, we wanted to make it visceral and exciting as the best games in the category, taking inspiration from games like Vermintide and Darktide, The Last of Us in terms of the enemy hit reactions. I'd love to be on that level, where every single body part reacts differently. We really wanted to make sure you're having fun when you're shooting.
The idea is that if you went back in time to the 15th century, you'd be this really powerful force on the battlefield with an AK-47 or M16... but you also have this army at your command, so you might look at the battlefield and send archers, pikemen and mace men to [different places], see that your mace men are being pinned down, so you could go over there with your rocket launcher and M16 on your motorbike and take charge.
Paul Fisch: And you'd be surprised, even though you have all these modern weapons, when 100 horses are bearing down on you, it's pretty hard to fight them with your assault rifle!
Daniel Balazs: So there's a balance of player power versus army power. We're trying to make sure that the strengths and weaknesses of the army still plays a part, with different strength levels and compositions to give more challenge to the player.
Ian Fisch: This is ultimately not a game where you're going to spend all your time in top-down [strategy] view, it's more like you have to issue orders but you're so important on the battlefield that you need to go out there. They're even custom enemies specifically catered to the third-person experience that target you, have big shields or are archers that take cover and try to snipe you specifically.
Trace Myers: We're spending a lot of time to make sure that the AI is interesting, intelligent and engaging.
Looking at the trailer, one thing I'm noticing is how a shotgun is able to break through a shield and splinter it. How are you handling such granular reactions?
Ian Fisch: Once you're aiming at an enemy, they become a skeleton [and when you shoot] it casts a ray that sees what it hits. If it hits the shield, it checks to see what the shield is made of, it's wood, so it creates wooden splinters. The material instance then says that say, piece one of six is broken.
Paul Fisch: And the shield is actually really important because depending on what gun you're using, it might be able to pierce through the shield, if you have, for example, a Desert Eagle. But if you have a little submachine gun, it'll shatter the shield, but it won't go through.
Ian Fisch: Everything has a penetration strength, like, the shields, and the soldiers themselves and your gun, so you can upgrade your penetration on your assault rifle and then shoot through three people, for example.
So I feel like the overarching message here is large-scale crowd systems with granularity that really hasn't been done before. What are you looking at in terms of performance for next-gen consoles?
Ian Fisch: So we have a number of systems here that are meant to mimic a PS5, Xbox Series X, Series S, and we're always running it on those to make sure it can still function.
Paul Fisch: The game can actually gracefully scale to even a really low-end machine, because ultimately, the main performance drag is how many vertices each soldier has, so you can lock them down on a weaker machine.
Ian Fisch: It's really weird because when you think about modern graphics constraints, it's all about your fragment shader, your pixel shader. Who's concerned about a vertex shader? It's like we're back in the PS2 times where the vertex count actually matters.
Paul Fisch: So all our models are pretty much handmade and very optimised for vertex count specifically.
Daniel Balazs: And it's not a console, but it does run on the Steam Deck too!
Ian Fisch: Yeah, we didn't think to do this, but we did a playtest and one person tried it on Steam Deck and said "Yeah, it works fine!"
Are you aiming for 60fps on the consoles?
Paul Fisch: Yeah! We might just do a 60fps performance mode and a 30fps quality mode, or just a 60fps performance mode. If there's an option to play at 60, that's where people should play. I know it's a controversial opinion!
What about the map layout? Road Redemption was procedural all the way through, so is it going to be like that or a mixture of procedural and hand-crafted?
Paul Fisch: Even Road Redemption itself was a mix of both. It's procedural but elements are hand-crafted, that's the best way to do it.
Daniel Balazs: We want to make sure we have a good play-space for the third-person action. Having cover points and interesting points in the level to go into and fight around is important. Some of that can be done procedurally, but some of that you want to do a bit more by hand.
Paul and Ian Fisch (crosstalk): [As a player], you also have the ability to create structures and build walls, to set up choke points that you could hold against an overwhelming force. You can build an armoury which is a three-story structure that now becomes a play space when the enemies invade.
What about the single-player campaign, because it feels like there's a story here.
Paul Fisch: Single-player and co-op are the same campaign; people can join you.
Ian Fisch: The idea is that you go back in time to the 15th century, it's this kind of tumultuous period in the middle of the 100 Years War between England and France. The 14th century has the Black Death which interrupts the war and Henry V restarts it; he wants to take their territory back from France and claim the throne of Charles VI... but also keep the peace [at home]. In Wales, Owain Glyndŵr is the first person to try to gain Welsh independence for Wales in 200 years, and in real life he had this powerful rebellion that was eventually defeated by Henry V.
In Scotland, you had King James I, not James Stewart, the famous King James who succeeded Elizabeth, this was someone [relatively unknown]. He was on his way to France to escape his uncle in Scotland, but he was kidnapped by pirates and sold to Henry V and kept as a hostage in England for 18 years. In the midst of all this, you land from the future and shake everything up. For example, if you join Scotland, that propels James to escape captivity from the Tower of London and join you; you gradually take over and pick up where Robert the Bruce left off.
Paul Fisch: The idea is that you're going back in time and changing history. There are multiple endings that create different types of futures, because you're coming from a dystopian future and trying to fix things; you can see that in the trailer when he time warps back to the future at the end with the giant floating cat.
The interview continues on for another 10 minutes beyond this point, so do check out the full video interview embedded above or available here! Thanks to the development team for their time, and you can learn more at the Kingmakers Steam page.