Random turn order, and scripted troop-hiring in new week

Would it be feasible to randomize the turn order (obviously making sure that one player does not get two turns in a row) so that the advantage of going first is shared around a little? (And if this is feasible, it would be good to have special code so that if one player had first turn on one new week they would not get first play the next new week.)

Also, is it possible that at the start of a new week, all players could get their Day 1 income and have pre-set scripts run to hire new creatures to empty garrison/visiting hero slots (or ones that already had that creature type) so that even if you didn’t have first turn in a new week, you could still have defenses? Obviously you would not be able to do anything except hire troops into already existing garrison/visiting army slots, but it would reduce the advantage of having a week’s more troops (and Day 1 resources) to attack with before defending players even get to hire their new week’s recruits or get their Day 1 gold and resources. And if one particular player didn’t always get first use of Day 1 with randomized turn order, that would share round the “first turn” advantage too, to make the players more even in this regard.

Are either or both of these ideas feasible? :slight_smile: I think they are good ideas, it just depends whether they can be implemented without a huge amount of trouble or not.

Best regards,
Steven.

Both are good ideas, but they alter the gameplay of the original game. The changes would be for the better (improved balance), but so were some of the WoG scripts. I support their implementation, but as balancing features to be turned on or off from the future “VCMI Options” menu. :wink:

Firstly I think we shouldn’t force players to use such modifications of original gameplay. It’s a good idea for a script or script-enabled option. And these ‘just buy troops’ turns won’t be easy to implement since it significantly changes client-server interaction model (it adds new turn type with constrained possibilities - one of problems is how we should describe these constraints (hardcoded or custom?)).

I was not intending it to be compulsory. But if it is feasible it would certainly be worth considering at some stage as an option. =)

Best regards,
Steven.

Actually a better script would probably act as follows:

  • If the player is not attacked before his turn on Day 1 of the new week, nothing should happen.

  • If the player is attacked during turns before Day 1, then the script should kick in as follows:

Computer players should get the money and creatures at castle. For the money they should receive as many creatures possible starting with the highest ranked. A more enhanced script could use the money for things like buying a hero (depending on if he comes with Spell Book and if the town has Mage Guild).
Human players would get the money and creatures at Castle, but would get access to the town screen before the battle, to buy creatures/hero/spell book, arrange troops, maybe even use marketplace, but NOT build structures (i.e.: Castle level, Guild level, dwellings etc).

These are interesting ideas. I also have been some arguments in favor of or against them.

Here is another example of “turn-based strategy” - chess. White begin and win. Perhaps this is a general lack of, whoever goes first gets the advantage. In chess, the “black” player may attempt a sort of “play” this move, and in heroes the red the first offensive player of the week does not “play.”

It is always possible to say that in the original game was not like this, but I think that very many people will agree that in the end we would have a more “fair” conditions for all.
So what could be done. One could make the transition sequence of the first day of the week, for example in the first week - red, the second - the blue and so on. In support of this idea can be noted: this is not such a big change in the “original gameplay”, and then it can not occur by chance and quite predictable for players, each of them can use this advantage in their week.

You can do the same thing only, the first phase would be advancing to the casual player. In such a case would have to make sure that this event has not fallen twice in a row the same. But in fact, would have to do more work to maintain and “chance” and that it was "fair to all players (for example, if one of the players have not had the first stage).

For me idea of random assignment is not really like because it is possible to say a big bonus in some cases it may be crucial, so you can not do it randomly.

Now on to more radical ideas of changing the “original gameplay.” Suppose the idea of a random distribution, we would not walked over and we started to look for something more predictable, so that players can get all we say for certain “achievements”. I understand the achievements under these indicators, which can be viewed by visiting the tavern or the thieves’ guild (the richest player, the strongest army of the kingdom, and so on). But do these “achievements” could already distributed randomly (but of course the players would know and would compete for them).

Well this idea is rather “difficult” and I’m not sure that everything will smoothly when translated into English, so I apologize in advance.

This is the biggest issue in MP so I’ll try to comment from MP point of view :

If a player knows a map he KNOWS exactly that a game will last 2 , 3 or 4 weeks. So in the end it is predictable who gets first turn what week and some maps would be better for red some for blue.

This is very true for normal maps and I guess random templates are a bit more unexpected. If vcmi gets one day simultanous turns that will not turn off when player can meet other players then first day problem will get solved as it will be simultanous for all players thus who clicks faster will have the army first. On the downside it will be a bit of a clicking race where speed of clicks will be important, though not cruciall. Such solution worked ok in Age of Wonders series.

Clearly red has the advantage, and especially on day 1 of each week. But not just then, and not just red. But there’re also not just advantages. The way I see it we have the following:

  • Advantage of color: Red over all others, Blue over all remaining but Red, etc…
  • Major advantage of day 1 of the week, but also minor advantage any day (one day ahead anytime to build an extra dwelling and attack the adversary by transporting the higher level creature through hero chain)
  • Minor (partly balancing) advantage for the colors lower in hierarchy: previous player may have cleared a passage or conquered a strategic site by defeating an uber army, coming out weak after the battle, giving the other the chance to both defeat the weakened army and use the pass / conquer the site (e.g.: mine) for free. This doesn’t compensate much, especially in MP, but it often does in SP against AI.

