A lot of people have a particular moment or experience that defined their future. It can be anything: reading a particular book, traveling through a different country, meeting somebody special, or going through a very painful (or happy) experience. For me, the future crystallized on a Fall afternoon in 1985, when I sat in front of an 8-bit computer at a friend’s house. It was the beginning of a long personal journey.
The computer was laughably primitive by today’s standards: Z80 4MHz CPU with 64KB of RAM. What made it stand out from other computers at the time was a whopping 16 simultaneous colors (as long as you gave up half your horizontal resolution), three-channel square wave sound generation, and 3” floppy disks. Cell phones these days are hundreds of times more powerful than that computer. Heck, the chip inside your microwave oven is probably more powerful!
What was it that caused love at first sight with that computer? Impressive as they were at the time, it wasn’t the technical specs that attracted me. It wasn’t the silly games either, even though those were fun for a few days. It was being able to give commands to the machine and have it execute them immediately.
The computer booted directly into a Basic interpreter. I started experimenting with a few PRINT statements, then moved to FOR loops, getting input and solving algebra problems as if by magic. I spent endless hours typing game listings that came in magazines (usually with a few printing errors, which made them so much more fun to get working correctly). I experimented with graphics, sounds, and animations.
Before I knew it, the Basic interpreter was too slow and bloated and I had to graduate to assembly. Programming became a bit slower (especially since for some reason I could only save the assembly onto tapes, not disks), but the programs became thousands of times faster. I was finally able to draw sprites without annoying flickering, use all available memory, and even overwrite part of the ROM jump table to squeeze in a few extra KB.
I was hooked.
That experience totally changed the rest of my life. It caused me to study computer engineering and computer science, and eventually to write games professionally (much to my parents’ dismay).
If that little, primitive computer had that effect on me, today’s dazzling multimedia computers with broadband Internet connection must have a hundred times that effect on today’s children, right? Quite the opposite.
Today’s computers might be a lot more powerful, but they’re also a lot more complicated. Windows is very large and intimidating to a newcomer. It doesn’t exactly scream “play with me, experiment!”. Instead, it is a very closed system. It discourages experimentation, and you’re in constant fear of disturbing any of the overly complex configurations (like the registry or system dlls), not to even mention dealing with viruses and other malware. Linux is much more transparent, but it’s still far from an inviting system to play and experiment with for newcomers to computers.
Another problem with modern computers is the lack of a programming language out of the box. Things are actually a bit better now than they were a few years ago. Microsoft offers a free express edition of Visual Studio. Python and other scripting languages are also free downloads, and they also have libraries for game development. Unfortunately none of those tools come pre-installed, which makes it hard to get started and even harder to share your results with other people. Also, a lot of free development tools and environments today are geared towards GUI programming, which is very different from the free-form, take-control-of-the-machine approach that you need not just for games, but to really learn about the machine. There really aren’t many better ways to permanently scare people away from programming than showing them something like this.
Web development is a bit better because it tends to be simpler, and once you have a web server set up, it’s easy to show the results to anybody with an Internet connection (which I hope is everybody these days). Unfortunately it’s not particularly well suited for something like games with the exception of things like Flash.
Although I’m sure that part of it is nostalgia, I’m clearly not the only one who feels this way. Computer science enrollment has been dropping dramatically in recent years and there seems to be a lack of interest in learning more about these machines that surround us, beyond how to use a browser and how to share videos with friends.
Really, when I look at things this way, I feel bad for kids growing up today. They’re missing out on a huge source of enjoyment that I had growing up as a kid. Of course, today there are other new frontiers to explore, and they have the Internet with all the new social aspects, but it’s not the same.
So, is the dream dead?
I have often wondered, isn’t there a platform out there that is more like the 8-bit computers were in their day? The closest parallel today is game consoles, except that they’re very closed and proprietary and they’re only intended to play games. Sony started making some progress along these lines with the Yaroze program for PSX and Linux for the Playstation 2. Unfortunately neither program was particularly successful for a variety of reasons, but it was a start.
A couple of days ago, in the keynote for GameFest, Microsoft announced that they’re taking things further on the Xbox 360 with Game Studio Express. They’re planning to open it up and allow everybody to develop games for it. Even better, the code will be mostly common between Windows and the Xbox 360, so it will be possible to do a lot of development on the PC and then move it over to the 360 relatively painlessly. How cool will it be for kids to write their own games running on the Xbox 360 and be able to show them off in their friends’ living room?
It seems that the only language available will be C#. At first I was disappointed as I was hoping it would work with C++. Then I realized it wasn’t such a bad idea. If anything, it would be better if it were something simpler, more like Dark Basic, that people with very little programming experience can quickly start messing around with. Game Studio Express is supposed to include several tools and APIs that allow you to program things at a really high level, so that might be good enough.
I’m very curious about the details, though. For instance, are we going to be able to get our hands dirty and write as much C# as we want, or are we going to be limited to a very strict framework? Is the link between the PC and the 360 something that they’re going to expose? In other words, will we be able to create other tools that use that functionality to create new types of content?
A really important question is whether anybody will be able to play content created by users, or will they have to have some special payment-based subscription. Having to pay to develop for the 360 is not ideal, but I don’t see it as an unsurmountable barrier. However, if users have to pay and be part of the developer program just to be able to play some user-generated content, that would come close to killing its usefulness. I hope that Microsoft learns some lessons from YouTube and Google Video and realize that the lower the barriers for people to browse the content, the more successful it is going to make the product. People have been able to share videos for a long time already, but it involved downloading them, getting a player that could decode them, and playing them back. Now it’s as simple as clicking on a link, and that’s why it has finally reached critical mass.
I’m definitely keeping a very close eye on this project, and I’ll try to give it a test drive as soon as I get a chance. It’s a bit ironic that with dozens of multi-million AAA titles out there, the reason I might end up buying an Xbox 360 is the chance to do play around with some sprites on the screen and re-create a bit of the old 8-bit days. The dream might indeed be back.