Playing With Alternative Visual Styles
Goblinson Crusoe rpg tile-based hex-based turn-based
Occasionally as I have worked on Goblinson Crusoe I've been struck by the need to simplify. As it stands, the engine underpinning things has quite a few limitations. Shadows, for example, as mentioned in my last post. Currently, only blob shadows are supported unless I bake shadowing directly into the sprite textures. Also, the view depends on a heavy amount of re-draw due to the alpha-blending of the terrain splats and sprites. Furthermore, the memory limitations of storing so many frames of animation, and the amount of work required to generate and process them, is a little bit inconvenient. For years now, I've toyed with the idea of switching to a general-case 3D engine and simplifying the pipeline so that it is more manageable for one person to do.
This would, of course, necessitate a change in visual styles. I've always had it in my head to go with a non-photoreal style, high saturation with lots of warm greens and browns. Earlier iterations, when GC was still an action Diablo-clone, held more true to this inner vision than later iterations have, but still it remains fairly cartoony.
Today, I've been doing some more experimentation. GC is hex-based and, now, turn-based. There are elements of tactical to it. I want to emphasize the tactical parts, and that means that maybe I should spend a little less effort hiding the hex-grid, and maybe just make the hex-based nature of it affect the visual style. At the same time, it would be great if I could simplify the pipeline so that I stand a chance of finishing this thing sometime in my lifetime. I really am not an artist, and it takes me an agonizingly long time to even motivate myself to do artwork, much less get any of it done. I iterate and iterate, spending hours on a single thing before importing it into the game only to see that it looks like crap, or at least doesn't quite fit the overall look-and-feel.
Today, I've been tinkering with some 3D-based alternative visual styles. It seems like I've spent the better part of my adult life mucking around with tiles and tile blending, transitions, splatting, yada yada yada trying to hide the grid. Maybe I should embrace the grid instead. One of the problems with general-case 3D engines as opposed to special-case engines such as I have been using for years is that alpha-blending tends to be difficult to get right. My styles have always been heavily skewed toward softly alpha-blending sprites in a layered fashion, as in the traditional 2D engines, but this requires that the draw-order be carefully constructed. In a general-case engine, you typically have to let the engine do the sorting, and it doesn't always (in fact, in my experience, it almost never) gets it right. Especially in the case of my terrain splats. I have been doing my terrain by layering splats of terrain on top of hexes, each splat covering a hex and overlapping its 6 neighbors to some degree with a soft-blended edge. The splats are given a random ordering in the draw order, but are all drawn co-planar. They must be drawn before the object layers. All of it requires a tightly-controlled draw order, but if I just throw some geometry at a general-case 3D engine the sorting is never correct. General-case passes are never constructed so that I can customize draw order of a collection of co-planar polygons. Things flicker madly, things Z-fight, stuff gets drawn in the wrong order. It's just chaos.
I can, of course, go with simple blended terrain as in my old Golem3D project from years and years ago. Most engines have drop-in solutions for that. But I've never really liked heightmap terrain, and in the case of underpinning it with a hex tile system it just gets weird and awkward. I could write my own scene manager for any given library, but that just puts me right back to where I am now, working with inadequate tools because after two decades of this I am just sick of writing that kind of stuff. It becomes kind of a knotty problem.
But what if I changed my style? It's tough for me to change, because I've been doing this for a long time. I'm set in my ways. But for awhile now I've had the idea of doing a more abstract visual style, one that is less concerned with hiding the grid and instead concerned with making the grid an appealing part of the style. You see this a lot in non-photoreal "cartoony" games: tiles that are obviously tiles without any attempt at hiding them. It can be attractive if done right. Look at O-san's isometric project for an example of this. Everything is unabashedly tiles and it looks good.
Here are a couple of my tests from this morning. Everything is hurried, of course; nothing final, crappy artwork, etc... I'm just basically shoveling ideas around here.
This first one suffers from a lot of the alpha-blending issues I mentioned. The base dirt layer is solid, the grass alpha-transparent and blended on top, but if I try to extend it to more than one type of terrain I get the draw order problems. The mountains are 3D, but drawn alpha-blended so that the bottom transition smoothly blends with the terrain. It looks pretty good, but when the view is in motion it can look a little surreal, since the mountains seem to kind of hover above the ground. The portion of the mesh that actually touches the ground plane is fully transparent, so the parts you see are above the ground level and you can see the ground move with perspective behind them. It's a little odd.
This second one doesn't use any alpha-blending whatsoever. Each tile is a solid object. In this scheme, I envision each tile being "decorated" in a fairly detailed fashion to give the player a sense of what that area is like. Dirt ground with little mini cactus for desert, for example. Grass with trees. Little pieces of brush and scrub. Miniature towns and fortresses. And so forth. This idea appeals to me, but scares me a little. Each tile would be almost like a kind of stylized diorama, and that would mean some detail work. But at least it would be straightforward modeling, without having to worry about alpha blending.
One large benefit of switching finally to full 3D would be a simplification of my character pipeline, eliminating the rendering and processing step. A drawback would be the requirement for cleaner re-topology, since I wouldn't be able to get away with using higher-resolution geometry to make silhouette cleaner.
This is all just tinkering at the moment, and obviously either way is going to be a lot of work. I've also been looking at a more Civ V style, but everything I've been tinkering with in that regard is a lot more shader-heavy than I am comfortable with, given how much of my development is carried out at work on a crappy 6 year old XP Dell with integrated Intel that craps itself if you throw too much at it. Maybe, if I can talk my wife into letting me buy another decent laptop, I'll throw off my shackles and really start going crazy with it.