DarkPlacesEngine / DarkPlaces

The official repo (replaces SVN). Branches `master` and `div0-stable` are synchronised with https://gitlab.com/xonotic/darkplaces. Merge requests should target the `master` branch.
https://icculus.org/twilight/darkplaces/
GNU General Public License v2.0
270 stars 38 forks source link

Monster interpolation tied to step movetype #82

Closed MarioSMB closed 3 weeks ago

MarioSMB commented 1 year ago

Interpolation for Quake-style monsters is hardcoded to the MOVETYPE_STEP movetype: https://github.com/DarkPlacesEngine/darkplaces/blob/master/sv_send.c#L580

Baker7 commented 8 months ago

cvar_t sv_gameplayfix_monsterinterpolate = {CF_SERVER, "sv_gameplayfix_monsterinterpolate", "1", "Scrag interpolation. Force interpolation via RENDER_STEP for all FL_MONSTER entities. [Zircon]"};

if (PRVM_serveredictfloat(ent, movetype) == MOVETYPE_STEP)
    cs->sflags |= RENDER_STEP;
else if (sv_gameplayfix_monsterinterpolate.integer && Have_Flag ((int)PRVM_serveredictfloat(ent, flags), FL_MONSTER_32))
    cs->sflags |= RENDER_STEP;

In theory.

Scrags move so slow, I can't see a difference in a local game and I'm not sure of how to make a scenario where this would be easy to notice.

However, DarkPlaces does not interpolate monsters at all when connected to Quakeworld servers and I added monster interpolation for Quakeworld via the method that Quakeworld clients do for single player (which is to name match via a list of models like "progs/soldier.mdl", "progs/shambler.mdl", etc. and for DarkPlaces, to add RENDER_STEP on the client side if an incoming entity has a modelindex of one of those models.) and it was obvious when playing Quakeworld coop that the scrags became interpolated as well as the other monsters because their movement was particularly bad without interpolation.

MarioSMB commented 8 months ago

Thanks for the info, it would be great to see that feature merged into DarkPlaces - indeed there are some cases (especially in mods) where non-step movetype monsters would greatly benefit from interpolation, appearing very choppy without it.