Closed MarioSMB closed 3 weeks 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.
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.
Interpolation for Quake-style monsters is hardcoded to the MOVETYPE_STEP movetype: https://github.com/DarkPlacesEngine/darkplaces/blob/master/sv_send.c#L580