Building a Creature, Part 2

In continuing on from last week’s discussion of new creature dynamics in URR, we have a few more new factors being added to creatures. These are being coded at the moment at the same time as all the fixes I’m putting into the map; I expect the fixes to be done by the end of this week, hopefully, though obviously redoing creatures from the ground up is a rather larger task.

Resistances

I’ve thought long and hard about how I want resistances to work in URR. I considered at first having fire/ice/shock resistance; then I added in things like poison/acid; but I felt this was getting too close to NetHack, and further away from the strategy game I was after. However, I knew there were two resistances I thought were particularly vital: there had to be creatures who took no damage from fire or lava (Fiends) and those who were unconcerned by the most deadly of poisons (Hydras, for example). Thus, there are only two resistances in URR; the ability to resist fires, and to resist poisons. These are not absolutes – they are on a scale, and while Fiends may have perfect fire resistances, some creatures have only partial. Same goes for poisons. There’s also going to be a variety of poisons with different sources and effects, but these will be the topic for a far future blog entry. As for how humanoids deal with these resistances; there will be some items that bestow varying levels of fire resistance, but poison resistance is a matter of finding the right cure/preventatives.

Climate

Different creatures like to live in different climates. You’ll never find a Cyclops or a Naga in the polar regions, and you’ll never find Yetis wandering around the desert. In general, this means creatures stick to their preferred biome as they become gradually less skillful and less willing to fight the further they go. This will have an impact if you recruit certain creatures from one biome to your army, then intend to march into another; Cyclopes will become increasingly unwilling to fight, and find it increasingly difficult to fight, the further towards the poles you go. It will take some time to become an issue due to the distances involved, but this is effectively to stop the player (or an AI commander) creating a stack of units that can win every battle, Civilization-style, and then simply moving it around the map. Similarly, humanoids recruited to your army will need slightly more appeasing the further from home you are. As for monsters, you may have to respond to the local fauna as you move…

Encumbrance

Just as I wanted to get rid of the clear cut-off between “alive” and “dead” for health – hence the application of limbs – I’ve thought more now about how I want encumbrance to work. Each creature has a maximum encumbrance, which is determined by their endurance. This is for everything they carry, from money (which does have a weight) to armor, weapons and everything else. This is also modeled as a scale – the closer to your maximum encumbrance you get, your attacks become gradually slower, and gradually less powerful, and for creatures with a speed advantage, that speed advantage becomes very gradually reduced too. This decrease in skills increases in speed the closer you get to your maximum encumbrance, and when you pass that threshold, there is a risk of hurting yourself from moving or attacking, or performing any too-complex action. Will you be able to kill yourself falling down stairs like in NetHack? Probably not to that extent, but we’ll have to see…

Building a Creature, Part 1

This entry starts a series intended to discuss what goes into each creature in URR, and what stats they – and therefore you – have. Originally, creatures had a huge number of stats and were each uniquely constructed in the game – each had its own selection of limbs and its own unique code that handled when it was attacked. This was massively inefficient, and there’s a bunch of changes I’m making at the moment which should speed the game up; allow for a much greater variety of creatures; and make far more explicit to the player the strengths/weaknesses of each foe, and reduce some of the uncertainty and unknowns in combat. Here’s a few of the changes I’m currently programming in. Some of them were implemented in a simpler form before-hand, but some are entirely new:

Names.

Originally, messages of the following sort came up:

You slash the male Cyclops`s upper left arm with your steel longsword.

The male Cyclops hits your torso with his fists.

However, what if you were friends with that Orc? Or if you had been told to kill that Orc in particular? Which is to say, Orcs are an intelligent species (well, nominally), and have names like any other sentient race. However, you won’t automatically know a sentient creature’s name when you meet them, unlike pretty much every other RPG or Roguelike I can think of. Instead, if you encounter any sentient creature without foreknowledge, you get messages like the above. If you know their name, then you’ll get (with an output from the Cyclops name generator):

You slash the Cyclops Pylopedes` upper left arm with your steel longsword.

The Cyclops Pylopedes hits your torso with his fists.

Lastly, if a creature is of your species, you won’t get its species listed there, simply its name. If a creature is any other species, it will note the species – which is to say, if you are human, you won’t get “the human <human name>”, but you will get “the dwarf <dwarf name>”, and so on.

Height and weight.

Creatures have both a height and a weight. The taller they are, the more z levels they occupy, and that gives them a variety of benefits outlined in a previous entry. However, weight has also been fully added, which has a variety of effects – it determines the weight of a limb if chopped off; whether particularly large creatures can walk safely across certain surfaces; and is a major factor in whether they can be knocked back, thrown to the ground, wrestled with, etc.

Experience.

