Before I move on to new business with WindowsCE, I have a couple of things to deal with that were left over from my PalmPilot column. First, it seems I generated a bit of controversy over the merits of the Codewarrior compiler by Metrowerks. In my column, I quoted Palm Creations as saying that the Metrowerks compiler built code 1.6 times as large as the Gnu compiler, and that the debugger stepped through code far to slowly. Metrowerks was understandably unhappy with that quote, and wanted an opportunity for rebuttal. So, I told them to get together with Palm Creations, and I would print a summary of the conclusions reached after they’d settled matters between them. It seems I was already a bit late.
As soon as Metrowerks read the article, and before they got in contact with me, they got in touch with Palm Creations in an effort to resolve the problems (and, as I understand it, Gabe Dalbec was extremely unhappy with the compiler as he was using it.) Initially, Metrowerks contended that Gabe had several compiler settings wrong. Gabe pointed out that he had been using version 4.0 of the software, and noticed an immediate decrease in code size when he upgraded to version 5.1; but this upgrade merely reduced the code size from 1.6 times the size of the Gnu code down to 1.3 times the size And when you’re talking about storage space on handheld computers, size does matter. After working with the Metrowerks support people, they got the code size down to a comparable level (the default settings generated an unnecessary amount of MacOS symbol information; eliminating this broke the final 30 % disparity).
Another complaint was the slow speed of the debugger. Again, it appears the upgrade has taken care of this as well. Palm Creations developers also reported that they could only set breakpoints in the current source file; with the upgrade Metrowerks showed them how to set breakpoints in multiple files. I have to say that Metrowerks bent over backwards, including examining Palm Creation’s code, to make things right by them.
The final and most damning problem Palm Creations faced, was that, even with the upgrade, they could not run the code Codewarrior generated! This turned out to be Palm Creation’s fault not Metrowerks. Their assignment of bitfields was implementation dependent, and they did not allow for this in their code.
Initially Palm Creations reported very negative results with Metrowerks tech support; apparently somebody over there started kicking butt and taking names. A company’s reputation can be won or lost based on the competence and civility of its tech support people. Here is a quote from Palm Creations on their current opinion of the Metrowerks product:
"Overall, we are very happy both with CodeWarrior 5.1 itself, and with Metrowerks support."
Considering that Metrowerks makes a lot of compilers for other operating systems and platforms, I found it pleasant to see them respond so quickly and thoroughly to Palm Creation’s dissatisfaction.
With that settled, there’s a bit more information I need to share about the new PalmPilots. It involves the new Dragonball processor in the Palm IIIx and V. The Dragonball-EZ is faster than its predecessor, and this makes possible certain enhancements. While the original PalmPilots were restricted to 4 grayscale levels, the new ones are capable of 16. Also, the greater cpu power means that future game applications will have more enhanced sound than the earlier machines.
Now, on to new business: Windows CE.
Windows CE (or WinCE, as the sometimes-appropriate nickname) is not Microsoft’s first attempt into the handheld computer market. The first attempt was known as Winpad, and was pretty much stillborn. Still, Microsoft has always been able to see markets with potential, and with the success of the Psion, and the phenomenal popularity of the Pilot, it was inevitable that Microsoft would keep working at a PDA until they succeeded in having a competitive product.
And they’re still working at it. The PDA market was "legitimized" by Microsoft’s entry, and I knew as soon as I saw WinCE come out that it would eventually come to dominate the handheld computer market. This doesn’t mean the company has, or will ever have, the largest market share; but it does mean that WinCE will get the lion’s share of media and non-media attention, and may well leverage out better PDA operating systems (such as Epoc), as happened on the desktop. Now, "HPC" (Handheld Personal Computer, the catch-phrase for Windows CE-based devices) has become almost as synonymous with "PDA" as "Windows" has with "PC", yet there are probably as many differing machines running Windows CE as there are handheld machines running other operating systems .
The 400 Pound Gorilla
Windows CE’s success can be in part attributed to the brand recognition of the Microsoft name. And it’s quite understandable; people are familiar with Windows, and most people are not interested in learning the vagaries of a new operating system. WinCE promised familiarity with the desktop metaphor most people were already used to, and if they couldn’t run the exact same applications on their handheld that they ran on their desktop, well, that’s a forgivable sin. It is interesting, however, that someone who will complain that their XYZ accounting package for Windows won’t run on WinCE, is not bothered by the fact that that same WinCE machine won’t run his favorite 3D first-person shooter. We still seem to be of the mindset that the number one activity for which people use, and sometimes even buy their computer is somehow not a legitimate use for that computer. Nevertheless, Microsoft’s deep pockets and essentially existing user-base means that WinCE has power behind it that few other handheld operating systems do. So, what is Windows CE, and how does it affect the handheld games market?
It’s An Appliance OS
The important thing to keep in mind about Windows CE is that it is not a handheld operating system. Microsoft’s strategy with WinCE is far more widespread. They aim to have their operating system in your hand, on your desk, in your car, and in your toaster. The design basically breaks down to two categories: handheld, and everything else. The handheld category can be further broken down into handheld and palmtop (think of it as the Psion 5 versus the Pilot). The embedded category breaks down into appliance-type items such as car stereos and console game machines, and embedded-type items such as embedded microcontrollers and robotics. This is both a good and bad strategy. Because it supports such varied devices, the operating system has to be comparatively large, but it also has to be fairly flexible. It allows for a great deal of creativity in game creation, yet creates problems in the sub-categories for user interfaces and control systems. This flexibility’s pros and cons can be seen in the handheld market alone.
There are simply too many models of HPCs to give detailed specifications for all of them. There are, however, styles of HPCs which I think can be loosely specified. First, there are the original HPCs; approximately 6-7 inches wide, 3.5-4 inches deep (closed) and about an inch thick, weighing basically under a pound. These machines had four levels of 480x240 grayscale LCD display, infrared support, a type-two PC Card slot, custom serial port, chicklet-style keyboards, and 2-4MB of RAM. These were quickly supplanted by models with 640x240 displays, beginning with the Hewlett Packard 320lx (HP has led the way in most HPC innovation). Later versions stayed essentially the same, just with newer versions of the operating system, memory capacity increased to 8, 16 or even 32MB, color displays, built-in soft modems, a compact flash slot in addition to or instead of the PC Card slot, and cosmetic redesigns. A couple models ballooned the size to around 9x6 inches, but retained the 640 x 240 color display.
Eventually, apparently, the HPC manufacturers got hit with the "bigger is better" bug, and versions of the HPC came out rivaling subnotebooks in size and form. Weighing around 2.5 to 3 lbs., with width and height close to that of a sheet of paper, the new HPCs, running WinCE 3.0 (HPC Professional, as it is called) have 640x480 256-color displays, and a hat full of bells and whistles that they’re smaller cousins don’t have (or at least don’t have as standard features). There’s no sign that this trend will stop; WinCE 3.0 supports color depths greater than 8 bits, and display dimensions thus far up to 800x600 (due to that appliance operating system flexibility I mentioned earlier). Personally, I think these are the dinosaurs of the handheld world. Just as the great reptiles became huge prior to their extinction, I think these behemoths will eventually die off as well. With their increased size, they are competing with the much more powerful sub-notebooks, which are capable of running the desktop version of Windows (and therefor the actual desktop applications with which WinCE versions are only file-compatible and function-similar). And these subnotebooks are dropping in price. In the same CompUSA where I first saw the HP Jornada 820 and the Vadem Clio HPCs, there was an NEC subnotebook of slightly smaller dimension, with a 200MHz processor, running Windows 98, and with an external CD-ROM and floppy drive included, for the same $1000.00 price tag. The point of a Windows CE machine with the same dimensions and price tag is somewhat lost on me. Sure, the Windows 98 subnotebook is pretty lackluster as notebook computers go; but it’s miles ahead of the oversized HPCs, since it will actually run real Windows programs, especially programs such as PageMaker and Diablo, which the HPCs can’t.
Vadem's Clio HPC
There is one exception, however, that I have to note: The Sharp Tripad and Vadem Clio (same machine, different label) are as exciting an innovation as the Psion 5. While still huge, these machines’ displays are based on a unique hinge system, which allows it to be flipped. The machines can be used as standard clamshell computers, or in an "easel" configuration for presentations, or flipped upside down to turn the machine into a pen-based writing tablet (think of it as a huge PalmPilot.) The keyboards on these units are curved in a slight semicircle, and are, for me, quite easy to touch-type on (as are some of the larger 640x240 display HPCs, actually). If these machines ran any of the desktop versions of Windows, or even Red Hat Linux, I’d sell major bodily organs to own one. They seem perfectly designed for what I do away from my desk; scribble notes, draw diagrams, and turn those notes and diagrams into code and graphics. With a PC Card CD-ROM, I could even play multiplayer Diablo when I got together with my friends at the local pizza parlor (something we’ve tried many times with full-sized notebook computers with varied success). On the downside, their 640x480 color displays seem a bit dim.
And just as the dinosaurs had much smaller relatives who survived the great extinction, such a beast is the PalmPC (PPC.) Obviously targeting the incredible PalmPilot market, the PPCs are computers which fit in the palm of your hand, usually have no keyboard, and are portrait-display oriented, as opposed to the landscape display of HPCs. Typical dimensions are 240x320 (in fact, I know of no PPCs with other dimensions.) with 4 or 16 grayscale levels, and now support 8-bit color. The dimensions of the units start at about the size of the PalmPilot and just get bigger. The control buttons, unlike the various models of the Pilot, appear to have no standardization. Some models have a navigational set of arrow buttons on the front, some have no buttons on the front, and instead have half a dozen or so buttons along the side. The latest and greatest color models have CSTN backlit displays. All have a compact flash slot, irda, and pen input; some models may package third party recognition software, however.
HP's Jornada 420 PPC
I think the PPC is the future of Windows CE-based handheld computers. While the HPCs will last for a while in their smaller incarnations, I think they will be badly damaged by the subnotebook market, which as yet has not produced a Windows 98-based palmtop. Just as I lust over the Sharp Tripad, I’m anxious to see the new HP Jornada 420 PPC. However, if I had to choose a handheld PC today, it would probably be the Jornada PPC rather than the Tripad HPC, with the Palm V running a close third. The Tripad is made redundant by my existing notebook, and the while the Palm V fulfills needs a notebook can’t, its display resolution and lack of color make it less desirable to me than the PPC, in spite of its superior market position and variety of development tools. But your tastes and needs may be different than mine.
I haven’t mentioned the processors in these machines yet. Most of them are built around the SH3 and the MIPS processor, with some of the Detroit-sized HPCs using SH4 or StrongARM processors. Current models vary in speed from 75-100MHz, with older models running at 40MHz and the odd machine clocked in at as much as 131MHz (such as the much anticipated Casio E-100.) The variety of processors also demonstrates the strength and weakness of Windows CE. It makes writing and debugging software more difficult, as well as testing, since developers have such a variety of processors and speeds to deal with. I’ll go into more details when I discuss development issues.
It’s a Bird, It’s a Plane, It’s Everything
I won’t bother much with the non-handheld platforms, as this column is specifically about handheld game development, but I must mention two.
Clarion has released the first AutoPC. Virtually identical in appearance to a standard car stereo with CD player, this device appears to be straight out of science fiction. (figure 3) It has 16MB of RAM, 8MB of ROM, and is powered by a Hitachi SH3 processor. It supports IRDA and USB (with a serial port for GPS receiver,) has a compact flash slot, and comes with a built-in CD-ROM/Audio CD player as well as AM/FM stereo. It has a 256x84x8 active-matrix color display. The important factor is its voice recognition and voice synthesis. Between these two, they allow you to control the device without taking your eyes off the road. For example, via voice commands you can order it to read your email for you, which it will do with a synthesized voice you can customize. Of course, all this comes at a hefty $1299 price tag.
Figure 3: Clarion's AutoPC
Why do I mention it? After all, this column is about handheld games, not car stereo systems. But in discussing this column with a certain editor who shall remain Alex Dunne, I had an inspiration which I must share, and unfortunately lack the resources to implement. In the dark recesses of my past (also known as the College Days,) I used to drive home late at night listening to the NPR mystery theatre. In fact, this was how I was first exposed to the "Hitchhiker’s Guide to the Galaxy" in its best form. I remember being drawn into the stories by the sound effects, the dull routine of driving a highway I’d driven night after night giving way to my attempts to anticipate what came next, what the resolution to the mystery was. You can see where I’m heading. Years ago, Infocom advertised that the best graphics were in your mind. This device includes a CD-ROM drive, and in fact has a six disk changer as an option, which gives plenty of room for audio effects, voiceovers, and musical scores. The radio theater could be reborn in the AutoPC, with a tree-like story structure no more complicated than that for Myst or Dragon’s Lair.
Other possibilities for games include the AutoPC acting as moderator for multiplayer turn-based games that the whole family could play on vacation or other extended trips. Any game which doesn’t rely on visual clues, or where audio cues could be substituted could be created for the AutoPC. While the market for most such games is fairly vertical, there’s no reason that variants couldn’t be adapted to the other Windows CE platforms; this is the strength of WindowsCE, the familiar API.
It’s no secret to readers of Gamasutra that Sega’s Dreamcast system uses a version of Windows CE. Combined with DirectX, WinCE for the Dreamcast means that it’s possible to design games for Dreamcast, with scaled-down versions later released for handheld machines. (An example of this is the variety of Nintendo and desktop games rescaled and released for the Game Boy; Abe’s Oddyssey and Shadowgate are two examples.) It could go the other way as well; a sort of proof-of-concept version of a game could be released for standard WinCE, with a full version incorporating DirectX created for the Dreamcast and Win9x machines. Microsoft has already released its SDK for the Dreamcast to registered Sega developers, and Metrowerks has announced development tools for the Dreamcast (as well as a host of other platforms.)
A Chip Off the Old Monolith
It’s pretty obvious that, as Windows CE is a subset of the Windows for the desktop, and as it’s targeted to be a "look alike, work alike" handheld version of that desktop, that developing for Windows CE is very closely related to developing for other Windows platforms. In fact, the Microsoft WinCE SDK integrates with the platform SDK and the Visual Studio development environment.
The SDK comes in two parts; the WinCE platform sdk and the WinCE development toolkit. The platform sdk is free, an can be downloaded from Microsoft’s site. This provides you with libraries, headers some samples and emulation environment. The toolkit, the part you pay for, includes the libraries and such needed to make executables for the MIPS and SH3 processors. The SDK and other information can be found on Microsoft’s development site at http://www.msdn.microsoft.com/cetools .
The emulation environment only runs under Windows NT. I think this is due to the fact that this platform supports Unicode, at least in part. It also relies on the Windows NT libraries for some of its functionality, which may lead to some incompatibility between code written for the emulator and that for the actual machines. Microsoft warns about this, and I’ll mention some implications later. You have to specifically target the x86 processor under NT when developing for the emulation environment. Developer Studio will automatically launch the emulator and run your application upon completion of compilation/linking. The Palm sdk is a separate 28MB download, and the PalmPC emulator seems to me to be a bit buggier than the HPC emulator. However, this may be due to my installation process.
The WinCE development environment integrates so well and completely into the Visual Studio environment, that you can target not only the emulator and all supported WinCE cpus in the same project workspace, but you can also target a Windows 95/98/NT version as well. This should promote the development of applications which integrate the handheld and desktop environments. I’d love to see a game where a group of friends could bring their handhelds together using a desktop PC as a host, and play a multiplayer game. Players could take their characters home with them, and possibly they could be able to play the same game, perhaps the same scenario, using different PCs as hosts. Theoretically, this could be done using the Dreamcast as host. This is similar to the situation with the new Neo Geo Pocket, a dedicated handheld game machine which integrates to the Dreamcast. I doubt that the Neo Geo Pocket runs WinCE, as it’s based around a Motorola 68000 processor. I’ll have a separate review of the Neo Geo Pocket in another article, if I can get development information for it.
I’ve concentrated on Visual C++, because that’s the environment I use, but it’s not the only game in town. The Pocket C compiler, which I mentioned in my last article, also exists for the WinCE platform. Metrowerks is working on their own Windows CE development kit, which should be coming out shortly. There’s also versions of Java, BASIC, and any number of other languages out there, as you might expect. This is, after all, a Microsoft operating system, so there’s bound to be widespread support. There’s even an effort underway to port the Gnu compiler to function on a Windows CE machine itself.
Where’s the Beef?
This is the part of the column where I normally talk about the games already out there, the genres that are under represented, and my opinion as to where the strength in the given platform is for game development. I have to admit at the outset that I was somewhat disappointed with the variety of software out there for WinCE. Not that it’s sparse, but compared to the size of the potential WinCE market, and the size of the potential WinCE developer base, the games seem somewhat anemic.
To be fair, there is the XTCE PC-emulator. This emulator is, not surprisingly, designed to emulate the old IBM XT –class machines, which it appears to do well. It does require a fairly fast processor to do so: 75MHz or better is recommended. So there is an existing base of game software out there for Windows CE, providing you have a fast enough cpu, an HPC rather than a PPC, and you’re not tired of 10-15 year-old titles (assuming you can find them.) (figure 6) If you have already learned development for the old MS-DOS machines, and can get an old DOS compiler, you might want to consider the emulator as a target for your games. I doubt there’d be much money in it, however. This situation does offer one advantage: you could target the HP 100 and 200LX lines of PC compatible handhelds at the same time (and possibly the Psion 5 XT emulator, as well). The emulator has another advantage to developers, in that if you can get your old development tools to fit and work under the emulator, you can write the code for your WinCE applications in the old IDE, though of course you wouldn’t be able to test them. This XT emulator is also credited with running Windows 3.0. Assuming you can find Windows 3.0 somewhere, this might prove an even more comfortable development environment. (figure 7)
Speaking of emulators, there’s a couple of Game Boy emulators for WinCE. There exists an unofficial Game Boy SDK, which runs under dos. People have already written games for the Game Boy with it, some are even commercial projects. Most such games are designed to run under a Windows, Mac or Linux emulator. If you’ve a mind to develop for the Game Boy (an idea which has crossed my mind more than twice), you might consider turning your HPC into a mobile Game Boy development environment. Running the XTCE emulator, you can compile the code and use the dos-based tools for creating graphics for the Game Boy, and test the games on the Game Boy emulator. Again, I don’t see a lot of profit in this, but it could prove to be a rather functional system for some.
Another rather ambitious emulator is Unicorn . This emulator already emulates the Sega GameGear and Master System. Emulations planned for the future include Game Boy and Colecovision. The abundance of emulators is a tribute to the similarity of WinCE program to Win9x programming; most of the emulators are based on Win9x code.
So what about games running native under WinCE? Are there any, or is everybody playing emulated games? There are lots of games out there, and surprisingly most seem to be arcade style. However, as I may have mentioned in the Pilot article, the Kyle’s Quest engine has been ported to Windows CE. (figure 8). This highly popular, Zelda-style game has numerous levels written for it for the Pilot version, and is perhaps the most popular game on the Pilot. That popularity might well rub off onto WinCE.
There are a variety of knock-offs of old arcade classics such as ArCEnoid, Space Battle (a Galaga clone,) Centipede, and Asteroids (figure 9). And of course, there’s the mandatory Doom clone (figure 10). The quality of graphics on WinCE machines, particularly the later machines, is far better than those for the Pilot or Psion. This is to be expected, since they support color as well as higher resolutions. This fact, combined with the faster animation/calculation possible with the fast processors on the Windows CE machines, is probably why there’s a preponderance of arcade-style games. With the exception of the Kyle’s Quest series, there is a definite dearth of RPG or adventure style games, though the card and board games have the expected representation (poker, solitaire, Mahjongg, and so on). I think the truly great games for Windows CE have not yet been written.
Taking the Plunge
There are several sources for information and tools for CE game development. The main source is http://www.microsoft.com/windowsce , followed by the development-specific site mentioned above. Roadcoders, at http://www.roadcoders.com, is the site that gives PalmPilot development support, and it also provides WinCE development support. CE City (http://www.wincecity.com ) is a good source for breaking news.
The Windows CE ocean is both wide and deep. If you’re considering game development, the Windows CE platform is a good starting place. First there’s the compatibility with the Win32 API, which not only makes porting games back and forth easier, it acts as a stair step on the way to full featured desktop games. You also won’t be competing with multi-million dollar blockbusters. There’s even a chance you can create a milestone product, or push the technology in a way not yet attempted.
Jim has been involved in developing software since 1980, and has developed a taste for operating systems as esoteric as AmigaDOS and PalmOS. He's currently working on an RPG engine for Windows CE. His only advice for someone trying to program Windows is, "Punching the monitor hurts you more than Microsoft". He can be reached as [email protected].