I would like to thank all the people who gave suggestions in the comments section. I have looked over your suggestions and also investigated additional techniques for optimization and I am fairly sure that I can make the 3D engine work fine on strong computers. I am not sure yet if I can do it on middle or low-end computers. So the 3D engine stays. If I can’t manage to get it to run on a wide range of computers, you will still have it as a 3D integrated “visualizer”, where performance is not that important. The problem is that most of these techniques are quite complex and will take a while for me to implement the changes, especially when I am at a moment where I would rather like to add new features. I need something that works right now.
So I brought back the isometric engine. And it immediately felt familiar and like a good fit. I felt like a dwarf after regrowing his long lost beard in a freak gasoline fight accident. I just need to add a few new features to the isometric engine to solve some of its problems. But it is basically done and I will never remove it again. All new features can easily be done by simply adding tiles, so there is no good reason to not support this display mode for the entire lifetime of this project.
On with the changes!
Isometric and 3D coexist
I have fine tuned both engines and they basically coexist peacefully in the same code base. The problem is that the caching system was not designed to handle both 2D and 3D objects, so I need to decide which rendering mode will be used before map load. But once I extend the cacher, you will be able to flip between isometric and 3D at will at the press of a button without any loading time, just something under a second while the cache is rebuilt.
Isometric engine support borders and short walls
Let us look at a picture that illustrates the problems with isometric engine. There is not enough contrast with some kinds of soil and stones and walls can cover up things behind them:
First thing I did is add some borders. Stonesense has this, but I added more borders. I still need to fine-tune which borders are drawn. I wanted to add these borders for a long time, and finally they are here:
The display of borders can be turned on or off at the press of a key. Another new feature is short walls. You press a button and walls are not drawn at full height, but instead are drawn very short. I still need to decide what to do with ramps:
Here the contrast is very poor. But, if I enable borders: