Here's a list of Graphical Display issues, suggestions, concepts, etc. for the consideration of the team, and for open discussion.
1) Displaying Mist Tiles:
Vapor clouds, like steam, miasma, magma-mist, etc, do not display as yet. I recall an earlier branch with particle mist on a beach, but haven't seen it since. Can mists be displayed, and if so are they handled with some simple catch-all that can pull appropriate colors and all that, or must different mist IDs be handled individually? I'd rather like to use textured alpha-tinted cubes if possible rather than particles, but either work.
The previous mist support was in 40d. The guys doing DFHack have not yet figured out how they work in the new DF version yet.
2) Zooming In/Out:
Being able to change the zoom level to get a closer picture, or zoom out to get a larger overland picture would be very nice for high-res screens that display at finer resolutions, or lower-res screens that. Is it possible with the current engine? If so, what sort of difficulties are in the way of changing the zoom level? Alternatively, there is the potential for doing an alternate Bird's Eye terrain map, using a set of tiny isometric tiles that would display a much larger area?
This is... complicated. it's possible, but would require either a major re-write, or expensive work-arounds.
3) Full Object Display:
Though framerate would be crippled if Stonesense were to render every object in realtime, could we create a static "Full-Rendering" mode that would show every barrel, stone, bloodstain, stockpile, bin, sock, and so on in a static view? This would keep the game smooth for people who are using SS paralell ti DF as an in-game visualizer, while also allowing people who want to export pretty screenshots with all the innumerable details.
As soon as DFhack supports items (there's partial support right now, just not sure the status on it) Stonesense will... probably.
4) Better Object Tiles:
Many object tiles, like plants, boulders, or pebbles, define the nature of the tile they're on (plants default the tile to grass [VEGITATION], pebbles to stone, etc.) However, plants grow in the desert, and when they are harvested, the tile below it is discovered to be sand, and not grass. Are plants, boulders, etc. treated as Floors to DF? Can we retrieve tile-type information (Dirt, Sand, Grass) in addition to the object type in the tile? Can we only know that the tile contains a Dead Plant, or can we know that it is a Dead Plant on Sand, or a Live Grass tile? If we can't get more tile details, would it be possible for SS to check, when displaying one of these tiles, for whatever tile type made up the majority of adjacent tiles, and estimate what the floor under it should be? It'd be similar to the Gem/Ore Vein display concept. Objects that override tile type that I know of are Dead Plant, Live Plant, Tree/Cactus/Mushroom, Boulder, Pebbles, and perhaps Webs. There may be more now too. Same concept would work for creating Floor-type Brook Tiles (they could pull from the material of the Tile type they're on top of).
Currently, Stonesense can read the tiletype, and the material the tile it's made from. the tiletype shows weather it's a boulder, a tree, etc, and the material says weather it's made from peat or sand. Currently, the only way to guess weather there should be grass under it is to make assumptions based on soil type, but that wouldn't work well. The Gem/Ore display works differentley, in that there's actually up to 3 materials being defined per tile. Floor-type brook tiles, on the other hand, are doable.
5) Better Auto-Coloring Palette:
I'd rather like to standardize the Autocoloring Palettes used to colorize greyscale tiles, dwarves, etc. Where are these colors defined, and is it possible to redefine them on the user's end, similar to how colors can be redefined in the DF raws? If there's nothing else for it, I could take one of the programmers aside and discuss color theory, and brainstorm some equations for shifting Hue, Value, and Saturation to create a series of 8-color gradients from a palette of single, pre-defined RGB color values.
Currently, colors are defined in three places: colors.xml, which defines RGB values for whatever materials are defined, the init.txt, which defines the 16-color pallet that is the same as in DF, and RGB values taken from DF. the 16-color pallet is used for dwarf labor colors, and the RGB values taken from DF are used for skin and hair.
All coloring is done via multiply blending at the moment, because any other blending type would require me to write openGL shaders, which I don't know how to do.
6) "Oversized" Tiles:
For the present engine, breaking up Ramp gemoetries into a Bottom and Top segments is needlessly complex, and creates uneccesary extra/separate sprites for the engine to display for a given tile object. Allowing for Tiles/Floors that were oversized by, perhaps, 8 transparent pixels on every egde (+16 pixles wide/tall) would both allow for some flexibity in creating non-cubic tiles (ala Beefmo's new stone tiles), single-graphic ramps (rather than splitting them between a "floor" and a "tile".
As stated before, splitting up tiles is the only way to ensure that the draw order is correct.
enlarging tiles by 8 pixels on each side is doable, but can cause draw-order issues.
there's your problem.
you need 4.9.19
Carp! Compiled the latest Allegro 4.9.20 and still getting this error:
In file included from /opt/stonesense/Block.h:3,
from /opt/stonesense/Block.cpp:1:
/opt/stonesense/common.h:34:27: error: modules/world.h: No such file or directory
make[2]: *** [CMakeFiles/stonesense.dir/Block.cpp.o] Error 1
make[1]: *** [CMakeFiles/stonesense.dir/all] Error 2
make: *** [all] Error 2
Stonesense it currently using some allegro version between 4.9.19 and 4.9.20. it would require me to spend a little time with it to get it to work with 4.9.20+
I'll get to it eventually. >_>
[EDIT]
Also, the only thing stopping me from displaying blood right now is lack of blood sprites, and.. hm... actually, I think I have some.