How to increase FPS? (UPBGE)

I’m nearing the completion of my game, but I’ve noticed that average FPS on my gaming PC is 30FPS, which makes me think that on regular PCs it will be unplayable.

1)Any general ideas on how to increase FPS? I have decimated objects with 600k vertices down to 3k yet I haven’t noticed much FPS change. 2)I noticed that there is a 20% FPS change between looking towards a building with many objects (30FPS) and looking away from it (36FPS). Is there a way to keep FPS consistent?

I appreciate any help. Thanks.

on most modern hardware, vert counts are quite cheap, you can easily get away with 100s of thousands. materials and lights will be the most costly. armatures are also costly,this is an exception, deformed meshes should be kept as low as possible, even 5k is pushing high end for a character. 10k is ok for the “hero” (player, single asset, close to camera)

Hello Daedalus, to put things into perspective -
Regular character: Game = 30FPS
When armature is applied (nullified): Game = 60FPS (I just checked and that sounds crazy to me).

Is there a way of reducing the influence of the armature on FPS?

ah, i see you are using upbge 030, that has a known limitation of armature deforms. due to the way upbge was integrated, it limited the optimization of many things. currently its advised to simply not use armatures.

1 Like

hi for levelup FPS you need use occluders - for hidden object in buildings or closed large objects - large rock close soldier - make for large rock simply occluder model if player look to rock, engine calculation only rock and not calculation hidden soldiers. if you animation get very more fps make system for play animation in distance - if distance very high player not see wat animation play enemy or npc - player see only motion object for this you need make system get distance and cut actors animation in long distance - for this in active camera add script -
own = cont.owner
dist = None
for i in scene.objects:
if ‘actor’ in i and own.getDistanceTo(i)>20.000:
i[‘Property_for play_animation’] = False
elif ‘actor’ in i and own.getDistanceTo(i)<10.000:
i[‘Property_for play_animation’] = True
if you use run armatures for tracking agents to objects this get fall FPS and this logic need run delay somebody 15-30 logic tic good solution for run armature delay and work, and return to occluder objects - if you unit hidden occluders and use play armature action - this not fall FPS - because occluder cut all calculation - render object, animation objects, physics calculation - just right stand in position occluders in scene

1 Like

This is irrelevant to the topic at hand. UPBGE 0.3 has no occluder physic types unlike in legacy releases.
It now only has EEVEE’s built-in Render Culling, which is relatively already automatic.

really? i dont now this, its bad news - because physics occluders i make and position for need location work good, i think automatic culling render not good for game development if user not drive this culling