Last week Valve updated the Source Engine and GMod broke. That’s nothing new but I was totally unprepared for it this time.
First of all my static IP had changed – that meant I was locked out from Valve’s servers so I couldn’t download the latest code. So I had to get them to change it to my new IP. Which meant that I had to wait until it was day time in Seattle. Which is about 1PM our time.
Secondly my build servers weren’t prepared for it. I had a great build system set up – which was working great. But I’d started tinkering with it a while back and never put it back together. Building for PC was easy enough – I could do that from my computer.. but building for OSX and Linux was going to be a bit of a nightmare. (On a side note I ended up building two completely new servers, formatting, installing the OS and compiling on them).
And finally the internal project building tool that valve uses (VPC) changed at some point, so my build process had to be re-thought to take the changes into account.
When I released the patch it became apparent that opening VGUI panels was slow. This was down to calls to the Material function in Lua – which loads a material. The problem was that internally this was calling IMaterial->Refresh(). This wasn’t normally a problem but the Pyro vision stuff added code in which scans a load of directories for “replacement.vmt” on Refresh. Removing the call fixed the problem (but I’m sure it was there for a reason so gulp).