ID:2058455
 
Resolved
Turfs with big "out of bounds" objects could sometimes be marked as interesting only after the object was sent, causing the client to think nothing was there and therefore not show the object.
BYOND Version:510.1333
Operating System:Windows 10 Pro 64-bit
Web Browser:Firefox 45.0
Applies to:Dream Daemon
Status: Resolved (510.1334)

This issue has been resolved.
Descriptive Problem Summary:

When atoms with very large icons or images leave the client's view they disappear, even though they should not with the new map system.

Moving the client's mob around or doing anything that might update the client's screen causes the objects to update and reappear properly.

Numbered Steps to Reproduce Problem:

Have an atom with (I assume) large images exit the client's view, with a portion of it still being on-screen.

Expected Results:

As with other large objects, it remains visible

Actual Results:

It disappears but reappears after the client mob moves or updates in some way (not sure exactly how).

Does the problem occur:
Every time? Or how often?
Every time

In other games?
Unsure

In other user accounts?
Yes

On other computers?
Yes

When does the problem NOT occur?

Unsure, very few atoms in my project actually use such large images/icons

Workarounds:

None so far.

I tried the instructions you sent me. When the boss dies, it disappears momentarily but it reappears as soon as it hits the "bottom" of its fall and the camera shakes; I'm not sure if the camera shaking is what makes it reappear.

Is there any way you can force this to happen in a way where it doesn't do the shake at the end, or maybe doesn't reach quite as far down? Even if you can simply tell me what parts of the code to change to recreate those conditions, that will help. It's critical that I be able to test this with the icon not appearing for a steady amount of time, while in the debugger.
Sure, in the Florahk.dm file, at the bottom there is a bump() call. If you comment out all the lines that reference the player...

EX: player.camera_shake()/set_camera()/set_camera_bounds()

...then the camera shouldn't move around at all when this happens.

At the same time. I noticed that even moving the mouse can cause it to reappear, but it's never consistent. The only thing that is consistent is the fact that it vanishes.

I'm wondering if it's because the vines that "connect" it to the ceiling are an image attached to the boss mob. Not sure if the map chunk takes them into account or not.
The map chunking should take that into account, yes. It's not clear to me yet whether the problem exists because of the server or the client end, but I'll find out.
Great, thanks very much!
I've figured out so far that the bug appears to be server-side. For some reason the client doesn't think that the interesting turf the mob is on has any mobs on it, although it knows the mob's location and it knows the turf. (Weird!) I'm still looking into it and suspect it's an issue of sequence with the network messages.
BTW, you have an infinite recursion in obj/decal/floodlight/cycle(). The proc should not call itself the way it is; instead you should do spawn(40) cycle() instead of sleep(40) followed by a direct call to itself.
Lummox JR resolved issue with message:
Turfs with big "out of bounds" objects could sometimes be marked as interesting only after the object was sent, causing the client to think nothing was there and therefore not show the object.
In response to Lummox JR
Awesome, I'm glad it wasn't something I was doing wrong, as I'd hate to waste your time chasing a non-bug.


Lummox JR wrote:
BTW, you have an infinite recursion in obj/decal/floodlight/cycle(). The proc should not call itself the way it is; instead you should do spawn(40) cycle() instead of sleep(40) followed by a direct call to itself.

Yeah, a remnant I still need to fix. I've been keeping everything lighting related at arm's length for a while but now that I've pretty much got 2/3 bosses done I think I can work on it.

Again, thanks very much for the work you're doing =)