Jump to content

Performance Tanks after Instancing an enemy just 6 times.


TheConceptBoy
 Share

Recommended Posts

Further testing with leadwerks. I've got to be doing something wrong here.

If you press "E" you will create instances of an enemy object, they will be positioned at the T pose character models. There is also a 3rd character with an Actor  that is used as the starting template to be Instanced from. There's absolutely no code inside these Actors and yet 6 barely objects in and the performance Tanks. I was looking to spawn anywehre betyween 15- 30 of these

Would anyone mind taking a look? I've removed pretty much all objects, effects and anything that could possibly cause this. Some forum posts did say they that for repeated objects you should Instance them, which is what I did.

 

GTX 750, Core 2 Quad Q8300. 8GB of RAM. Any other project test I've done in leadwerks, so far ran like butter. But this one, that involves Actors is severely laggy. I've got to be doing something wrong with handling actor instances.

 

PS: This is a C++ Project so make sure yo Consult the Visual Studio Solution.

 

EDIT: I have uploaded an updated project (Overrun_2). I speculated that the tanking performance could be due to the collision objects getting stuck inside one another and the collision solver is getting overloaded. So I've added a little offset to make sure NO instances are created inside one another or inside the dummy placeholder mesh. Unfortunately still the same results are observed.

Overrun.zipOverrun_2.zip

 

Link to comment
Share on other sites

2 minutes ago, gamecreator said:

The character.fbx only has 25 bones, which is very reasonable.  That shouldn't be the problem.  https://www.leadwerks.com/community/topic/17544-character-fps-test/

 

Makes me wonder indeed. An old game like L4D on this very same machine could handle dozens of zombies so I wonder what's happening under the hood that's making them so expensive.

Link to comment
Share on other sites

12 minutes ago, Rick said:

From the little text I see in your editor you're in debug mode? Debug mode is horrible.

Thanks for the suggestion. How do I disable debugging mode? Also what is so horrible about it that impacts the performance so much? Is it the Print to console commands? 

Link to comment
Share on other sites

I don't know exactly what it is about debug mode but don't ever run it and expect good results. It's really bad for that. In VS there should be a dropdown in the toolbar that says Debug and you can change it to Release I think.

  • Like 1
Link to comment
Share on other sites

43 minutes ago, Rick said:

I don't know exactly what it is about debug mode but don't ever run it and expect good results. It's really bad for that. In VS there should be a dropdown in the toolbar that says Debug and you can change it to Release I think.

Can confirm, ran this project and spawned 33 characters before my frames went down below 30. On debug, I spawned maybe 12 and my framerate went down to single digits.

Link to comment
Share on other sites

Just ran in release mode. Got the same result as you two, suddenly can spawn hordes of these things on my 10yo machine. What in the name of optimization is going on here? @wadaltmon lmao if Janko was here he'd have a stroke... 

 

Also things like timers and counters are totally wrong in release mode, some are too fast. So Debug mode can't be relizably used then, otherwise I'm gonna have to re-code half of the game's time critical events.

  • Sad 1
Link to comment
Share on other sites

1 minute ago, TheConceptBoy said:

As the matter of fact, the more Entities I add, the slower my time critical counters are operating, Like camera wobble that uses wibble = sin(wobble_time) however my player movement speed stays the same, as if internally compensated by delta time. This is bizarre. 

I remember you were talking about animation time not being 1-to-1 from Blender to LW. Maybe bone-based animation does not abide by delta time, but the physics system does.

Link to comment
Share on other sites

Just now, wadaltmon said:

I remember you were talking about animation time not being 1-to-1 from Blender to LW. Maybe bone-based animation does not abide by delta time, but the physics system does.

Well actually notice how even as the frame rate drops the hand sprint animation pretty much stays the same? Notice the head bob starting way too fast than what I based it off in the debugging (close resembled when I spawned some entities.)

Link to comment
Share on other sites

1 hour ago, Rick said:

I don't know exactly what it is about debug mode but don't ever run it and expect good results. It's really bad for that. In VS there should be a dropdown in the toolbar that says Debug and you can change it to Release I think.

So do you use context and drawing variables as GUI items and widgets to the game context to debug?

Link to comment
Share on other sites

6 minutes ago, TheConceptBoy said:

Well actually notice how even as the frame rate drops the hand sprint animation pretty much stays the same? Notice the head bob starting way too fast than what I based it off in the debugging (close resembled when I spawned some entities.)

You spawned your gun as a Model* and your enemies as Entity*. If you change that, does it make a difference?

Link to comment
Share on other sites

5 minutes ago, wadaltmon said:

You spawned your gun as a Model* and your enemies as Entity*. If you change that, does it make a difference?

 

 

 

Enemies are spawned as models too though. 

 

The only place where I use entities is when I look through the world entity markers to place enemies on those markers. And that only happens when I press the keyboard key

Link to comment
Share on other sites

7 minutes ago, TheConceptBoy said:

So do you use context and drawing variables as GUI items and widgets to the game context to debug?

I do but I also use printf/cout to write to the console, which you can enable by right-clicking on your project name in the Solution Explorer, Properties, Configuration Properties, Linker, System, change SubSystem to Console.

Link to comment
Share on other sites

1 hour ago, gamecreator said:

So what exactly is the problem now?  I thought you said above that you could spawn more enemies once you switched to release.

More yes. about 15 instances before the performance hit is bad enough to notice and bad enough to complain about if you paid for a game that ran like that. 

I'd really like to say it's due to my old hardware  but at the same time a large part of my Steam library plays fine so. As the matter of fact. I can have a pretty packed level of static objects that run just fine. Add a few actors (since this is a zombie game) and it grinds below 15 fps. Engine should really be able to provide way more head room than than I believe.  

 

I have to experiment some more.

Link to comment
Share on other sites

If you can instance static geometry with the same kind of mesh complexity without this issue it would have to be the skinning performance. Leadwerks supports hardware skinning, and while that GPU is not great, it not THAT bad.

One other test you could try, although tedious, would be to attach static meshes to each bone rather than using a skinned mesh. Preferably with objects that match the same poly count as the skinned mesh. That would isolate the skinned mesh performance from physics.

Also, the hand animation to head bob de-sync might be caused by world update and physics update calls? Are both functions under the same update?

Link to comment
Share on other sites

2 hours ago, Daemoc said:

One other test you could try, although tedious, would be to attach static meshes to each bone rather than using a skinned mesh. Preferably with objects that match the same poly count as the skinned mesh. That would isolate the skinned mesh performance from physics.

@TheConceptBoy I think you've already done this with one instance. Is it possible to parent an existing or newly created model to a specific bone of an existing rig in LW?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...