Jump to content
  • Advertisement
Sign in to follow this  
Norman Barrows

game components library

This topic is 1963 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

 
what components would it be nice to have in a game components library?
 
in no particular order,   i'll start the list with:
 
window creation
directx startup and shutdown
resolution independent fonts and predefined text colors 
resolution independent sprites
resolution independent GUI components (or backends)
mouse
keyboard
timers 
mesh database
texture database
materials database
a drawlist - a component that draws all meshes in the scene in optimal order.
static and animated muti-mesh models (limb based system)
skinned meshes w/ skeletal animation
models database
animations database
matrix manipulator
string manipulator
easy on/off control of pipeline state for alphatest, alphablend, lighting, mipmaps, cull, etc.
frustum culling
windows message pump
string <--> number conversion
dice (random numbers)
file i/o
generic math routines like 2d and 3d BBox range, 2d and 3d Euclidean distance, in_BBox() check, and heading and azimuth calculations.
a target or unit types database (monster type, vehicle type, object type, etc).
an active targets database
routines to turn and move targets w/ collision checks
AI to make targets move towards / away from other targets and locations + path finding
routines to draw targets as meshes, models, 2d billboards, and 3d billboards.
ground drawing routines w/ user defined heightmap and texture array
skybox drawing routines
 
anything else come to mind?

Share this post


Link to post
Share on other sites
Advertisement

- 3D Audio

- Stereoscopic rendering

- Networking

- LOD scheme

- Impostors

- Physics for static objects

- Ragdoll for characters

- In-Game Level Editor

 

- Postprocessing Pipeline

- Night-Day Light cycle

- HDRI pipeline

- Tessendorf's Realistic Water

- Outdoor Light Scattering

- Ambient Occlusion

- Global Illumination technique (e.g. Radiosity, Photon Tracing, ...)

- ....

 

We could go on for another 3 pages. Any particular reason for this excercise ?

Share this post


Link to post
Share on other sites

- Postprocessing Pipeline

 

which effects specifically?

 

We could go on for another 3 pages.

 

LOL. yeah, i know!

 

Any particular reason for this exercise ?

 

i've been making games on and off for a long time. this is the 3rd time i've re-started my company. each time i do, i end up with a library of generic game components that i use again and again in title after title. in the past i've actually sold these as products.

 

its time to do some work on the current library.

 

the items i listed are already in the library or exist in other code that can be converted for generic use by the library. everything except skinned meshes.

 

in the original list i forgot sound effects playback and music playback.   those have been in libraries i've made in the past, but have yet to be added to the current one.

 

so please, keep the list coming, odds are i'll have to build all these things sooner or later.

 

while we're at it i suppose we ought to add the holy grail to the list, even though todays PCs still can't quite do it:

 

realtime raytracing.

 

one of the things that prompted this exercise is that i've come up with some new components that REALLY speed things up in the area of graphics and collision checks. and it made me wonder if there were any types of components i wasn't aware of. you know how it is, the best way to do things in games is a constantly shifting target as hardware improves and old algos can be done in realtime, and new algos are created. every once in a while you have to stick your head up from your cubicle and take a look around and see what's new.

Share this post


Link to post
Share on other sites

you know how it is, the best way to do things in games is a constantly shifting target as hardware improves and old algos can be done in realtime, and new algos are created. every once in a while you have to stick your head up from your cubicle and take a look around and see what's new.

It seems to me that one of the biggest paradigm changes of last few yrs is the ability to run the CUDA / OpenCL code for preprocessing of the level data during loading. Especially, if you have some computationally expensive operations on a large terrain, it is better to offload the poor CPU with its measly 4 cores and let the GPU with 1000 cores sweat.

 

The loading times can be drastically reduced this way, especially if you have a lot of content generated procedurally (namely large-scale terrain features, but almost anything else - calculating normals/binormals/tangents, precomputed visibility, octree,...).

Share this post


Link to post
Share on other sites


Posted Today, 01:08 PM

VladR, on 02 May 2013 - 11:26, said:

- Postprocessing Pipeline



which effects specifically?

You can't live long enough to implement all of them. But you could start with few basic ones:

- Bloom

- Ambient Occlusion

- Bokeh (DoF)

- Radial Blur (GodRays)

- Motion Blur

Share this post


Link to post
Share on other sites

Physics for static objects

 

i have the gravity modeling code, but not the stacking of objects.

 

- Impostors

 

by this i assume you mean the texture generation part, as targets can already be drawn as 2d billboard, 3d billboard, single mesh, multi-mesh static model, multi-mesh limb-based animated model, and when i add it, animated skinned mesh.

 

i forgot animation player manager on the original list. got that too already.

Share this post


Link to post
Share on other sites

It seems to me that one of the biggest paradigm changes of last few yrs is the ability to run the CUDA / OpenCL code for preprocessing of the level data during loading. Especially, if you have some computationally expensive operations on a large terrain, it is better to offload the poor CPU with its measly 4 cores and let the GPU with 1000 cores sweat.
 
The loading times can be drastically reduced this way, especially if you have a lot of content generated procedurally (namely large-scale terrain features, but almost anything else - calculating normals/binormals/tangents, precomputed visibility, octree,...).

 

 

funny you should mention that.

 

the recent "breakthrough" i had on the graphics on my project was in relation to just such a problem.

 

the solution allows me to have a HUGE (2500 mile x 2500 mile) procedurally generated, persistent, modifiable world with scene complexity on on the order of 15,000 meshes for the high LOD terrain alone after frustum culling. framerates are currently running rock steady at 62.5 fps. no shaders. dx9 fixed function. i still can't believe how fast it is.

 

so that component is definitely going into the library.    it may be overkill for simple projects.   i suspect it may be possible to take some of the components and string them together to make component sets that provide simple high level black box functionality, while the component design of the API lets you use just what you want, instead of having to embrace an entire "engine" or particular development paradigm.

 

for example, stringing the target drawing, frustum culling, and drawlist components together.

 

two more things for the list i forgot  that are already in there:

camera

lights

Edited by Norman Barrows

Share this post


Link to post
Share on other sites

- Night-Day Light cycle

 

i've got the code, what would you want the API to look like?

 

time of day in ==> lighting scale factor (0-1) out ?

 

or am i not following what you mean?

 

the variables for the model include time of sunrise, time of sunset, and current time as input. light intensity and direction are the output. sunrise and sunset times are currently hard coded but could be made variables for a generic version for the library.

Share this post


Link to post
Share on other sites

I meant Practical Analytic Model for Daylight:

 

did you notice this part?

 

"The implementation of the model was not carefully

optimized, and slowed down the program by approximately a factor of two on a MIPS R10000 processor."
 
the results are fantastic. Just what i need for outdoor scenes.
 
do you know if the algo has even been implemented in real time for a game?
 
or is this another case of "well, if every user had a Cray supercompter, we could <insert cool effect here>..."

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!