Monday, October 10, 2011

60 – 2Derp

Today we are going to talk about the advantages of a simple ASCII (or tileset) presentation versus the alternatives. I’ll leave out the simple stuff, like how it is easy to develop and update and how it leaves a lot to the imagination, making some people feel more involved with the whole thing. 

One of the advantages is that because you have a fixed tile width and you must force everything in that space is that you can create a very simple and modular world building block system. You do not get a freeform realistic system. I like to compare it to board games. Your game is a very advanced board game and you place your little figurines on it. This abstraction also makes you ignore a lot of inconsistencies easier: why is a wall so thick, how come a chair looks almost as big as a bed, why does this dragon fit in this narrow corridor? I’ve heard of Crouching Tiger, Hidden Dragon before, but what is this? Crouching Dragon, Hidden Dragon? Table top gaming systems have dealt with such inconsistencies for ages and found compromise solutions that don’t challenge you suspension of disbelief that much because you focus on what fun and involving thing you can do with you figurines rather than comparing the board with reality. 

But as graphical fidelity increases, this becomes harder. It is already harder with a tileset replacing ASCII art, it gets even harder with an isometric viewpoint where you need to do a lot of tricks to make everything more believable and with 3D it can all break apart. You need to be careful. Or you can go with a free form realistic system, where item placement is no longer constrained to the grid. I have decided that such a system would be too much work for what it is worth, so I’ll be sticking with the tabletop figurines metaphor. I started the 3D engine with more realistic proportions, but I’ll start scaling everything for practicality. This representation and time compression go well together as an explanation for what your game session is: you are basically reliving the memories of your expedition leader, memories which you are creating in real time as you play. This is probably how the leader could relive in his mind the events of the day, with things scaled around to emphasize importance, stopping to ponder on important events and skipping over unimportant ones. 

Another advantage that the ASCII system has is contrast. You are rendering characters with different colors. You can’t really get contrast any better than this. Once you get used to the display you will find it easy to read. On the other hand, with the 3D engine I am struggling to get good contrast and clarity. 

I analyzed all cameras: fly and dwarf camera are fine as they are, since you don’t need great overview of the micro setup of you world and out of isometric and topdown, especially when dealing with walls, topdown is a clear winner. What works for one camera does not work for another one. So I’ll focus my attention on each in turn. I have picked the topdown camera as first. I’ll try and give it the best overview possibilities I am capable of while rebuilding all the lost functionality in the 3D transition. 

First thing I did I implemented some non-aggressive culling specifically for this view point. Average framerate went up from 80-120 to 200-300. I also tested the result of the digging operation with the most straightforward implementation possible. Before the culling in debug mode it used to take 300ms and in release mode was a lot faster. After it around 60 ms in debug mode and as fast as it needs to be in release mode. But I’ll need to create a smart implementation for it. With this speed improvement I hope I can do something (something computationally intensive) to improve contrast on the scene.

1 comment:

  1. I think some kind of Ambient Occlusion would increase the contrast a lot...