ID:2309006
 
Resolved
Turfs with other turfs in their vis_contents could sometimes get confused about where their "minimum" turf was, resulting in incorrectly applied transforms that drew objects in the wrong position.
BYOND Version:512.1392
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Chrome 61.0.3163.100
Applies to:Dream Seeker
Status: Resolved (512.1393)

This issue has been resolved.
Descriptive Problem Summary:

I wrote a simple little system that allows you to see down to another Z level in a DMM. It for the most part works pretty well. When I stand still, I'm getting consistent rendering results, but when I start moving around, there's all kinds of garbage left on screen.

This issue's really hard to explain, so I've included a gif of the problem in action:



And per usual will attach a test case in a few minutes once I sync changes to my libraries.

Runegate.dme is the one you want to be building and running this time.

Ter13.AutotileLib, Ter13.StdLib, Ter13.ControlLib are all required to properly compile and run this simplified test case:

http://files.byondhome.com/Ter13/Bug1392.zip
A better description of what's going on in that gif follows.

I've got one client connected on Z-level 1, and one connected on Z-level 2. Z-level 1 is full of standard turfs and objs. Z-level 2 has a special kind of /turf laid over the parts of it that aren't walkable called /turf/see_down.

The only thing this turf does is add the turf one Z-level below it to its own vis_contents when the PostInit() event fires (This means basically that the map is done initializing, and scheduled post-init tasks are being fired.

I do this in PostInit() because turf/New() technically causes the top layer to init before the bottom one.

turf
see_down
post_init = 1

PostInit()
icon = null
vis_contents += locate(x,y,z-1)


As you can see, the player on Z-layer 2 can see the player on Z-layer 1, but the player on Z-layer 1 can't see the player on Z-layer 2. This is by design. But you'll also notice the player on z-layer 2 sees his map get all jacked up when he moves around the world a bit. Chunks of the world just plain show up in the wrong places.
I'm on the case.
Hmm, was one of those libs updated but not uploaded? I'm getting a number of errors:

Runegate.dm:59:error: binds: undefined var
Runegate.dm:61:error: BIND_DPAD_UP: undefined var
Runegate.dm:62:error: BIND_DPAD_LEFT: undefined var
Runegate.dm:63:error: BIND_DPAD_DOWN: undefined var
Runegate.dm:64:error: BIND_DPAD_RIGHT: undefined var
Runegate.dm:65:error: W.state: undefined type: W.state
Runegate.dm:65:error: A.state: undefined type: A.state
Runegate.dm:65:error: S.state: undefined type: S.state
Runegate.dm:65:error: D.state: undefined type: D.state
Runegate.dm:70:error: A.time: undefined type: A.time
Runegate.dm:71:error: D.time: undefined type: D.time
Runegate.dm:81:error: W.time: undefined type: W.time
Runegate.dm:82:error: S.time: undefined type: S.time
Runegate.dm:61:warning: W: variable defined but not used
Runegate.dm:62:warning: A: variable defined but not used
Runegate.dm:63:warning: S: variable defined but not used
Runegate.dm:64:warning: D: variable defined but not used

I looked at ControlLib and it doesn't define the binds var or /keybind datum.
Sorry. Try now.
Lummox JR resolved issue with message:
Turfs with other turfs in their vis_contents could sometimes get confused about where their "minimum" turf was, resulting in incorrectly applied transforms that drew objects in the wrong position.