Playing With Alternative Visual Styles

Published February 18, 2013
Advertisement
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.

iQmwUtB.jpg

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.

Ay8qesm.jpg

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.
5 likes 13 comments

Comments

Servant of the Lord

I'm liking the first screenshot (ignoring the rushed ground textures). Your mountains also look great.

The hexagon version just doesn't look that great to me - especially with Goblinson Crusoe also being about exploration.

February 18, 2013 08:14 PM
Giallanon

To me the hexagon look nice, especially in the video

February 18, 2013 08:35 PM
FLeBlanc
I like the idea of the second one, as long as you got rid of the placeholder stuff and dressed it up some. The rounded corners on the hexes seem a little too round. Bubbly, kind of, makes it look like the map is made of that bubble-wrap stuff. Maybe if you flattened them off a bit or something?
February 18, 2013 11:55 PM
JTippetts

I think the biggest challenge if I were to go with the hex tiles would be making it look 'cool'. What is in my head looks cool, but the execution of it might be out of my ability.

Here is a shot using some slightly less rushed tiles:

It seems like it could be pretty cool, but I am still on the fence about it.

February 19, 2013 01:12 AM
JTippetts
One cool thing about switching to the 3D view is a stronger zoom ability:

http://www.youtube.com/watch?v=S-a5fTm-QcM

The more I fiddle with the hex tile thingy, the more it grows on me.
February 19, 2013 06:05 AM
Ashaman73

simplifying the pipeline so that it is more manageable for one person

*Double thumbs up*

Just yesterday I stumbled over this game here, and my first though was "wow, how I would like to play one of this old tile based, turn based strategy games.."

I think the biggest challenge if I were to go with the hex tiles would be making it look 'cool'.

Well, I'm no longer a fan of make it look cool, because from my own experiences, it is deadly for your content production. This approach often led me to make my art as good as I could do it (still sub-decent :) ), eventually leading to an art pipeline which was still decent but requires a lot of work.

Your last screenshot looks really cool, I would test your art pipeline always with a character(your goblin model), environment models and terrain/plants. Especially when using procedural generation for certain models, you can archive easily good looking models for e.g. terrain, but to produce equally quality character models could be very daunting (my fault was, that I generated hi-detailed, normal mapped, displacement mapped terrain just to recognize that I wasn't able to produce appropriate character models :/ ). I target ~80% quality of my own art skill, because the last 20% is just too time consuming, therefor avoiding an art racing condition (your skills will improve over time and giving always 100% will lead to reworking older models all the time ;-) ). The benefit of improving your art skills is, that you will produce your art much faster.

Don't fear to tone your style down to a more manageable amount. People who like your art style still want to play your game, even with better art. On the other hand , people who don't like it, will most likely not change their mind, even if you increase the quality by 100%. They will still demand AAA art :)

February 19, 2013 06:41 AM
Navyman

The last screenshot has a Civilization feel to it. I like it a lot.

I like how not all of the mountain are the same. Gives it a more organic feel.

February 19, 2013 07:09 AM
larspensjo

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.

Would it help to use premultiplied alpha?

That is, if you have a base texture B and two alpha textures A1 and A2, then I think blending with B * (A1 * A2) is identical to B * (A2 * A1). That is, order doesn't matter if there are only 2 blending layers.

February 19, 2013 11:46 AM
JTippetts
@Ashaman73: You make a good point about "cool" artwork. Ever since I first started making games, I've always bitten off just a bit more than I can chew in the art department. I think a part of the problem is that I used to be really into art. I used to draw and paint quite a bit, but sometime around college I sort of dropped it. I still love to do art, but it's been edged out by writing and programming so that I just don't practice anymore. But that means that I always think the art should be better than it is, and I always end up spending way more time on it than I should, trying to sharpen rusty skills)

@larspensjo: GC already uses pre-multiplied alpha. Unless there is a usage for premul I'm not aware of, it won't really help. Premul blending is still a non-commutative operation; ie, order matters. Using premul reduces the operation (Src*SrcAlpha)+(Dest*OneMinusSrcAlpha) to (Src)+(Dest*OneMinusSrcAlpha) which still results in different final values if you change the order in which you do the blending for two or more operations. You seem to be talking about purely a multiplicative blend which would work as long as your two sprites, A1 and A2, are of the sort that work with a multiplicative blend, but I'm not sure how I would represent sprite blitting as a purely multiplicative operation.
February 19, 2013 02:40 PM
eppo

Nice! These beveled hexagons with the geometry blending out of them look really good. I think getting rid of the alpha-blending is a smart move.

How do you construct the various combinations of tile ground + decoration?

February 19, 2013 02:53 PM
O-san

The hexagons look great! =) It reminds me of Civilization too. I especially like the bumps on the mountains.

On changing style... I guess it boils down to if you want to make progress on the actual game or progress on your rendering skills. I have often pondered on similar matters. For instance; Should I change to real time 3D models or pre-rendered sprites? Should I render all background graphics in blender or should I draw them manually in a 2D drawing program.

My mindset has always been on finishing the game. My thought process goes something like... How will this feature impact the game... or... How does this new feature relate to the original vision, does it add or make something else redundant? In your case I guess a lot of work will be needed to get to where you currently are with the older rendering technique. Is it worth the time and effort, will the novelty of the new style be worth it in the long run. How far gone am I to actually have a finished game?

I know this sounds like a very pessimistic view to new ideas. I think the biggest weigh lays whether you are 10% finished or 95% finished on actually releasing the game... if that is the main goal of the project. Thanks for the mention, very much appreciated! =)

February 19, 2013 07:53 PM
JTippetts
@O-san: To be honest, I'm not far enough along on GC to really worry about switching rendering styles. A goodly amount of my work there can transfer over if I switch styles, as it includes a library of textures and a fair amount of models that, with a little bit of effort, I could bake and convert. And the rendering switch only touches a very small amount of actual code, so I would really only have to modify a small handful of components. My chief motivation here is to try to simplify things going forward. I spend a huge amount of time tweaking and munging around trying to get tilesets to line up, transitions to look good, trying to hide the tiles, etc... I'm really not all that good at this, so any way I can simplify things will help.

Wrote a quick script today to generate some pit tiles:
98kggrK.jpg
February 20, 2013 12:42 AM
JTippetts
@eppo: All of this currently is just testing stuff. It's really not hard to generate these tiles. They're all procedural. For the mountains I just perturb a fuzzy disk with some fractal noise then run an erosion filter across it and mask it to the hexagon. Similarly with the hills. In Blender, I apply some materials and bake diffuse/ambient occlusion/normal textures and export a low-poly model of the mesh. The pits above are based on tile pattern functions perturbed with noise. The beauty of this kind of thing is that so much of it is automated. I didn't have to do any hand-modeling of any of these pieces. A good artist could definitely do better, but the whole point of this exercise is for me to find a happy medium between time spent doing the art and the quality of the results.
February 20, 2013 12:50 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement