2011/11/04

Translations

First, I want to thank everyone sending in translations. You guys are awesome, and it makes testing our newest code that much easier.

However, fair warning: all of this data is subject to change. The current game data amounts to a short tech demo, and it’s very possible that all of it will be discarded before the first game is complete.

It’s certainly nice if people in many countries can experience the tech demo in their native language. But don’t worry about a huge concentrated effort to translate the current data into everything. We can have a strong localization effort further down the road.

It might look to the layman that the game is near feature-complete, but that still means the game itself is just starting. We’re far enough into the game design process to see which parts of the gameplay don’t work. There will be some redesigning, and thus translations will become obsolete. So let’s talk about that.

Gameplay Thoughts

A couple weeks ago I picked up Dark Souls. It’s the first console game I’ve played since… hm, since Ocarina of Time or Symphony of the Night. I’m absolutely loving it, especially as a great example of hard melee combat.

It’s making me rethink some game design choices. Although the engine itself should support several options, a great game could use some tweaks. Here are some ideas I’m tossing around.

Defense

I like the low number scale in the game currently — it’s a bit easier to visualize. But there’s hardly room for varied armor when light armor is 1 absorb and heavy armor is 2 absorb. This is more affected by shields which have passive absorb. So I’m toying with changing the armor and shield system.

What if shields didn’t have passive absorb, but instead required using active Block to have an effect? E.g. a Wood Buckler could have “Absorb 5 while blocking”. Heavy enemy attacks could still power through such a shield, but weaker attacks would be fully absorbed.

By moving shield absorption to active Blocking, it’s okay to allow higher passive armor ratings. And allow more armor. I’d want more armor styles that span the Defense rating from 1-5. I don’t like how the Defense skill currently alternates between unlocking armor and shields. Each level should give both. The baseline armors/shields could look like this:

  • Leather (Absorb 1, requires Def 2)
  • Maille (Absorb 2, requires Def 3)
  • Plate (Absorb 3, requires Def 4)
  • Dragonscale (Absorb 4, requires Def 5)
  • Buckler (Block 3, requires Def 2)
  • Small Shield (Block 6, requires Def 3)
  • Large Shield (Block 9, requires Def 4)
  • Tower Shield (block 12, requires Def 5)

Enchanted or special gear could have higher bonuses.

Character Menu

Because of the above, and similar changes I have in mind, I want to remove the item proficiency visuals from the Character menu. This will add more flexibility in gear design. Example: we can have a Warhammer that requires Physical 3, and we don’t have to think of a name for the class of weapons that requires Physical 3.

Resistance

Right now in the engine, elemental resistance (damage reduced by a percentage) is treated differently than physical resistance (damage reduced by a fixed number). One could argue to combine these systems to all be like physical damage is currently. Then, each attack could have a damage type (physical, or a specific element) and an entity could have damage reduction per type. This could somewhat simplify the code, as all damage is handled the same way.

What are the pros/cons for the player? I’m not sure. One thing is, percent-based gear scales with enemy damage, so one particular piece of gear is useful for longer. This means less inventory management and gear feeling more special, but it could also mean few pieces of gear trivializing large parts of a game.

It’s possible for every armor/shield to list damage absorption for each type. It leads to having a ton of numbers on each piece of loot, and that’s just a bit overwhelming.

Equipment Slots

So, it’s relatively easy to support these visual equipment slots: chest, legs, arms, head, both hands. Anything more complex would be hard to do with layered sprites.

But, are gloves and boots actually exciting? I suppose it is neat to mix and match equipment for visual looks (how much does this matter in an isometric sprite-based game?). Min/maxing gloves or boots stats seems a bit tedious to me. If gloves/boots always have unique effects and no armor value, I’m more excited. (e.g. acidwalk boots)

There is satisfaction with getting a whole matching set of armor, but some players end up sacrificing style to mix up optimal stats. Maybe it’s okay for armor to all come in one piece, so that the player is stylish and only has to make one stat choice. Maybe having single-slot armor is less “hardcore”, I don’t know.

Stats

I’m considering removing health and mana regen as regular stats in the game (I’d leave code support for them though). Health regen makes some games cheap (I’m not intimidated by the next fight if I can always rest up to full) and tedious (I’m spending more time waiting for health to come back than actually fighting). When a game doesn’t have regenerating health it encourages players to get better at combat to clear new areas.

One problem I have with health and health regen being separate stats: it’s not obvious the best way to improve your character. Why have two stats that essentially do the same thing?

If there’s no health regen, then healing spells and potions become way more important. But if there’s no practical limit on those healing items/spells, someone without them (e.g. melee builds?) have a large disadvantage.

What about mana regen? It would hurt to be a caster with limited mana. Instead of a “mana regen” stat, maybe mana should have a standard regen rate that scales with max mana (e.g. 10 seconds to regen 100% mana). Weapons with mana drain could be very helpful.

Mundane vs. Magical

This is a personal preference: a game world where magic is too prevalent is boring. I’d rather have more interesting mundane items, and any magical item to be rare and wondrous.

I really like the weapon/armor upgrade system in Dark Souls. I had a similar, less refined idea going when I originally created those gemstone icons. Maybe I’ll look into an Enchanting system for Flare, where you combine one equipment and one rare consumable to make upgraded equipment.

Selling to Vendors vs. Crafting

I don’t know if this is necessary. It doesn’t make sense in most game worlds, and is just there because of tradition at this point.

If I had a crafting system, I’d rather have items useful for their base components rather than being vendor trash. Longswords and bows could be scrapped into steel ingots and wood rods, which could then be used to build other base items.

Melee Attack Animations

When I create the planned upgraded art for Flare, I want to put in different melee attack animations. I haven’t decided on the set I need, but imagine if there was an overhead smash, an uppercut swing, left and right hooks, and lunge/jab. I could make it so that these animations are used randomly so that combat simply looks interesting. I could make it so that each weapon uses one animation when standing still and a different animation if you attacked while moving (perhaps with different damage for each). I could have each weapon type affect the speed of each animation. I could have certain powers use specific animations.

Making Melee Fun

Combat can be more interactive if creatures have “tells” before they use an attack; e.g. a big wind-up before a huge swing. That would give time for the player to dodge or block. It would require more thought put into each creature but it could be well worth it. Right now there’s really no time to react to what a creature does if you’re in melee range; at best you can hold block while waiting for an attack, then counter-attack (which isn’t too bad, really).

I’ve read interesting articles on how to make melee combat feel “crunchy”. Instead of having a melee swing always follow through at the same speed, it feels better when the animation pauses slightly on the frame where the hit lands. It gives the attacks weight, rather than just feeling like all combat is simply swinging at ghosts.

Blocking should have some small effect on the attacker, maybe a higher-than-usual cooldown time before they may attack again. This could mimic “staggering” an enemy with a successful block and give time for the player to land a counter swing.

2011/10/27

In Development for v0.15

Translations

Thane is working on translation support. After some deliberation, we decided to use a very simplified set of gettext rules and .po files. This is mainly because I’m always reluctant to add large dependencies to the project (especially where multi-platform support is a must). So for now, our .po files will support basic translations (simple msgid, msgstr pairs) but not more advanced features (stuff like gender/plural support). Basic translations might be sufficient for us: action RPGs are not text-heavy interfaces, and dialog is translated in whole paragraphs.

It should be fairly easy for us to expand to using full .po features and something like tinygettext in the future (recommended by the SuperTuxCart crew).

Make Install

New contributor Manuel has added a “make install” option for those building from source, and has cleaned up some executable bits on various data files. He’s more familiar with linux distribution concerns than I am, so his expertise is very welcome!

Tiled tileset offsets

I’m working with Bjorn over at Tiled to commission a feature for Tiled 0.8. In Flare tilesets, each tile can have an arbitrary offset from the grid space it’s on. In practice, large tile subsets share the same offsets (e.g. all the “cave water” tiles have to be drawn below the regular grid). This new Tiled feature will allow setting a display offset to one entire tileset. At least for Flare’s purposes, it will allow us to do all the mapbuilding currently supported.

Once the feature is ready, I’ll get to build new grassland maps! With a simple overworld set we can connect multiple dungeons, add a village, more quest-givers, etc. I’m hoping to put new content in for Flare v0.15.

Data Mods

This week I’m working on data mod support. It will be easy to create mods that replace existing data files or add new data files. What this means is that adding new creatures, items, powers, quests, maps, etc. will be a breeze. Along with translations, this is one major feature for v0.15.

We’ll be working on a few demo mods to show what’s possible. In the not-too-distant future we’ll be putting up several tutorials on how to create content for Flare. Exciting times!

v0.15 release date?

I don’t have a planned released date yet for v0.15, but I’m looking at sometime mid to late November. Once we get the above features done, and we’re sure everything is clean for downstream packaging, we’ll turn the binaries loose.

2011/10/24

Flare in Debian

Flare is now a package in Debian (unstable). Wow! Special thanks to Manuel A. Fernandez Montecelo and Jan-Hendrik (hennr) Peters for the legwork.

Putting FIRE in Flare!

I’ve been on a bit of a code hiatus while messing with new art. But it’s time to get back into the 1s and 0s!

I plan on tackling some code towards v0.15 this week. I have one task that requires knowledge of GNU gettext, and another that requires knowledge of Qt. If you are interested in contributing to the project, please contact me!

2011/10/22

Relearning Blender

I’m messing around with the latest Blender (2.6) after sticking with 2.49 for as long as I could. It will take a while before I feel proficient with the new interface.

Most of my previous work carries over. Some of my old baked normals are inverted but that’s not a big deal. I haven’t tested particles yet but that art (spells effects) is very old now and I’d like to do it better anyway.

Progress

Life events have claimed most of my free time and Flare has been pretty stagnant for a couple months. Time to start turning down other side projects and get back into focus.

Here are the major tasks that need attention.

  • Replace MessageEngine with GNU gettext
  • Add mod folders and ordered asset loading
  • [Tiled] Allow (x,y) display offsets per tile set

Nothing flashing nor fun to work on. I’m sure that’s a big part of why I’m in a rut. So what might be fun instead?

Fun Stuff

I have a very primitive action RPG done, but there are some things that deserve improvement. Here are some long-term plans. Some of these might be worth fixing before the first game.

  • The inventory menu deserves a better layout. The engine ought to allow creators to define new equipment slots.
  • Allow new equipment slots to display as a layer on the hero (e.g. for boots, gloves, helmet). Once this gets more complex it’ll probably require having an equipment layer z-order per direction, if not per piece of equipment.
  • I don’t like the current Power unlocking system. It just isn’t very fun: some levels you unlock useless powers, other levels you don’t get any new powers. I should throw this out and implement a more traditional system to unlock powers (e.g. one unlock per level, or unlocked via magic books)
  • Melee combat feels boring. The animation needs improvement, and probably there should be multiple melee swing motions. The engine should allow multiple variations for each animation, not just melee.
  • I want some creatures to move very differently. I ought to implement e.g. a flying creature, then figure out how to refactor creature behavior.
  • The current implementation of armor isn’t very satisfying. I should probably have the Defense stat unlock armor and shields at each rank. Armors can be leather, chain, plate mail, full plate; shields can be buckler, small shield, large shield, great shield.
  • I think the hard connection between base stats (phys, mag, off, def) and specific items should be broken. Remove those item icons from the Character menu, they’re misleading at best.
  • It was a nice idea to make Power trees based on the combination of base stats (e.g. Physical Offense), but it’s awkward in practice. The idea could easily be lost in translation. Instead I’d want to make arbitrary power trees by “build”. E.g. a Warrior tree, a Ranger tree, and a Mage tree. Once the trees are no longer tied to the core powers, it should be easy to add random trees with new powers.
  • This is completely personal preference, but I’d like to have more non-magical items and far fewer magical items. I want magical items to be special and feel unique.
  • The better I get with isometric art, the more I feel that I’m terrible at it. I think it’s time to step up my techniques and push for higher quality.

2011/09/17

GNU gettext

Rather than roll my own translation solution, I think it makes the most sense to simply use GNU gettext. This would obsolete our recent work on the MessageEngine, which essentially is a similar solution.

If anyone has advice on using gettext with games, please pass it along. I believe several successful projects (e.g. Wesnoth) already use it to great effect.

Looks like gettext can just as easily handle data files as strings in source codes. See this wesnoth campaign file example.

