Thursday, June 2, 2011

Status update

Yes, I know that I haven't posted in quite a while. It is my fault actually. I have been posting too frequently, creating this false expectation that I will continue to do so. That I can continue like this... forever. But I can't! But no more! The lies stop now...

I am only kidding. Of course updates will continue as usual, but I can only post when I have some content. Sorry for the lack of updates. I'll try and make up for it by posting a not too detailed overview of what I have been up to. It is not that I have been not working, it is more about spreading myself to thin.

First, I have been working on one new feature for the engine which I have been foreshadowing for a while. It is a fairly minor and secondary feature, but I think it will contribute great value and also add a new perspective for when it is needed. I am 95% done, but the last 5% are very tedious. And there is also the part regarding rams. My god, I do hate working on those ramps. I am actually considering trowing out ramps and replacing them with half height cubes, but I do not want to get into Minecraft territory.

Another thing I have been toying around is procedurally generated content. This subject tends to rub both geeks and DF fans the right way (are there non geek DF fans out there? *troll*.*troll*) and I my qualify as both, I find it also very interesting. So I decided to go this route. As a symbolic gesture, further cementing my commitment to procedurally generated content, I will be throwing out all my hard work on the hand crafted plant list (only plants, trees and all other data remains) and replacing them with procedurally generated content. Now this is a very risky decision, replacing hand crafted content with the interpretation of the output of a random number generator, so for the first version I'll compromise. I'll use random plants, but I'll generate more than needed, hand pick from this list and also adjust balance if needed. So the first version will have a static plant list, but this list a subset of a randomly generated list.

So how am I generating this content? First, check out Sphalerite's Procedural content creation: Random plant creation script forum thread. Here is a direct link tot the script. This little script generates random plants and trees in a very clever way: it randomly generates a name and then deduces the properties, so when generating the same name twice, it will have the same properties. Of course I am not using the script to generate my own plants, because that script is for DF. But mainly because it is Python. This is a snake free zone right here. Please check in your snake at the customs desk. I am doing my own implementation of the algorithm. Sure, the basic idea is the same, but the implementation is fresh. I do not know if I will be able to make my algorithm generate DF content too, since the required data is so different in content (shape it is not important, I could eaily output RAW files instead of XML). 

This little piece of code will be released to the public when it is ready as open source.

Just one more little side note regarding content. Both the Python script and my implementation need a word list. The script loades DF data. I have all data included in the code so no DF versions needs to be installed. The form the data takes is very different. In DF, we have RAW files with entries like this:
This describes the word "ACE", telling me it is a noun with singular and plural form, but also an adjective and also gives a few properties for the word. I describe this word by the following C++ code snippet:
sGlobalWords.Add("ACE", Word(665767).Noun("ace", "aces").Adj("ace", 1));
It is obvious that the form the data adopts it different, but the content is the same. There is no way around this. This is not random data, this is the English language. The word "cat" will always be a noun, the plural will always be "cats" and it will always have the same word composition properties. As long as a word appear in my list and also in DF, it will represent the same logical data under a different physical representation. Just wanted to be clear about this from the beginning.

The random plant generator is about 40% done and it is not integrated into the editor yet.

Another thing I am working on is a system to give large scale generic orders, like "we need more food", "we need a new bedroom" or "we need an artificial lake". Dwarves will the proceed to break this order down into smaller ones, and without user intervention figure out the best way to execute this. This will not be an option for the player. It will be a behind the curtains system. Beside the obvious uses for such a system, I would also like to release a semi-interactive screensaver version of DwarvesH. Sure, seeing the Windows™ logo slide across the screen never gets old, but wouldn't you rather see a fortress evolve from scratch to a massive complex in a non interactive way while your CRT screen is protected from burn in?

And speaking of DwarvesH, the time has come to pick a new official name. I said from the first day that this name is placeholder. Unfortunately, I am very undecided and it will take me probably weeks (if not decades) before I can pick a name I like.

I have also been slowly investigating the legal ways one could get out some money out of an endeavor similar to the one yours truly is undertaking. Domain names, hosting, security certificates, design and other services all cost money on a monthly or yearly basis. While I can easily bear the burden of these costs for shorted periods of time, on the long run it does not seem as a good idea. I would like to offset this virtually endless stream of small expenses with a means of covering them. Without a method of sustainability, the only thing that I will achieve in the long run is bankruptcy.

This has a few interesting implications. Let me tackle the one that springs imediatelly to mind first: no, this not necessarily mean that you will need to spend money to get your hands on The Game Formerly Known as DwarvesH. I said that I am investigating financial stability as opposed to guaranteed deficit. There are multiple ways to achieve this, from optional donations to advertising to premium services to outright selling game licenses, and a lot of options in between.

Another implication is that it can only happen only after all third party assets have been eliminated, like Stonesense tiles and a few left over recognizable terms from DF. I am sure you will appreciate a fresh DwarvesH, bathing in the refreshing stream of original content.

Until I have enough features for a new post, I'll try and fill the place with a few "Screens of the day" posts and a pseudo-challenge.


  1. Wow, I'm very excited!! I really like your optimistic view on things and your high motivation!! Can't wait to play The Game Formerly Known as DwarvesH!

  2. Drop a "donate" button somewhere.

  3. I am afraid things are more complicated than that. There are a lot of variants and variables to consider, including if I need to register an IP or not first. Laws and taxes can be different based on this.

  4. Whenever you find a way for us to donate or whatever i'll start throwing money at you