AAA engine concepts and pratical use in BGE

Hey whats up Forum!

I just have a few questions about AAA game concepts that I think could be used to make BGE games better. I’ll be speaking about COD4 through-out this thread as it is my favored of the series.

When you play COD4 the player or the gun on the screen in front of the camera don’t even seem to be in the same scene as the environment almost as if its on different layer. For example, if you tuck yourself between a wall and another object or even just move up as far as you can to the wall it almost gives the impression you are now holding barbie sized toys in front of the camera in direct proportion to the wall or whatever object you are crouched near its even more noticeable if you have a rocket launcher equipped.

So my questions,

1.) Have you noticed such behavior as well in COD4 or other FPS?

2.) If the player is really in a different scene would it (in your opinion) provide better performance?

If I had to take a guess, I would suspect that this is how clipping and animation issues are avoided. If you could have your player (the gun sitting in front of the camera) you wouldn’t have to worry about how close the first-person camera could get then worrying if its going to get stuck in the wall when trying to reload.

Another thing I’ve noticed is for example on the map ‘Creek’ (yes, still talking about cod4) that small objects are not drawn on the screen depending how far away you are from them, you can literally stand in one place and take a single step forward and watch a hand full of shrubs slightly in the distance being drawn, take a couple more and more start to appear.

So my question would be

1.) If what I said to be true, could something like this be expressed in an equation perhaps via python script attached to the BGE camera?

2.) Could this be handled on a object per object basis? - a list of objects that fall under the control of the equation, examples could be objects that are X in size? shrubs, alpha planes etc while objects that you will already have a list of that are larger than X will only not be drawn if you are even further away as an example.

3.) Do you think it would be an interesting concept if BGE could compile a list of all objects in the scene and display the area that these objects use. now using your judgment selecting all objects that are smaller than X to stop being drawn at a giving distance while giving a real-time game view and seeing the results

All the questions I have for now, Feel free put me in my place or talk more about how these concepts could implemented in or for BGE games it’s up to you :stuck_out_tongue:

Havent played cod4 yet coz i dont have graphic card now but regarding clipping objects that are kept very far, increasing and decreasing their LOD is possible with bge. A simple soln. To clipping problem could be just get the distance b/w object & camera & based on that add or delete it. If i remember correctly ideasman_42 made a similar script a while back.
Regarding LOD there are 2 ways:

  1. Prepare many different versions of same mesh with change in poly count and use replace mesh to replace em in realtime.
  2. Wait for some time Moguri is improving open gl support, so we’ll be having dynamic tesselation soon.

I dont have any idea about draw rate but i am really interested to know if & how we can do that for indivisual objects in bge. :slight_smile:

The second thing you’re talking about is called Level of Detail (often shortened to LoD). You can easily find resources on the topic.

As for the first, this is doable in Blender, but I’m not sure what benefits it would provide.