Hello there, hope you'd find something interesting here. I love Homeworld, coop-FPS genre and this and that here and there. If you have something interesting to try, you can ping me.

Report RSS Gamedesign: VCMI, Heroes III and other RPG-TBS

Posted by on

VCMI OPEN SOURCE ENGINE AS A PLATFORM FOR TBS GAMES

Contents

  1. Intro
  2. Of Modding
    • Heroes I-II
    • Heroes IV
    • Heroes V
    • Heroes VI
    • King's Bounty: The Legend+
    • Disciples I
    • Disciples III
    • Disciples II+
    • Etherlords
    • Wesnoth
    • Chess
    • Heroes III
  3. Summary
    • Battlefield
    • Units
    • Towns
    • Heroes
    • Commanders
    • Skills
    • Inventory
    • Magic
    • Global Map
    • Rulesets
    • UI & Similar
    • Modding & Distribution
  4. Of Game Resources
    • Folder Structure
  5. Outro

Intro

It's great that such great game as Heroes is getting renovated.

Of course, the case is not only about gameplay mechanics - HeroesV are modern enough and have very comparable gameplay to HeroesIII. It's also about nostalgia - that's why guys still playing old games, making patches and even remakes. The same I'm looking forward to see VCMI rise and shining.

And not only waste possibilities of gameplay bring a lot of game popularity, not only some special spirit and design, but also large modding possibilities, allowing to enhance original game this or that way: sometimes it's adding new objects, sometimes it's changing game rules directly.

So, here I'll try to get all my thoughts together and write down thing that good to be implemented in VCMI and why.

OF MODDING

There's philosophical question where is mod ending and new game beginning; probably this line lies somewhere around need of switching from built-in scripts to source code. Sometimes, it's very close to original, like Homeworld1, where a lot of stuff was hardcoded so only assembler could help to make something bigger then just replacing model of one ship to other with almost the same functions of a unit; sometimes it's very wideranged like quakeC language, allowing to build other genre games. IMHO, the end line of scripting should be somewhere on turning original game to completely other genre. So, IMHO, VCMI should allow modding to turn itself with built-in instruments/functions into all Heroes alike games: starting with all Heroes game mechanics recreation (like H5 - selectable unit upgrades; H4 - heroes=commanders; H2 - 6 types of units only; WoG - destructible towns; and something from H6), continuing with King's Bounty: Legend (mb, with no global realtime - anyway, it's singleplayer, who cares) and finally, Disciples & Etherlords.

Anyway what I want to say that VCMI in strategical perspective should go in the direction of being base for all Heroic style games, as it would increase user & coder base. Of course, AI will be different for each game, even for each mod, so it must be scriptable at some point.

The structure of each game is of course different, so every game recreators should make their own converter to adopt it to VCMI folder structure. The same is about WoG: WoG should be implemented but in the meaning of enlarging original game options, not in the meaning of being default. Default should be original HoMM3 system with possibility of enabling WoG features as mod or some other way. Final destination goal of all global mods should be compatibility to VCMI structure not otherwise - VCMI structure compatibility to deprecated system.

For modding I'd request idSoftwaffen system, when system reads modified files of mod instead of originals; you can even combine mods, if mods don't touch the same files; also this is very KISS and usable for maps, if these have special objects and scripts.

If there will be used non-standard extensions, it would be very cool if there is some SDK, modification tool to create new unit, new hero, new town etc from scratch - of course, I'm not talking of giving new GIMP to users, but like "browse for pictures, set up stats" - and here you go, the new object is here!

So, let's take a look at games mentioned (I don't remember all the differences, I will match only I remember) and analyse the difference.

Heroes 1-2

  • 1.1. Less squads
    We need to make hero squad number changable, not hardcoded;
  • 1.2. Smaller hexagonal battlefields
    Battlefield size should variable, not hardcoded;

Haven't played H1-H2 much, so details from fans required.

