If I started 3D graphics programming targeting a desktop platform or XBox Indie, I would have felt hopelessly intimidated. Also, I would have gotten bogged down into textures and shaders.
Instead I started on the ITouch. By far one of the most powerful mobile platforms (not counting the PSP, likely no worse than the DS), it’s still a weeny tiny computer with little memory and processing power to boast. Here’s what I’m learning:
- Read/Ignore advice about what to use and what not to use. File it. It’ll be useful later when you really need it. Optimize a beautiful scene, not an empty screen.
- Live with polygons and normals and make the better of it. Textures are great to paint flags. You wanna make a 2D game or what?
- Keep game logic where it f*****g belongs. 1% to 10% of your processing time. Game logic includes NPC management, camera management, animation and simple physics.
- Hack from game engines (hey, I should really look into doing this!). Don’t use a game engine (unless you want to hand in low quality material right on time). Guys writing game engines are really, really, experienced and smart but… …their engines cater for too much to be either easy to learn or practically faster than anything custom built with minimum care.
- Write your own export routines for a start. Scripting 3D tools is easy and avoids importing and parsing stuff you don’t even want to know about.
- Don’t under-estimate GL transformations. Anything that moves/rotates, looks a different size, is nice and cool. Bone/Frame interpolation is nice, but GL won’t do it for you.
- Learn procedural methods. Anything you can evaluate at run-time without disrupting game play is something you can reuse at will, never need to load and hardly need an artist for.
What’s the conclusion? I wouldn’t code on a 10 years old PC. Too damn stupid. I wouldn’t test on a net-book – kind of lame. Starting on a mobile platform makes me feel happy, because mobile gaming has a bright, beautiful future. And the best part is, when I scale up, I’ll be fearless.
Happy coding

