Last night I had a very enlightening chat with UncleFluffly who graciously spent a substantial amount of time (thanks a lot UF!) discussing with me what types of hardware we ought to try and support and what levels of performance we might be able to wring out of them in a good 3d client. After a great deal of sorcery, black magic, and hand-waving here's the numbers and specs UF came up with and a description of possible levels of WF hardware support. First some definitions:

Scene: This is simply one screenful of media.

Minimum Spec: This combination of hardware is the absolute minimum that we require to even play the game. At this level of support your game play experience probably won't be pretty but it will work minimally albeit at times with low frame rates from time to time. Artists may choose to provide media specifically for this spec although they are not required to do so. It is assumed that client and API coders will use clever means to shoehorn "Recommended Spec" media into this machine (albeit in a less attractive manner than in the Rec Spec machine).

Recommended Spec: Using this hardware you should get consistently playable frame rates and a fair amount of eye candy. This is the configuration we expect most of our gamers will have (at least). Artists would create media specifically for this range of machine and above.

Extreme Spec: This is all the latest and greatest hardware (or even hardware which has yet to be released). High frame rates and maxumim eye candy at this level.

Here are the hardware ranges Unclefluffy found it feasible to support and some scene budgets we agreed would be reasonable with the given hardware. Please note the extreme spec is pretty subjective and very much looks to the future:

Minimum Spec: GPU: G200 - Voodoo2 generation 8MB PCI CPU: P2 w/64MB RAM Screen Resolution: 640x480x16bpp (single texturing) Frame Rate: 30fps Poly Budget (in triangles) = 3,000tri/frame Texture Budget: 9MBs (although only 6MBs allowed in any one scene) Character Poly Budget: 200-300

Recommended Spec: GPU: Geforce (1) DDR/SDR - Radeon 7500 32MB cards 4xAGP CPU: P3 or better 1GHz w/128MB RAM Screen Resolution: 1024x768x32bpp (dual texturing) Frame Rate: 60fps Poly Budget = 30,000tri/frame Texture Budget: 80MBs (all of this can be displayed in one scene) Character Poly Budget: 1000 (give or take a few)

Extreme Spec: GPU: Geforce 3 - Geforce 4 4xAGP (or better) CPU: P4 1.5GHz+ (or equiv) 256MB RAM (or higher) Screen Resolution: 1280x1024x32bpp (quad texturing)~ Frame Rate: 100fps (or better) Poly Budget = 150,000 tri/frame Texture Budget: 100MBs+ Character Poly Budget: 1500-7000(!)

We also discussed how players could fine tune their gaming experience (esp if their hardware lives somewhere between Rec and Extreme Specs). Texture memory usage can be tuned by adjusting the mip level bias so that the user can very specifically choose their comprimise between performance and texture clarity. Poly counts can be tuned in the following manner. All models will have at least two meshes of the same object. These two meshes will be tuned to the Rec and Extreme Specs respectively. The artist may optionally provide a third very low poly mesh tuned for the Min spec gamer (although only Rec and Extreme meshes are required). The reason behind having multiple meshes for an object is that when the client needs to perform poly reduction on the mesh (aka mesh decimation) to obtain better FPS the client will be able to interpolate between the two meshes and lose a lot less of the artist's original intent for the mesh's geometry. If there is no min spec model available, then the software will interpolate as best as it is able, but we don't guarantee good results for this case. Allowing players to fine tune the level of eye candy will enable them to maximise their visual experience while (hopefully) not adding a signifigant amount of work for the media team in order to support this flexibility.

I'd be really interested to hear everyone's opinion on our roughly hewn 3D content development guidelines!