SamRock Here is some good info about isometric projection. I also use this method
http://clintbellanger.net/articles/isometric_math/
You don't really need any special isometric renderer. The idea is that the actual game logic happens on separate invisible "regular grid" layer and the isometric objects are just drawn with certain formula from objects from that layer.
I also posted isometric tilemap example using two Tilemap objects here
https://www.scirra.com/forum/viewtopic.php?f=146&t=97423&p=747572&hilit=isometric+isometric+to+2+tilemaps#p747572
For Z order I but all Sprites that need to be sorted to Zorder family and then if something moves on screen or camera is moved I call the update using zorder global number. Not function because on my understanding that could call it many times per tick. Not completely sure though.
For the update you can use.
For eagh Zorder.family (ordered) Zorder.family.Y ascending
=> move to Top[/code:3nvqr69g]
Also to for better performance I use every second for the update based on Zorder objects on screen something like
[code:3nvqr69g]every ZobjectOnScreen/500 seconds[/code:3nvqr69g]
Making the update every tick can be a bit much specially if you have one wall tile as single object. You notice this in my game if you train a lot of units it's not so perfect anymore Also note that on C2 version r166 there is some event engine performance improvements and this might be a bit faster as well. Just experiment with it and see what is acceptable.
I was thinking about making tutorial about this, but I would maybe like to add some other functionality as well. Maybe floors and hills, but then it would start to be almost some sort of isometric engine and quite a bit of work. Would be interesting though