Procrastination

The first idea of the game was to make a clicker stat-builder, e.g. you click on a button and gain experience which results in leveling up and getting higher stats. After one "release" (as in a somewhat working program) I changed the idea to be an automatically running builder where the player choosing between different attack options.


Hard work often pays off after time, but laziness always pays off now.

Irresponsibility

My new project is a single player strategy RPG where you control up to 15 characters at the same time and battle monsters on, to start with, gridded map.

No single raindrop believes it is to blame for the flood.

Friday, November 27, 2009

Developoment tools

This is something I’ve been very reluctant to start with but it has to be done eventually; I need to create a tool to create and change all my attribute files. The basic idea is rather simple but the actual structure gets rather complicated and the whole program is a project in itself, also it is a lot of GUI work which I personally hate to do.

For starters there will be one main window which will be the whole workspace for the development program, under this there is not really any need for menus so the next part will be folders; kind of like the new Word 2007 where you have folders for each set of tools you can use in the program. The folders are the different types of files I need to manipulate, namely; characters, weapons, shields, armors and enemies. The window you get will have some similarities; the main one is the file list where you get all the files that are included in the set you are currently watching, for this there will also be an add and remove button. Another similarity will be that there attributes and that you can change these attributes and add new attributes.

Attributes themselves will come in a tree structure, where branches are usually a true or false and leaves usually have a value, this is to narrow down the size of each file and remove the need to have all values in all files. Attributes can furthermore be shown as radio buttons (for limited string or integer options), tick boxes (for Booleans) or fields that accept either strings (for example names) or normally only integers (for values). When a new attribute is added a popup window will show to ask if it is a branch or a leaf; branches will generally be true or false with default value false, leaves will generally be integers with suggested default value 1 (0 can be dangerous to use as it might result in divisions by 0 by mistake). After something is added the program will go through all files that are included in the list for that type and add the new attribute, one special file will save all default values. When a file changes a branch from false to true the attributes and their default values under that branch will be fetched from the save file.

Example structure for a weapon:

•Item_type : (fixed)
•Name : (String field)
•Type : (radio buttons)
•Damage_type* : (radio buttons)
oDamage_subtype : (radio buttons)
•Hands : (radio buttons)
•Min_damage : (integer)
•Max_damage : (integer)
•Range : (integer)
•Speed : (integer)
•Primary_attributes : (box)
oAttribute* : (box)
*Attribute** : (integer)
•Secondary_attributes : (box)
oAttribute*** : (box)
*Attribute : (integer)

* Damage_type will be devided into: Physical, Magical and Elemental, with sub types being for Physical: Slashing, Piercing and Blunt, for Magical: Dark (Black), Light (White), Arcane and Gravity, and for Elemental: Fire, Earth, Water and Wind.
** Primary attributes are: Strength, Agility, Intelligence, Endurance and Vitality (I might not include these attributes in items at all).
*** Secondary attributes are: Block, Parry, Dodge, Accuracy, Critical_strike, Armor, Resistance and Power.

Actions

Since beneficial skills works pretty much the same way as damaging skills this apply for those too, I will still call it attacks here though.

For all types of attacks there will be a set of target area, each attack will mainly have one target area; in rare cases an attack can have two target areas. These target areas are as follows:

· Single hit – the intuitively normal area, one hit on one target.

· Multiple hits – also very intuitive but it comes in flavors. Basically it is a single attack done multiple, but a finite number of, times and will roll attacks several times.

o Multiple hits/single target – all hits are directed at the same target, efficiently doing lots of damage to one target.

o Multiple hits/multiple targets – hits several targets, randomly or by choice.

· Slashing hit – one single attack that hits multiple, but a finite number of, targets. This also comes in flavors.

o Slashing hit/multiplying – a slash that rolls one attack and does the same damage to all targets it hits, e.g. the total damage done will be the attack multiplied by the amount of targets.

o Slashing hit/dividing – a slash that rolls one attack and divides it equally among all targets it hits, e.g. the total damage will be like one attack and the individual target damage will be the attack divided by the amount of targets.

· Area of effect (AoE) – one single attack that damages all targets within an area, this can hit an infinite amount of targets.

o AoE dividing – one roll divided on all targets it hits.

o AoE re-rolling – one roll for each target it hits.

· All targets – much like the AoE attack but with the area being the whole map. All target attacks can have specifics such as of target group: all hostiles, all friendly, or a unit type: all humanoids, all beasts, or a combination: all hostile beasts.

Attacks will also have effects, one attack can have more than one effect but rarely more than a few:

· Instant damage – the most obvious way to hurt an enemy target (or heal a friend), the damage will be instantly deducted from the targets health.

· Damage over time (DoT) – damage that ticks each turn for a certain amount of turns.

· Damage over actions (DoA) – damage that only occurs when the unit does something, the amount of damage taken will depend on the action.

· Damage after time (DaT) – damage that lies dormant until a certain amount of time has passed. E.g. there is time to remove the DaT before the damage actually happens, but because of the easy to save you completely from it this damage is often massive.

· Damage after action (DaA) – damage that lies dormant until the target does an action, by not doing anything a target can avoid damage until it can be removed. Because of the easy to save you completely from it this damage is often massive.

· Slow (or other speed effects) – increases the period between actions and the time it takes to do timed actions, but not cooldowns.

· Interrupt – break any action that takes time and set time until next action to full.

· Attribute effects – decrease (or increase) any secondary attribute of the target.