FourScore Revised

Jan 02, 2005 14:17

To show a 3D game board, I have two options:
  • I can pre-render all the images using 3D Studio Max, then piece them together at runtime; or
  • I can simply build 3D models into the program, then draw the 3D scene at runtime.
The first option is what I usually do. Pre-rendering means the game looks just great--3D Studio Max draws beautiful pictures, and I can let it take as long as it wants. But I have to spend a lot of time in 3DSMax getting the scene to look right, then I have to spend even more time in Paint Shop Pro cutting and moving pieces around. Finally there's a lot of work required to get those pieces to start acting like an interactive game.

It takes a long time to do it this way, and if I want to use it on the PocketPC or Palm then I have to do all that work twice: the first set of images is huge for your desktop, and then I need another set entirely for small displays. But pre-rendering does work well for handhelds, which typically don't have a lot of computing power available--re-displaying a pre-rendered image is about all they can do.

Since this is how I usually do things, I spent last night thinking about the numbers. To get the pieces to move smoothly means I need to pre-render (16 board squares + 33 halfway points) times (4 piece sizes) times (2 players) times (2 heights)... that's a total of 784 different piece drawings. And that's before I do any extra drawings for special effects or off-board pieces.

That's just too much: the game would be huge, and I would spend years inside Paint Shop Pro tweaking the images.

So we go with the other technique: live rendering. That means I won't use 3DSMax at all--instead, I'll rely on AC3D. This is a less elegant, more low-level modelling tool that helps keep my models simple. When I'm done there, I export a series of model files to my program, and let my program use OpenGL or the Banshee builtin renderer to draw 3D scenes for the game board.

This gives me a lot of flexibility in how I display the game: the user can move the board around; I can have lights come and go and move around; pieces can morph and fly around and do all kinds of special effects. And I don't have to rebuild everything for the PocketPC: the same basic code works for every platform.

But it comes at a cost: although my 3D rendering engine works on the Palm (yes, honestly! Ever see a texture-mapped interactive teapot on a Palm Pilot?), the Palm really doesn't have the CPU power to be doing that kind of thing--it's just too slow. Even modern PocketPCs are pushed pretty hard to do 3D rendering.

So for the PocketPC I'll simplify its work load:
  • Provide simpler models--fewer polygons, fewer curves, more angles
  • Optionally let the user draw solid-color pieces instead of texture-mapping them
  • Optionally let the user throw away the special lighting effects and just use a simple ambient light
All these things will help PocketPCs draw the game without too much work. And best of all, they're actually pretty easy for me to do: just a few extra options, each tied to a short "if" statement somewhere in the code.

With these changes comes, necessarily, a change in the resulting UI. Here's a mockup of my latest thinking for the game. The user can tilt the table front and back, and can spin the board around as if it were on a lazy susan:



The menu is a lot more feasible--very easy, not a lot of time required to implement it. Not as fancy, though; actually, not even very pretty. But it will do until something better springs to mind.

By the way, I've also thrown together a new startup banner for the next generation of games from Random Software. It's all debug code and so it's a little large, but you can check out the demo right here--just extract it from the zipfile before running.

Later...

Tweaked the display again; notice that with each iteration there are fewer changes. Must be approaching a local maximum in the design. As suggested, I've pulled the menu out of the main display and centered the game board; this simplifies PocketPC presentation, and puts the game where it belongs--in the middle.



I looked through my 75 fonts and found about a dozen that look gothic, Olde English or some variant, but all of those have legibility problems for the casual reader. I think I'll just stick with simplistic serif fonts for now, unless something amazing smacks me.
Previous post Next post
Up