when hard-linking renderers, put the old renderer (not the new one) into the "ioquake3" executable, and use a distinguished "ioquake3_rend2" executable for the new renderer
(Fixes bug #5789.)
really fix the confusion with game entity and refentity numbers
for any natural number M, the following is logical as a whole:
- the array size for refentities is M;
- the refentity number limit is M-1, ie., each refentity number is in [0..M-1];
- the special number for the world is M.
before r1429, the code was roughly the following:
// constants related to the game, should not be used by the renderer
// renderer stuff
refEntity_t refEntities[MAX_ENTITIES];
int numRefEntities = 0;
void addRefEntity(refEntity_t re)
{
if (numRefEntities >= ENTITYNUM_WORLD)
return; // full
refEntities[numRefEntities++] = re;
}
void render(int num)
{
if (num == ENTITYNUM_WORLD)
renderWorld();
else
renderRefEntity(refEntities[num]);
}
so before r1429,
- the array size for refentities was 1023;
- the refentity number limit was 1021, ie., each refentity number was in [0..1021]; and
- the special number for the world entity was 1022.
this was a small waste of memory, as the last array element wasn't used.
r1429 changed
if (numRefEntities >= ENTITYNUM_WORLD)
to
if (numRefEntities >= MAX_ENTITIES).
this creates the following configuration:
- the array size for refentities is 1023;
- the refentity number limit is 1022, ie., each refentity number is in [0..1022]; and
- the special number for the world entity is 1022.
r1429 just makes things worse: it allows 1 more refentity to be added, but that entity doesn't get drawn anyway, as its number will be equal to the special number for the world. this is a small waste of not only memory, but also processing time.
perhaps in XreaL,
ENTITYNUM_WORLD is a game entity constant, and has nothing to do with refentities. a new REFENTITYNUM_WORLD constant should be added to denote the special number for the world, and that constant should be used in the renderer code in place of ENTITYNUM_WORLD. so define such a constant, and let it be equal to MAX_ENTITIES, which is 1023.
Bots set their team later, setting it here causes some bots to change team and die later. Can cause extra skulls to be spawn at beginning of harvester (bug #5740).
- A stupid bug where bots re-trigger jumppads if they fell onto it.
- A small "memset" bug concerning player animations.
- Reward sounds were never cleared and thus they are played on a map restart.
- Safer and more secure handling of disconnected clients and clients with
malformed or illegal info strings.
- first_gauntlet_hit.wav was not played (ops/ps) bug
- capturelimit not hit (from OAX)