Front-end: Camera
We currently have overworld maps that can be visualized with a color per pixel, depending on the pixel's biome data.
In the actual game, each of these pixels will be a tile, on which we'll map textures, and we can also even put geometry. There are many ways to view such maps, for example various configurations of perspective and orthographic projections.
So far I've been using a top-down view for the ease of implementation. As I wanted to experiment with several visualizations, I changed the implementation to support a fully configurable camera, as well as tile highlighting and edge scrolling as before. Here are some examples of an overworld map, visualized with a few cameras (orthographic top-down and 3 perspective cameras, zoomed in and out) :
The art that I'm going to use will possibly be just 2d sprites. The beauty of 2d sprites is that they can be used both in 2D and 3D views, in the latter, as billboards. The challenge is to make them look good when integrated in a 3D environment. Here are some examples of a basic, naive integration of some DCSS tiles in the map:
So, these are the tiles rendered to the top-down view - nothing special so far. Below, we try the billboard rendering, before and after, using a side-camera:
When using such cameras, it's clear that sprites look much better as billboards rather than flat mapped onto the terrain. Some more billboard examples using more cameras (1 isometric and 3 perspective):
(Note: Any sprite overlaps are due to my laziness; the positions for the billboards are generated randomly and therefore sometimes overlap)
I think it's safe to assume that it works well, but they don't integrate perfectly. I'm not an artist, so I need to get some informed opinions on how to improve the visual result by just processing the sprites and data that I have (e.g. using specific, shared color palette for both overworld and sprites, process sprite boundary, add some fake environment lighting, etc). Also, DCSS sprites occasionally have integrated shadows, which funnily enough works for many of the views, but it's baked in the sprite, so not really controllable.
Here is a video of a perspective/ortho cameras using billboard version, to showcase the 3D look.
While the 3D effect works, the visuals can be massively improved. For example:
- Actual textures for the overworld, including rivers and sea (tileset hunting plus procedural should do it for now)
- Vegetation and mountain sprites on the tiles (I need tilesets for that)
- better sprite integration with the map (shadows? silhouettes? env lighting?)
- Optionally, a basic elevation visualization, with lighting (mutually exclusive with mountain sprites, but this is easy to do)
Of course I'll need an artist for sprites and textures, so at the moment I have to make do with my mad (bad?) pcg skills. And for even later, there's also animated fog of war, particle systems and other bells and whistles, because graphics programming is fun :)