Degrading model quality?

Is there some tool that could do this automatically? Reduce polygon count perhaps? To degrade texture it seems that resizing to 50% or 25% does the job.

Project Q has gorgeous creature models but they are simply unusable in multiplayer and causes heavy graphical lags. Some of the creatures from CEP are also doing this. Degrading the quality is the only way to use them for me.

Blender has a vertex/face decimate function if that’s the direction you’re heading.

https://docs.blender.org/manual/en/latest/modeling/modifiers/generate/decimate.html

No comment on if or how that can be applied to NWN models.

Meshlab could do it, but i am not sure it understands Max natively (you can probably export your model in a compatible format before). The best part is that the program is free to use (GPL licence).

http://www.meshlab.net/

1 Like

I confirm, you need to export the mesh as obj, fbx or another non-proprietary format as Meshlab doesn’t read .max files.
Same for mdb and mdl files: export them first to obj if you want to reduce the polycount.

thanks guys I will give it a shot

You might try compiling the models if they are not already, that should reduce lag.

Blender has a decimate tool which serves the purpose you’re asking about but if project q or cep models are giving you trouble, my guess is reducing mesh complexity won’t solve anything.

well maybe the main problem is texture, I need to verify that first but I ran into an issue where android players were reporting huge lags with the CEP Pit Fiend model in an area where there was 20+ spawned at once. (I replaced it for vanilla Pit Fiend and it is fine now). And this model has dds texture so in fact the model was invisible to them except wings that uses vanilla texture + emitters. Now, maybe it was caused by emitters but vanilla Balor has them too and it is not causing problems so I deduced it must model being too high poly what is causing it.

I have better HW now so I don’t see it anymore but I remember that CEP mindflayer models were causing a graphic lag on spawn. And then project Q… opened the base module, chosen perhaps 20 creatures from custom paletter that I liked and wanted to see how they behave ingame so i put them into area pressed F9 and I saw the biggest lags of my life. 10second graphic lag followed by 2 second running and 10sec lag again. Absolutely horrible, what is point of such models really?

What specific Q models were you using?

risen skeletons, mounted skeletons and few more I don’t remember, unfortunately I deleted the selection already so I don’t know for sure

That’s odd. The risen and mounted skeletons are just variants of _Six’s Undead Redux skeletons with a few bits added that Tiberius_Morghun did. The skeleton horse is also pretty simple mesh compared to other creatures.

In the past I’ve had areas with at least two dozen of the risen dead coming up out of the ground in a chain-loop and didn’t experience lag. I’ve also had as many as a half-dozen skeletons mounted on skeleton horses and didn’t get lag. However, both cases were using v1.69, leaving me to wonder if the lag you’re getting is a “feature” of EE.

Which version of Q did you pull the models from, or did you get them from elsewhere?

it seems they have custom combat animation so that is one possibility

this being EE issue is of course also possible, client crashing, fps drops and memory leaks this is now very common

I used project Q 3.1base for EE, downloaded it few days back, no other modification, I tested it withing the Q nodule, didn’t rip anything

I’ll have to look at that. If I get to the bottom of it I’ll let you know. A LOT of the models were compiled after I left Q and before I came back and many of those anim supers do NOT like it when they are compiled. I thought I had fixed such issues before releasing 3.1, but its quite likely I missed some given the new quirks with EE as, being a one-person show, I didn’t go through stuff that worked in the past.

Been testing for the last hour in Q v3.1 using the “moat house” area in the Q v3 demo mod. I painted three overlapping encounter triggers just beyond the transition trigger and painted the module’s start location on top of the waypoint at the area’s south edge.

For each trigger I set min/max creatures to 8 and loaded in all the risen skeletons and mounted skeleton templates into the creature list. Thus, 24 creatures will spawn at the same time.

I have the in game frame counter enabled. My system is an AMD Ryzen 3 2200G w/ 8 GB Ram. I have a Radeon RX550 GPU with 4 GB VRAM.

