Skip to main content

Problems with map display...

I spent a total of about 4 hours trying to find out why my map wasn't displaying properly.
Turns out there was nothing wrong with my code, or my shader, the problem was in the imprecision of the floating point numbers used to scale the UVs and the default use of sRGB color space by blender.


(top left) This is similar to what I was getting, obviously not right, but I couldn't figure out why.  
(top right) Using data from the map each square is given a red color from 0-255.
(bottom left) There are 16 possible arrangements of tile and the red color offsets the UVs of that tile by a set amount.
(bottom right) The rather unimpressive final base result.

When scaling UVs Blender avoids imprecision in floating point number by just rounding up to a more suitable number, so 0.0625 becomes 0.063. This is fine usually, as you don't really care about pixel perfect placement in most applications. But when your total image is only 32 pixels across it can cause issues as 1 divided by 16 is NOT 0.063! Easy to solve, I had to add a second modifier after the offset to correct the rounding. But I didn't even know about this problem until I had solved the second one...

Blender uses sRGB color space by default. This is fine as nearly every application does these days. But the above method relies on linear color distribution, each color must map exactly to its true value or the offset will be wrong. This was solved by switching color management for the offending texture to simple RGB color space. Sadly the setting for this is hidden away in a collapsed tab in the texture settings, so I only thought about it after a lot of time wasted modifying code and testing other solutions.

So finally, the map display works. However... I'm not sure I like the result. :(
It's great that I solved the problem though as I can use this method in Vinland 1936 for texturing the terrain.

Comments

Popular posts from this blog

Telling a story; Creating a Compelling Narrative.

Telling a story; Creating a Compelling Narrative. In this blog I will talk about my own recent brush with story telling and go on to talk about how tools from creative wring can help you to better author the narrative in your games, whether they have a traditional linear narrative or a procedurally generated interactive narrative.

Narrative and structure in traditional fiction  last week I started writing a story set in the world I'm developing for my game Vinland: 1936.

I hope the story will help me to flesh out my game world and develop my own expanded universe which will be a good place to set my games in the future.

After about a week of work, on and off I've progressed the story to outline stage. For each character thread I have half a dozen chapters which plot a course through the events of the story. Each thread is told from the perspective of a different character.


Actually I started writing as soon as I had my outline, but I've since gone back and deleted what …

Back to Vinland.

I'm going back to my real time tactics project, Vinland 1936.
While working on the other project I overcame the problems which were stopping me from saving/loading the game and also cleaned up the base code a lot.

After a few weeks I'm getting near the the state I was in before.


Infantry are back to their previous state, and vehicles are running OK.
This time I'm going to push ahead with mocking up the combat system though before I work any more on the vehicle builder or graphical aspects of the game.

Map screen designs

I've been working some more on the map window. Right now you can only see the base, it doesn't show items, enemies or even doors on the map yet. These would be decals.


In the top window you can see the modified result of last night's tile based map. It looks good but there are some visual artifacts related to the problems I encountered yesterday, and as well it takes much more code and time to calculate.

The second window uses a cheap trick to fake an beveled look from a smoothed version of the 32x32 map. It uses black to mask unexplored areas.

Finally the third version is meant to look like a had drawn map. I'm using a cross hatching texture to distort it and unexplored areas are shown as blank map paper.

There's going to be a mechanic in game where you need to use some paper every level in order to activate the map for that level. From there it will fill it in automatically. Paper will be pretty rare so it might be worth keeping it safe for the more complex level…