This is going to be something for people with programming skills, and I don't believe it will be possible to extract from vanilla, but I guess this is the best place to put it. We need to figure out in which order to draw stuff, so that the end result looks properly. So, the way objects in X-Com 3 are drawn is that each tile can contain 4 map parts. - Left wall (that is top left if you look at it on the screen), - Right wall (top right) - Ground (floor) - Feature (things like trees, columns etc.) We can figure out draw order for that easilly - draw ground, then walls, then feature. And then again, any tile with a higher coordinate should be drawn over a tile with a lower one. So we could draw tiles in any order (z->y->x or x->y->z) and get a proper picture. Z->Y->X was the chosen order for OpenApoc And then there are objects. Projectiles, items, units. The idea was simple: draw the object in the tile it belongs to. However, objects can span multiple tiles, and this is where it fails. Let's examine two screenshots from vanilla. Example 1: Here two right arrows indicate that we have a right wall in 0,0,1 (that is, x=0, y=0, z=1) and a left wall in 1,0,0. And there's a falling feature indicated by the left arrow. We have to either draw it when we draw 0,0,0 or 0,0,1. Now, if we put it in 0,0,0, then, since we draw in z->y->x order, everything with higher z is drawn after everything with lower z, so the right wall of 0,0,1 is drawn over it, and if we put it in 0,0,1, then for the same reason it is drawn over 1,0,0. It might seem that drawing objects in columns, meaning, X->Y->Z order, is the solution. However, that is not the case. Example 2: I could not find an example with a right wall, so just assume that there's a right wall in 1,0,0 (while actually it's a feature in 1,-1,0 but forget that). Anyways, we have a unit in 0,0,0 or 1,0,0 and ground at 0,0,1 and right wall at 1,0,0 If we would draw in columns (Z last) we would either have to draw the unit in 0,0,0 in which case 1,0,0 would be drawn over it, or in 1,0,0 in which case it would be drawn over 0,0,1. The problem is obviously when object spawns more than one of whichever two dimensions we iterate over first. So if we draw Z then Y then X, our draw cycle looks like this: For every z For every y For every x Draw x,y,z Meaning our draw order is: 0,0,0 1,0,0 .. n,0,0 0,1,0 1,1,0 .. n,1,0 etc So when an object spans multiple X tiles it's not a problem, just draw it in the last X it belongs to, but if it spans multiple Y's or Z's then there's a problem. X-Com 3 can have objects that span as many as 3 in every dimension (3x3x3). That would be a large unit moving diagonally while changing height at the same time (like, a Psimorth moving diagonally up, from 1,1,1 to 2,2,2). I was once given a link to how OpenXCom does it, but I couldn't make much sense from it: https://github.com/SupSuper/OpenXcom/blob/master/src/Battlescape/Map.cpp#L456 It seems they always render objects so that they overlap everything, and then re-render overlapped tiles that should be over an object? How many tiles would we have to re-draw in OpenApoc since we can have 2x2x2 units moving in three directions at the same time? Anyways, need help with this one. Need to figure out how do we render objects so that nothing overlaps improperly.