I think when we are kids and we hear some one does such and such “professionally” we are taught that it means they are very good at it. And that because product X comes from big huge company Y it must be very well designed. I mean it sells well and they have been making products like X for a long time so it must be good.
But as I’ve gotten older it’s become starkly apparent that these assumptions simply do not hold true. Many times Mr. Big Professional actually sucks at his job and makes bad decisions despite his 10 years of experience. And product X probably has many design flaws that simply should not exist considering the fact that big huge company Y made it and has been making products like it for a long time.
Case and Point. The Source engine powering, among others, the hugely successfully Half-Life 2. The full source is available for mod developers and I personally have looked at much of the source and even coded a very simple mod with it. And I can say with out pause, it is a disgusting mess.
Let me digress for a second. There is a big difference between academia and the commercial world. And while, for example, in academia global variables are the root of all evil, in real world commercial software, that are sometimes necessary. My point here is, products, and software in particular, in the commercial world may have to be a bit “dirty” by academic standards. But if it works, and it works well, then it’s all good.
With that in mind lets return to my main point here about the Source engine. It is a total, complete, disgusting, nauseating, F$%*ing MESS. Commercially acceptable *dirt* was left way way WAY behind when making this engine. Their poor design decisions alone would make baby Jesus cry, not to mention their archaic coding practices that make debugging all but impossible. THE PREPROCESSOR IS NOT A COMPILER PEOPLE! STOP TRYING TO USE IT AS SUCH!
And I’m not the only one that feels this way, go on any game development forum (Where game engine design is usually discussed, these conversations are usually more academic, but still) or even a software engineering forum, and when you see people talking about the source engine it’s usually something along the lines of:
“I used the Source engine once… *stares off into the distance*”
But big supposedly well designed software that sucks doesn’t stop there. Talk to anyone who has worked on open source projects such as GAIM and they will tell you horror stories of how dirty the code is. (To be fair, GAIM is now called Pidgin, uner new management now, and from what I hear the code base is hugely cleaned up)
Now if you can even remember my original point, it was that big commercial products suck a lot of the time. I could go on, but I think I’ve provided enough examples.
This console how ever… is. awesome. I’ve been digging through the technical docs for weeks now. The hardware design decisions, the API design decisions, all of it is genius. Yes there is a huge learning curve to the APIs, but the reason is what I described in my last .plan file, they give you an incredible level of control very close to the hardware to be able to squeeze every last ounce of speed out of that hardware.
I’ve heard horror stories about the PS3 hardware and SDK. And while the console’s SDK leaves something to be desired in terms of the IDE and some of the documentation. It is still fairly good. And once you do find the info you need, you realize even more how well it actually has been designed.
What is clearly evident when developing for this console is how they have learned lessons from every console they have made. I wouldn’t be surprised if it was mostly the same team sticking together to make each new console.
Anyway, this is dragging on. It may seem like all I do here is sing Nintendo’s praises but let there be no mistake about it. I’m no Nintendo fan boy. The last Nintendo system I bought was the SNES. And while I did love that system, I scowled at their latter decisions with N64 and GameCube. I didn’t like the DS (the 2nd screen seemed gimmicky, no real use). In short, I hadn’t owned, or for that matter, played, a Nintendo product in years. When I saw the Wii and it’s new controller, I figured it was just another gimmick like the 2nd screen on the DS and I didn’t get very excited.
So when I got this job developing a game for this console I entered there a unbiased scientifically minded observer. And I can honestly say, Nintendo has impressed me with their technically decisions, their marketing decisions, and their ingenuity.
So heres to Nintendo!