ihhub / fheroes2

fheroes2 is a recreation of Heroes of Might and Magic II game engine.
https://ihhub.github.io/fheroes2/
GNU General Public License v2.0
2.69k stars 375 forks source link

[Gameplay] Movement Points on First Turn #6316

Closed JoLiKMC closed 1 year ago

JoLiKMC commented 1 year ago

Preliminary checks

Platform

Windows

Describe the bug

In doing some testing, I've noticed that in the original game, heroes will always start with a set amount of Movement Points – specifically, the Warlock hero starts with 12(00) movement points and the Wizard hero starts with 11 while every other hero starts with 10. It doesn't matter if a hero starts with only Ultra Fast units (Champion, Phoenix), has any-or-all movement-enhancing Artifacts equipped (Nomad Boots, Traveler's Boots, True Compass), or has any level of Logistics, they will always start with a set amount of Movement Points on their first turn. This is absolutely not the case with fheroes2. wherein Heroes seem to start with the "correct" amount of Movement Points on Day 1, based on their starting inventory / skills / army.

Again, I'm not sure if this is a bug in the original or something, but I guess someone noticed it… and "fixed" it.

Save file

HoMM2 Map - Hero Movement Test.zip

oleg-derevenetz commented 1 year ago

This is absolutely not the case with fheroes2. wherein Heroes seem to start with the "correct" amount of Movement Points on Day 1, based on their starting inventory / skills / army.

Then I don't see how this is a bug. If this is a bug, it's a bug in the original game.

JoLiKMC commented 1 year ago

Then I don't see how this is a bug. If this is a bug, it's a bug in the original game.

I did a little more research into the matter. This behavior, in vanilla Heroes II, seems intentional:

So basically, whether or not this is a "bug" in fheroes2 depends on what direction y'all are trying to take this project.

oleg-derevenetz commented 1 year ago

There must be some logical justification why the first day should be different from the others in terms of gameplay. What exactly does this give the player and what does he lose if this is not done? So far, it looks like a bug that has been fixed in subsequent HoMM versions.

Branikolog commented 1 year ago

Hello, @JoLiKMC ! I agree with @oleg-derevenetz . It's not intuitive, when at first turn you have a certain amount of movement points, but on the second turn it is changed. The most obvious and predictable behaviour in this situation is to allow hero to have the amount of movement points he should have, no matter what day it is.

You mentioned before:

wherein Heroes seem to start with the "correct" amount of Movement Points on Day 1

So even you feel the current implementation as "correct", while the original behaviour is tricky and not obvious to new players.

JoLiKMC commented 1 year ago

There must be some logical justification why the first day should be different from the others in terms of gameplay. What exactly does this give the player and what does he lose if this is not done? So far, it looks like a bug that has been fixed in subsequent HoMM versions.

Maybe it is and maybe it isn't. If it was unintentional, though, why would it be specifically different for the Barbarian and Warlock classes in the first game, then the Warlock and Wizard classes in the second? And why 10 Movement Points for everyone? I though that maybe everyone was getting assigned the lowest possible value for their class' creatures – ie "Very Slow" for Peasants, "Average" for Centaurs, et ceterea – but when I double-checked Level 1 creatures against their classes… nothing lined up. For example, Sorceresses don't get "bonus movement" on Day 1 despite the fact Sprites are considered Average / Medium speed (-3 penalty).

As for the rationale behind limiting the first turn's movement points, my best guess is so that the computer doesn't have an unfair advantage over the player, or one player doesn't "get the jump" on another player. If it's an intentional feature, that is. If it was unintentional, though, you'd think they would have fixed it in the second game. That's far more noticeable than the "empty army" thing I mentioned elsewhere.

Hello, @JoLiKMC ! I agree with @oleg-derevenetz . It's not intuitive, when at first turn you have a certain amount of movement points, but on the second turn it is changed. The most obvious and predictable behaviour in this situation is to allow hero to have the amount of movement points he should have, no matter what day it is.

You mentioned before:

wherein Heroes seem to start with the "correct" amount of Movement Points on Day 1

So even you feel the current implementation as "correct", while the original behaviour is tricky and not obvious to new players.

You should note the use of quotes around that word. When I said "correct", I meant "the amount of Movement Points heroes have from Day 2 onward". As stated, in both Heroes I and II, the first day's Movement Points are locked to 10 for most classes, but no class gets the movement bonuses they might otherwise have.

As I said in another thread of mine… "at the end of the day, it's [their] project", so they can do whatever they want. "I'm just being meticulous."

LeHerosInconnu commented 1 year ago

Hello @JoLiKMC, @oleg-derevenetz, and @Branikolog,

I think it's a bug from the original game (similar to the hero's full movement bug after a retreat or a reddition), and fheroes2 should fix this. Army troops, secondary skills and artifacts must be taken into account from the start of the scenario (and not only at the start of the second turn).

In the original game, the starting default hero has a movement according to the troops actually present in his army (in the example a Barbarian with and without an orc troop by default).

In original game:

Hero start move 001

Hero start move 002

JoLiKMC commented 1 year ago

I… think you nailed it on the head, @LeHerosInconnu. The Day 1 movement points are generated from the Standard troops of a specific hero regardless of whether they have said units in their army or not. Some class heroes start with only Level 1 units, but most classes starts with both Level 1 and Level 2units. I was absolutely not taking the Level 2 units into account. And in testing this in Heroes I, again, that's exactly how it works. It's based on each individual hero's starting army.

Everything makes sense, now! In Heroes II, the Wizard's slowest starting creature would normally be the Halfling (Level 1, Slow speed), they get the Slow penalty (-4 movement points), but the Necromancer's slowest starting creature is the Zombie (Level 2, Very Slow speed), so they start with the Very Slow penalty (-5 movement points). However, if a Necromancer hero starts with only Skeletons (Level 1, Average speed), they'll only have the Average movement penalty (-3 movement points) on Day 1! Similar things are at play with the Sorceress and Barbarian, too! From this, I can determine that there is no "class starting movement points". There never was. Rather, it's determined by the specific hero's Standard troops. And I mean that very literally. If a hero normally starts with some Peasants and some Archers (Level 1 and 2, both Very Slow), but you make them start with just a pile of Phoenixes or Champions (the fastest units in the game), the hero will still have the Very Slow movement penalty on Day 1. It's almost like the game loads a hero with their Standard troops, sets the Movement Points accordingly, and then gives the hero their custom units, Artifacts, and Secondary Skills. In fact… that may well be what's going on, here. The original Heroes I and II are very likely setting Movement Points as the very first thing before a given turn. And it's this very simple oversight that leads to the wonky movement points on Day 1.

Man. It took a lot of comments to get here, but I finally understand. I'm finally ready to admit that, yes, this was an oversight in the original Heroes of Might and Magic I / II. Therefore, the way fheroes2 does it – not to mention the way Heroes of Might and Magic III (and future titles) do it – is the correct, intended way. All of that being said… I finally agree that this should not be reverted in fheroes2.

Thank you, LeHerosInconnu. I don't know how I missed something so obvious. But I mean, so did New World Computing and CyberLore. Twice. Hah. And thank you, everyone else, for putting up with this. Sometimes, it takes a village. Ya know?