3/27/2004

03-28-4 - 1

03-28-4

I just made Galaxy3 work nicely with multimon and laptops and such. My home dev environment is now a laptop at 1400x1050 hooked up to a sideways LCD at 1024x1280. The sideways LCD is the primary display, so that throws off the vast majority of 3d apps. In fact, I can't think of any 3d app that runs right on my box. And - it's so easy to get it right. You just enumerator the adapters and pick the one that supports all the caps. If they both support all the caps, use the desktop monitor. Then you can get the monitor rect and put your window there. Then if you want to go fullscreen, you should default to using the desktop rez and refresh rate. That gets you all good for laptops and LCD's, which are best just running at their native rez and refresh (which presumably the desktop is).

3/26/2004

03-27-04 - 1

03-27-04

I've started keeping all my files in perforce. So far it causes me only pain and helps me not at all.

I'm convinced now that game industry crunch is caused almost 100% by bad management. And my "bad" I don't mean "hasn't read Peopleware" bad, I mean completely irresponsible and juvenile bad. Basically what happens is this : up until 3 months before ship, management pays very little attention to whether the game is actually getting done; the only way they participate in the process is by diverting people onto tasks that aren't really important, or onto personal fetishes, or needlessly changing major facets of the project. Then, when you get within that 3 month end period they final go "oh shit" and get responsible and start making the people in the pit actually finish it. Now, I'm not saying the people in the pit are all responsible and good, they will also screw around and not wrap if left to their own devices - but the point is it's not their job to supervise themselves! If the people on the floor are not doing solid, directed work towards wrapping the project - it is the fault of the management.

It's tough being a lead sometimes, because I want to be all friendly with my team, but sometimes they just really fuck up and do stupid things or waste their time on unimportant tasks that they weren't supposed to be doing. Then I have to lay down the law, and noone likes that. It would be easier if it were just a situation of "do what I tell you", but it's not, I try to encourage some freedom and let people figure out their own issues, and it's tough when you have that mixed with straight task-mastering. People can take direction very comfortably when they don't feel invested in the work at all, but when they become personally attached to the work they become very resistant to direction.

