Resurrected Entertainment

Archive for September, 2009

Use Windows. Because we’ve got you by the short and curlies.

September 20, 2009

It’s now 10:38 PM on Sunday, September 20, 2009. I’ve been installing a fresh copy of Windows XP since 6:00 PM yesterday night. My efforts have been on and off for the most part. Downloading drivers. Updating software. Finally installing the one and only piece of software I’m interested in using. You know, the usual chore. I’m sitting here with my glass of wine and a good book wondering why do people put up with it these days? Fundamentally, the Windows software process is just plain broken for the average user. I can pick any of the popular Linux distributions or almost any version of Mac OS X and do exactly the same thing which would be: install the operating system including drivers and updates, and then exactly one application. The only difference being, between the three operating systems, is that this pain would only last a short while (less than an hour) on Linux or Mac OS X and then it would be over. It gets even better if my home directories are preserved and I don’t need to spend hours reconstituting them. But on Windows, it’s just painful and frustrating.

Sigh. Thirty minutes and the download process is 4% finished. It’s a 650 MB download, but I have high speed Internet access. I’ve downloaded things a couple of Gigabytes in length in less time. It’s not my home connection and it’s not my Internet provider. Whatever Microsoft is doing to serve me this file, whatever servers and load balancing machines they have to manage their network, it’s not working. It’s quite possibly the slowest download I have ever experienced, including during my time on a dial-up connection in the 1990’s. I’ve used Bulletin Board Systems with MODEMs clocking in at just over 300 baud, and I have never experienced such a time dilation. I’m going to need to keep this machine on all night, just to download the equivalent of an Ubuntu Lite installation, which I just did yesterday and it only took 10 minutes.

Why do we put up with it? Why do we go through this crap, and why do we tolerate it? I couldn’t tell you how many times I’ve installed a Microsoft operating system over the last 20 years. I couldn’t tell you how many times I’ve done it in the last three years. I can tell you I’ve installed my Linux desktops a couple of times and I’ve upgraded my Max OS X systems once. But I can tell you that each Windows installation was painful. Every. Single. Time. Their installation process is nothing like Windows. Sure, the Linux side of things can be a bit more difficult if you’re trying to do something different, but if you’re just installing out of the box configurations – just like I’m doing with Windows – it’s a walk in the park.

So why do we put up with all of this nonsense? It’s not because we like it. In fact, this time around it was one of the worst installations I have done in recent months, all because I wanted to play a game, which is now sitting at 5% download complete. And herein lies why I continue to suffer this operating system: I simply want to use a piece of software which can only be run on Windows. Can you imagine what this process will be like if I want to play this game five years from now? Pretty to close to impossible, I think. Their installation and software deployment model is fundamentally broken, and they have yet to come up with anything better.

After all these years, they still don’t have a dependency model for software packages. They don’t have the concept of a single, atomic unit of software. Instead, they have a rats nest of files and directories scattered all across the operating system. Mac OS X have application bundles and a rigid deployment model; Linux has packages with dependencies which makes installing software, and the dependencies of that software a much better experience. They too have a rigid deployment structure which only makes the lives of the user that much easier. Sure, they have their technical drawbacks sometimes, like the availability of bleeding edge software to drive bleeding edge hardware, but that’s only because the bulk of the market is held by Microsoft. Naturally, if the market dries up, then those hardware vendors will see to it that their drivers and helper applications make it to the operating system of choice.

On top of all of that, Windows developers are still doing really bad things because the model continues to let them. I continue to use the operating system because I want the software the developers are writing, but I have my limits and I will go elsewhere for entertainment. One of Windows’ great strengths was their drive to maintain compatibility with older software products. This didn’t make them popular but it kept them in business.

There are numerous stories about what the Windows operating system developers did “in the old days” to make obsolete or broken software work. You want Sim City to work with Windows 95 for the launch? No problem. Oh wait, it seems the developers at Maxis were sneaking their hands up the dress of the Windows memory manager. Ha ha. We’ll just work in some special handling for that naughty piece of software. That backward compatibility created value. That kept people coming back to The Old New Thing. Windows 7 and Vista before that are changing that model. In their quest to improve every system and the kitchen sink with Windows, they seem to be forgetting the biggest pain point of their operating system. It’s not the file system, or the surface manager, or the rendering routines for adding fancy window dressing (ooh, transparency). It’s the fact that I need to install a million, fragmented pieces of software in order to get things done. Oh, and in the mean time, reboot a few dozen times. Ha! That never seems to get old.

Black Art of 3D Game Programming

Black Art of 3D Game Programming So you’re an aspiring game writer, now what are you going to do about it? You could get a job as a summer intern at a local game company and work for free doing all sorts of tedious tasks no one else wants to do. Or you could hit eBay and do yourself a huge favor and find this text. Before you write back about the publication date, yes it was published in 1995. No, it does not talk about OpenGL or DirectX. Phew, now that we have that out of the way, let’s talk about what this book can teach you.

