Dear Diary 2

Tuesday, May 9th. 

Got to work late after fiddling with building the release and training 1.23.0 servers from home; ran into an issue with a bit of code that had an untested #ifdef clause which ran smack into my unit tests after I built the server cluster with SSE instructions. I can't build them with SSE2 because the authHost and dbd servers don't have the right kinda processors.


I re-posted the logic behind the scoring algorithm on the forums, only this is a more machine-like version than the one Mo (I think it was) posted a while back. You can play with the numbers on my scoring calculator. Source available here, but please realize the only similarity between this and the game source code is the formula for calculating the results.

Interview with KFS1

Q: Look, it's my bloody blog, I can be as egotistical as I wan't, right?

A: You sure can. But do you need to do it online? An'd won't you lea'rn to u'se apostrophes' first if you d'o? Anyway, I'm supposed to ask the questions not you.

Q: This is a really bad start, you realize that?

A: Yes, now stop asking questions, you're making yourself look a little nuts.

Dear diary

Monday 8th…

Started off with the weekly checkin in preparation for 1.23.0 branch. Took me nearly two hours. I frequently catch gotchas that a few days distance makes really stand out (one of the big advantages of my verbose coding style). Only one this week in the terrian-to-database code. 

Spent a lot of the rest of my day looking at various tiny chunks of code to see if complete systems are doing something: e.g. the problem with AI showing up when its actually down. I finally found a workable reproduction of it. But then I had to pick out the particular nuggets of data I needed to inspect – not an easy proposition while the host is trying to pump data at you. I had to go and hack my RXML toolset to display the data I needed more easily, but then I ran into timing and initial state issues. So I had to go write a little Lua script

— Nuke various objects in St.Truiden

local victims = { 164, 153, 154, 155, 156, 157, 159, 165 }

local cp = strtGetCPByName("St.Truiden")
if cp == nil then error("Oliver fucked up")
 — Use the cp's full Obj ID as a base to work from
 local fullObjID = cp.fullObjID

 — Force a clean initial state

 — Now destroy our list of buildings
 for i in victims
 do = victims[i]
   local obj = strtGetObject(fullObjID)
   if obj ~= nil then

Then I finally managed to reproduce the problem in a controlled environment, managed to work my way around the client to set breakpoints where the data should appear to be arriving, and found that it was. And then being queued for later use.

Posted in the forums a little, did some more work on a documentation project I'm working on, asked Gophur to write me up a recent-thinking overview of the TOE spec so that it's ready for me when I start working on it next-weekish.

And that was pretty much it. Nothing to spoil your week like a weak Monday.

Tulga games announces Darkworld

It's old news, I know, but Bruce pointed this out to me yesterday and I just actually stumbled across it for myself… Darkworld, "an MMORPG set in a stylized modern urban environment inhabited by three rival factions, all fighting for control of the world".

If you're wondering who Tulga Games are, you might know them for such great games as… Well their product line includes Horizons.

Matrix Online free trial


Fileplanet are hosting a 14 day free trial of Matrix Online. Definitely worth giving a look. I’m on Recursion server.

If you played during beta or while WB were running the game, give it another spin. The Sony treatment really suits it.