After so many years, it’s become hard to remember even for me; but back in 2011 I had released a total conversion mod for Amnesia: The Dark Descent, named White Night. A brand new story from scratch, techniques of cutscenes that were not popular with the HPL2 engine back at the time, and especially moving the ground from 1800s to the modern era, White Night was quite popular and received praise from many editors and journalists. Even before its release, it received best potential from Frictional Games, and after its relase, best singleplayer mod of the year by ModDB among many quality conestants. My favorite praise among all these was Silent Hill in FPS by GameFront, which I never got close ever again. Sad.
Well, since I have not done anything mention-worthy since thos times, only people who know me now are from past and others who ask “can you translate that game to Turkish“. Tanshaydar? Who? That person who translates Amnesia games? is good at some point, because even before that, when I was promoting Amnesia: The Dark Descent prior to its release, I got a lot of negative feedback. (When Amnesia was released and received pretty good reviews, a lot of those people came back as fans.) Anyway. Amnesia: The Dark Descent is the game that made me enter into the world of game development seriously and allowed me to prove myself with White Night.
After this point forward, I’ll talk about what happened until Steam Workshop support for total conversions established and I released White Night Steam Workshop page publicly. For those who are uninterested in technicalities and such processes, you can skip this post completely.
Interestingly, Frictional Games brought Custom Story support for Amnesia: The Dark Descent back in July. And I was like “wow, I should probably pack White Night and upload it“; because when I created White Night, there was no “isolated full conversion” talk, and installing White Night, running it, removing it, running other mods alongside it was an absolute mess. My files would get tangled with the actual game files, can’t remove safely, can’t play with other mods due to rewrite of files, people at ModDB cursed… There was actually this thing called Desura and it would let automatic mod installation support for a variety of games, including Amnesia: The Dark Descent. People who praise Epic Games Store today probably don’t remember it, but Desura was the first true uprising against Steam’s monopoly, and it was truly friendly towards indies. Ah, the good ol’ days… *Cough*, Desura is long gone. And until today, I never got back to White Night.
This Custom Story support thing got my interest. I went over and downloaded White Night, because I didn’t have it on my PC. I gathered all of the related files under one folder and packed it into a Isolated Full Conversion. The 1.3 update to Amnesia: The Dark Descent (gamepad support) broke a lot of old mods like mine and I had to update the configuration files line by line, and tried the game anew. Voice overs missing, subtitles missing, inventory makeover does not show up… A lot of work towards making them work again… And there was this French translation that was done all those years ago but never got into White Night… I got everything working, and when it came to upload it to the Workshop, guess what happened? It’s “custom story” only, no “total conversion” support. All those work for nothing. Well, not for nothing, I uploaded whole thing to GitHub. Like it’ll do something…
While at it, I packed it as an Isolated Full Conversion (IFC), I went ahead and uploaded it to ModDB. And I saw someone wishing it was “IFC ” a few days ago. I went the full “ask and you shall receive” mod. I remember seeing posts complaining about it not working since the 1.3 update over Reddit, Steam, and ModDB forums. A lot of the old mods like mine went broken and some of them were about White Night, and most of them were about the others. With this update, I was able to make White Night work with version 1.5, too.
For those who don’t know, when Amnesia: The Dark Descent was released 13 years ago, Frictional Games released mod tools for everyone to create their own stories. However these would only be run by running the game and selecting them through the Custom Story menu, which would let only adding a few maps and, well, custom stories. If you wanted to change the main menu, inventory, especially changing things like lantern to flashlight, you couldn’t do it like that. Total conversion modifications like White Night would require too many changes to the whole game from scratch and update a lot of configuration files, and “custom story” system would not let you touch those at all. The things I wanted to do for White Night, especially changing the lantern to flashlight, was possible only with “total conversion” system, and so I did. But after 13 years, I was not able to upload my mod to Workshop, because White Night was not a Custom Story, it was a Total Conversion.
If you still haven’t wrapped your head around it, think it like this: take Half Life 2 and add it a custom made new map and release it. That’s a custom story. But now take Half Life 2 and create Portal (or many of the other quite popular Half Life 2 mods back in the day for that matter), now that’s a total conversion. Imagine Dear Esther actually being a total conversion mod for Half Life 2! So is The Stanley Parable.
Same engine, same background processes, generally same system, mostly same assets; but completely different game at the end. And they all went ahead and released their standalone games. Yet I’m still here.
I, of course, thought to myself “anyway, at least now it’s an isolated ful conversion” and then pushed the changes to GitHub and closed the chapter.
Then something unexpected happened, Frictional Games’s lead programmer Luis e-mailed me. He mentioned “adding total conversion support to Steam Workshop and testing White Night to see how it works” which promptly continued to encourage me to upload White Night to Workshop when the update is released.
And I was like “that’d be awesome, I already have it as isolated full conversion state, working with update 1.3“.
And then 2 months passed.
The update came in public channel, meaning you could access it, too. Then I started to preapre White Night for upload. Custom Story logo, Workshop logo, description, author etc. etc. I managed to get around it by trial and error. Then I realized I can neither see the description, nor White Night can choose the language, nor the chosen language is applied. Not a good shape, not at all.
I e-mailed Luis back about the issues. He was aware of the issues. Duh. Who am I to tell him?
Anyway, he fixed the issues, I fixed the issues at my end, and then uploaded the latest version. Looks like working, with only issue that if you select a different language inside White Night, you’d have to restart the game to activate it. Let it be the only issue. Not an issue altogether, just lack of convenience let’s say.
Then some time passed again, and this total conversion steam workshop thing was left in air. It doesn’t get out of beta, I keep my page invisible to public. Luis said that he’d inform me after everything is done, and I left it as it is and continued to work on something else. By something else, I mean my day job, a few pet projects, freelance work etc. Nothing ever progresses. Which one of you put this curse on me?
Anyway, after some time, Luis e-mailed me, “it’s done, update is public, you can go publish White Night now“. I can’t explain how I felt. Being taken seriously even after 12 years, being treated like a human being… Nothing I encounter much.
After the release of the news of Total Conversion support on Steam, I published the Workshop content page. And people started to subscribe to it, and play.
I immediately went to e-mail Luis about the issue, telling him that “I used a function, a lot of it, and it has a callback, and I’d call this other function through its callback. Now these are not working, any idea?“.
I’m a computer engineer and a senior software engineer. But I’m nowhere near this guy. He immediately found the issue at C++ side and fixed it. Last time I did something like that, I woke up at 2am to drink water and realized that my MS Teams client was filled with messages from PM.
Anyway, I tested the update, and it works. The thing I was using is that, I’d change the state of a button (pressed / not pressed or activated / not activated) through the script, and I’d have this button to have a callback, meaning when its state changes, it would call a function with the button’s state as parameter, like “I’ll call this function whenever my state changes” and ‘this function’ is its callback, and needless to say, I abused it a little bit. Most of the places I did this, nothing game breaking; but the story telling elements were out of question, meaning, people who played with the broken build missed a lot of story elements until they got stuck at the elevator. And when they’re stuck, it’s time to downvote.
Having said that, that’s software development for ya.
A memoir on my time in the Defense Industry
When I was working in the defense industry many years ago, I was working on a piece of code that works on the desktop client side and would update the value coming from the server side. I wanted to do a better job and took care of 1) no data from the server, 2) NaN (Not A Number. Meaning it’s not a number data while you are expecting a number) data, and I’d set up the default values in relevant fields. I wrote the code, tested it, pushed the commit, closed the issue. After some time, project lead came to my table and went on me “Tansel, nothing you do ever works” (a dialogue I’ve heard a few times, always resulted with the person apologizing) and I was about to answer “I tested it, I knew it works” and he said “run it and show me“. Then I was showing it and… well… it didn’t work. He reprimanded me saying “You’re supposed to be a developer, you need to think these things through, handle it beforehand“. After he left, I was thinking to myself “I’m sure it was working before, what happened?” and went over the git history only to see that a common library that both server and client were using was updated, and now both were using the updated version. No tests were run, no PRs were opened, no one told me. When I asked the team who did this “did you do the change on X?“, they answered with one of the cozies smile “yeah“. When I asked why did they not open a pull request, why did they not run the tests, and why did they not inform me of a library version update, they just laughed. When I went to the project lead to talk about this, I was preparing to say “do you really put an effort to lead a software lifecycle process this shitty and still find a way to blame me?“, of course I wasn’t able to say it and instead got another backlash “you need to follow these things up” and sent back to my table. No apology, no warning to the other team, no nothing.
This is just a memory from my work experience. I got plenty where it comes from :’)
If (and a big one at that) there are still people who is curious about White Night after 12 years, still wanting to play it, or to feel some nostalgia, you’re welcome to try it.
If you ask me, I’d do a lot of things differently. I’d even go and say I found it pretty bad while testing to see if it still works. Within these 12 years, I also grew up, matured, and progressed. Therefore I’d say White Night now needs to a be standalone game instead of a 12 years old total conversion mod for Amnesia: The Dark Descent, and everything about it must be restructured, from storytelling to the game mechanics.
But well, I’ll need to finish my other works first.
Until that time, take good care.