Sadness. My Galaxy3 meshing stuff was probably the best in the world a few years ago (it may still be, even though I haven't really touched it). In 2001 I could render models that looked almostly exactly like the 1-million-poly original, but with 1-4k polys. There's no great invention there, it's all obvious stuff, VIPM + normal maps = good. But noone did it, still noone has done it, though we are getting very close finally with Doom 3 and all the copy-cats. My PPMZ and LZP and WaveCode coders were the best in the world at their specialties, but were never really used for anything. Then I stop maintaining them, and they get old, and they're no longer the best, and so now they're just totally useless historical curiosities. The code isn't even clean enough for them to be good learning platforms.

3/24/2004

03-25-04 - 1

03-25-04

I hate it when ordinary people use computer or technical terms out of context conversation.

3/21/2004

03-22-04 - 1

03-22-04

I went to the Indie Game Jam over the weekend with Ryan and Thatcher from Oddworld. It's a 4 day event, but we just went for 3 days, because we worked right up to it and have to resume working again. The theme this year was Physics, which was very tough. The first day I really struggled; I was tired from over-work, and couldn't really get any good ideas. The last day, I finally found a fun game mechanic and got into a good flow.

3/09/2004

03-09-04 - 2

03-09-04

Laptops should use those solid-state piezo-electric speakers. The entire back face of the LCD should be the speaker surface.

I've gotten so out of shape recently that I jiggle when I jump up and down. I hate the feeling of that. When I was in high school in Texas I was a real porker, and when it would get hot and humid in the summer my rolls of fat would get all sticky and sweaty, and I would run my finger down the groove of soft flesh to wipe out the dewy warm moisture and wet linty gunk that would collect inside.

03-09-04 - 1

03-09-04

My rants page is a half-ways house on the road of productive internet searches. A dark back alley. Perhaps you started your search looking for something useful like compression information or 3d algorithms; you went searching Google, ignoring the call to check a blog, and started browsing pages, so bravely ignoring the pop-ups offering live nude girls; somehow you stumbled onto my page, and perhaps you clicked around a bit in the crufty old dusty un-loved tomes of technical trivial; then, feeling bored and frustrated, you saw the Rants link and decided to see what it was, and here you are, getting the blog-trivia-date-formatted fix from your internet back alley pusher.

3/07/2004

03-07-04 - 1

03-07-04

Grand Theft Auto was all very successful and what-not, but can you imagine if they had actually given the game a good story & character development? I mean, nobody even remembers the name of the guy you're supposed to be, much less anything about him - they could have had licensing and movie deals out the wazoo.

Computer software is a weird endeavor. The vast majority of work we do is to make it easier to do work on computers. It's sort of like a car mechanic who works on his car all the time so that he can drive it to the auto part shop.

I like to work with people who will do a good solid job without being watched and ridden all the time. I like people who will do solid productive work even if no tasks are assigned to them. I like people who are constantly keeping a list of tasks in their head that they wish they had time to do, that they will do when they get a day free.

3/06/2004

03-06-04 - 2

03-06-04

I need to be able to submit perforce changes to a personal "purgatory" area. Then I could check those same files out on my machine and start making unrelated changes for new work, while the queued up files would still be in the purgatory area, not in the main depot. Then I need to be able to do a full codebase build on a network appliance from the state of my purgatory submission. If that goes through, then my queue is applied to the main depot. If not, I can apply fixes to it. In the mean time I was able to start new work on my main machine as if the change had been submitted.

03-06-04 - 1

03-06-04

If you're managing a tech group and one of your programmers shows you the "cool project" they've been working on at home, tell them "that's nice", and *walk away*. By no means put it in your code base! It's hard to resist when someone shows you something that's "already working" and cool and has a sexy demo. But resist you must! Just because it's working in a demo doesn't mean it will work in a real production pipeline, or that it is bug-free, low in memory use & CPU use, etc. etc., in fact the whole technique may fall apart when stressed (eg. PSM, Stencil Shadows). BTW, I used to be the *worst* offender ever for this type of practice. At Eclipse and Wild Tangent I would work my ass off late and night and on the weekends and come up with crazy crap, and then show it to management and get it snuck into the code base. It was a lot of fun, but it certainly was not the best way to serve the engine. On the plus side, I got to learn Terrain LOD, VIPM, curved surfaces, etc. etc. none of which were really needed for the engine. If I were managing the old me, I would tell old me that it was great stuff, and keep up the learning process, but keep that shite the hell away from my code base. And if you do sneak it into my code base and then tell me "it's already in", I'll tell you to get it the fuck out and don't sneak it in without asking me ever again.

The proper way to make a profiler (for CPU use and Memory use) is as a "two-way" hierarchical view. That is, you have a normal hierarchy with 100% usage at the root, then you can see his kids, and all the kids add up to the parent value, etc. Then, you can also go backwards. For any element, you can grab that element and switch to a backwards view, where you instead see the sum for that element across all parents, and you see a tree going backwards to the parents, so that leaves are at the top and the parents are at the bottom. Let me try to show an example, cuz that writing is really unclear. Say you have a normal tree like this :

A-{ B,  C }
    |   |
    |   +-{D, E}
    +-{C, D}
Then the backwards (multi-root) tree would be :
C - {B , A }
     |
     +-A
D - {B, C }
        |
        +-A
E - C - A
Each node of the tree should be sorted by the biggest offender. The key to being a really fluid profiler is the ability to switch on the fly between the forward tree and the backward tree; you need to be able to select any element and switch between forward and backward tree views.

3/05/2004

03-05-04 - 1

03-05-04

We're in heavy crunch now to finish the Steef game. Crunch sucks, but we are getting a lot done. Personally, I'm working at 2-3X my normal productivity, which is very high; there's no way I can sustain this for long, hopefully I can do it for the rest of the game. I've got to start going to my Chiropractor and exercising, though, or I'm going to self-destruct, my body is falling apart and I feel like shit.

The management at Oddworld rightly thinks that our code team is great. Well, that's true, but we also have many many weaknesses. We've run way behind on this game and made several signifiant medium-sized mistakes in the technology design. We've been led badly by management, producing, desing, and publishers. We've probably done 1/2 or less of what we could have done in the 28 months we've been working on this game (we could have finished a better game in 18 months). Now, if our management ever reads this they'll be shocked and say "dear god, what's wrong!". Well, nothing's really wrong. Most teams in the game industry work at far lower efficiency than what we've acheived. I think our productivity is about 2X of what a normal team reaches. Yes, we've made some mistakes, but most teams make a large number of mistakes, and some of our bigger mistakes were because we were led in the wrong direction.

Our wise Dave says there are two ways that game development can go smoothly - either you 1) have a locked down code base, and the designers can fiddle with it and experiment and come up with a game, or 2) you have a locked down design, and the coders figure out how to make it happen. Having unstable code and experimental unclear design is a recipe for disaster.

Many people think making a game engine or a fresh game code base is fundamentally very hard. Not so, it's actually very easy. A good, focused, responsible, disciplined team could do it in 6 months. Making a new game engine while supporting an ever-changing design and keeping a content team running is very very hard. Just the fact that we have to keep our code-base always working and always backwards compatible probably takes at least 1/2 of our work each day (!!). Managers never understand the idea that keeping the code running and bug-free is a huge task in itself. If you're freed of the burden of keeping the code running, you get a huge productivity boost.

old rants