It's been an unbelievable two weeks. In some ways, all manner of things got accomplished - design decisions, planning, inventing some really cool potential features that are quite exciting (and some of them are long overdue). In others, though, it's been a perpetual pileup of more and more Stuff that has to get done.
I think Daerax made a remark about my task list screenshot and its scariness. I found that kind of funny - because those 24 tasks were for a single code file. Globally, I have roughly 100 TODO comments assigned to me, which doesn't include the dozens of task entries in the JIRA system, or the on-paper plans which are still more massive. I'd make a collage of the hugeness of work, but unfortunately most of it can't be discussed publicly.
Despite the pressure and incredible weight now riding on my shoulders, this has been an awesome experience. Hacking around on code until the late hours, mobbing local restaurants at odd times, gaming in the office as "research" (we were particularly interested in analyzing Half Life Episode 1 today), instant espresso machines, blaring bizarre music at each other...
This is really pretty much the idyllic environment that I always pictured when I dreamed about getting into the games industry. The only real complaint I have is that everyone has a heavy German accent and lives too damn far away from me, but that's really pretty trivial, all things considered [smile]
To be honest, I wasn't sure how this would go, and in some ways kind of dreaded it. A while ago, all the pressure from everyone on the team to move over here to Germany was really utterly unappealing. Now, though... it's starting to be tempting. Living in another country is still a royally complex pain in the arse, and I'm not sold on the concept just yet, but... it does sound nice. The real killer excuse for me at the moment is the weather - I'd die if I had to live in German winters.
I'll certainly be looking to create excuses for more trips over here, though [grin]
The Epoch project has pretty much gotten buried under the avalanche of other stuff I've been doing. Most nights I haven't even had the energy to check my email, let alone think about language design issues. I'm looking forward to getting that moving again when I get home, but for now it's nice to just ignore it and not worry about yet another drain on my time.
This engine redesign project is intense. I'm under huge pressure because pretty much the entire game project rides on this getting done. The technical challenges of building a 3D engine are immense enough on their own; but in my case, they're compounded literally a hundredfold by the necessity of integrating with a large established codebase.
In some ways working inside an existing project is nice, because the problem space is clearly delineated: I know exactly what features have to be duplicated; many of the mundane issues have been worked out and solved; and the overall structure provides strong hints as to how the various interfaces need to be designed. At the same time, though, it's a complete and total bitch. Every tiny little nuance of logic, sequencing, or whatever could either be a tremendously vital bit that keeps things working correctly, or it might just as likely be a completely arbitrary thing - or even buggy. So determining what aspects of the system must be mimicked by the new design - and which ones have to be replaced - is a daunting task.
I won't be able to do much in the way of specifics, but I'm strongly considering writing up some of the design solutions I'm using when the dust settles. I see a lot of problems coming up in the forums that are painfully familiar, and yet trying to explain good solutions in the context of someone's existing engine is extremely hard, especially when I can't look at their code. I know we already have a decent chunk of articles contemplating engine design, but I think it might be kind of cool to describe how a "real world" engine was designed and implemented, from the ground up.
One thing I virtually never see done "right" in such articles is a description of the design decisions, which frankly are the only really important things to be teaching. The nuances of a system are fairly trivial by comparison - the hard part of the work is analyzing requirements, constraints, and possibilities, and deciding between competing alternatives. So I'd really like to cover 3D engine architecture from the point of view of making decisions to fit into an existing game's structure.
Technology is really just amazing. Sitting in a hotel room on an open wifi relay and surfing the web is freakin cool in a way that is just utterly impossible to describe to anyone who hasn't done it. At the moment, I'm at a loss for nice poetic phrases to really capture the mind boggling wonder of modern electronics.
I'm on some kind of emotional high right now, I guess largely from the huge stimulating effect of getting assigned the jobs I've been given. Well, that and making some really rather funny inside jokes all day. The massive doses of caffiene and sugar are probably contributing in their own small way as well.
It is good to be here. I think I'll do some heavy gaming tonight in a way I haven't done for far too long. It is indeed good to be a gamer.
But it's even better to be a game developer.