Skip to content

Grab and shimmy tests in classic Tomb Raiders

Anatoly Grishin edited this page Jul 9, 2015 · 1 revision

Original engines used simple yet bug-plagued way to test each sector's climbability and ability to grab and shimmy edges, which eventually resulted in "bug or feature" paradox extensively abused by original level designers at first, and then by whole TRLE community.

The way engine tests ability to shimmy specified sector based on comparison of two specific values contained in each sector's floordata - absolute flat floor and ceiling heights - ignoring sector corners. When there is no gap between these two floor/ceiling values, sector is considered non-grabbable. But when we have at least one corner of a sector "sticking out", or even worse, if actual floor/ceiling are non-flat but without gap, whole sector perimeter becomes grabbable.

What happens is, when sector corners are not equal, sector's floor/ceiling height is calculated from lowest corner - hence, whole floor/ceiling value will be lower than actual floor/ceiling height. So when engine tests such setup for "grability", it misinterprets it as there's a crevice, even if there isn't.

Here is a test video with both possible setups: http://youtu.be/31Yq1EVwG6Q

As we can see, first column has no actual gap between floor/ceiling, but Lara successfully grabs it, because flat floor/ceiling values indeed have a virtual gap there, as sector corners aren't equal and there is a slant. Second column has flat floor and ceiling, hence no actual and no virtual gaps altogether, so grability test returns false, and she can't grab it. Third column is more obvious, since we left both actual and virtual gap there, and as with first column, Lara can shimmy across whole sector perimeter.

This is actually an ancient bug which was abused by level builders since TR1 - it's possible that they requested programmers not to fix it in TR2+, cause it's a funky way to hide secret passages and pathways. Eventually, this bug was also extensively abused by TRLE users for same setups.