Heroes4

  • 2.1. Simultaneous hits (hit and response) on battlefield
    This possibility must be added to options;
  • 2.2. Heroes and commanders the same
    Must be way to switch off commander and hero bonuses: commander bonuses in general, hero bonuses cut when commander is dead;
  • 2.3. Different squarish battlefield
    New global feature;
  • 2.4. Two-way building in towns
    Must be hardcoded option of reading town building config files with OR/AND options and removing building never able to build from buildlist;
  • 2.5. Several hero combination in one army
    Must be mechanism of that - somelike create new temporal hero instead of two, combine bonuses of logistic skills (use highest one), draw heroes commanders as units taking squad slot, use custom build window for representation of two- or more heroes army pack (depends on squad number); count hero effect on creatures;
  • 2.6. Hero class depending on skills
    Make hero class as variable, and recreate logic of changing this variable;
  • 2.7. Dying and ressurecting heroes-commanders with hitpoints
    Hitpoints of squad upper unit must be saved as variable: this can be modified with logic for restoring after battle, or restored on other day (this can be made as option for WoG), or otherwise;
  • 2.8. Creatures moving without hero
    Controllable caravan without hero;
  • 2.9. Heroes/Commanders using artifacts for battle
    Bottles (throwable items) can be made as spells that has limited count and don't need mana. Artifacts (weapon, armor) have different blessing bonuses with commander as target;
  • 2.10. Subskills of classes
    Possibility of adding subskills and window for this;
  • 2.11. Different magic schools
    Possibility of setting magic schools with configuration files (making groups of spells);
  • 2.12. Necromancy makes not only skeletons
    Redefine Necromancy skill, instead of adding only skeletons, add also other types of Necropolis units, based on type of creatures died in battle. Probably, new function needed to get type and quantity of died creatures. Or there was such feature implemented with SoD?
  • 2.13. Fog of War
    Make new type of fog of war when you can see already recoinassanced regions. Even more there might be an option of starting game with opened map, but covered with mist of war.
  • 2.14. Moving neutral squads with mixed forces
    See 6.5. Probably, it would be interesting if these squads are compiled based on their faction and it's allies.
  • 2.15. Units are given per day
    Probably we need an option to set how often player want to receive additional forces;
  • 2.16. Enemy heroes that lost battle cannot be bought in tavern
    New feature, must be done as option

And so on.

Heroes5

  • 3.1. Basic skill for faction
    Set default skill for certain group of heroes (like necromancy);
  • 3.2. Different square battlefield
    See 2.3;
  • 3.3. Unit magic book
    New small feature alternative to permanent spell casting ability, also see 2.5.;
  • 3.4. Different logic of turns in battlefields
    New feature?
  • 3.5. Rune magic
    One-time magic spell that requiers resources, used only once for each squad, probably, requiers new hardcode;
  • 3.6. Creatures hold off battlefield
    New feature, but unclear what if all active units are dead then does it mean loss or reserves will be input to combat?;
  • 3.7. Double strike from partners
    New feature that would check if allies of victim is having this ability;
  • 3.8. Basic Tactics for every hero
    Reset Tactics skill configuration and add Tactic function to all heroes abilities (w/o adding skill itself to skilllist);
  • 3.9. Subskills of classes
    See 2.10;
  • 3.10. Skills crossing
    Skill tree must be set in one configuration file to have possibility of setting them with OR, AND, NOT etc conditions;
  • 3.11. Different magic schools
    See 2.11;
  • 3.12. Necromancy makes not only skeletons
    Add new global stat for player, which number will be dependent on necrotowers and necroheroes and renewed every week; also see 2.12.;
  • 3.13. Two-way upgrade of unit
    Add possibility of making condition of OR for setting unit upgrade and renew upgrade window (with possibility to select default upgrade for "hire_all" button);
  • 3.14. Hero strike
    This can be set up as spell that is dependent of hero parameters;

And so on.

Heroes6

  • 4.1. Different square battlefield
    See 2.3.;
  • 4.2. Skill tree
    We need new window - custom, with preprogrammed tree (to look beautiful), or generated, with diagram drawn of given skill dependencies, also see 2.10 and 5.9.;
  • 4.3. Really Big creatures
    New feature;
  • 4.4. All army buing at garnison (w/o upgrades)
    This can be made as instant caravan from city;
  • 4.5. Two-way building in towns
    See 2.4.;
  • 4.6. Less resources
    Whether make resources configurable, whether just reset game mechanics (I mean, prices) to use only needed ones;
  • 4.7. Territory control
    Make condition of which mines and other building automatically go under control of nearby town whoever owns them;

