So I’ve been working on this hex-based, 3D battlefield view, tactical turn based computer game which I’ve creatively named BattleHex. I have had ideas for creating a game like this for years, but what prompted me to get busy with it was buying HeroScape for my wife over Christmas. It’s essentially the same concept, only as a boardgame with pre-painted plastic figurines with pretty nice build quality. The rules and the terrain are simple in concept but very nicely implemented, so that the whole game has a very natural and cozy feel to it. So I stole the “stacked hexes for terrain” idea shamelessly and used that as a basis for my wargame’s battlefield.

Here were my first tentative attempts at rendering 3D hexes:


Then came stacking the hexes:


Next came creating a map of hexes based on an input file:


Everything good so far! Now, to get some nice textures on the hexes instead of the bland solid colors:


Hmm, ok, that didn’t turn out so good. I wasn’t accounting for the hex shape properly when applying the texture file to my shape. A few tweaks, and, success!


Now to try something bigger. I had previously designed a full-up HeroScape map using a beautiful tool called VirtualScape, which I entitled “Confrontation”. I translated the map into my input file format, and behold:


Now, all this terrain is ok, but rather boring. I had essentially completed my goals for the initial milestone of my project, but I wanted to see what it would look like with actual, you know, people inhabiting the battlefield. Now, I’m no artist unless you can settle for geometric shapes, so I opted for a simple fix: insert pictures of my minis as art assets!


But here I’m just programming their positions arbitrarily. What we really want is to be able to place them on a specific hex, and move them to new hexes based upon their movement allowance for that turn, taking terrain into consideration. First things first, I need a way to select a hex:


The purple hex is a hex I clicked on, and for now it just highlights surrounding hexes as potential movement areas. And that’s pretty much where I’ve left the project. I can place and move characters, but I haven’t limited movement to take terrain and height into consideration yet.

The other big problem comes back to the characters. For a 3D game, it makes sense to use 3D models. However, I lack the knowledge and talent required to make a wide variety of models needed, and looking around at what was freely available I was dismayed. Not much out there. Someone in this thread over at Gamers With Jobs where I was asking questions suggested using 2D art in the 3D engine, in a way similar to how people cut out and use paper miniatures for pen and paper RPGs. Great idea! Now all I have to do is find some good 2D art. I found a slew of good art at Dark City Games, free to download, by Dario Corallo. I did the work necessary to transform 2 of the character art assets into a front and back view, put them on a little black base, and hey! It looks pretty decent (to me anyway)! It may not have the pizazz of fully 3D models done by a great 3D modeler, but it does definitely evoke an old-school board/wargame vibe, which is fine by me.

BattleHex with Character Art Example

I asked the kind folks over at Dark City Games for permission to use their art in my game, and as long as I give them credit and am not making money off the use of it, they will let me use their art. This is amazing, because Dario’s work includes about 150+ unique characters in the collection. There are a huge variety for humans, several elves, dwarves, and gnomes, whole armies of orcs, kobolds, and goblins, and a good assortment of other monstrous types (giants, trolls, warg-riders, etc). To have all of this pre-made art available is amazing, and now I can focus on just moving on with the engine and game rules.


4 Responses to “BattleHex”

  1. 1 JMC August 25, 2010 at 9:22 am

    How are you getting those edge lines to show up? A second rendering pass with lines and depth testing disabled?

  2. 2 Khoram August 25, 2010 at 9:38 am

    Well that engine is written in Java3D, which uses a scene graph to describe what should be displayed. I’m not doing or setting up any rendering passes, the scene graph internals takes care of all that for you.

    What I am doing is creating several different objects per hex: there’s a TriStripFan with a texture for the top, a TriStripFan with no fill and just a stroke of a certain thickness for the edges you are asking about, and then 6 rectangles for the sides. May not be very efficient, but it was good enough as a prototype and I learned a lot from the exercise.

    Currently I’m switching all my game programming to Python.

    Hope this was helpful.

  3. 3 JMC August 25, 2010 at 9:50 am

    Pretty much the same thing, then. I’m working on a similar engine right now myself (got an idea in my head that won’t leave me alone, so I have to code it :). Strangely enough, it was seeing pictures of Heroscape maps that really gave me the kick to get started. I guess great minds think alike…

  4. 4 party venues June 8, 2013 at 6:03 pm

    I hardly drop remarks, however after reading a few
    of the comments on BattleHex | Khoram’s Workshop. I actually do have a few questions for you if it’s allright.
    Could it be just me or do some of these comments come across like they are left by brain dead individuals?
    😛 And, if you are writing on additional places, I would like to follow you.
    Would you list of all of all your shared sites like your
    twitter feed, Facebook page or linkedin profile?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Current project:

A slew of Wood Elves


September 2009
« Mar    

RSS Qazzi’s Progress

  • An error has occurred; the feed is probably down. Try again later.

%d bloggers like this: