CMake: The worlds most obtuse build system

I used to think autoconf and automake were bad. I have seen the light. Forgive me, Gnu, for I have cmaked :(

Ok – so – it’s possible that CMake is actually quite dandy. But their documentation pretty much consists of “Buy our book, Mastering CMake”. Sadly, I have not yet earned the status of Padawan – I’m not ready to spend $$$ on mastering.

There’s the minor matter that CMake doesn’t provide support for pre-compiled headers or forced includes. The official line being “not every platform supports it” and “we’re not making much money from this”.

Right now I’m arm-wrestling with how to add specific compiler flags to specific executables and libraries only. set_target_properties(target PROPERTIES DEFINE_SYMBOL symbol) does not work.

Hey Ramp, I need a favor…

Just making a mental note to ask him as soon as he gets in :) I’m going to get with Rafter and Motor later about making a better capture-oriented video, one that makes a bit more sense in terms of the team effort that’s actually behind it. And I need a little something from Ramp in order to do it.

It’s nice to finally have my coding-foo back again. I got my head around the SSE instruction set (well, ok: I still don’t really get shuffle). And I might finally get around to re-implementing¬†non-temporal write operations in some of the cell host vis-list management systems because I no-longer have to do any of my development/testing on a non-SSE boxes.

Every update, the cell builds a big list of all the vehicles that might be in your vis list and then double-checks that against your previous vis-list (sort of; don’t ask). I need to figure out the optimal ordering for re-ordering the sequence of events to try and reduce as many cache evictions during the process as possible.

It puts the data in the bucket…

Matrix4f* Multiply(Matrix4f* a, Matrix4f* b, Matrix4f* d)

Ok, this code could immediately benefit from a good “learn to const, wtf” slapping.

 Matrix4f* Multiply(const Matrix4f* a, const Matrix4f* b, Matrix4f* const d)

Ok – that’s still confusing. I know it’s petty, but there are times when I really wish that C++ would borrow from The Almighty Wall and allow the odd tidbit of syntactic sugar (as opposed to syntactic vomit).

Matrix4f& Multiply( (const Matrix4f* a, const Matrix4f* b) =>(Matrix4f* const d) );

Matrix4f& Multiply( (const Matrix4f* a, const Matrix4f* b) ->(Matrix4f* const d) );

Matrix4f& Multiply( (const Matrix4f* a, const Matrix4f* b) :>(Matrix4f* const d) );

Matrix4f& Multiply( const Matrix4f* a, const Matrix4f* b => Matrix4f* const d );

In perl, ‘=>’ is treated specially inside certain types of lists, being treated as a substitute for “,”. In this case, you could put constraints on it such as: It may only be followed by non-const parameters.

But I’d also like some way to indicate that the return value is one of the input parameters; in this case it’s there so that it fits nicely with operator= etc.

I know C# has “in” and “out” specifically it needs to be punctuation. But then C# already reduced the amount of punctuation over C. (I really don’t understand why C++ hasn’t gone to replacing “.” and “->” with “.”; is there actually a case where using the wrong one isn’t a compiler error???)

Login Queues

Just got done adding a Login Queue system to the auth host (I have to add it to Playgate too, but it’s the weekend and it’s late and I’m gonna do that later).

The nice thing about working on this particular piece of “sigh” was that I got to work mostly in Visual Studio. I used CMake to rustle up a quick .sln for the host files and the code I was writing was isolated enough that it didn’t run into any cross-platform issues.

Producer’s reaction to complex capture rules


This, my friends, is a victory. Complex game rules are invariably bad. There are times when they are acceptable.

Our game has historically kept the player in the dark about all kinds of things. For some it was the je-ne-sais-quoi of the game. Knowing wtf just happened was a mark of a pro. Everyone else went to Planetside or WoW.

We are a PvP game, we’re about fighting and stuff. Capture – and victory – are bragging mats. Captures are mean’t to be truffles, not tic tacs.

1.31 Capture Testing

Had my head buried in server code for a while so I haven’t really seen much of 1.31. So I was in for a few pleasant surprises when I went into the game world to test the preliminary guise of the new capture system, and I had to share :)

It’s taken me a lot longer than it should have – there have been countless distractions. But if I’m really honest, I was also struggling from a bit of writers block. I’d done a mental back-of-napkin design of what I wanted to do in the first minute of Ramp and I originally discussing this. But when I actually sat down to code it, I got mired in “how it works” – where “it” is the old, legacy system.