Testing reveals the following:

  1. With no encounter activated, FPS runs at 95-102.
  2. Triggering the encounters drops the FPS to 25 and the screen hangs for about 1 second (since I can’t complete the phrase “one one thousand” - which takes about 1 second to speak.
  3. Once all 24 creatures are spawned, the FPS goes back up to 56-63 and runs at that level. Killing off half the monsters increases the FPS marginally.
  4. Slight FPS drop (approximately 5 fps) with casting spells (e.g. fireball, summon creature, etc.).

The test result clearly seem to me to indicate the issue isn’t with the models and is probably more a configuration issue with your settings.

My Settings.TML [Graphics] section

[graphics]
	gamma = 2.2000000476837158
	[graphics.creature-wind]
		mode = 0
	[graphics.effects]
		creature-environment-mapping = true
		high-quality = true
	[graphics.experimental]
		aggressive-texture-caching = true
		disable-gui-lighting = true
		enable-fragment-lighting = true
		enable-gamma-correction = true
		gl-finish-before-fbo = true
		optimize-buffer-updates = false
		optimize-shadow-rendering = false
		preload-area-objects = true
		render-cloaks = true
	[graphics.fbo]
		[graphics.fbo.dof]
			enabled = false
		[graphics.fbo.high-contrast]
			enabled = false
		[graphics.fbo.sharpen]
			enabled = false
		[graphics.fbo.ssao]
			enabled = false
		[graphics.fbo.vibrance]
			amount = 0.69999998807907104
			enabled = false
	[graphics.framelimiter]
		enabled = false
		[graphics.framelimiter.background]
			target-fps = 10
		[graphics.framelimiter.foreground]
			target-fps = 60
		[graphics.framelimiter.non-interactive]
			target-fps = 48
	[graphics.grass]
		mode = 1
		render-distance = 30000.000000000000
	[graphics.hilite]
		enabled = true
		glow = true
		[graphics.hilite.color]
			door = "#4cffff"
			enemy = "#ff1919"
			friend = "#4cff4c"
			item = "#4cffff"
			neutral = "#6666ff"
			placeable = "#4cffff"
			self = "#ffffff"
			trigger = "#4cffff"
	[graphics.intro]
		[graphics.intro.splash]
			enabled = false
	[graphics.keyholing]
		enabled = true
		max-radius = 0.60000002384185791
		min-height = 1.5000000000000000
		min-radius = 0.15000000596046448
		with-tooltip = false
	[graphics.lod]
		enabled = true
		scale-factor = 1.0000000000000000
	[graphics.movies]
		enabled = true
		[graphics.movies.intro]
			enabled = false
	[graphics.second-story-tiles]
		mode = 1
	[graphics.shadows]
		max-casting-lights = 2
		[graphics.shadows.creatures]
			mode = 0
		[graphics.shadows.environment]
			enabled = false
	[graphics.skyboxes]
		enabled = true
	[graphics.stats]
		enabled = true
	[graphics.texture-animations]
		enabled = true
	[graphics.textures]
		pack = 3
	[graphics.tile-borders]
		enabled = true
	[graphics.video]
		anti-aliasing-mode = 0
		refresh-rate = 60
		[graphics.video.anisotropic-filtering]
			enabled = false
		[graphics.video.vsync]
			enabled = false
	[graphics.water]
		shiny = false
	[graphics.window]
		mode = "exclusive"
		[graphics.window.fullscreen]
			height = 1080
			toggle-to-borderless = false
			width = 1920
		[graphics.window.position]
		[graphics.window.windowed]
			borderless = true
			height = 1080
			width = 1920
			[graphics.window.windowed.position]
				mode = "remember"
				x = 0
				y = 0

Yes, I have several advanced setting currently “off” (depth of field, vibrance) etc. as the current DEV build seems to have some issues that still need to be worked out with performance according to numerous posts and reports.

EDIT - Just finished running the Q demo as a Server. Results were the same.

Also, I forgot to note that because the demo module scripts aren’t setup right, you’ll have to cast spells using scrolls or drop a spell component bag, spellbook, and holy symbol in the area for the PC to pick up.

wait, the users experiencing lag were using android?

Tread carefully here, they might just be running the game in an inadequate phone.
I know my phone can run NWN ee but it’s from 2015 and it’s not even a mid-high range, it’s more of a mid-low price range phone. I imagine tons of phones can run the game but many are obviously not going to run a PW smoothly.

I missed that bit about Android users. Had I known that, I wouldn’t have bothered testing the models. Q was developed for PC, NOT console or Android. Any issues that occur on those platforms are a non-issue as far I’m concerned. Not that I’d bother to fix PC issues either as I’m done with any future Q updates (why I marked it abandonware).

Sincerely,
Pstemarie (aka the GrumpyOldGoat)

Sorry but when vanilla model is not doing lags and model from CEP or Q does then it is not a problem of a HW.

And the Q models were lagging on my PC - cpu i3, RAM 8gb, GTX 1060. It had nothing to do with android.

OK that’s different then - looking back over the convo I see nothing about Android aside from the comment from G_A so I’m not why he/she posted that. Anyways…

You definitely have enough RAM, the CPU is solid, and the GTX 1060 typically has 3 GB VRAM so that’s solid. Thus, that info begs the questions…

  1. What tileset was the area you were using?
  2. Do you have overrides running from /development or /override - prob not but I have to ask? If so, do you get lag with them disabled?
  3. What do your graphics settings look like compared to what I posted?
  4. Lastly, if you are using CPP - which shouldn’t matter - did you try it without CPP installed?
  1. I tested this in Project Q base module which has just the wildlands starting area 4x4 I placed 25 selected npcs there and pressed F9. Then unplayable lags happened untill my character killed all npcs.

  2. nothing in development, some stuff in override - loadscreens in TGA format, some special scripts belonging to NWNX_Patch plugin, voice sets without groans thats all.

  3. default settings, I did not mess with settings.tml, it is clean EE install basically. As for advanced graphic settings, best quality textures, EE-shader stuff turned off (can’t stand it), grass off, everything else turned on

  4. I did not indeed.

I will try it again later without CPP and without override, but to say this is no longer priority for me. I can’t be solving issues with any of my players having graphic lags be it any big or small. Even if they are playing from Android - if they have no problems with vanilla stuff and they do have problems with CEP/Q stuff it is not a problem of their device but problem of the model.

Yes I realize that this is where our philosophy differs. But I am not going to say my players get better HW or fuck off.

I agree completely with you. You have to do what is best for the players who play on your server. I even tried the module on my son’s rig - which can barely run Win 10 on some days - and he didn’t experience any significant lag once the creatures were spawned in.

IIRC, CPP modified the AI to make the NPCs use better tactics in combat. I’m wondering if rendering, combined with processing AI improvements might be some of the issue. That possibly being true, I’d have to agree on sacking the higher polycount models as the vanilla AI is just too stupid in 99% of cases.

EDIT - Just retried the mod, this time replacing the encounters with a combination of 25 placed Risen Dead and Mounted Skeletons (on Nightmares and Skeleton Horses). Intermittent lag all through the combat with the placed instances, but NOT if they are spawned from an encounter.

WTF - I’m at a loss on this one.

I eliminated the intermittent lag with placed instances by placing a Bioware horse into a “setup” area and making sure that HorsePreloadAnimations in the OnEnter script was not commented out or missing.

I also had to enable the Horse system switch in the Q demo mod’s OnModuleLoad event. This tells the module that there are horses in the module. In hindsight, this switch should probably de enabled by default, but…

EDIT - It might be prudent to call HorsePreloadAnimations(OBJECT_SELF) in the OnSpawn script of any mounted NPC.