View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002734 | The Dark Mod | Coding | public | 18.04.2011 18:05 | 27.12.2019 05:01 |
Reporter | grayman | Assigned To | grayman | ||
Priority | normal | Severity | major | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Product Version | TDM 1.05 | ||||
Target Version | TDM 1.06 | Fixed in Version | TDM 1.06 | ||
Summary | 0002734: Inaccurate AAS data can lead to a hang. | ||||
Description | This has only been seen once, in a map under construction. The architecture of the map somehow caused the AAS data to be incorrect. This created a situation where a search for likely spots to look for the player was searching in a volume whose min values were higher than its max values. The code wasn't allowing for that situation, resulting in an endless loop, hanging the game. | ||||
Steps To Reproduce | Build and run the attached map. Run past the first guard and AI will be alerted elsewhere. Sometimes the hang occurs, sometimes it doesn't, so you have to keep trying. | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Added code to idBounds.Intersect() and idBounds.IntersectSelf() to handle null intersections. Without it, it was possible to generate a search area that couldn’t be handled by the hiding spot search, causing a hang. AAS data was not the problem. rev. 4806: bounds.h - the fix DarkModGlobals.cpp - added AAS logging DarkModGlobals.h - added AAS logging rev. 11844: tdm_defs.script - added AAS logging |
|
Just bumped into this change of idBounds intersection. Well, I must say the new way is not how box intersection is expected to work. When boxes don't intersection, their "intersection" must be a box inverted across at least one dimension. Luckily, there are only a few places which call this method, so I can revert it by moving the check for intersection into call sites. What is important is that the IntersectSelf is used in interaction culling, where this old change efficiently disabled culling in most cases. I wonder how this did not cause noticeable performance regression. UPDATE: In fact, this change could not be noticed until Doom 3 source code was integrated into TDM codebase, since at the time of 1.04 the game engine was a separate .exe with its own unmodifiable instance of idlib. |
|
I don't understand what "their 'intersection' must be a box inverted across at least one dimension" means. That makes no sense to me. |
|
Committed the revert in rev 8468. | |
Date Modified | Username | Field | Change |
---|---|---|---|
18.04.2011 18:05 | grayman | New Issue | |
18.04.2011 18:05 | grayman | Status | new => assigned |
18.04.2011 18:05 | grayman | Assigned To | => grayman |
18.04.2011 18:05 | grayman | File Added: fau08_bugged.map | |
19.04.2011 21:48 | grayman | Note Added: 0003810 | |
19.04.2011 21:48 | grayman | Status | assigned => resolved |
19.04.2011 21:48 | grayman | Resolution | open => fixed |
19.04.2011 21:48 | grayman | Fixed in Version | => TDM 1.06 |
27.10.2011 05:20 | greebo | Status | resolved => closed |
26.12.2019 16:58 | stgatilov | Note Added: 0011946 | |
27.12.2019 03:06 | grayman | Note Added: 0011947 | |
27.12.2019 05:01 | stgatilov | Note Edited: 0011946 | |
27.12.2019 05:01 | stgatilov | Note Added: 0011948 |