2011/09/12


Grassland Preview

Let’s take a look at the almost-complete Grassland tile set (click to enlarge).

Grassland tile set preview

I’ll add more trees, rocks, and various set pieces as needed.

New Scale Hero Preview

It’s likely that this new scale will be used in game #2 for the Flare engine. But it’s a good outlet now for creativity. Here’s actual-scale art for the base human male and rough leather armor.

male base
leather armor

2011/09/06

The Game Plan

Flare is only going to be relevant if I release several games: improve the engine each time until it’s proven and practical.

I’m going to save the new game scale for game #2. For now I’m going to take what we already have and think about the kind of small-scope game that can be made. Maybe grasslands, caves, dungeons, and that’s enough for one small episode.

Story Idea

Here’s a tiny story I could tell using most of the current art.

Part 1: Mines
Trade caravan drops off the player and supplies to a mining outpost. Player’s just looking for work. Some of the other workers are sick so you’re a welcome addition. Take a pick, head down into the mines. The hero follows a suspicious tunnel and ends up in a creature-infested cave system. Has to fight his way back to town. One of the miners died, became a zombie, and had to be put down. This is trouble.

Part 2: Journey
The village will be wiped out without help. There is a fort not far from here that houses an old paladin order. Maybe they can send swordsmen or magical help. Travel overland to the fort, only to find the area crawling with creatures. Help fight the undead. Help find ingredients for a possible cure.

Part 3: Passage
The villagers must come to the fort for safety, but overland is too dangerous. The paladins know of an abandoned tunnel that connects the fort to a spot near the village. Clear it and get to the villagers, and guide them to the relative safety of the fort.

Part 4: Siege
Back at the fort, the villagers get help. The potions seem to make them feel better. Meanwhile there is a heavy siege under way against the fort, an army of undead. Fight against the hordes at the gates. Find the twisted villainous leader and destroy him.

Part 5: Guardian
When you slay the villain, his beastly corpse becomes the body of a frail old druid. The paladins recognize him, he was a great elemental guardian. Something or someone corrupted him, allowing evil to overwhelm the scales of balance. The player becomes the new Guardian. Some of the previously-sick villagers and paladins, slain in combat, are becoming undead. The cure has failed, only treating the symptoms. When you all finally die, you will become undead too. As the new guardian, you eventually seal the Fort with yourself and the infected survivors inside.

Assets

Most of this short story can be told with the existing assets. Let me list out how it would work.

Part 1 would use the grasslands and cave tileset to represent the mining village area and the mines. The caves could contain goblins, antlions, and a couple zombies.

Part 2 would feature mostly grassland areas. Closer to the village there can be more goblins/antlions, and closer to the fort there would be mainly undead. There would need to be a new set piece for the Averguard Keep entrance; it doesn’t need to be a whole tile set (it can be e.g. a mostly pre-rendered set). The interior of the keep would be the dungeon tile set.

Part 3’s passage would be half dungeon, half caves. The dungeon half of the passage could be minotaurs, and the cave half could be tougher antlions.

Part 4 would again happen at the gates set piece, probably an instance map that now contains tougher undead and siege tiles. The boss encounter could be just inside the fort, perhaps. The boss itself would require a new creature model.

Part 5 is mostly the denouement. Will require a handful of new graphics but nothing like a whole tile set or creature.

2011/08/28


Sprite Scale

I’ve been experimenting with larger scale sprites. Here is the base human male at the current scale (each tile is 1.5m) and the proposed new scale (each tile is 1m).

Human male (old)
Human male (new)

I’ve applied a high quality normal map to the larger version, to show the kind of detail possible with this new scale.

Obviously the larger scale looks great. I’m tempted to start using it immediately. But there are concerns.

Pros
  • Better scale images for this genre
  • Higher detail makes equipment choices more visual and interesting
  • 1m scale will have a higher universal appeal
  • I’d like to redo some art anyway (e.g. dungeons), I can do much better now
Cons
  • Most of the old art will be unusable and incompatible
  • Any new art will require significantly more time to create
  • If I switch now, there will be delays in delivering an actual game

I will definitely move to this new scale at some point, it’s just a matter of when.

Discuss.