thufir -> RE: Slow/Jerky UI Performance On Some Systems (10/9/2005 9:34:53 PM)
|
First of all, let me say thanks Eric for your quick and detailed replies. That's not a given in the world of computer games, but it goes a long, long way in getting my loyalty as a game buyer! I do believe that game companies that support their games well can develop a large fan base (which of course ultimately turns back into profits for said company). quote:
ORIGINAL: ericbabe Those specs are better than my laptop specs; the video card is much better -- and the game runs just fine on my laptop in full animation, full sound mode, including the Military Advisor list -- with the debugger (no small program that) running along with it. This implies that to greater or lesser extent, the problem is platform specific. It seems to me that the most fruitful line to pursue is to diagnose precisely which systems have this problem, and which don't. If we're luck this might point us immediately to a workaround (say for example if we find this is only happening on systems which have NVidia boards and use Logitech Mouse drivers [don't laugh - i've seen it happen], then we can just go back to default MS mouse drivers and wala - problem solved!). One thing seems clear on the system side, and that this is not a problem specific to systems w/ low memory. jvgfanatic clearly has lots of memory, both on the ram side and especially on the video side. So far we have 2 problem machines w/ older NVidia boards, so NVidia is certainly a candidate as the source of the problem (graphics boards should be high on the list when tracking down platform specific performance bugs). Is there anything you can do to try to reproduce this bug at your end? Do you have any machines w/ older NVidia boards on them? Is there any further diagnostic info I can give you? For anyone else out there reading this, do you see the same performance problem on the military panel? Some of the earlier posts were focused on scrolling the map (where I also see performance problems) - personally I'm inclined to believe their related, but the military screen makes this problem jump out far more obviously, at least on my system. It would be good if we could see some more system specs for users that are seeing this problem. quote:
1) Loop through all the window handles used on this screen 2) Windows: please allocate/move this object 3) End loop Once upon a time (in the early days of DirectX (v3 - v6) I used to write 3D character animation, and even though it's been a while, I can say that there is one honkin big red flag in pseudo code above. That being the "allocate" included in step 2. If you mean that you literally allocate an object evertime you move it (or even every time that object becomes visible, as you scroll through the list), than that would be distinctly bad architecture. With graphics/UI code, you always want to move your allocate/destroy code as far out of inner loops as possible. Every object in that list should be allocated the first time the military panel is entered, and references to them stored in a static object/structure. As the list is scrolled through, objects should be shown/hidden (rather than allocated/destroyed - and btw, I'd bet a $1,000 that MFC still has the hide/show functionality for the objects in question). The same thing when the military panels is displayed/exited - everytime I go into that panel I see a delay of several seconds. With good architecture, that would happen perhaps on the first time you bring the panel up, but it should not happen repeatedly. Now this might mean an architecture change, and that might be a problem to include in a patch, but at least you should consider this style of UI architecture for future products. Also, this should be a less difficult architecture change than moving away from MFC for your UI objects (imho MFC is a good choice for CoG). Finally, it shouldn't be out of the question to consider this in a patch. If enough users out there are experiencing this problem then it might be worth your while to go through the work/risk of making this change (and remember, most users who experience this are likely not saying a word, and instead walk away from your game in frustration - as such getting an estimate of the percentage of your users who have this problem will require some analysis). I'd also mention that all the above commentary on your list scrolling pseudo code does not change my opinion that this problem is platform specific (at least in a practical sense). However, if you did implement an architecture w/ object creation/destruction moved out of loops, you would have an implementation that was far more robust w/r to performance and would probably work better on all the lower end systems out there. One thing to note is that the systems that do not see this problem might have some hardware/software combination that allows them to cache the objects that you are allocating/destroying. For example, I've seen it happen with MFC that developers all have a particular version of a particular DLL that behaves slightly differently than the DLLs that come with the MFC install. Presumably you've tested on clean systems that have never seen any developer versions of MFC (or anything else), so that wouldn't be the problem, but you get my drift. Well, forgive my long winded post, but I would really love to see this problem nailed. Eric, if I've misinterpreted your pseudo code, forgive me, and just ignore all my above comments on architecture. Cheers, Thufir
|
|
|
|