Most of the proposals above (mine included for that matter) are probably quite difficult to implement in VCMI. Not impossible (with open source few things are), but probably not feasible with the time and resources than we currently have Plus some would replace one balance issue with another:

  • Randomize turn order: it’s actually impossible to do it without always having a player get two days in a row as opposed to one of the others. Even if it’d apply only on day 1 of the week and in an organized manner (as lord haart suggested), it would still mean that after Red plays Day7 on Week1, Blue will actually get to play two full days before Red can do anything again. Blue will basically get the day 1 advantage, but now also the double movement on top of it (caravan hero may be needed to bring troops to the main hero, but that’s a minor inconvenient).
  • Hire troops when attacked on day 1 before your turn. This was my suggestion, but I totally digress from it now. Not sure how come I didn’t see the pitfall, namely the huge risk the earlier player would take in attacking the others, when having little clue about which army it may encounter (Blue may end up day 7 with 1 defending Pikeman in castle, but hire 3 Archangels and the rest if attacked by Red on day 1)
  • One day simultaneous turns: not sure if at all possible with the current code structure, not to mention the chaos I foresee. Haven’t played much Age of Wonders (very little 10 years ago, liked it, but sadly no time) so I don’t know how it worked there, but Heroes is windows-based. Once you open Town/Hero/Battle/Etc screen, everything freezes in the background, apart from static animations. I’m pretty sure this is one thing that won’t be doable with just a mod, but would require major changes to the core of the VCMI code structure, with impacts everywhere totaling at least 1 year of delay for the whole project. And coding effort aside, I see chaos in gameplay as well: a pop-up opening just because you ran into an event, or simply opened the town screen to recruit something, while meanwhile the enemy makes moves you don’t even see, or simply attacks you. Would battle open on top of the event window? Or if two of your heroes are attacked in the same time by different opponents, how would the game handle two battle screens in the same time? This may work on RTS’s where (almost) all happens on the map, but in Heroes it’d be way more than just a clicking race

Looking back, the only solution without major pitfalls that is see, is Steven’s original suggestion of having a towns visit-and-actions session between weeks. This way all players would get the chance to use the limited new money to build fortifications and buy defenders, but that’s it. Once day 1 starts for Red, he should be able to make choices about attacking enemy towns or not in “full” knowledge of what to expect, based on the R-click information he gets (current scouting/stealthy abilities thanks to skills/spells included of course). But while I don’t see balance pitfalls, it may still be quite a coding effort.

For even less coding effort, I thought something more in the lines of what the WoG scripts may be more realistic. And I thought of those which give “double movement” and “half price for creatures on day 7”. Working with this kind of code changes in a mod, perhaps we could consider something like this:

  • Player 1 plays day 1 same as any other day of the week.
  • Player 2 gets on 1st day 5% movement bonus for all heroes AND/OR 5% discount for creatures AND/OR certain temporary buffs (like double Defense for attacked heroes and/or double Arrow Tower strengths) in case they are attacked before their turn
  • Players 3, 4, etc would get further buffs, as they are at disadvantage to even more players
  • Similar balancing tweaks can be considered for the other days of the week, but reduced same as the risk is (e.g.: 5/10/15/…% buffs on day 1, and 1/2/3/…% buffs the rest of the week). This however should be a separate script at choice.

To take the movement bonus for example (perhaps not the best still), even with 8 players, we’d get to a maximum of 35% movement bonus for the 8th player. That shouldn’t put Red at too much of a disadvantage. Basically for one day he would have the 1st move advantage, but knowing that it’s against enemies which all have temporary Logistics-like bonuses, but not more.

As these buffs can be considered as a balance issue overall, another script can be put in place (at choice only for those who find it necessary), which on day 7 would reverse the effects of the day 1 script. This would compensate first players for the day 1 movement penalty or extra purchase costs, so that at the end of a 7 day cycle, they get the chance to cover the same amount of land as the others, and make the same amount of purchases (provided all other conditions are the same).

Now, I understand this may not be a piece of cake to code either (and I’m happy to receive feedback on pitfalls I overlooked again), but it’s probably still the easiest which could be accomplished on top of the current code structure, hopefully through mod scripts only.

@Zamolxis:

Age of Wonders is also windows based . Battle alike to heroes is full screen. There are differences but both games are turn based and so very alike in the mechanics. For example if someone attacks you while you are already fighting in a different battle the attacker waits for you to finish your fight and then the battle begins for both of you. On the other hand if you do something in town you will be re directed to such fight and taken out of the town. So as you see there are priorities in the events that occur.

I know it is complicated to make such system, but the benefits for MP are obvious. I think at one point VCMI will work on networking code and sim turn. This sugestion can be valided at that time as now it is a bit too early :wink:

Another solution would be making 1st week day a pacifist day when you cannot attack heroes&castles . Something like o holy day like sunday is for christians . This would however impact gameplay .

Tow seemed to be pretty certain about implementation of simultaneous turns, but only he may tell the details.

In H5, sim turns are handled in a different manner. Game predicts possible conflicts and sim turns break as soon as player may interfere with each other. It works perfectly well on custom dueal maps, where the only battle is supposed to happen in the final.

Not sure if sim turns would make sense for many players on generic free-for-all maps, but I never really have seen such session on the internet :wink:

Long ago (when I was still working on scripts for the WoG Team) I wrote a “Victory Points” script that gave points for most gold, high level heroes, captured mines, etc. and you could set it to win based on achieving a certain number of victory points, or who had the most by a certain date (timed game).

Salamandre recently posted my scripts (on my behalf) to the Heroees Community so if you’re interested you can download them and check it out.

heroescommunity.com/viewthread.php3?TID=36789

My opinion is like that, i think the red player advantage (blue etc. to the end of queue) should not be removed, instead, it should be possible to lose or gain an advantage for everyone. And the question is “how to distribute it among the players” (random or nonrandom manner).

Thx Fnord i will be check this out.

random not always means x=rand()%max
random could be in example that:
we have n players still playing, so we randomise n days session by random sorting, then after the n days repeat procedure with the measuring
(but then the problem arises if one player is defeated before session passes, but i’ll leave it to You)

this way it can be both random and fair - in the session each player is once first once second etc. also the priorites can be known after beginning each session