ID:734735
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Currently you can set everything to side-view by setting map_format, but you can't have only certain atoms obey these rules.

If you have something that is always going to be above the character, like a roof, the character will appear above the roof at certain points as you move under it with the map_format setting. There are other examples, but I wont get into them.

Basically what I would like is for atoms to have a variable that can be set to give that individual atom the map_format=SIDE_MAP property. Or maybe a variable that can be set which ignores map_format? So basically map_format would be the default, and then people who want a special atom that doesn't obey map_format could set this new variable.
You're better off just using TOPDOWN_MAP while changing the atom's layer whenever it moves along the y axis.

As it is now SIDE_MAP is completely broken because of the way it treats pixel offsets. Having a pixel_y of -32 will treat the atom as if it's positioned 1 tile lower than what it actually is.
SIDE_MAP used to have pretty bad performance for drawing the screen. I think it's been fixed but I'm hesitant to trust it. Manually setting the layer var to create the same effect works better, but can get messy if you're also using the layer var for other things.
Doesn't EFFECTS_LAYER override side map already?
In response to Forum_account
I used lerp to calculate layer based on an object's absolute y pixel coordinate. There are only so many layers, and I'd like to know the limits, but I just kept it between 1 and 100 and didn't round to anything. Worked out pretty well, but I suspect maps that are super big in height could come across some inaccuracy issues.

I made a bug report regarding layers in SIDE_MAP, and it was claimed to be resolved. Hazordhu's been having plenty of layering issues since its first use of SIDE_MAP. I'm not sure how it's calculated, but the way I'm fine with is determining layer based on the relative position of two bounding boxes' pixel-accurate y-coordinates. If they're exactly the same, it should rely on something like right-over-left.
For the Pixel Movement Demo I was seeing performance problems with SIDE_MAP so I did the layering myself. The layer was set based on your absolute pixel y coordinate:

layer = world.maxy * 32 - py + 31

world.maxz was 50 so the layer got up to around 1600 and I didn't notice any problems.

I got the impression that using SIDE_MAP forces each client to figure out the layering on their end each time the screen is drawn, while using TOPDOWN_MAP and setting the layer var yourself for each atom means you figure out the layers once (or as things move) and each client just uses those layer values.