And so on (actually, haven't played this game much).

King's Bounty: The Legend

  • 5.1. Less squads
    See 1.1.;
  • 5.2. Squad reserve
    Solution similar to 3.6, with squad number under one hero control set to 5 (max 7) and only 5 squads at the battlefield at one time; another question, that these two squads in reserve must no be dependent of hero's leadership (in terms of KB); there may be forced placement of 6-7th squads to reserve and no use on battlefield, or even use of slot originally made for war machines; anyway, looks like some heavy script magic;
  • 5.3. Smaller hexagonal battlefields
    See 1.2.;
  • 5.4. Leadership
    New variable for hero and conditions of use (if <= then ok; if > then SetSquad.Bless("rage")), and new parameter for units;
  • 5.5. Box creatures/dragon
    Probably, this must be implemented similar to 2.5. and 3.3. - several hero combination with all invisible except for the main; or setting abstract units similar to 5.14;
  • 5.6. Really big creatures
    See 4.3.;
  • 5.7. Spell learning from scrolls and magic crystals
    New custom menu of scrolls, and giveSpell("spellname") function with removeResources(); if all resources remain the same, there's need to add a new one custom resource (magic crystals);
  • 5.8. Magic book scroll quantity size
    New variable for each hero, general about all unlearned spell scrolls; scrolls can be made in way of magic stick, but only with possibility of removing spells of scroll pack by themselves;
  • 5.9. Runes for skills
    Whether to use existing resources, or to add new ones; reconfigure skills to be chosen if resources are enough, then call removeResources(); or make skill tree alike buying skill from "knowledge tree";
  • 5.10. Skill tree
    See 4.2.;
  • 5.11. Unit movement
    Unlike usual unit turn, when you can only make one of these acts: hit, if victim is in range, move, wait or defend; in KB:L your unit movement to certain hex is not ending it's turn: attack, wait, defend and spending all you movement points end's turn for him (so you can move your archers for several hexes from their offender and attack them, hurting much); this requiers new hardcoded logic (alternative);
  • 5.12. Rage
    New hero variable, that would follow hit point loss at battlefield, fill up, and used as mana for different magic spell group; probably, can be defined as resource;
  • 5.13. Less resources
    See 4.6.;
  • 5.14. Gismo
    Unattackable unit with movement range and close attack, doesn't occupy hex; probably, needs to be hardcoded;
  • 5.15. Crystal ball
    Hardcode new movement style - straight line;
  • 5.16. Interactive objects at battlefield
    New unit-like objects at battlefield, neutral, unattackable or breakable, attacking or not attacking, with bonuses of blessing, cursing etc (spells casting);
  • 5.17. Time revert
    Remember unit's previous turn parameters: number, spells and start coordinates; then delete actual and summon new squad with previous parameters; save it as actual squad information;
  • 5.18. Enemies chasing the hero
    See 6.5.;

And more.

Disciples

  • 6.1. Less squads
    See 1.1., need for 4 to 6 units in army;
  • 6.2. Single unit squads
    Use units as commanders with showing as squad in army window and give possibility of exchange;
  • 6.3. Different smaller battlefield
    See 2.3, but this one is more about special battle logic then battlefield itself;
  • 6.4. Dying and ressurecting leaders and units with hitpoints
    See 2.7.;
  • 6.5. Units attacking on global map
    Set them as neutral heroes with no bonuses, or when incoming replace them with "empty" agressive neutral hero with no abilities;
  • 6.6. Terrain change
    New feature; must be thought of object equivalents for different types of environment;
  • 6.7. Unit upgrade tree
    New variable and new constanta for units; general experience will be divided to each unit alive;
    if (var >= const && player(self).town(all).isBuilt(building)){
        replaceUnit("unitUpgrade");
        var = 0;
    };
  • 6.8. Global magic
    Weeks event can be considered as special events: this must be enlarged to area and group influence; also blessing (+/-) and damage (+/-) done to hero;
  • 6.9. Different type of heroes
    Different commanders, and custom possibilities based on hero class (killing, poisoning, recoinassance, creating new terrain changing object on map etc);
  • 6.10. Summoned creatures
    Spawn new empty hero with one unit, see 6.5.; remove it on next turn;
  • 6.11. Dual layer of unit squads
    New feature; as alternative you can set your unit order at battlefield H5 style;
  • 6.12. Custom squads for neutral enemies
    See 6.5.;
  • 6.13. Terrain change rod
    Passable building (something like garnison) that can be removed;
  • 6.14. Global "lord" type
    Make some options available to heroes and spells;
  • 6.15. Retreat one-by-one
    New feature;
  • 6.16. Stop unit experience gather reaching some limit
    D1 feature; stop experience count for certain units (globally) or upgrade from commander type unit to usual single (though it would be hard to ressurect him then);
  • 6.17. Each spell can be cast only once or twice a day
    New feature, there must be limit of how times per day can be spell used;

And more.

Disciples III

  • 7.1. Special places on battlefield:
    See 5.16., just make them passable (like traps);
  • 7.2. Unit inventory
    Commander feature, something similar to 3.3.;
  • 7.3. Rod monster
    Make rod habited - some unmovable commander;
  • 7.4. Spell use limitation
    Similar to 6.17., but there must be possible of how much times any spell can be cast;

And more (haven't played this game much).

Disciples 2++

  • 8.1. Home terrain gives bonuses:
    Give bonus to only certain player/faction;
  • 8.2. Rod and garnison monster
    See 7.3.;
  • 8.3. Fog of War:
    See 2.13;
  • 8.4. Make a new leaders from units:
    Additional menu entry and removeUnit + addHero(params), but there must be done heroes for each of type of a unit to make this, to make this individual, or something alike new hero generator;
  • 8.5. Blocking
    See 9.2.;
  • 8.6. Fog of War
    See 2.13.;

This is not real game, just a few thoughts of where Disciples could have been developed if not DIII fail.

Etherlords

  • 9.1. Different battlefield
    See 2.3., but this one is about different logic of battle; probably, there can be used bottleneck-styled map, and every unit having harpies abilities…
  • 9.2. Blocking
    New feature, somehow must be done transmission of damage done to one unit to other one;
  • 9.3. Upkeep
    New variable per hero, with massive of resources to be removed each time interval;
  • 9.4. Cards
    Cards can be represented as scrolls that cannot be learned; remove magic book from UI, show row of 5 random spells;

And more.

Wesnoth

  • 10.1. No global map
    Load only very large battlefield; make resources available from global map at battlefield (also see 3.5.) to fill gold resource with villages (see 5.16.);
  • 10.2. Recruitment at special places
    Summoning would not do, as units are upgraded; so new function needs to be like "spawnCreature({params})"; also this spawn function can be used to upgrade unit - replace it with next level, but there must more options of it, like giving the array of data about new unit parameters;
  • 10.3. Single units
    See 6.2.;
  • 10.4. Large battlefield
    See 1.2.;
  • 10.5. Upkeep
    See 9.3.;

And other features. This one is for testing purposes.

Chess

  • 11.1. King's death means losing
    Set new victory condition (commander's death), or make other creatures summoned;
  • 11.2. Units are dead on first strike
    Set health to 1;
  • 11.3. Attacker is put on the place of the hit figure
    If attacked unit is dead then place attacker at its place; Would be interesting ability to avoid surrounding;
  • 11.4. Units are moving and attacking each their own way
    Problem is similar to 5.15;
  • 11.5. Different battlefield
    See 2.3.; or - there are also hexagonal chess;

Just as experiment: if you choose hexagonal type of field, then it becomes a little bit easier.

Heroes III

These are ideas that just enlarge original HoMMIII and are based on existing elements.

  • 12.1 Unlimited new towns;
  • 12.2 Rule of limitation for towns (number on map/per player and some particular factions);
  • 12.3 Unlimited new heroes;
  • 12.4 Rule of limitation for heroes (number on map/per player and some particular heroes);
  • 12.5 Unlimited new creatures;
  • 12.6 Rule of limitation for creatures (number in army and some particular units);
  • 12.7 Unlimited new skills;
  • 12.8 Rule of limitation for skills (number per hero and some particular skills);
  • 12.9 Own hero creation (modification of existing - name, picture & bio);
  • 12.10 Duel only mode;
  • 12.11 Best UI practices (H4-6 or other Heroes-alike-TBS);
  • 12.12 More war machines (three places?);
  • 12.13 First simultaneous turns;
  • 12.14 Each squad of fleeing army may be chanced to join the winner;
  • 12.15 Race relations affects morale, diplomatic force join etc.;
  • 12.16 High diplomacy can make enemy troops of the same type join your army
  • 12.17 Option for automatic resource gathering from windmills and others;
  • 12.18 Option for automatic unit gathering from hiring buildings;
  • 12.19 Several level maps (not only 2) - will work like 3D dimensional chess of Star Trek (with Cross-Dimensional spell);

SUMMARY

So, let's summarize unique features of abovementioned to be potentially implemented.

1. BATTLEFIELD

  • There must be way for setting custom battlefield size. Smaller battlefield than actual can be set with limiting obstacles, but bigger one you won't do this way. There must be battlefield editor, where mapmaker can spread his fantasy (creating, for example, special battlefields where you need to use logic to find out tactically correct moves to win) and make even scripted bf-maps (for example, mine conquer can turn into wandering through the labyrinth on several screens);
  • There must be possibility of adding of kind of modular battlefields, not only hexagonal. Probably, this would be to hard to do in scripting way, but hardcoding must be done in way of easy addition of new battlefield logic: squarish (H5, D1-2,), size dependent (H4) and abstract (Etherlords);
  • There must be possibility of setting different logic for unit movement (option or similar to that);
  • There must be possibility to play only duel with various settings based on army cost and same level heroes. Also town defense mode should be included;
  • There must be possibility of leaving not needed units outside the battlefield;
  • There must be possibility of setting maximum squad number on the battlefield: both globally and per hero;
  • There must be possibility to place interactive objects on the battlefield: blessing/cursing/attacking/trapping and so on;
  • There must be game option which would define what logic to use counting counter-strike damage: using left alive or initial unit count (for H4 style battles);
  • There must be option to make units retreat one by-one (not the whole army at once);
  • Low moral troops receiving a lot of damage can retreat or go out of control;
  • There must be ability for units to defend (take hits supposed for) other units if they can reach attacker: this must must be whether unit ability, or global feature; automatic (percentage of outcome or simply unit in await/defend state) or manual (you set who to defend);
  • There must be option of automatic loss if some particular squad (commander, for example) is dead;

2. UNITS

  • There are several unit types in the game: commanders, usual units and war machines. There must possibility to make combination with scripts. Must be defined uniqueness (how much this type of units can take hero with him - like only one commander; Boolean), maximal size of squad (probably, Boolean type - whether one, whether can be collected many - single for commander and war machine), can it be revived after death, can it be removed from hero, is it shown as unit (in army window), can it gather experience and so on;
  • There must be possibility to set custom groups of units which would have their own common bonuses and defects. This way can be defined races, factions, undeads, war machines and so on. These group configuration lists won't contain unit names, because it's better to be defined in unit configuration file;
  • There must be possibility to make inventory with some spendable at battlefield item for units, at least, for singles;
  • There must be possibility to give spells to units in several ways: spell book, with mana spent (or not if set to 0) or nature ability of casting spell (few times or always), including random spell of given list of spells or magic schools;
  • There must be possibility of option to have war machines not in a single number;
  • Squads of fleeing enemy can join hero if he is diplomatic enough;
  • Each squad of fleeing enemy is counted separately for fleeing/joining hero;
  • There must be ability of "collegial" strike, when ally having this ability can hit the enemy, attacked by other unit, just being nearby;
  • There must be possibility to set up alternative upgrades per unit;
  • There must be possibility to have whether optional upgrade or strict (thus making upgrade tree);
  • There must be custom size unit (several hex);
  • There must be possibility of creating unit in a fly mode (using hex to move, but doesn't occupy them);
  • There must be possibility of creating unit in underground mode (moving under, attacking on surface, damaged by earthquake and heavy units on its stop positions);
  • There must be possibility of setting movement style for units (usual and custom);
  • There must be possibility to habit buildings with some unit from the very beginning (commander alike, for example);
  • There must be ability of occupying place of defeated enemy;
  • There should be option of Tent resurrecting units (for example, with Expert level);

3. TOWNS

  • For modding there must be no limitation for selectable town (faction) number (or at least this number must be big);
  • There must be possibility to set up alternative buildings in town;
  • There must be possibility to destroy already built building and set "destroy cost" in building configuration file: it can be both reward or price, depends on "minus" sign;
  • There must be option of buying units daily or weekly;
  • There must be building on the global map which would allow to instantly buy ungraded units from towns (H6 style);
  • There must be possibility of to set town control area in terms of starting hero movement length, let's say, for distance of his 3 turns (half of the week) thus switching off territory which is not accessible;

4. HEROES

  • For modding there must be no limitation for selectable heroes number, globally and per faction (or at least this number must be big);
  • There must be possibility of adding more then 8+8 heroes per town;
  • There must be neutral heroes, available for all factions (mercenaries);
  • There must be possibility to combine heroes in one temporal hero;
  • There must be possibility of every unit representation as hero: both for neutral unit movement and attack and player's unit going to join with main army;
  • There must be possibility to set up bonuses for hero classes and change them depending on custom conditions;
  • There must be option of keeping defeated heroes of being hired again until some condition;
  • There must be option of setting hero as governator for towns thus raising funds or else;
  • There must be possibility of creating your own first hero - at least modifying existing one by changing biography and image - and saving it;
  • Heroes, which are native to squad faction, gives +1 morale;
  • There must be option for enabling hero strike like in H5/H6;
  • Heroes must have possibility of not only straight attacking, but also perform some tricky action with enemy heroes, like stealing, poisoning etc.;

5. COMMANDERS

  • There must be option of disabling hero bonuses for army in case of commander death;
  • There must be option of automatic army fleeing in case of commander death;
  • There must be possibility to include commander into squad, rising stack's parameters and reappearing when squad is dead;
  • Possibility of changing commander to another one in special "taverns";

6. SKILLS

  • There must be possibility of making "tree" of skills, available for player: one skill appearance would lead to another skill, both upgrade (basic->advanced) and completely other (logistics -> pathfinding). Type of the skill (upgrade, replaces current skill; subskill, showing as custom menu; skill, just the new one; bonus-ability, etc.), should be defined in the skill configuration;
  • Faction, skill pack and class should rise percentage of certain skill appearance (or lower down to zero);
  • There must be possibility of adding skill to hero (globally/locally) without showing it in the parameters window (like basic tactics in H5 simulation);
  • There must be possibility of new skill selection without random, in a skill tree. This must be optional or, at least, moddable;
  • Necromancy should convert not only into skeletons and should be available not only for Necropolice;
  • Diplomacy should have ability of joining part of enemy troops if same type of units are present in hero's army;
  • Faction, most present in heroes army, should affect hero and his new skills (for example, undead soldiers at haven hero);
  • Possibility to create skill tree diagrams windows;

7. INVENTORY

  • Artifacts should have not only global configuration, but also local one, for commander parameter increase;
  • There must be possibility of setting maximum number of items (per each type also) in inventory;

8. MAGIC

  • It must be possible to define which groups contain the spell: for example, lightning spell can be set to both air and "destructive" magic type;
  • Spell can require not only mana, but also other resources;
  • Spells can be activated custom times per spell, per hero, per unit, per battle or per day;
  • Spell can has single cell, circle, perimeter of circle(), all battlefield large effect (must also think of random figures, like wall or else);
  • Spell can affect player himself, enemy, team;
  • Spell can be global (week effect, land effect) or battlefield only;
  • Hero must have possibility of using several types of magic at the same turn: for example, usual, rune and rage ones (or other grouping);
  • There must be possibility of having time revert spell;
  • There must be option of how of often spell book is used: will it be once per player turn (while all units has not acted); or will it be once per unit - commander, commander squad or some abstract (indestructable, unmovable, not existing on the field) unit representing hero;

9. GLOBAL MAP

  • There must be option of opaque Fog of War;
  • There must be possibility of modding vision radius for buildings and units and how much time territory will stay unfogged;
  • There must be option of having map recoinassansed from the very beginning (will you see enemy hero or not, will depend on fog of war option);
  • There must be option of automatic capture of building surrounding each town (control zone);
  • There must be option of automatic resource gathering from windmills and other per-week giving resources building;
  • There must be possibility of automatic creature gathering to hire queue in town from dwelling buildings of its control area;
  • There must be possibility of changing map terrain in real-time;
  • There must be possibility of setting blesses and curses to all types of terrain;
  • There must be possibility to create ("build") objects on the global map;
  • There must be possibility to set special abilities to whole player;
  • There must be easy way of setting upkeep per objects; for units, can be used H5 peasant ability of "tax payer", only with minus sigh - and named "mercenary", for example;
  • There must be possibility to make several layers maps;

10. RULESETS

Rulesets - files with names of what shouldn't be in game (saving place and usually people deselect something from default, not select);

  • There must be possibility to have faction blacklist;
  • There must be possibility to have hero blacklist;
  • There must be possibility to have spell blacklist;
  • There must be possibility to have skill blacklist;
  • There must be possibility to have creature spawn blacklist;
  • There must be possibility to set maximum number of different factions appearing at map;
  • There must be possibility to set maximum number of heroes available per player;
  • There must be possibility to set maximum level of heroes;

11. UI & SIMILAR

  • There must be simultaneous first turns for multiplayer and even for single player game;
  • There must be option to enable "real-time" simulation for maps with no enemies or enemies defeated (computer will count down turns, but it ain't be visible for player - only days turning);
  • There must be option of switching weekly first turn player;
  • There must be option to have selection of attack or retreat window before battle takes place (in case if you accidentally have messed up with the wrong guys); also this window must show possible outcome of the battle;
  • Map different options - show heroes, show mines, show towns, show underground/foreground;
  • A lot more hotkey - keyboard wide using and resetting keys; Show how much exp left to the next lvl when picking treasure chest;
  • There must be possibility of creating macro for next turn while waiting players/AI's;
  • There must be possibility of selecting your own in-game color and logo;
  • Map zoom-in and zoom-out: too see more or less;
  • Various resolutions, from 4:3 to 16:10; from 1024x600 to 1920x1080 (actually, it would be cool if player could set -any- resolution he wants - and only things that changes is main game screen size);
  • Possibility to turn on and off visibility of GUI elements;
  • Possibility of moving around GUI elements to create personal space;
  • Possibility of maximizing speed of the game - no pauses between Adventure & Battle map; instant hit w/o animation; most used spell list w/o opening Spell Book;
  • UI should be united in design and also there must be thoughts of "how convenient it would be played at tablet?";

12. MODDING & DISTRIBUTION

  • Amount of resources used by game must be configurable;
  • There must be possibility to spawn custom parameter hero permanently or for some turns;
  • Consider making separate pack with free stuff; something like having 3 install packs: heroesclassicedition, wogedition (fulledition), freestuffedition;
  • Like new Town going into up-to-date release, some popular mods/ruleset should be included also - for example, Heroes3Pro;
  • Possibility of changing the look (the skin) of the UI with no much shitting;
  • Flexible window system: easy to create new skins, change placement of interface elements, add new custom windows and elements;

All this would make very interesting combination of game features which could be tested in mods and then, if not changing drastically gameplay, implement as part of WoG project. For example, there can be mod that would mark every battlefield place with bones and morale fall; or even whole season change with moral lowering for long lurking in snows and swamps. Or other mod, that would use leadership parameter: when morale fall dawn, if unit squad size is more then hero can control, it goes on strike; or, in case of necromancer, he can't revive more unit after battle then his leadership allows. Or else.

OF GAME RESOURCES

Here will be some ideas of modding functions and game file structure.

IMHO, there must be something like UNIX way for function quantity: they should be small but enough to build whole game of them. System must be selfdescribing, to have low WTF per minute rate, and to achieve that it must be heavily commented (in english, of course) and be understandable even for non-programmers, that's why, for example, there must be no numeric ids for game objects, which will be pain in the ass to find through the resources, but understandable strings. Also, VCMI must not follow original game's restrictions and go it's own way of improvement, changing game file formats to better ones if needed.

The structure of the game resources should divided by game logical units not by file type as modder would look into the data first of all as a gamer. And each object should contain all resources (except for the most common ones) that belong to him: like database table it should contain only the things it needs to have. And then there will be possibility to build game out of these blocks.

Folder structure

Here is described my vision of folder structure for the game. It may be incomplete but it gives the overall view of my idea about how things should be placed. Of course, it's discussable.

* Engine
* Rulesets
__|=>ruleset01.cfg
_____|=>heroes3pro.cfg
* Mods
__|=>mod01.zip
_____|=>%Rulesets_maybe%
_____|=>%Music_maybe%
_____|=>�ta_folder_modified%
__|=>mod02
_____|=>mod03.zip
_____|=>mod01.zip
* Data
__|=>menu
_____|=>menu.cfg
_____|=>global.zip
_____|=>menu_red.zip
_____|=>menu_blue.zip
_____|=>menu_green.zip
__|=>maps
_____|=>multiplayer
________|=>nightofknight_8P.zip
___________|=>custom_resources
___________|=>nightofknight_8P.cfg
___________|=>nightofknight_8P.map
__|=>game_resources
_____|=>objects
________|=>bf_objects
___________|=>blessing_statue_of_dwarf.zip
______________|=>blessing_statue_of_dwarf.cfg
______________|=>blessing_statue_of_dwarf.res
___________|=>bf_objects.cfg
________|=>map_objects
___________|=>haven_citadel.zip
______________|=>haven_citadel.cfg
______________|=>haven_citadel.res
___________|=>neutral_windmill.zip
___________|=>%townname_creaturebuilding%.zip
___________|=>map_objects.cfg
_____|=>skills
________|=>scout.zip
________|=>wisdom.zip
___________|=>wisdom.cfg
___________|=>wisdom.res
________|=>skills.cfg
________|=>sec_skills.cfg
________|=>com_skills.cfg
_____|=>spells
________|=>air_lightning.zip
___________|=>air_lightning.cfg
___________|=>air_lightning.res
________|=>neutral_magicbolt.zip
________|=>%magicschool_spellname%.zip
________|=>spells.cfg
_____|=>towns
________|=>kremlin
___________|=>kremlin.res
___________|=>kremlin.cfg
________|=>forge
________|=>towns.cfg
_____|=>units
________|=>haven_griffon.zip
________|=>kremlin_syrin.zip
___________|=>kremlin_syrin.cfg
___________|=>kremlin_syrin.res
________|=>units.cfg
_____|=>heroes
________|=>rampart_kyrra.zip
________|=>kremlin_karachun.zip
___________|=>kremlin_karachun.cfg
___________|=>kremlin_karachun.res
________|=>heroes.cfg
_____|=>artifacts
________|=>ogre_club.zip
___________|=>ogre_club.cfg
___________|=>ogre_club.res
_____|=>sounds
________|=>sfx
________|=>speech
________|=>music
___________|=>kremlin_maintheme.ogg
___________|=>townname_songname.ogg
_____|=>groups
________|=>warmachines.cfg
________|=>undead.cfg
_____|=>resources
________|=>gold.zip
___________|=>gold.cfg
___________|=>gold.res
________|=>copper.zip
________|=>resources.cfg

Legend

File extensions does not represent exact ones:

  • *.cfg - configuration file;
  • *.zip - non-compressed archive, like .pk0;
  • *.res - compressed file with resources: icons, animation sprites and everything that object needs;

/Rulesets

  • this folder will contain configuration files with names of objects that should be disallowed: usually people disable some features then enable them; like no spells, no several objects and dependent ones (for example, commanders and their artifacts);
  • Map rules override other rules; player rules override mod rules; or similar.

/Mods

  • this folder contains files with the same structure of main data folder: engine would check if there are differences, and use new files from selected mod. Also there must be possibility of combining mods like in Q3/D3.

/Data

- this folder contains game resources and their configurations. Overall structure looks like:

%logical_devision_of_resource%
|==> %name_of_specified_resource.zip%
|==> %logical_devision_of_resource%.cfg- and specified object contains resources, whatever they may be, and it's own configuration files.

Configuration files is not only configuration, but also about functions defined to the object, and which can be added/redefined by user/modder. Structure is kind of recursive to have possibility of configuring both single object and whole one-type object bunch.

Lists might look similar to this:

"startSpellConfig" : {
        "name" : "Magic Bolt",
        "effect" : {
                "type" : "damage",
                "target" : "EnemyUnits",
                "radius" : "SingleHex",
                "quantity" : "15"
        },
        "magicSchool" : ["Death", "Air", "Earth", "Water", "Fire", "Chaos"] 
        "localisedName" : "$9102"
}

Talking of the naming conventions, we must follow some rules in naming final files. I suggest naming them using prefixes and suffixes: main part is the object name, prefix marks the global group to which object should originally belong and suffix marks differences between similar creatures. This is just only for convenience so that user could find needed objects in folder purely visual. There must be one-logic naming system, so that there were no "undead_skeleton" and "necropolis_zombie", but "rampart_dwarf" or "logistics_pathfinding_expert", organized by most search criteria word depending of the object type.

Data folder is divided to the basic logical units met in the game:

  • /menu
    - This folder contains files for drawing game menu, skins and all the other stuff;
  • /maps
    - This folder contains all game maps: campaign, scenario, multiplayer etc.;
  • /objects
    - both for global map and battlefield, with possibility of giving to both types some interesting abilities (like in King's Bounty/Disciples3);
  • /skills
    - This folder contains all the skills: primary, secondary and commander's ones; skills may have upgrade information in their own config.files (like Wisdom.zip contains info about ladder of BasicWisdom goes to ExpertWisdom), or may be defined in common list with parameter "requiredSkill" or smth. Skills are put together, as commander could use some "heroic" stuff - and it depends only on settings;
    - Secondary skills will contain info of number of secondary parameters and it's names;
    - Commander skills file will contain info about commander supposed skills;
  • /spells
    - This folder contains all skills and their division to groups: magic type (light, dark, chaos...), magic element (air, earth...), school (death, order, nature...) etc
  • /towns
    - This folder contains town configurations: inner building and their configs, assignment of creatures, heroes etc;
  • /units
    - This folder contains units and their resources;
  • /heroes
    - This folder is dedicated to heroes: biography, stats, pictures, hero class definitions etc;
  • /artifacts
    - Artifacts: hero and commander ones, definitions and configurations;
  • /sounds
    - Sounds that are not dependent of some object: some special effect sounds, speech for campaigns/scripts and music;
  • /groups
    - Here will be group configurations: each object can be assigned to some group (in it's configuration file) and, according to the rules described in the %group_name%.cfg, game logic would apply to objects penalties, bonuses, blesses etc.
  • /resources
    - Here will be described resources used in game, so they could be easily added or removed according to modder needs. Actually, a lot of global variables can be set as "resource", for example, necromancy points (in terms of Heroes5).

Outro

I hope you've found some interesting ideas here same I found them playing TBS games and reading through VCMI forum.

Read More Of Gamedesign

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: