FFT/Tactics Ogre Style Level Design

Hi there! So, my goal is to make a fairly simple FFT clone. I’ve been puzzling over how I should make maps for it, and I figured I should ask for advice from people who may have done something like this before. First off, lemme explain exactly what I’m going for.

Video Example: http://www.youtube.com/watch?v=feP9LG_VgHc

Goals: I want to make maps that fit into a uniform battle grid, but have heights. Heights are easy to visually differentiate. Very similar to minecraft, but with some ramps. I want to be able to track the properties of each grid (think Geomancers in FFT who had abilities based on if they were on, for example, a stone walkway or a puddle of water) but I don’t care if this is tracked by each component that can be stood upon or by an array elsewhere. My map size is expected to be in the 32x32x16 range. Perhaps a max of 64x64x32, although I can’t see myself needing that much.

I have two main thoughts on how I can accomplish this. I could build a series of blocks, ala Minecraft, and use those to make a map, or I can build one solid mesh for each map and load the whole thing at once. I don’t have any experience with level design like this, so I’m not really sure which is going to be a better option. In a way the block method is better for letting me customize maps in a simple manner, but to easily customize it I’d need an editor. Designing them as a single mesh means I can pop them into blender as blocks that are each the size of the snap grid, then pop them together until it looks right and start getting rid of unnecessary parts. At least, that’s my assumption. I could be way wrong, hehe.

So, has anyone tried something like this? Do you have any advice on stuff to avoid or things to look into?

Thank you! (if this is the wrong place, sorry! Feel free to move it! ^_^)

Dont misinterpret minecraft as a world of boxes , thats only what you see, in reality its more like one large mesh thats modificated accordingly.

So if you dont need any dynamic terrain, doing then as a large mesh in blender or any other tool greatly reduces stuff to do for you.

Hmmm… I loved FF games… never played this, but the vid gave a good idea of what its all about.

Here be what I would do:

Start with a flat grid (each quad–paired traingles represents a single player character grid space)
Generate some form of simple height map (a simple 2d array containing height values for each grid square would do nicely)
grab the 4 verts for the grid spaces that are represented in the height map and raise them to the random height generated.

**note: you’ll want clustered adjacent grid squares to have the same height value to create platforms
**note: You may also want to flip the triangles of ramps based on direction of decline.

The general idea is simple enough, though.

Oh… as for geomancers… just flag each tile with the type of terrain it represents and check the current grid when using this type of character’s skills

@Empire Phoenix: I don’t have any experience with how Minecraft works. Interesting, that does make sense, though. Changing terrain on the fly is beyond the scope of what I want here. Trying to keep it as simple as possible.

@t0neg0d: You mention generating a random height map, this would be for procedural generation, right? I’m planning on sticking with maps I design specifically. But, if I understand this correctly, it could still be useful.

I’m very inexperienced at this, so I’ll try to make sure we’re on the same page. Would the below work?

Each grid square is composed of 4 triangles
For the height map each grid square is represented by 4 pixels, with the center vertice assigned as an average of corner vertices
So an abstract of it might be:
[java]flat
55 //center vertice is 5
55

full side slope
45 //center vertice is 4.5
45

corner slope
55 //center vertice is 4.75
45
[/java]

How would I represent a flat drop off? For example, if I have a natural terrain, like a hill, it makes sense for it to slope downwards with a height difference of 1 or 2. It would be easy to have it make a flat vertical edge if there’s a difference of 3+. But with brick wall, that slope wouldn’t look right. (maybe the brick layer was drunk ^_^) Is there a way to overcome that while still using a height map?

For a simple terrain, I suggest to take a look at the terrain in jme3 already provided (see the tests) and see if it does fit your requirements, cause if it does you might save quite some time. (As you would only need to draw the heighmap in paint or some other image tool))

I think your original plan was best. You’ve already got plenty of challenges ahead of you with the FFT combat system and so forth. No need to add the challenge of programmatically generated maps at this point in time, especially when it’s something you can easily revisit later when you have the other essentials nailed down.

Blender will suffice just fine as your go-to terrain editor in this case. Have your pre-made blocks for the different tiles, put them together into a complete level, merge it all into a single mesh and bam, you have yourself a nicely optimized level. Whether you make some kind of tile-identifier (to accommodate your Geomancer example and other such environmental features) in blender or just manually put those down after the import into jME is up to you. Either way it’s not a major time sink.

While we’re at it, I would strongly suggest you model your terrain after the older generations of FFT, with no slopes and such, at least for your first iterations. As far as I can tell, slopes don’t add anything of significance to the game, it’s just an extra variable.

Actually, I never got a chance to play FFT Advance. Looks like a good source of inspiration, thanks! I’ll definitely check those videos out.

I’ll give the terrain test a look again, but as it stands I’m definitely leaning towards simply making the levels in Blender. I’ll consider skipping slopes for the time being. It may well make my AI more simple to deal with if slopes aren’t a thing. If i decide to use slopes, I probably will need to track the height of each edge, so I might track the vertices separately even if they’re not used to build the map. Though I’d have to do that manually, which seems easy to muck up hehe.

For defining what a tile is, I’m thinking I’ll just set up a 2d array and checking it against the map manually. This would let me modify it on the fly in case an ability can, for example, start of fire that lasts a few turns.

Edit: And thanks for the advice! You guys are awesome :slight_smile: