Monday, August 29, 2011

53 – Bedthorns!

Hey! Guess who's back? If you are thinking Nana, then you would be right. I am also back!

I've been working on finalizing the plant and biome lists. Right now my plant system is so powerful, that it could handle all plants uniformly. Using such a system, a tree is just a normal plant and it could have an extra property to tell you that it generates logs when cut down. But after some serious design effort, I decided to not pursue a very realistic modeling of plants and trees and to keep plants more diverse, only for gameplay reasons. Sure, you could play a game where everything is a highly realistic simulation, with all plants going through all the phases, transition and life stages. I'm sure some biologists out there would love something like that. But I decided to create my own world, with my own rules that make sense inside that world, where everything is still heavily inspired by nature and realism, but where said realism does not get into the way of fun or you focusing on more important things.

Plants come in two varieties: bushes and trees. Of course, there are the organic components, which again fall into different categories, but I am talking about the grand picture. Plants all inherit from the Organic class, which offers the base properties for all such items, but in practice each subtype only cares about a fixed subset of those properties based on the way I wanted to design the game. In the above mentioned theoretical system that can fully simulate everything, every subtype cares about all properties, but I am not doing that. These key properties can be seen in the editor:

Let me explain the properties of the plants:
  • Id: this is a unique string identifier for the item. I use the convention that can be seen in the picture, but mod authors are free to use a different system. In the same mod, two items can not share the same id (not checked right now). If the same id is shared across mods, this is where automatic mod merging sets in. I will talk about this another time, but by the time the editor is done, it will be capable of overwriting only specific properties through hierarchies of mods.
  • Tile: this is the index of the graphic for the plant. Soon, this index will change to tilesheet index and index in said tilesheet, to better accommodate for changing graphics and modding. Plants have a single tile. Other entities can have multiple tiles.
  • Name and plural: all items have these properties. The engine can also handle adjective forms, but this is currently not used and maybe never will be.
  • Value: the multiplier for the object that uses this material. If a bush has a value of let's say 10 and a bag 2, then these values will be multiplied by this property. Currently all plants have the basic value of 1, because they are all equally as common, but I will adjust this.
  • Seasons: the seasons in which one can plant these plants from seeds. It also influences natural plant surges. And yes, right now you can cheat and plant something on the final day from the season it can grow in, thus getting one extra harvest.
  • Grow: the duration it days it takes the planted seed to mature into a full grown plant, with all the produce.
As you can see, a lot of the properties have been removed, like edibility and possibility of attack by vermin. These properties still exist, but they do not matter for bushes. You will never eat a bush and neither will vermin attack a healthy bush. Instead, these properties define the produce of the bushes.

Bellow the plant list, you can see the organics you will get by harvesting a plant, and their properties. These items are actually defined in the Organics tab, here you only assign an organic to a plant. In the Organics tab you get a lot more properties, but here you only see the one that are relevant for organics produced by bushes. If you take the same organic, and change it from a bush produce to a tree produce, the set of important properties also changes.

As said, I decided to keep bushes behaving differently from trees. When you harvest a mature bush, you get all the produce. This way I can keep bushes fast yield and low on the micromanagement, while trees are more durable and offer a yearly yield. It makes sense for crops to plant them and harvest them after, but for bushes it does not make that much sense. A little abstraction is required here, but I think the gameplay will benefit. The actual bush is of no use and will be discarded and once I have refuse stockpiles, moved there. Produce does not decay while still attached to the plant, but does die together with the plant.

I also changed the edibility property, from a boolean to a nutrition real value. If something is edible, it will have a non-negative nutrition value. Zero is for a few things, like spices, which offer very little nutrition, but still have uses. -1 means that something is not edible, and in the future I may use other negative values for fun stuff, like poison and disease. Cookability property has been removed. You can't just flip a switch and "foo" can be converted into "cooked foo" anymore. Once the new cooking system is done, and item is cookable if it appears in a cooking recipe.

Let me illustrate this by telling you about one of the new plants. Since I have realistically named and behaving trees, I'll compensate this by using only made up bushes. Also, the list of 3 plants is only from one biome (more on this another time) and there are not that many plants because trees also have edible produce.

Every biome will have one jack-of-all trades plants, that is very common, grows in all seasons, has theoretically a lot of uses but practically only a few are created, leaving the rest as back up plan if balancing though the rest of the plants fails. For my first biome, this noble spot of great but not that exciting work horse and sometimes desperation survival source is the bedthorn. It is a rather short thorn bush, that thrives in forests in all seasons (but probably not under snow). It has bright red plum sized berries that have saved the lives of many adventurers lost without rations in deep forests. Children especially enjoy these berries because of their strong red pigment, that can be used for painting. But the most interesting aspect is the name: nobody alive today remembers the origin of this strange name. Why would you make a bed out of thorn bushes?

Harvesting the bedthorn yields fruit, seeds and thorns. The fruit is edible raw and will be part of several cooking recipes, even staying around as snacks and "exotic" spicing when your society has moved on from consuming berries in large quantities. It has a fairly normal nutritious value and can be attacked by vermin. The seeds are small and similar to apple seeds, only larger and can even be eaten, but they are not too filling. They can not be attacked by vermin. And finally we have the inedible thorns, that will serve for decoration purposes and maybe make shift traps.

The graphics are placeholder.

The one thing that is missing form my first biome is the specific animals.

I also decided to handle the design of biomes differently. Land biomes rarely if ever meet on the same map section (because it is too small). So because I was designing all the biomes at once, I was actually designing the whole game at once, making my job a lot harder without a need for it. From now on, I'll design all biomes in isolation, only stopping when needed to think about the overall cross-biome balance. This also means that from now on every biome will have its own mod. I'll have a single core mod that gives a lot of general content, but all biome specific stuff will be in its own separate mod. I'll also add the possibility of specifying the rock types for each biome, to give better diversity to maps.

You know what this means: payed biome DLC! CHA$$ING!!!! Like 50$ a pop! I'll be rich! No, actually at least all the biomes and plants that have crossed my mind up to this moment will be free forever. I would rather see some third party mods with new biomes.

Here is the biome listing, without stones and animals:

Once this biome gets play tested and I have a few extra ones, I would like to add one extra plant for each allignemnt, so you have even more diversity in your biome. If I say biome one more time, probably Xzibit will burst though my wall and reenact the Internet Meme I'm sure he loves: "Yo dawg, I herd you like biomes, so...".

I also updated the in game dialog where you choose the map creation parameters, stripping away all DF inspired stuff (except for the alignment system; I like the two axes alignment system and would not like tot remove it) and replaced this with the condensed information loaded from the mods:

Another dialog that has been given the final round of cleanup was the initial expedition customization dialog:

It may look the same, but behind the scenes it no longer uses a semi harcoded heavily DF inspired skill system, but loads the skills from the editor. Actually, the entire DF like skill system has been striped out of DwarvesH.

I am trying to obtain a game where the actual implementation does not define the experience. I am trying to make a platform, a mod player, that is capable of running a wide range of similar games. The editor is starting to define an ever increasing amount of the content available.

Just to summarize, the entire plants, trees, biomes and skill system have now evolved past their DF roots. I'm sure there are some people out there who will be happy to hear that. Sure, the general idea is still similar in some cases, but I think I have given my own interpretation to a lot of these elements.

Almost a year ago, in my enthusiasm of getting the basics of the engine going, I copied a few things from DF. For nostalgia's sake, I'll add here an extract of a code I have written for one of the first posts, when implementing the first version of the skills dialog. Code that no longer exists:

enum {
dsMining = 0,
dsLAST_SKILL = dsTeacher,
That's a $%^$^$@@@@!!# lot of skills!


  1. It's great that you break away from DF, for many reasons. Most important is probably that you can focus 100% on a Fun Game, picking the good ideas from DF and skipping the hundreds of bad ideas. Secondly, you might be able to create your own world perhaps more inspiring than the generic fantasy that is the norm.

    Also, I humbly suggest you focus firstly on making a fun game, secondly on content. Don't take this the wrong way, but nobody will care how many different bushes you have if the game is not fun! :) Plus it's very easy, and more worthwhile, to add stuff like that later when you have the core mechanics down.

    So what would make a fun game out of what you have now? Why not build an alpha version of a mining / building / (tower) defence game, with simple-to-learn-hard-to-master mining / combat mechanics. Your dwarves have to build some kind protection with traps and defences before the inevitable orc hordes attack. At first perhaps just caves in the ground, which later on turn into a huge fortress. When this is fun, you can add stuff like advanced crafting, food gathering etc.

    Just throwing out ideas here! :) Feel free to ignore but I'd love to discuss this further! (Contact me on my page if you want).

    As always, keep up the good work!