This book’s greatest strength is how it dabbles in a number of good topics without being totally useless. A number of texts provide a lot of information about too many topics, while not providing enough material to do something fun or useful. That exercise is often left to the reader. Ha! A book like that in my house will pay a little visit to the recycling bin or get banished to the library, never to be read again. Other books tend to steam roll over you with too much theory of the mathematical kind. While I’m all for roots and quadratics, aspiring young programmers wanting the enter the field of game development shouldn’t necessarily want to go whole hog on their first book.

That being said, they will need some basic skills to get started, and matrix math is a fundamental skill for playing around in 3D. Fortunately for the junior programmer, it’s not the most difficult skill to learn. One of the black arts the book teaches you is how to master 2D and 3D transformations using matrix algebra. It doesn’t go into quaternions for gimble-lock free rotations, but since the reader is probably just starting out, it doesn’t really matter either. They will be able to make do without all of the fancy topics getting in the way of actually learning something useful.

The book does show its age in some chapters where the topic of conversation is how to take control of various video modes, but I think it’s still a worth while read. You can still do this kind of programming if your recreational operating system of choice is FreeDOS or some other version of DOS, even on a modern PC. You could even use Windows 95 or 98 for that matter, just get it to boot using the version of DOS which ships with all of that GUI crap. Trust me, you’ll be better off in the long run, plus you can wow your friends with your amazing latch register skillz.

Once Upon Atari…

September 13, 2009

I recently watched a documentary series produced and distributed by Scott West Productions. It is hosted by Howard Scott Warshaw, who is perhaps best known for the game Yars Revenge. The content of the DVD is a series of interviews with a few of the major players at Atari during the golden years. Most of the discussions centered around the popular talent, work environment, their rather low opinion of marketing, burn out, and a number of other typical questions they probably get asked numerous times per year. It’s an enjoyable series and one which should not be missed by fans.

Interviewees: Carla Meninsky, Jum Huether, Nolan Bushnell, Tod Frye, George Kiss, Jerome Domurat, Rob Fulop, Larry Kaplan, Bob Polaro, Alan Murphy, Eric Manghise, Rob Zdybel, Suki Lee, and Dave Staugas.

Zen of Graphics Programming (2nd Edition)

September 11, 2009

Zen of Graphics ProgrammingThere are certain books on my shelf which I will never give up. I donate many to the library but some have a staying power I don’t often see and tend to covet when I do. Michael Abrash’s aforementioned text is one of those books. It’s  a technical book cover to cover, there are a lot of hairy details which are fun to read about and you would be hard pressed to find code listings your mother could understand (unless she too is a programmer, lucky you!).

The book was written in 1996  for a whopping retail price of $62.99 (CAN). That was a lot of money for a young man who was entering his second year of university. Like many people, I bought the book during a time when browsing the table of contents on the Internet was simply not an option. Most of the time, I couldn’t even look inside a physical copy because my book store simply didn’t stock the books I was interested in buying. I often needed to special order these texts using a behind the scenes method, that is, if I was lucky enough to find a distributor in their corporate directory. I fondly remember spelling out the book titles carefully since the nice women working behind the counter didn’t have a clue what I was talking about. Most of the time they must have thought I was speaking a foreign tounge because they would often ask me to repeat it, or reply seconds later with a vaguely stunned expression.

What I needed to rely on, was the opinions and recommendations of graphics and games programmers who posted comments through various Usenet news groups, BBS systems, and the very rare in face to face conversations. This particular book was published by The Coriolis Group and featured a wealth of information on programming computer graphics using an Intel microprocessor and a video card sporting multiple video modes, including compatibility with the elusive and fabled Mode X.

Being a book on graphics programming in 1990’s, it centers around producing efficient drawing code. It tackles the more basic primitives and how to decompose the traditional rendering algorithms into something which could execute very quickly, and then review that optimized code progressively to try and squeeze out even more cycles from your overworked CPU. One of the best features of the book, is that it’s mostly a book on algorithmic optimization, instead of code optimization, which is why it has staying power even today. For those interested in the past-time of code reduction, the author has written another book called The Zen of Assembly Language which is freely available as a digital download (or was the last time I looked).

Three dimensional computer graphics was a popular topic at the time and still is to this day, although advances in this area of computer science have rendered (pun intended) some of the earlier topics almost obsolete. Of interest to those studying the rendering pipelines used by classic games like Doom and Quake are topics around the interpretation and optimization of BSP trees. BSP is a fancy acronym standing for Binary Space Partitions, which is another fancy way of describing how to carve up space into optimal chunks, and then placing those chunks into a data structure like a binary tree. The reason Doom ran as fast as it did was not because the developers wrote some of their modules in assembly language, it was because the BSP compilers produced an optimally pruned set of data. Less data to process, meant more cycles to render those beautiful walls, ceilings and stairs we have all come to love and adore.

I find this book to be especially useful, however, when you need to return to the fundamentals. With the advent of small, portable devices, programmers working on these products have needed to return to their roots, or if they are new in the industry, to open their minds and think about the construction of 2D & 3D engines in a way they never thought of before. Most of the engines used by nubile programmers entering the field of computer graphics will be wrappers around this functionality; abstracting the core mechanics and shielding the developer from the tedious and structural bits of the engine.

Indeed, this is probably for the best, most of the time, if productivity is what your company needs. It never hurts to return to your roots every now and then, and let your mind flourish in an area rarely experienced by most technical professionals.