ID:451542
 
BYOND Version:493
Operating System:Windows 7 Home Basic
Web Browser:Firefox 10.0.2
Applies to:Dream Seeker
Status: Verified

A member of our crack team of bug testers has verified that this issue is reproducible, and has handed it off to the development team for investigation.
Descriptive Problem Summary:
I was testing around with isometric and the new pixel movement system, seeing as i havent been on Byond in over a year. Everything was going well, until I added a "RotateCameraLeft" verb. Directions, North, East and South were fine, however I discovered this in West:

Screenshot

I saw this, and re-tested it in the other 3 directions, and it was fine. This happened with both of the "bottom" edges.

Numbered Steps to Reproduce Problem:
1. Set client.dir = WEST
2. Set up an isometric world
3. Set step_size for the mob to 8
4. Create an isometric turf and a mob with bounding sizes: x/y:8, height/width:16
5. Run the world and move into position.

Code Snippet (if applicable) to Reproduce Problem:
world
fps = 60 // 25 frames per second
icon_size = 32 // 32x32 icon size by default

view = 3 // show up to 6 tiles outward from center (13x13 view)
map_format = ISOMETRIC_MAP

// Make objects move 8 pixels per tick when walking

mob
step_size = 8
bound_x = 8
bound_y = 8
bound_width = 16
bound_height = 16
verb
RotateCameraLeft()
var/client/C = usr.client
if(C.dir == NORTH)
C.dir = EAST
else if(C.dir == EAST)
C.dir = SOUTH
else if(C.dir == SOUTH)
C.dir = WEST
else if(C.dir == WEST)
C.dir = NORTH
OutputClientDir()
src << src.client.dir


Expected Results:
Mob appears in front of tiles

Actual Results:
Mob appears behind tiles

Does the problem occur:
Every time? Or how often?
Every time when client.dir = WEST
In other games?
Yes
In other user accounts?
Yes
On other computers?
Yes

When does the problem NOT occur?
When client.dir != WEST

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)
Unsure. Only recently returned to BYOND

Workarounds:
Unknown
I'm not certain this is actually a bug, because while the visual effect there is unwanted, the reason for it is simply that your icon extends beyond the bounds of a normal isometric tile.
In response to Lummox JR
Lummox JR wrote:
I'm not certain this is actually a bug, because while the visual effect there is unwanted, the reason for it is simply that your icon extends beyond the bounds of a normal isometric tile.

Then why would it be fine in the "North, South and East" client directions?
It could be chalked up to drawing order being different.

Basically, the "anchor" of an object for drawing in isometric is the corner nearest the viewer, so the bottom center of that square. If the bottom of that icon was a proper diamond, there would be no layering issue because as far as the object's "physical" dimensions are concerned, the square doesn't actually exist in those other tiles that are covering it. You're giving the drawing engine a problem it can't solve by extending the icon into pixels it isn't supposed to cover.

There are some legitimate layering issues still to be solved in isometric, particularly with pixel movement, but the case of the square isn't one. The pixels being covered are ones the engine can't understand how to deal with.
Lummox JR resolved issue (Not a bug)
I would say it is a bug, works with other directions just fine but in west direction, north and west movement is choppy, and you can see the tile overlap, I have seen this bug in action, the render order must be from the wrong direction. I have not come across any work around so far, apart from excluding west from the rotation.
I reported this months ago. Got the same response. Draw order really should be from the client direction, not always uniform.
I agree with you, or at least a way to edit the render direction ourself, I am putting in great effort to find a workaround but still none found yet. I would still flag this as a bug because every other way works fine apart from that direction, with no way or changing the render direction. I am sure when creating the render direction of a isometric maps the ability to rotate the direction of the client view was not 100% thought threw in that aspect. Due to this bug, everyone in this viewpoint will see any object that moves up/left(upward) will see this rendering problem, including their own character.
Should I report this as a new post because it is a bug, but it is flagged as not a bug in this post, which is not right, I feel that this issue will be ignored, which is a major stopping point to any game that uses the isometric map format and wants map rotation due to having high walls or something along the lines of. suggestions anyone? I have been a long time Byond user and this bug has been in since the introduction of isometric maps, and feel that it is just being brushed under the carpet is this post with Lummox JR flagging this as not a bug, basically saying its more of a limitation. Personally I do not see it as a limitation, I see it for what it is, miss coded rendering order. In any form of rotation, you have to have to rotate everything, everything is rotated, apart from render direction, this is not a 'Limitation' that can not be fixed, this is a bug which can be fixed.
I would tend to agree that this is a bug, from the sound of the report. I'll change the status, although we have a lot going right now so I don't know when it will become a priority. At some point when things are in a better position we're going to have to revisit the bug list and see what we can find, because it's getting pretty built up.
Tom changed status to 'Verified'
ID:921191

(DEMO included)

ID:921216

Both of the above posts are related to the same issue. A lot of the problems with layering and client.dir stem from the fact that BYOND considers big icons as rectangles rather than squares. This causes some serious issues with locating rectangular non-square icon objects in a rotated view.

The second post shows that the issue is not isolated to isometric maps, but is present in any distance-priority mapping mode, including side view.
Thanks Tom, TBH im glad I grabbed your attention over this, I understand you are working on some to flash or to exe thing at the moment, which I also look forward to, removing byond from dream maker which it a will be major step forward for byond (Not sure if true, heard some rumour somewhere). I will aid in what ever way I can with this bug, because it is a real show stopper for me, will it be ok to link a youtube video of this bug for a better view of the problem (dont post often, not one for rules LOL)? All I really think the problem is, is the render order of the tile.