Wednesday, April 27, 2016

Building the world of Hellenica

Hey everybody, it's been a while!

Lately I've been living inside our homebrew level editor, putting together the huge number of combat environments that make up Hellenica's world. Obviously it would be rather selfish to keep all of the fun to myself, so here we are. Let's go on a journey of creation!

First stop: the end! What? Here's what a finished level looks like in the editor in full, indecipherable, debug glory:

Well, that's not helpful. What say we break this down a bit?

Here's a shot of where things usually start: the level geometry.

Ok, I lied. I typically start in a notebook, but this comes immediately after!

If you've ever built a tower out of legos, you have the requisite skills to build a Hellenica level. That little blue block near the bottom is the cursor, and I move it wherever I need to place a new piece. Most of the time that piece is a rectangular block, but sometimes I bring out more specialized pieces (see the roofs and columns).

Each piece has a texture assigned to each of its faces. When I drop a new piece in, its sides are all set to the same texture (mostly true). In cases where that's no good, I can also paint individual faces using the mouse. Here, I wrote you a message:

Instead of picking a color from a palette like an artist would usually do, I pick a whole texture. Call me greedy. Here's a sample of my palette:

One neat addition we're making to the genre is moving platforms; think elevators, conveyor belts, and magical... platforms. After the player's actions resolve, all the platforms will move a step (which means different things for different types of platforms).

Coupled with Hellenica's repositioning abilities, this opens up opportunities for some exciting new decisions. Do you send your ranged attacker up a lift for a better vantage point at the risk of separating her from the party? Should you push a tough enemy onto a moving conveyor belt to postpone dealing with her instead of focusing your damage on her?

Athens has gone through a serious transformation since the steam revolution, and most levels in the city will feature steam-powered elevators and conveyor belts throughout. This level has a couple elevators and two conveyor belts, one of which wraps around the entire left side.

The squares drawn in the editor are actually just the 'slots' for the platforms. Each platform individually represents a single space in the level, and they move from slot to slot. Squares with a red highlight will start with a platform.

The white arrows indicate the orientation a platform will assume when it enters a slot. The texture we use for the tops of platforms indicates directionality so that a player can quickly grasp how the platforms will be moving in the future. This is a huge help, especially in some of the later levels. ;)

Once the level layout is fairly locked down, I start dropping in the actors that will populate the scene.

Different actor 'groups' are represented by different colors. Typically, these are groups like 'party', 'barrels', 'bad guys'. Sometimes extra groups are defined for special cinematic reveals or triggering logic. More on that later!

Oftentimes, there will be special level logic associated with certain positions. In Hellenica, I'm calling these gadgets. There are two in this level:

These guys spawn barrels and amphoras to keep the moving conveyor belts populated. In other levels, gadgets are used to place hot steam pipes that cause damage, magical traps that probably also cause damage, or friendly abilities that improve your combat effectiveness.

We're most of the way there now, but first we have to make sure the player doesn't cause us any trouble.

By default, the top of every piece is a visitable space for an actor. Unfortunately, trees don't like it when actors stand inside them, something about personal space. So, to avoid complaints I mark certain spaces as untraversable:

In this case, I don't want people walking underneath the elevators or disturbing the trees. Pesky Nephele also likes to vault onto the outer walls, which is probably not Icarus-approved, so that's a no-no.

Ok, it's on to trigger volumes!

On some levels, I don't want all of the enemies to charge at the player's party right away. Everything in moderation, right?

By marking out certain areas, I can link the activation of certain actor groups to the movement of the player's actors. In this way, the player can (hopefully) indicate that she is ready for a fight by moving close to the enemies. (Hopefully.)

Not so bad, was it? Here's a shot of the final product:

(This is an early level, so I don't feel too bad spoiling it for the faithful. Forgive me!)

Truthfully, my process is nowhere near as linear as I've laid it out here. As with any creative endeavor, large portions of time are usually spent wandering the harrowing depths of uncertainty. Lots of experimenting, lots of failing, but hopefully in the end I come up with something great. Having good tools certainly helps.

Hope you enjoyed this write-up! Let me know if there's anything else you'd like more info on.