So, I've been making a game, with a title which is subject to change. It is in an early development stage, it is free and if you want, you can try and take a look:
And some screenshots:
Also, I'm starting to put up a word or two about my design plans and choices. Those will probably be someday put together to for some kind of a manual or something.
There are eight attributes in total; four physical ones and four mental, but they are all similiar. Their most important role is creating the base values of- skills, but some of them has also an additional, special role.
Strength - adds bonus damage to each hit, ranging from 0 to Str score (so for Str 10, you can inflict additional 0 to 10 points of damage on each hit)
Dexterity - no special effect; it is most important attribute for attack skills
Agility - no special effect; it is most important attribute for defence skills
Constitution - adds 5 HP per one point of Con
Intelligence - no special effect; most important skill for magic skills
Willpower - adds 5 MP per one point of Wil
Perception - improves the odds of unlocking talents and talent trees after fights
Magicality - increases the amount of magic crystals needed for item enchanting
Starting values of attributes depend on player character's race - a human starts with 5 points in each attribute and 40 points to put in those in character creation process. Every level you gain additional point to improve your attributes.
There are going to be 60 skills in 4 categories - 20 fighting skills, 20 magic skills, 10 crafting skills and 10 special skills. They are most important characteristic of a player character. Their base value is a sum of three attribute values - each skill has three attributes associated with it (keep in mind that some skills have the same attribute associated with them more than once; for example, piercing weapons skill is associated with Dexterity twice). This value is updated each time an attribute increases or decreases. Additionally, you gain 10 skill points each time you gain a level to spend on fighting or magic skills, allowing you to increase them. This value is a permanent bonus to skill value, allowing you to further specialise your character as you progress in level.
Crafting skills are a little different - they are not associated with attributes. Every player starts with score of 40 with each of the skills and gain 5 points per level to increase them, allowing him to work on better materials and more complex items.
Special skills are associated with attributes the way fighting and magic skills are, but have different pool of skill points - 4 per level.
Fighting skills has seven close-combat skills: slashing weapons, piercing weapons, crushing weapons, hacking weapons, elastic weapons, polearms and brawling; three ranged combat skills: throwing, archery and crossbowmanship; four armour skills: light armour, medium armour, heavy armour and very heavy armour; three defence skills: parrying, blocking and dodge; and three skills that don't fall into any particular category: two-weapon fighting, ambidexterity and vitality.
Close-combat skills and raged combat skills are working the same: you need to test them against a defence skills of an enemy. Armour skills are not yet implemented, but they will allow you to wear more complex armour effectively, and reduce penalties steming from armour. Defence skills allow you to defend against attacks of the enemy. Ambidexterity decreases the penalties steming from using two items at once, usually two weapons or weapon and a shield. Two-weapon fighting decreases penalties from using two weapons at once (both of those are neccessary to use two weapons effectively). Vitality increases hit points by 1 per skills point (keep in mind that it is associated with three attributes: Strength, Constitution and Willpower).
Magic, crafting and special skills will be discussed further in the future.
A short summary of what is going on when you fight with an enemy.Hit chance is depending on difference between attack skill of an attacker and defence skill of a defender. No difference means 50% chance, 30 points of difference in favour of attacker rises the chance to 75%, and difference of 100 or more leads to hit chance of 95%. On the other hand, 30 points of difference in favour of defender decreases the chance to 25%, and 100 or more points in favour of defender drops the chance to 5%. This is pretty much what it will be in the future, but the exact function morphing from difference in skills to hit chance may change.
When the hit lands, it is determined where it landed - right now there are only three regions (region of hard armour, region of soft armour and unarmoured region). In future, you will be able to don different kinds of armour on different parts of the body (from breastplate, through helmet and gauntlets, to sabatons and groin protectors), each with hard armour, soft armour and no armour regions. This is meant to simulate the various kinds of armour covering different parts of the body. Plate armour covers 90% of the body with hard armour (the plates themselves), 5% with soft armour (joints and bindings, mostly made of leather) and 5% with no armour (areas like eyes and even more vurnerable joints). Because of the item creation system, leather armours are considered to cover most of the body with soft armour, not hard - hard armour is reserved for metal parts.
After the hit location has been determined, the damage is calculated. The damage stems from weapon (constant part and variable part), Strength of attacker (variable) and bonus from timed effects (constant) and attack type (constant). Every variable part is randomized separately, and then all the variable and constant parts are summed up and the armour value is substracted from damage.
This method of calculating damage and armour ensures that even wearing really heavy armour doesn't mean you are safe from damage - you get hit in soft spot. It is planned to be possible to actually aim at the non-armoured areas in the future (more complicated figthing system will be implemented in the 0.7 version, after exploration).
Every attack takes time. Every weapon has attack time, expressed in milliactions. Player's speed is expressed in milliactions per second; thus, if you have speed of 1000, and weapon has attack time of 800, each attack takes 800 milliseconds. But if you have speed of 800 and attack time of 800, each attack takes 1000 milliseconds. To calculate how much milliseconds an attack will take, you need to divide attack time by speed, and the result is in seconds. After attack, you lose speed advantage equal to time spend attacking; after enemy attacks, you gain the speed advantage. After each full turn (that is, both your and enemy attack), the game rolls sqrt(1 000 000), and if the result is lower than your speed advantage, you gain bonus turn. If you didn't gain bonus turn, the game checks the same thing for enemy. Bonus attacks also cost time as usual, thus every bonus attack reduces your speed advantage.
Because of other design decisions (most importantly, lack of graphics, and aiming at text-based communication), the design is going to be pretty simple.
There is an 'overworld', which is actually just three places: your sheepfold, a village where you can rest and trade, and enterance to the dungeon. Village is probably going to be fairly standard one: a shop, a blacksmith, an inn, and a healer. Well, maybe an elder, too, if I will get fancy. Sheepfold will be a little original addition I don't want to discuss in great detail yet, because I want it to be a surprise when I make it and also I still haven't decided on details. And the dungeon will be where the game actually happens, of course.
The dungueon will have an enormous amount of floors, because two-digit numbers are for people with short attention span. Right now I'm generating 999 floors, but I'm not sure if it will stay that way, or be changed. For now you can assume it to stable. Most important thing about floors is that they can get generated with a label (label/tag system will be implemented as soon as possible, but since it is a lot of design and implementation, and it will be hard to change later on, it will happen on 0.8 version, probably). Example tag could be 'goblin fortress'; it would lead to floor generating things with tag 'goblin' at much higher probability. It will also make things with tag 'greenskin' spaw with an increased probability, but not as often as those with tag 'goblin'. Tags are not mutually exclusive; if an item has multiple tags affected by label, those effect will stack somehow (the exact method is not yet decided; most important question now is whether a single zero-weight tag should bring the possibility of generating an item to zero). The label will affect both monster and item generation; as soon as enchantments are in, those will also be affected, so ice swords won't get generated on fire levels and vice-versa.
Every floor generates an amount of rooms (around 20 for now), which are randomly connected by doors and corridors (those are all represented by single 'connection' now, but I might try to implement some differences later). Every room can contains a number of activities: from zero up. Some are singular, and might only get generated once in each room: an enemy or a shop. Other are not, and might get generated multiple times: traps and treasures come to mind. Once the labels are up and running, this will allow me to generate various interesting rooms, like goblin king's throne room (with goblin king himself), guard's room (with a goblin guardsman), treasury (with multiple instances of treasure chest) and a wide corridor leading to treasury (with multiple instances of traps, of course). Mostly old-school procedural generation, as you can imagine.
Some of the floors will contain shortcuts to the surface, allowing you to go back to village and sheepfold and enter back into deep, without travelling through hundreds of floors already cleared.
And last but not least, some floors will contain sheep, that you are on your quest to rescue. You will need to find them, rescue them and take them back to the surface with you.
Some things you might be interested in knowing:
1. There is not much to do aside from killing
a goblin a dozen of different monsters over and over again. It will change (soon).
2. My primary intention with this is making a pretty intricate combat system and very, very robust crafting system. Both are pretty far away from completion.
3. It is going to be a a dungeon crawl with no graphics whatsoever, unless I change my mind later on. But for now, prepare for it to be text based.
4. It will be as moddable as possible, with XML files keeping all the data.
5. If you encounter a bug and/or want to encourage me, post here. It will be nice to read something about this little horror.
6. I'm writing it as a console application in C#. I'm not, as of now, using any libraries; it may or may not change in the future, depending on whether I will any that fit my purpose (some simple console extensions for better graphics).
Screenshots are up there. As I said, not anything fancy beside the sheep.
Once more trying to lay out the plans for near future, after library fiasco.
I've been reading a book about design principles, which turned out to have a lot of sense, so I'm currently in a process of minor code revision, which should lead to much easier work later on, while not being visible on the outside. That said, it is tied to how activities are played out, so it should allow me to work on those soon enough, and actually I'm working on removing the most serious bugs at the same time.
Also, I've put in some more items and quite a few additional monster, and divided single data.xml into a bunch of files each holding specific data. It should make editing those easier, not only for me, but in the future, for modders/coworkers/whoever will want to do this.
Next step, after making traps/treasures/shops working, will be combat overhaul or tag system evolution (probably combat first), to make fighting interesting enough to call version incorporating those interesting enough to be actually played.
So, version 0.6.4.1 will be version with working Battle, Shop, Trap and Treasure activities. I will be probably ironing out bugs in those for a few minor revisions, but the fundamentals are working already. I will probably add another spoiler with version history or something after getting this one to run.
History:
0.6.4 - Exploration, iteration I -> Trap, Shop, Treasure activities and some behind-the-scenes work for later
Currently working on:
0.6.5 - anatomy (as in, various body parts) -> HPs divided among body parts, partial armour
Plans:
0.6.6 -fighting, iteration II -> aimed attacks; perhaps more attacks (and limiting them to some weapons?) and/or special conditions (bleeding?)
0.6.7 - crafting, iteration I -> collecting raw materials and combining them into items
0.6.8 - inventory management, iteration II -> better inventory screen; ability to drop items (or smelt them into components?); carrying limits?
0.7 - playable alpha?
Thank you for your attention.