Advertisement Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

About this blog

Testing technology to eventually begin a hexagon til based 3D RPG in XNA 4.0

Entries in this blog


3D Hexagon RPG moving to Unity

To whom it may concern

So, I have spent most of my time relearning Blender and also handling my Wacom tablet. And also realising that I can never pull this off building my own engine; Importing animated models and what not, it is just too much for one man to handle. So I have decided to move this project to Unity.

Fits me perfectly. BUt I still can't figure out a good technique to make the world map. I would like a Civ 5 style map, but I can't figure out how they made it. I will probably post a question about it on gamedev, since I can't find anything relevant on Google.

Some screen shots, since I think this site needs more of it (nothing from Unity):

Maybe this you can use to model... feel free to use for whatever:

King of Herrings

King of Herrings


First steps

I have started a test a project to test technology for an eventual XNA 3D RPG game, based on maps with hexagon tiles. I am starting a journal (first ever) to help keep motivation up. Progress so far has been pretty good, considering my starting position.

The game would consist of one world map (grand scale, for travel, still same hexagons) and dungeon/cave/event maps (lower scale) where you explore/fight. Lots more to tell on this.

It wasn't easy to get it working. Each hexagon is created separately, then all duplicate vertices it creates are removed so there are none wasted. This means it doesn't have to be a X by Y grid. At some point that seemed important...

Texturemapping is done completely in HLSL, since I found it too hard to calculate texturecoordinates given the nature of the regular hexagon vs. the square (it's probably not that hard, but it was for me). Turned out to be very easy to get a perfect tiling in the pixel shader. This means my vertices don't use any texturecoords in the vertex declaration. Normals are precalculated and averaged so all triangle transitions are smooth.

Importing a heightmap to make it look more interesting, but the goal would be all procedural generation.

Also, it was pretty hard to find info on 3D hexagon tiles. So I had to figure out a lot from scratch, so I don't know about the cleverness of the result... What I have is a bit of a hack amalgamation of stuff right now.

Rambling on... I'm pretty proud of the color picking, although it can probably be done better! It works perfectly though. In the beginning I used a sine function to cycle colors, but it wasn't exact, so now I did a much simpler and better thing. 16.7 M hexagons are possible and each would be pickable with no aliasing (not using alpha channel). I render the scene to a separate RenderTarget with inly color. Then I render the entire textured and lit scene again to the backbuffer. and sample the mouse X and Y from it to get the color and each hexagon has a color field. I then cycle all hexagons until I find the color, that's our hex. This works great with mouse-over detection. It was awful with DrawUserIndexedPrimitives, but DrawIndexedPrimitives made a huge difference.

Directional and point lights working (only directional showing in shots).

But first to try out techs and how to do things. Here below are some screenshots of the graphical side of things. All shots are capped at 60 fps. Without cap, for a 64 x 64 hex map it's currently some ~290 fps (3770K, GTX 670).

That's all so far. Next step is terrain decals, which I got stuck on. I'm probably in over my head. We'll see...

Early shots:

Trying some stuff to solve the problem with texturing; it mirrors around the center of each hex in some offset way:

Now texturing with HLSL! Success! Also new accurate color picking!!!

Last shot showing a sprite drawn for each vertex to show vertex numbers on a 128 x 128 hexagon map (no optimizing in any way), not good for frame rates:

King of Herrings

King of Herrings

Sign in to follow this  
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!