Sunday, December 03, 2006

Programming Games for the Nintendo DS

I'm a game programmer. I've worked on many platforms, and I've just started on the Nintendo DS. Just thought I'd jot down some notes about how working with it compares to dealing with Sony's PSP.

Starting our program on the PSP took quite a while in comparison with the DS. It felt like 3 or 4 minutes to start the PSP, while the DS takes around 5-10 seconds. Obviously, this makes a big difference in your ability to test changes to the code. There are several reasons for this, some of which were not due to the PSP itself. The PSP has 32 MB of RAM while the DS has 4, so just sending over the code and assets would take longer. Also, we were using the Unreal Engine on the PSP (which we ported ourselves from a PS2/PC/XBox version), which has specific requirements about how its assets are stored. The PSP connected to your computer via the network, so any communication goes over the corporate ethernet. This means that debug information, printfs, etc. all pass over the network. The DS connects directly via the USB port.

Another huge issue was making playable versions. Sony doesn't allow developers to burn UMD discs, so we were using DVDs; the development kits and test kits could read either UMD or DVD. We found out during beta that the performance of the DVDs in the kits was nothing like the UMDs; our load times were HORRIBLE. Fortunately we had a godly programmer who put in a new fast load system and got them down to a reasonable level. This kind of coding after beta is rather risky though. On the DS, you just stick a flash ROM card in the devkit, and tell it to burn. These burned cards even work on retail DS consoles. This makes it very easy to see how your game will perform in the wild. Boxes are also available that can burn 8 flash cards at a time, so it's easy to distribute multiple copies to your test team as well.

As far as computing power, there's no comparison. The PSP is a monster. We were running a fairly complete version of the Unreal Engine on it, and getting a decent framerate (about 15-20, which was fine for our game). I've written two minigames on the DS, and have run into hardware limitations already. For example, it only allows 64 sprites per screen, and only 32 per screen can rotate and/or scale. The video RAM allows 128 kB per screen of sprite graphics; depending on what you're doing, this may or may not be a severe limitation. For me, it was pretty tight on one of the games. But the DS is less expensive than the PSP, so I expect this sort of thing.

Overall, I've enjoyed my experience with the DS more. I wouldn't complain about working on the PSP again, since it's nice to have access to the power. But given the choice, I'd take DS development over PSP development any day.

1 Comments:

Blogger Mokuu said...

Been a while man.

Game sharing, why wasnt game sharing on the PSP exploited to its maximum for other things than demo. The DS is raving with this feature, mario kart, bomberman etc, it would make the psp shine.

1:09 PM EST  

Post a Comment

<< Home