How Dark Souls PC Became Awesome
Peter "Durante" Thoman did what FromSoftware wouldn't.
Leading up to the release of Dark Souls: Prepare to Die Edition for PC, many expected a bare-bones port after comments made from the developer indicated not much effort was going into it. Players later discovered the PC version had a fixed rendering resolution of 1024x720, but was unlocked on the day of its release thanks to Thoman's mod (which can be accessed through his blog).
Dark Souls now looks prettier than ever.
Thoman is currently working toward a PhD in computer science at the University of Innsbruck in Austria. He's not much of a modder, and hadn't attempted anything like the Dark Souls patch before. He has created tools for improving games and contributed to some open source projects, however.
I spoke to Thoman about his experience creating the mod and the reaction from fans so far. He also wanted to remind people to read the Readme.txt included with the fix. He says he gets around 30 "error" reports a day by various channels that are about issues covered in that file.
How long did it take you to create the mod from start to release?
I posted something about 23 minutes in the first rush of excitement, and the Internet of course ran with it. It's true in a sense, but there's more to it. When the resolution lock was confirmed about a week before the release, I started thinking about and researching what exactly would be involved to fix it. I spent around six hours or so setting up a program that would allow me to keep track of all the Direct3D calls made by some game, and manipulate them as desired. I tested this on The Witcher 2 to get a feeling for how a game's rendering actions are reflected in the log files produced by my tool.
When the game was released, I launched it and immediately tracked a short period – just a few seconds – of rendering with the tool. Then I analyzed the (massive) log file that was generated and searched for the most likely candidates for the primary rendering surface. After 23 minutes and about as many testing cycles a first version of the override was working and I produced a screenshot. However, while the rendering resolution was adjusted, it was still very blurry due to additional scaling and suffered from numerous issues.
Five or six hours later I had something that I deemed release-worthy – the blur was fixed, and users could set their desired resolution in an .ini file – and that became version 0.1.
In the simplest possible terms, how does the mod work? Why wasn't FromSoftware able to do something similar themselves?
Most Windows games use Microsoft's DirectX interface to render their graphics, and they access that interface through a dynamic-link library (DLL). My fix replaces that library with its own version that provides all the same operations as the original. Most such operations are simply forwarded to the "real" system DLL – which in turn communicates with the graphics driver – but a select few are manipulated to e.g. provide a larger rendering surface than the one actually requested. Then you have to keep track of that surface, and when the game uses it again other parameters (like the viewport projection matrix or scissor rectangle) have to be adjusted to match the changed resolution.
As for the second part of your question, I am absolutely certain that FromSoftware would be able to do this by themselves. I can only speculate on why they did not, and the most likely reason I can come up with is that they wanted to (or were forced to) minimize the required testing/QA time for the port.
Has Namco-Bandai contacted you about the mod?
About how many downloads have you seen since your released the mod?
Around 150,000 so far. That's with all five versions combined. The amount of traffic on my domain during the first weekend was more than all of the two years before it. Some people suggested putting up ads on my blog or the download links, but since I always complain about advertising I decided to put my money where my mouth is and kept it ad-free.
I'm wondering about the amount of donations you received. Can you give some context?
It certainly was more than I expected on the first day, but – just like game sales often do – it has slowed down extremely quickly after that (which I did expect). On the fourth day after the release I received 25€ in donations, which is much less than on the first and second days. Overall so far, roughly 0.15% of the people who downloaded the fix have donated.
Seeing which countries the donations come from is really interesting to me. Many are from central and western Europe, as you would expect from a PC game, but there are also quite a few from Russia. North America is well represented of course, and there seem to be a surprising number of Dark Souls fans in Australia. I even got one donation from Indonesia!
Oh, and before I forget it, thanks a lot to everyone who donated! It's really appreciated, and it helps motivate me to continue improving the mod as the coding gradually moves from "novel fun" to "work."
Your mod is directly responsible for some people deciding to buy the PC version of Dark Souls. How do you feel about the reaction so far?
As a huge fan of FromSoftware since Demon's Souls, and a proponent of the PC as a gaming platform, it would make me happy if the game sells well. I hope it motivates Namco Bandai and other publishers to invest just a little bit more into future PC versions of their games.
How much longer will you continue to update the Dark Souls PC mod?
I still have a huge list of things I want to do. And an even larger one of user requests. I'm not sure if all of them are feasible, but I think I'm set for a few weeks. I plan to make everything public as an open source project at some point in the future, so that other people can contribute and maybe use it as a base for modifications to other games. Currently, if you try to search for code examples in this particular area, almost everything you find is related to cheating.
What's next for you?
I have reserved one of the 100 early DIY prototype kits of the Oculus Rift, so I'm really looking forward to playing with and coding for that come November.