Yes that is a good idea - I suspect some of the issues I’m having are related to my accelerator selection code so I will improve that a bit and let the user pick.
The Apple QD3D Accelerator is often ignored by games since it lacks a lot of features like per pixel transparency and texture blending. It has only 512K texture memory but some other features that were not used by other accelerators like constructive solid geometry (boolean logic for volumetric objects).
I don't know how you render the menu and score-board. If these are 3D objects, it would most likely work with more 3D accelerators. Early 3D accelerators had often problems with mixing 3d and 2d context.
Challenging features for early 3D accelerators:
most early accelerators have limited or no transparency support (polygon and/or texture)
most early accelerators have no texture filtering (Virge, Rage (1,2) = very slow, Matrox Millennium II=none)
early accelerators often have a limited texture size (Virge=64x64pix max)
there is no texture support in some (Matrox Millennium, No.9 Imagine 128 II ) early accelerators.
there is no fog support in nearly all early accelerators.
most of the accelerators have limited or no sprite support (per pixel transparency).
multiple (colored) light sources can have a big impact on frame rates.
Ways to get around some limitations:
- Define a limited 3D context on the screen (rectangle with only 3D content) that is never overdrawn by 2D content. (FPS counter) **
- Use colored polygons instead of textured polygons where possible. ***
- Use polygon-constructs (like a border) instead of textures when transparency is needed. ****
- Do not use multi texturing (shadow maps)
- Reduce the amount of light sources
- sort the polygons by the z-index (Virge & Rage) before drawing -> back to front
- QD3D supports hardware accelerated 3D only in 16bit or 24/32bit color depth.
- Some accelerators can only render 3D in 32bit color mode!
** the reason is that some 3D drivers get very slow when the 3D portion is overdrawn by the 2D context. Some drivers seem to fight over what should be displayed, causing flickering snd redraw. Sometimes the 3D context gets redrawn multiple times in a single frame as a result.
*** early accelerators were often good in rendering 3D geometry but bad with textures because they were an afterthought. The pixel throughput could take quite the hit when textures were involved, sometimes dropping to 1/4th of the possible performance when textures were used.
**** transparent texture are nice to make a round border or a complex object-sprite that would take a lot of polygons to replicate. But if the accelerator does not support transparent pixels in a texture, the result might look ugly or it might even completely block the view.
Some options would allow more flexibility for the sometimes rudimentary 3D support of old 3D accelerators. The S3 Virge is one of the worst accelerator cores when it comes to standard features. The reason is of course that the Virge was developed before any standards were defined. On top of that, the 3D driver on the Mac was developed by Formac and was never fully functional. The Rage 1 had good drivers on the Mac but still lack some basic features. The Rage II has a good support on the Mac and was often only limited by the 2Mb of VRAM.
I hope you can understand my rambling
Your game is quite playable, even on older machines.
-Jonas