|
Post by MaxED on Jun 12, 2019 9:37:00 GMT -5
Found in Cmd_Fog_f():
else if(Q_stricmp (cmd, "Fog_List") == 0 ) { ... for(i=0; i<level.fogs; i++) { pfog = &gfogs[i]; // <- changing global pfog var here desn't seem right to me. gi.dprintf("Fog #%d\n",i+1); ... } }
|
|
|
Post by MaxED on Jun 21, 2019 4:59:17 GMT -5
Enabling both r_ext_texture_compression and bloom kills performance.
|
|
|
Post by knightmare on Jul 8, 2019 22:53:37 GMT -5
Instead, I've noticed something different: in some cases when a bot respawns, position of it's corpse is interpolated from bot's current position to corpse position. This doesn't happen every time and seems to happen only when corpse and bot's respawn location are in player's PVS. This happens regardless of cl_async and cl_predict settings. Turns out this was caused by the ACE bot's custom ACESP_PutClientInServer() function not copying the bot's new spawn origin to its oldorigin field. Enabling both r_ext_texture_compression and bloom kills performance. Disabling texture compression on it_pic images fixes this one easily.
|
|
|
Post by MaxED on Jul 25, 2019 17:37:04 GMT -5
Found in SV_Physics_Step():
//Knightmare- also do func_breakaways else if((ent->movetype == MOVETYPE_PUSHABLE) || !strcmp(ent->classname, "func_breakaway")) { // We run touch function for non-moving func_pushables every frame // to see if they are touching, for example, a trigger_mass G_TouchTriggers(ent); if(!ent->inuse) return; }
else if(ent->movetype == MOVETYPE_PUSHABLE) // <- unreachable code { // We run touch function for non-moving func_pushables every frame // to see if they are touching, for example, a trigger_mass G_TouchTriggers(ent); if(!ent->inuse) return; }
switch (current) { case CONTENTS_CURRENT_0: ent->velocity[0] = v; break; case CONTENTS_CURRENT_90: ent->velocity[1] = v; break; case CONTENTS_CURRENT_180: ent->velocity[0] = -v; break; case CONTENTS_CURRENT_270: ent->velocity[1] = -v; break; case CONTENTS_CURRENT_UP : ent->velocity[2] = max(v, ent->velocity[2]); // <- is this fall-through intentional? case CONTENTS_CURRENT_DOWN: ent->velocity[2] = min(-v, ent->velocity[2]); }
|
|
|
Post by MaxED on Jul 26, 2019 9:51:16 GMT -5
Found in PM_CatagorizePosition():
if (!trace.ent || (trace.plane.normal[2] < 0.7 && !trace.startsolid) ) { // ================= jitclipbug //... } else if (!trace.ent) // <- unreachable code { // ================= end jitclipbug pm->groundentity = NULL; pm->s.pm_flags &= ~PMF_ON_GROUND; }
|
|
|
Post by MaxED on Jul 26, 2019 20:28:54 GMT -5
Found in ClientObituary():
if (deathmatch->value || coop->value || !deathmatch->value)
|
|
|
Post by MaxED on Jul 28, 2019 17:07:58 GMT -5
Mouse looking feels very imprecise and delayed when a player stands on a rotating func_rotating.
|
|
|
Post by knightmare on Jul 30, 2019 13:56:14 GMT -5
That's because the rotating bmodel's angles are added to the player's on the server side, not in client prediction. I have yet to find a way to implement this properly in the pmove/predict code. Found in PM_CatagorizePosition():
if (!trace.ent || (trace.plane.normal[2] < 0.7 && !trace.startsolid) ) { // ================= jitclipbug //... } else if (!trace.ent) // <- unreachable code { // ================= end jitclipbug pm->groundentity = NULL; pm->s.pm_flags &= ~PMF_ON_GROUND; }
This one is easy enough to fix: if (!trace.ent || (trace.plane.normal[2] < 0.7 && !trace.startsolid) ) { // ================= jitclipbug trace_t trace2; vec3_t mins, maxs; // try a slightly smaller bounding box -- this is to fix getting stuck up // on angled walls and not being able to move (like you're stuck in the air) mins[0] = pm->mins[0] ? pm->mins[0] + 1 : 0; mins[1] = pm->mins[1] ? pm->mins[1] + 1 : 0; mins[2] = pm->mins[2]; maxs[0] = pm->maxs[0] ? pm->maxs[0] - 1 : 0; maxs[1] = pm->maxs[1] ? pm->maxs[1] - 1 : 0; maxs[2] = pm->maxs[2]; trace2 = pm->trace(pml.origin, mins, maxs, point); if (!(trace2.plane.normal[2] < 0.7f && !trace2.startsolid)) { memcpy(&trace, &trace2, sizeof(trace)); pml.groundplane = trace.plane; pml.groundsurface = trace.surface; pml.groundcontents = trace.contents; pm->groundentity = trace.ent; } } if (!trace.ent) // this is now reachable without the else { // ================= end jitclipbug pm->groundentity = NULL; pm->s.pm_flags &= ~PMF_ON_GROUND; } else
Note the memcpy there from trace2 to trace and the removal of the else.EDIT: Scratch that, it completely breaks player movement over anything other than solid, non-bmodel surfaces.
|
|
|
Post by MaxED on Aug 1, 2019 5:37:56 GMT -5
Found in M_CheckAttack():
if (self->enemy->flags == FL_REFLECT) { // no waiting for reflections - shoot 'em NOW chance = 2.0; } if (self->monsterinfo.aiflags & AI_STAND_GROUND) // <- Should be "else if"? { chance = 0.4; } else if (enemy_range == RANGE_MELEE) { chance = 0.2; }
|
|
|
Post by MaxED on Aug 1, 2019 9:27:54 GMT -5
Looks like ai_chicken() doesn't do anything useful (it does some calculations, but the results aren't used).
This means the whole AI_CHICKEN logic is broken, because AI_CHICKEN flag is never assigned.
|
|
|
Post by Marandal on Mar 12, 2020 7:20:06 GMT -5
Wierd screen Tripling when using Odd Resolutions And Bloom at the same time. (856x480 was used in the screenshot) this was in Windowed mode.
I can easily avoid it by using any Standard resolution. Attachment Deleted
|
|
|
Post by knightmare on Mar 12, 2020 14:13:14 GMT -5
Also happens at 800x480 and 640x480. Looks like a bug with video modes below 512 pixels in height.
Setting r_bloom_sample_size to 128 and a vid_restart fixes it.
Honestly, the current bloom implementation is crap and needs to be completely redone. But it's low on my list of priorities.
EDIT: Got this fixed, will be in the next nightly build.
|
|