Back from my meeting, which was about project M and represented yet another complete focus shift, because this morning I was knee deep into dragons. Apparently we'll have 22000 kids playing Monkey Tales at a music festival for kids (I wished those existed when I was still a kid) which should be good for the game.
So the other big thing that kept me busy was Divine Divinity – we re-released it some time ago on good old games, taking the opportunity to fix some bugs in it and had the plan to do even more updates on it, but unfortunately the programmer who was working on it left the company, shortly after the re-release and ever since there literally wasn’t any time for getting somebody else back into the code. This sucked, but it was one of those priority decision things and we had other issues to deal with that affected many more people. But now that there actually is some time to look at it, we decided to revisit it.
Imagine then the unpleasant surprise when we discovered that we somehow managed to lose all the changes he made to the code !!! What looks like a fairly ok backup policy turned into an epic fail when we saw that one of the discs that had a big label on it (sort of) “Divine Divinity GOG masters” contained not the 2009 release but the 2002 release. You couldn’t see it from the contents of the disc because the dates were all ok, but that was only because the 2002 files had been recompiled. The actual changes weren’t in the code that was on the disc ☹
Ironically, the list of all the changes that were done was on the disc, as were indeed the binary masters, but it was the wrong source code. It was an accident for sure, and given the circumstances in which we were working then (i.e. continuous crunch and no cash) perfectly understandable, but still, quite unsettling.
Given that putting all the changes back in was more work than anticipated (we intended to just fix whatever problems were still reported), and all our programmers were busy on projects A,D, E & M, I figured I’d take the code myself and have a look at what I could do. I very much miss the programming part in my current role at Larian, so I actually even looked forward to it and thought it was a pretty good excuse to put the excel files on the side.
Opening up the code of Divine Divinity brought back plenty of memories, and as I was browsing through it, I suddenly saw a comment –
//Change 30-05-02 – Lar – It’s my birthday and guess what I’m doing again (see painpoint.h for more on this ☹)
and sure enough, I go to painpoint.h and it says
//Change 30-05-01 – Lar –It’s my birthday and guess what I’m doing – Pain points are objects that don’t appear on screen but if a npc bumps into a sphere around the painpoint, he gets hurt
The message implict in this one was that the crunch on Divine Divinity lasted more than a year because I was writing those in the middle of the night. So I started looking for some more quotes in comments – here are my favorite ones (I actually did a search on a number of curses)
//Quite some work to get this – I’m constantly amazed that all of this @@@@ still works
//Clean up the @@@@ in memory lists so that memory doesn’t go pacman
//So much @@@@ that it won’t fit on my screen
//This way we avoid wasting tilme on all tiny @@@@ Divinity has, and NPCs
//The callbacks don’t work – and I really don’t want to delve into bmg @@@@, so I solved it this way
//To get this f*** GDI @@@@ smooth and flicker free this option has been chosen. Microsoft !!!
//Patch 11/18/02 – Gigantula bug @@@@ed up all XP points. Gains were never edited to anything but 0 so that’s ok
//Well we’re really f@@@ed. What we would have to do here is switch to pathfinding because…
//Someone’s @@@@ up (not mine for sure)
From the copy protection code
//Give this a very casual name in case some idiot releases object files with function name information + entrypoints
//Instruct story to f@@@ up later
//do nothing. The fact that set alignment relation doesn’t work usually @@@s up the story well enough
From the editor
“This is a programmer only function. Don’t even try to figure out what this does. This is f@@@ing D A N G E R O U S. Sure you want to perform the ShroudSync ?”
//TO DO que de @@@@ is da hier allemaal
And my favourite one:
//Swen, all this @@@@ was carefully tuned, so DONT TOUCH IT ! ;-)
which I believe had some a bugs ☺
We clearly had a foul language problem but there were only three of us programming the original Divinity and we had a lot on our plates (for Rat & Moonlight, pun intended), so I guess we can be excused.
The funny thing is that nowadays I get upset when I see our coders write comments like this, so having done this run through code I worked on, I feel kind of guilty now – I forgot how bad I was. Made me realize that what I tell others not to do are often things I did myself, so it’s not really fair.
A couple of nights ago my counterpart & me were discussing our children, and I told her – when my daughter hits puberty, I’m putting her in a room very high in the house so she can’t escape at night & I’ll make damn sure there’s no ladder close by. Having been confronted with my many sins as a coder and thinking about how I’ve cursed at coders for doing the same thing, I think it’s probably best I buy a big and stable ladder for my daughter so that she doesn’t try the rope thing.
Anyway, I’m going to spend some time now trying to get Divine Divinity working in 1600x1200 again. There’s a traffic jam where I need to go so I can spare the time.
Till next time.