October was a big month for Dungeons & Dragons.
The rollout for the new edition of the tabletop game continued with the Monster Manual. D&D’s top massively multiplayer role-playing game, Neverwinter, prepped players for one of its biggest events — the rise of the evil dragon god Tiamat, a plotline that ties into the tabletop game. And at the end of the month, Beamdog Games released its third “refreshed” version of a classic D&D adventure, Icewind Dale: Enhanced Edition.
One might think that Trent Oster has had his fill of Icewind Dale and its cousins, the Baldur’s Gate series (they share the same game engine, Infinity). He worked on the original Baldur’s Gate at BioWare nearly 20 years ago. He was the project director for one of BioWare’s most ambitious projects, Neverwinter Nights. But instead of moving on, he’s spent most of the past few years revisiting these beloved games with enhanced editions of Baldur’s Gate and Baldur’s Gate II (which run on PC, Mac, and tablets).
Shortly before Icewind Dale: Enhanced Edition’s release, I talked to Oster about his D&D odyssey. Here is part one of the edited transcript. You can also check out our discussion of updating Icewind Dale II, Planescape, and even other D&D classics in part two here.
GamesBeat: You’re running out of Infinity Engine games to enhance. Are you getting sad about that?
Trent Oster: Yeah, we’re starting to run low. I don’t think we’re really sad about it. I think partly we’re glad that we’re getting near the bottom of the list. But at the same time, I think it comes down to — at this point, we’re pretty mature on what we’re doing. We know how to do it right. As a result, I think the — honestly, the results will speak for themselves. Icewind Dale is pretty stable, pretty awesome. We fixed a lot of issues. It’s working really well.
GamesBeat: When you say you think you’ve gotten good at this, what’s one aspect of dealing with this old code that you’ve mastered?
Oster: Probably the worst, or the thing we’ve gotten the best at, is just understanding the whole process. We have things flow in terms of getting new content into the engine. Being able to find bugs when they do emerge, being able to track them down and go through them. Baldur’s Gate and Icewind Dale and basically all of the Infinity engine games were created in a different time. It was a totally different mindset on how to create games. Later on in my career, when we did Neverwinter Nights and worked on Knights of the Old Republic and Mass Effect and Jade Empire, it became more about making people much more efficient. With Baldur’s Gate, it was like, we’ll throw 50 people at the problem, and the problem will go away. We’ve backed away from that.
GamesBeat: One thing that is still kind of wonky with the Baldur’s Gate Enhanced Editions is pathfinding. Have you gotten better at that?
Oster: We’ve always been scared of the pathfinding.
GamesBeat: Really?
Oster: It’s a question of how much better do you make it? How reliant on the original pathfinding is the video game, especially in the cinematics. A cinematic in Baldur’s Gate basically pauses gameplay, but the rules are still active. It’s using all the game systems. One of our fears was if we fixed pathfinding, we might break a whole bunch of cutscenes. Guys who normally take three seconds to walk a distance might do it in a second and a half, because they actually take a good route as opposed to a horrible one. So we’ve been very hesitant about going too deep in the past.
On Icewind Dale, we actually dug in and said that we’re going to fix this.We’re going to make the pathfinding better. We’re going to find the weak spots, where it falls on its face, and we’ll eliminate those scenarios. We’ll find, essentially, what’s causing a lot of the odd behaviors that annoy people and get rid of those.
Icewind Dale was kind of the first time that we felt confident and really aggressively tackled pathfinding and tried to optimize it and make it better. Now that we’ve done that, we’re going to port those fixes back into the Baldur’s Gate products as well, because it’s such a big improvement.
GamesBeat: I’ve seen moments, especially in towns, where the pathfinding still seems problematic. Do you believe and do have proof that it’s better?
Oster: Icewind Dale pathfinding is much better than it was. There are some specific blocking conditions where — basically what would happen is I would click ahead of my party and one of my people would move, and the instant somebody tried to move through the space he was occupying, it would bail. They would say, oh, this path is no good, I can’t move. They’d just stand there. We fixed that specific scenario. We fixed a couple other scenarios where characters would block each other, even potentially in the future be blocking each other, but interrupt the current path. They’re going to get stuck a lot less.
The pathfinding system itself, as I mentioned earlier — the Infinity Engine stuff is basically built around this concept of “we’ll throw 50 people at it.” The pathfinding is actually based on search maps, which are two-dimensional bitmap images that have — they’re flagged by color. The color shows where you can go and can’t go, where you can see and can’t see. It also affects the sounds that the player makes when they walk. The resolution on those is actually quite low. We’ve gone through, with Icewind Dale, and done a number of fixes and improvements to it, but we’re still fundamentally playing with some pretty low-resolution search maps there.
I don’t think the pathfinding will ever be state of the art, but I think it’s a lot better than it was.
GamesBeat: You’ve mentioned what a mess the code for Baldur’s Gate was when you made is Enhanced Edition. What about Black Isle’s Icewind Dale, which came form a studio that just worked with the engine and didn’t create it?
Oster: We actually ignored the Icewind Dale codebase, mostly. We took our codebase, which was the Baldur’s Gate 2 code, and we ported Icewind Dale over to work in the new code. We went back, in some cases, where Icewind Dale did things a little differently and we had access to that code.
With the Heart of Winter expansion, somewhere along the way we lost access to that code. No one had it. We had to go in and reverse-engineer it and figure out how it worked. They added some new features to the game, some new abilities that characters could use, and some different ways of approaching things. There was no code for that, so we had a couple of guys who were able to go in and look at the content and, from what the content was requesting and doing, and observed behavior in the original game, we were able to back-figure how it was implemented and implement it ourselves.
Along the way we wound up extending the Infinity engine, so now it can do even more things. We’ve kinda got this superset of features now, where what we’re calling the Infinity Bless engine can do everything Baldur’s Gate, Baldur’s Gate 2, and Icewind Dale could do. It’s this crazy amalgamation of what was in the original games, plus all the new stuff we’ve added.
GamesBeat: With the exception of the spells that you could bring over, the items you could bring over, and the monsters you could bring over from the Icewind Dale content, did you have to rewrite Heart of Winter, essentially?
Oster: We had to rewrite parts of the code that supported it. We had to go through, look at the features that were there, and say, OK, how does this actually work? I can see from the data side what it’s trying to do, and when I play Heart of Winter and the original Icewind Dale, I can see what it’s doing here. What’s the right way to do this in the engine? We dug in and we basically built the code from our side to make it work.
GamesBeat: But all of the text, say, that was all there? You didn’t have to go in and rewrite the script.
Oster: Correct. Text was all there. We just had to port it from Icewind Dale format to the new format. Early on, we were able to partner up with, funny enough, a computer science prof who’s a big Icewind Dale fan. He had actually written part of a conversion system to bring the content over to our new format. We were able to kind of assist him, describe out our formats, and he was able to give us a good head start on the whole porting process.