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:
Have you already made something about the transparency that we talked about on older posts?
ReplyDeleteBorders could solve the problem of contrast, but things would still be hidden, and the short walls feature solve the problem, but what about objects?
Think of the ramps being objects, like a cabinet or a workshop, there's no way to shorten then, they would still get in the way and hide things even more than the walls, like a trap behind a door, how will you see it, if there's a door and the wall in front of it?
So i think that transparency would be even better than the short walls, cause it will solve all problems, not only walls, or you could mix the two and shorten the walls only when the mouse is over it, like in The Sims.
The isometric is also great, like you said, it's easier to change tiles and everything changes, way more easier than 3D, but it's limited and problems like these are harder to solve.
I like the isometric engine and i think somekind of transparency as mentioned above for objects like doors and statues would be a good idea.
ReplyDeletewelcome back isometric engine! :)
ReplyDeletethere are a lot of options proposed and discussed around the topic of seeing behind objects.
i like the idea of short walls (and the borders do help!).
For now I'll add map rotation in 90 degrees increments and see how it plays out. Then I need to create some complex fortresses and see how much of an advantage transparency actually offers. Alpha-blending can be and expensive operation and I am already pushing the limits with my ambitions for this project.
ReplyDelete