Finally (for this entry), Experience has been entirely redone. When a creature is spawned (this includes you), its experience for each of the five base stats is calculated by squaring that particular stat. They are currently five of the traditional base stats – Strength, Endurance, Dexterity, Intelligence, and Willpower. Stronger creatures give more experience; weaker give less; and your current level of experience also determines how much more experience is required, and how much experience you get from each creature. Other creatures will also gain experience in combat; the more of your forces your enemies kill, the stronger, more experienced and more skilled they will become. Battles that occur which you aren’t part of will calculate appropriate numbers of surviving creatures and assign experience based on that. There is currently no upper limit to these stats – I intend to leave it that way, though when any stat reaches a sufficiently high point, finding and killing enough high-level creatures to raise it will become increasingly challenging. This, of course, does not cover the 80+ skills in the game, which are a topic for a future entry in this series…

Character creation

Let’s talk about character creation for a bit. Or, more specifically, character creation in roguelikes.

NetHack gives you very few initial options. The player is allowed to choose their class (Wizard, Barbarian, etc), race (Human, Dwarf, etc), gender (I’m sure you can work these out) and alignment (Lawful, Neutral, Chaotic). Your starting statistics, maximum statistics and the skills they can/can’t learn (and the extent to which each can be learnt) are determined by your choices on the above, and are fixed for the remainder of the game. If you spawn as a Wizard, you simply cannot reach the highest skill with the axe, for example. You have minimal options, and background algorithms determine your skills and, therefore, your gameplay (to a large extent) from those few initial choices.

At the other end of the spectrum, the Dwarf Fortress character creation screen in Adventure Mode gives you a wealth of options. As well as picking species, gender and hometown, you can fine-tune your stats and your skills to whatever degree you want. In Fortress Mode, you can choose what exact supplies you take with your band of adventurers. In contrast to NetHack’s sparse options, and the relative opacity of how skills function, DF lays almost everything out for you at the start and gives you a huge number of options. However, importantly, there are no ‘class’ options (at least in Adventure Mode), and you simply choose which skills you desire.
These differences got me thinking about the level of choice I want to give the player in URR. I knew i wanted to give you a large level of customization, which moved me away from any kind of ‘class’ system and towards one focused on stats and skills, without boxing in the player’s options.

Initially, you select your species, your gender and your age. Your home town is selected at random, based on those owned by your species. I considered letting you select a town, but that would reveal the map, and exploration, discovering new lands and the like are going to end up as a significant goal in the game.

Once these are selected, you will then (this is being programmed at the moment) be taken to a screen on which you are given a hundred points to allocate into different areas. These include:

– Base stats:

These are strength, endurance, dexterity, willpower, and intelligence. The more you try to raise one above your species’ starting stats on the point allocation screen, the more it costs. Which is to say, putting one point into ‘Strength’ costs 10 points; the next costs 15; the next costs 20; and so on and so forth.

– Starting skills:

These are cheaper than stats – while the Strength skill applies to weapon damage, how much you can carry, how well you can chop down trees, pull back a bow, and many other things, skills only determine a single one of these. They are therefore a lot cheaper, and a lot more numerous. For instance, bow use is determined by Strength and Dexterity (stats), and Bowstring Stability, Wind Accommodation & Bow Accuracy, while the number of shots you can fire per turn (initially 1) is ruled by Targeting Speed and Drawing Speed.

– Starting items:

You can choose to spend points loading out your character with starting items. You can get going with any piece of armor of a number of qualities (some would be too valuable to spend even your full 100 points on!) and a variety of other items too. Likewise, a number of weapons of various materials are available, but you can currently only begin with two of those. You can also spend points to start with cash.

Once you’ve used up all your points (any remaining unallocated points are converted into the currency of your species), your game begins! In the initial alpha, you will spawn out in the forest, but you’ll soon be spawning in a home village, chosen randomly. Of course, balancing the cost of the different menu options is something that’ll take time, but for now, the values I’ve tentatively assigned seem reasonably balanced. This’ll be one of the many calls for feedback in the initial alpha, too. I debated letting you choose a weak initial ally on the menu (say, an attack dog), but I felt restricting it to these three was stronger. Can anyone think of anything else you could initially select?

Lastly, I still aim to have the initial alpha out by the end of the year, but I’ve had many people say to me that they’d prefer to have a bigger alpha released when it’s ready than ‘force’ a release before next year. So, while that’s still my aim, if there are initial combat/AI features I want, I will likely focus on implementing them, rather than meeting the rather arbitrary deadline I’ve set myself.

Coming Monday 31st: The URR map, and the existence of ‘battlefields’.

Coming Monday 7th: More detail about combat; stunning, unconsciousness, blood loss, impaling, and more.