Weird bugs explained.

Shifty Geezer

uber-Troll!
Moderator
Legend
Taking a chance on this thread, which'll only get anywhere if devs want to weigh in, but I want to discuss some of the oddest bugs people have experienced in games and try to understand what causes them.

eg. The recent screenshot that showed the refection of the gun barrel on the side of the gun, explained as an alternative projection when rendering the gun before applying screen-space reflections type thing.

I'll start with my impetus - Borderlands 2's random object replacement. On some rare occasions playing online, the local environment either has blacked out objects with no details, or, most curiously, objects completely missing or replaced. I have seen the vending machines in Sanctuary missing while my friends were shopping at them. We also had a vending machine in one level for a friend where myself and another saw only a skag pile.

Given the scenery are static levels defined on the local machine, how can the objects get replaced with different ones or not loaded at all? I can't understand what's going on under the hood to account for this, hence my curiosity and question.

I don't know if anyone else has experienced a completely weird bug that's worth asking about. I'm not talking the typical collision error or boundary violation of general graphical glitch, but one that seems a real headscratcher and who's explanation will help better understand how modern games work.
 
Taking a chance on this thread, which'll only get anywhere if devs want to weigh in, but I want to discuss some of the oddest bugs people have experienced in games and try to understand what causes them.

eg. The recent screenshot that showed the refection of the gun barrel on the side of the gun, explained as an alternative projection when rendering the gun before applying screen-space reflections type thing.

I'll start with my impetus - Borderlands 2's random object replacement. On some rare occasions playing online, the local environment either has blacked out objects with no details, or, most curiously, objects completely missing or replaced. I have seen the vending machines in Sanctuary missing while my friends were shopping at them. We also had a vending machine in one level for a friend where myself and another saw only a skag pile.

Given the scenery are static levels defined on the local machine, how can the objects get replaced with different ones or not loaded at all? I can't understand what's going on under the hood to account for this, hence my curiosity and question.

I don't know if anyone else has experienced a completely weird bug that's worth asking about. I'm not talking the typical collision error or boundary violation of general graphical glitch, but one that seems a real headscratcher and who's explanation will help better understand how modern games work.

Although the MP level(s) is static (the physical world/sandbox itself), aren't certain assets streamed in and out depending on the overall server to server load balancing act that's going on (dynamic load sharing algorithm)? Especially, massive multiplayer games like Borderland's 2. Thus, the algorithm isn't properly doing its job(s) between servers, creating these weird anomalies locally.

Not that I'm saying Borderland's 2 servers is using that particular method... but just a guess.
 
My guess is the 'world' as defined by collisions, etc, is permanent for everyone, but bugs can lead to objects not being loaded. If the collision boxes are part of an invisible environment, then it can be explained. You'd expect being able to clip through the non existing objects if it were otherwise.

My bug is the one in Gran Turismo 4 where the screen gets "deinterlaced" for a short moment. Is it because the refresh exceeds 60hz? Or is it that the game is dropping frames so it duplicates a field
 
can someone explain what's happening there ?

FIFA_glitch.gif


:oops:
 
...

Not that I'm saying Borderland's 2 servers is using that particular method... but just a guess.
Borderlands 2 is peer-to-peer. AFAIK data is loaded from the local HDD for levels etc, although I guess there must be some synchronisation for when someone opens a chest etc. But even then, a vending machine can go completely missing. How does that happen? An uncorrected data fault in the network giving a wrong synchronisation? That would then have to be saved locally, because these errors are, IIRC, persistent across levels.

As I understand it, the level is recorded effectively as a database of object references with a point to the desired model and a record for its position and orientation. In some cases, entirely the wrong object is referenced locally. I can't see how a record for 'skag pile' can be muddled with a record for 'vending machine'. I suppose it has to be data corruption on the network as it doesn't happen offline.
 

General skinning glitch.
Most animation is performed on the 'skeleton' of a character. the skeleton is a hierarchy of joints that connect the 'bones' if a character. Sometimes this is called a rig.

Here is a random example:
http://1.bp.blogspot.com/_-xDCOhtRz...Dqo/Ld9XOeBkLRs/s1600/mayaCharacterRIG02a.jpg

The small blue spheres are the joints, the connections represent the parent/child hierarchy (bones)
There may be 100+ joints in a more complex character (fingers, etc).

When rendering, it is common to have the CPU generate the joint position/rotation heirachy, and then get the GPU to blend these transforms per-vertex (each vertex will have a list of joints and weights which determine how the vertex blends).

What is important is that the parent/child hierarchy determines processing order because the transform of a joint rotates/scales/moves all the child joints. It is very reclusive, a change to the root joint affects the entire character!

Needless to say, this all gets rather expensive and fiddly.

When the joint data gets to the gpu, it's usually a flat list of float 4x3 matrices. Ie, 12 floating point values per joint. 9 of these values will represent rotation and scale (xyz axis mappings) and 3 will represent translation (moving).

Now, imagine what might happen if when processing a skeleton, the memory address the gpu was reading was, say, wrong by 8 bytes? You'd be reading rotation values as translation, translation as scale... etc, and if it were wrong when building the world space skeleton, the smallest error at the root could go horribly, horribly wrong.

I'm not saying this is happening here, but it's an example of how something like this might happen. Basically, at some point on the CPu or gpu, the bone transforms are getting corrupted - although usually when it is pure garbage corruption, you get something much more random (think the goldeneye glitch), whereas this is remarkably consistent movement (it could be the animation system they use stores animation delta's, and for some reason in this case it got stuck and kept applying the same delta over and over).
 
Sometimes you just have silly driver bugs too, happened to me on release of a game, people reported seeing "balls of triangles" instead of characters, the culprit was nVidia's driver... ^^
Not always the devs fault things go wrong.
 
Sometimes you just have silly driver bugs too, happened to me on release of a game, people reported seeing "balls of triangles" instead of characters, the culprit was nVidia's driver... ^^
Not always the devs fault things go wrong.

I once had a driver bug where MSM messenger appeared in my water reflection.
I admit this was quite a while ago :mrgreen: (and yes, obviously it was nvidia)
 
in almost every game with cloth simulation i have seen, during cutscenes, when the view goes back to a character or objet with clothes, you can see the parts with moving clothes falling like they were floating. why ?
 
in almost every game with cloth simulation i have seen, during cutscenes, when the view goes back to a character or objet with clothes, you can see the parts with moving clothes falling like they were floating. why ?

The vertices on the cloth got 'reset' to the original positions such that it takes a few frame fall it to 'fall' onto the current mesh. Since there's no previous/transitional states for the cloth to simulate when they are off the camera, not that it can't be done, but it's kinda wasting processing power to do so.
 
Last edited by a moderator:
Back
Top