One thing I'm learning by fighting with a different project that has nothing
to do with UE3: modern 3D graphic APIs are really friggin intimidating.
I'm really growing to hate both DirectX 9 and OpenGL 2.0, which is
unfortunate considering there isn't really any part of UE3's renderer that
doesn't concern itself with DX9-level tech. This makes me grumpy. I feel like
the Unix equivalent of those two old dudes in the balcony on the Muppet Show.
(If you want the Apple/VoIP patch source code, it's on the mailing list, but
not in CVS as far as I know. Check the openal-devel list archives at
I got ahold of a retail Mac disc for this, and the damned game is packaged
in some arbitrary installer format. Building a new installer around these
discs is probably impossible based on current information, and I don't
intend to reverse engineer the OS9 installer.
For now, you can still cobble this together yourself on MacOS (install
in Classic, build the OSX version, copy the right files where they should
be)...I'll figure out a less stupid solution later.
(It was a driver bug. An Apple engineer squashed that mofo in a heartbeat.)
I spent some time fighting with vertex_array_range. We don't cache static
data at all in UT99 at this point, so I figured the brute force method would
be worth a try. Allocate a big-ass buffer, point glVertexPointer() at it,
and treat it as a sort of push buffer...instead of using a small range and
pushing various bits of it to card, we do our work in that range and memcpy
the relevant bits to the next bit of available VAR space, which is feed to
the card. When we hit the end of the VAR, we start at the front again,
assuming that that bit was used many many frames ago. If we were really
smart, we'd flush the range when wrapping around, but that could only result
in a slowdown, and is totally worthless, as long as you have enough VAR space
to stay ahead of the GL.
In practice, this actually resulted in a slight (less than 1fps) slowdown
in my benchmarks. Which frustrates me to no end. I guess there are no
magic bullet GL extensions without significant work, although I really feel
like I spent a lot of time on this for no benefit.
I think for now I'll just disable the VAR path and focus on CPU optimizations
ala Shark before returning to this again. I'm really not relishing the idea
of diving into 5-year-old code to figure out how to seperate out the static
geometry and redesign the rendering abstraction to support this.
Unreal Tournament 2003:
There's an exploit in the ut2003 network code, so here's a new build.
The Linux one has about a million changes over the stock 2225, since it's got
all the MacOSX work on top of it. Consider it beta. The Mac version has one
or two fixes, so it's worth updating.
Unreal Tournament 2004:
Patch coming soon for Linux/Mac. The 3336 patch you're hearing about is a
beta. Generally we don't build every beta for non-Windows platforms unless
it looks to convert to a final build.
Linux dedicated server work starts. In relation to AA, Spearhead, and
Breakthough, the codebase is...well, unrecognizable. They changed a LOT
of code. We'll see how this goes. Should-be-easy projects that turn out
to be a lot of work is becoming a recurring theme in my life recently.
Call of Duty:
This is a 1.4 server with an exploit closed. Admins should all upgrade: http://icculus.org/betas/cod/COD-lnxded-1.4-07252004.tar.bz2
The latest and greatest United Offensive Linux server shows up here first: http://0day.icculus.org/cod/
Postal 2 Share the Pain:
Postal 2 for MacOS X is now gold! Details on how and when you can get a
copy are forthcoming. Stay tuned for other surprises, too.
2.2.0 for Linux and Mac will be coming along shortly. There's a minor bugfix
on the Windows side that we're waiting for before I get this wrapped up.
I went to the polls and all I got was this lousy president.