So for the first time I am going to show the 3D engine. Grass isn't textured yet, there is no lighting and shadows and I don't have enough models and the ones I do have have been hastily created and not that pretty:
The above view was somewhat of a default, where you have a good overview because you are supposed to interact with the map using a mouse or keyboard. But the advantage of a 3D engine is that you can change your view point. You can zoom in and tilt the camera:
Or you can zoom out a lot and even see the cliff side in the distance. Rock are not textured, but color coded for my convenience:
Here is another example, when I scroll back:
And, of course, you can scroll and tilt in such a way that you can see the entire map up to the horizon. The number of objects is staggering (and there is no sky box yet):
Here is what happens when you cut out a complex shape from the wall. When something gets covered up, you can always scroll a little to free up the view, but thing around the middle tend not to get covered up:
So if you are seeing this pictures and think that they are ugly, you are probably right. I think that it is both ugly and fixable so it won't be ugly forever.
The good news is that I am very happy with the way the engine works technically.
The bad news is that it is extremely slow. There were a few performance problems from the beginning, but the real problems started when I replaced the placeholder cubes with real models. As can be seen in pictures, there can be thousands of object on screen at once. And while in those screenshots I have around 60 FPS, there are two things to take into consideration:
- those screenshots were taken after the static scene has lingered on for a while, after all the tricks and hacks to make it faster have kicked in. When actually playing and interacting with the map, I have more like 20-30 FPS.
- I have a very good graphics card. I can imagine it becoming unplayable on a “normal” graphics card.
The main culprit is the number of objects. There are limits on the number of objects you can have and those limits are quite harsh. Ever wondered why maps in games tend to be a small number of large and relatively uniform meshes put in a matrix? There are a few things that I can still try. I'll try using a mesh merger, converting let's say 1000 trees or bushes into 10 meta-trees and bushes. But if this does not give any good results, I am afraid I can't continue the 3D engine. If it fails I'll re-enable the isometric one and focus on that a bit until I read more about 3D engines.
Another concern is the complexity of objects. Since everything is so small, it ts very hard to create something that looks good. You have to have a number of polygons as small as possible and textures made specially to highlight the detail in small objects, with broad features. It is a lot simpler to make something like this in 2D, where you can add borders.
I really don't know which way to go right now. 3D still offers advantages, but I am starting to get the feeling that 3D is not that well suited for this kind of game, where you need to be zoomed out and show a huge number of small items that still need to be instantly recognizable at a glance form a tactical view. 2D is well suited for these goals, but you need to add a few techniques to combat obstruction caused by high items and you can not change around the camera.
The good part is that I still have time to experiment around. There is no pressure from a studio or publisher or anything, so I can make a few mistakes or have a few failed attempts before I create something successful.