[ODE] ODE-GIMPACT performance and advices
pierre.terdiman at novodex.com
Sat Oct 28 04:39:35 MST 2006
>Both, because you don't want a noticable delay every time you update the
Well, do you prefer to have the same delay even when you don't update it?
And for all meshes, even static ones...?
> That kind of position strikes me as a bit stiff.
Maybe. Maybe not. It is based on what I saw in actual games so far. If the
tendency changes, then I'll revise my position.
But even if everything is destructible, I think you still don't need 3
categories: it's either dynamic (or will be dynamic at some point in the
game), or it will remain static forever. If everything *can* be moved, then
you just have to handle everything as a dynamic entity - and drop the
possible optimizations one could imagine for the static case.
I see little gains in having specialized algorithms for the pseudo-static
case, in particular when existing solutions handle that case just fine: use
a normal (static) AABB-tree, refit it when the object gets deformed (fast,
and only happens during one frame).
Anyway, this discussion is a bit silly, right? :)
> In the past, we would make the level totally static and only the necessary
> objects would be dynamic, for the reasons you state (precomputed lighting,
> physics). But I believe this was only a workaround for lack of processing
> and algorithms that can deal with a dynamic environment.
Now it's getting interesting..... this is a recurrent topic among some
people here. It's really typical: basically the guys with an academic
background want to make "everything dynamic", in search of a unified
solution, to be like "in the real world". On the other hand the guys with
actual game experience tend to say "forget it, that's a red herring" (for
both technical & gameplay-related reasons). It's theory vs practice.
My opinion is that the static/dynamic distinction is not a thing of the past
yet. It's still there, as far as I know. People have been saying *for years*
that the next-gen PC/consoles will have enough power to make everything
dynamic, but I didn't see it happen. Did it? We have more processing power
but we also have millions of triangles now. So, updating triangle-based
acceleration structures is just as costly as before!
> In the real world, everything is dynamic.
Not really. In the real world, the walls around me never move, and so far
nobody blew in hole in them :) It's reasonable to expect static parts of the
real world (like the building) to never change. So it's reasonable, in a
realistic game, to expect the same behaviour... Right?
For me the biggest reason is not technical anyway, it's just gameplay
related. If it is possible for the player to just destroy everything
(including blowing holes in walls), well, you can certainly make a few fun
games out of it, but it also has serious consequences on the story, the
gameplay, the kind of games you can make. Sometimes there is no mesh beyond
that wall, that's the limit of the world. You can't let the player blow a
hole in there :) And of course, you can't have a linear level with key
events unfolding a story, if the player can just do anything anywhere in any
So, if only for this reason, I think we will always have levels with purely
static parts anyway. Whether it's still worth special-casing them is another
story - but I think it currently still is.
> For instance, a number of scholars in computer graphics (including me) are
> currently working on making "realtime global illumination in dynamic
> possible. Forget about precomputation there, you need smart algorithms
> will give you a "good" lighting solution no matter what happens to the
Yeah, well, that's what I said.... scholars tend to go for the "all dynamic"
versions, while actual developers are usually more pragmatic. People have
been working on dynamic lighting (including GI) for **years**, and have
certainly make progress there. But the long-awaited unified solution is
still not there, is it? The most recent useful stuff was probably the
precomputed radiance transfer , which is, uh, precomputed :)
I'm not up-to-date with the most recent lighting techniques used in shipped
games, so people, feel free to participate and tell me. But as far as I
know, we're still using a mix of static & dynamic solutions for lighting.
And for pretty much everything else.
> I'm just thinking that it won't be long before game designers start
> "change the face of the world" every single frame (for story-telling and
> dramatic purposes of course, and because gamers always want more), and
> applies to physics too.
I don't think too much liberty is good for story-telling, as I wrote above.
Key events have to happen for your story to unfold. If the player, by his
uncontrolled actions, prevents those events from happening, well, you're in
trouble. For example it is usually not possible to kill a key NPC in a game,
otherwise the story ends. It is not realistic (in the real world he wouldn't
survive your BFG, right?) but making it immortal is still the right thing to
do for your story.
Maybe too much realism is just not good for games. The real world is pretty
boring. In the real world, your character would never run like this for
hours, carrying his heavy weapons, without stopping, resting, slowing down,
etc. Too much realism is good for simulations, but not always good for fun.
And games are usually about fun, right?
This discussion is drifting a lot from the original topic, sorry.
> I agree that we should take advantage of temporal
> coherence, but separating stuff into two bins (dynamic and static) seems a
> extreme if we consider where things are going.
I think separating stuff into two bins (static & dynamic) is the usual thing
to do (do we still have static & dynamic vertex buffers those days? Not
sure, but it was like this a few years back). Things are always going in the
"more dynamic objects" direction, I agree with that. But I just don't see
the static stuff vanishing soon, both for technical & gameplay-related
I would be interested to hear about what people did in recent games, if some
of you have experience with them. (Jon?) It's a bit off-topic for this list,
More information about the ODE