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.72k stars 376 forks source link

Rework of experimental options #6161

Closed ihhub closed 1 year ago

ihhub commented 1 year ago

Preliminary checks

Describe the problem requiring a solution

Since there are always ongoing debates about whether to keep or remove certain experimental options we need to make a clear way how to deal with them.

Describe the possible solution

I suggest to do these steps:

Additional info

No response

ihhub commented 1 year ago

Hi @zenseii , @Branikolog and @oleg-derevenetz , I jotted down my notes about experimental options rework. If you have even better ideas please feel free to explain.

zenseii commented 1 year ago

For reference here are all the current experimental options:

  1. battle: show damage info

  2. battle: allow soft wait for troops

  3. world: Scouting skill shows extended content info

  4. world: allow to set guardian to objects

  5. world: Windmills, Water Wheels and Magic Gardens can be captured

  6. castle: allow guardians

  7. heroes: allow buy a spellbook from Shrines

  8. heroes: remember movement points when retreating or surrendering

  9. heroes: allow to choose any primary skill in Arena

  10. game: autosave will be made at the beginning of the day

  11. game: offer to continue the game after victory condition

A bit off-topic, but I noticed these strings alongside the experimental ones when going through these in the PO file:

game: use evil interface game: hide interface

Should they just be removed now that they are already part of the properly integrated options?

zenseii commented 1 year ago

Personally I think we should go for a dual approach: integrate some and move others to an external file. The options are either modifications of the core rules of the game, or nice convenience features. The majority are modifications though.

The convenience options can all be either made default behavior or as proper options with icons to them. These two are:

  1. battle: show damage info

  2. game: autosave will be made at the beginning of the day

    • This can be added as an extra autosave and rename the already existing one:
    • "Autosave This Turn" and "Autosave Last Turn". The names are used as examples.
    • In this way there will be no need for this as an extra option, it will just be part of how the engine works.

All the others can be made into external options which players that are curious enough can enable.

Two exceptions could be the deterministic battles and the continuing the game after victory. I believe we added the former ourselves and I believe many players would complain if we made it harder to enable deterministic battles? Still it seems like something you would either always have enabled or never enable so the small inconvenience of not being able to turn it on or off in-game should be insignificant. The same could be said about continuing the game after victory.

My two arguments of having the least amount of options in the game is to not clutter up the game with options, and the other is that we won't have to spend time in trying to figure out some icon for them.

oleg-derevenetz commented 1 year ago

I believe that many of the experimental options can be either removed or integrated in the core.

  1. battle: show damage info

Could be integrated and always turned on. IIRC OG has it too and it could be turned on/off via the Battle Options dialog (we have the Show Army Order) setting instead. BTW we can just always show the battle order and use this place in the Battle Options dialog to enable/disable this option, just like in the OG :)

  1. battle: deterministic events

Could be integrated & always turned on.

  1. battle: allow soft wait for troops

This option should remain "experimental" or removed, It might be useful in PvP hotseat, but AI currently has no idea how to use it. Although it would be a pity to remove it completely :)

  1. castle: allow guardians

The same issue as with "soft wait". It's a pity to remove it.

  1. heroes: remember movement points when retreating or surrendering

@LeHerosInconnu believes that the fact that the heroes in the original game get all the movement points back, even if they were hired back on the same day after they were defeated, is a bug and leads to the hit&run abuse. Maybe, but that's how the original game work. We can choose either logic, stick with it and remove this option.

  1. world: Scouting skill shows extended content info
  2. world: allow to set guardian to objects
  3. world: Windmills, Water Wheels and Magic Gardens can be captured
  4. heroes: allow buy a spellbook from Shrines
  5. heroes: allow to choose any primary skill in Arena

Could be removed or remain "experimental".

  1. game: autosave will be made at the beginning of the day
  2. game: offer to continue the game after victory condition

Both could be removed.

As for the storage method for the experimental options, I believe that the current method isn't really so bad. We can just add some UI features, such as indication of experimental options presence and the ability to reset them all at once.

The real problem with experimental options is that it's hard to track them all during improvements/bugfixes. Since we have a very limited workforce, maybe really it worth to just remove arguable experimental options at all.

P.S. Although of course it would be a pity to remove at least two of them. I have made some efforts to properly support and fix bugs in some of them, including at least castle guardians, soft wait and extended scouting (by the way, the implementation of the latter looks somewhat overcomplicated). Except the AI part maybe in a sense that AI is still not able to get the profit from them, but at least it doesn't conflict with them.

oleg-derevenetz commented 1 year ago

I propose to make the "castle: allow guardians" option by default. After all, we already have changes in the core that affect the overall game balance even more - for example, the ability to hire non-upgraded units in the upgraded dwellings.

zenseii commented 1 year ago

I agree with most of @oleg-derevenetz's points. I do however wish to keep castle guardian as an option both personally and because the AI really needs to know how to use this, a fact which more than qualifies it as an "experimental" option in my opinion.

I also want to point out that we have users who prefer to use the autosave option. How much work would it be to create two auto saves? This would satisfy both worlds. Heroes 4 has this exact system I described with two auto saves and I find it convenient the times I use saves.

To summarize I think we can keep these three experimental options that @oleg-derevenetz mentioned:

  1. battle: allow soft wait for troops

  2. world: Scouting skill shows extended content info

  3. castle: allow guardians

By reducing them to just three options it should be easier to properly integrate them as options in the UI.

EDIT: Since these are all gameplay modifying options, maybe we could access them from the scenario setup window? For example a non-intrusive small gear wheel icon in a corner, same size as the hero button. A similar icon could be fit somewhere in the campaign scenario selection window and work like the difficulty selection in that it only can be set once?

LeHerosInconnu commented 1 year ago

As a reminder (not completely "up to date"): https://github.com/ihhub/fheroes2/issues/1272, https://github.com/ihhub/fheroes2/discussions/2472.

zenseii commented 1 year ago

Since we discussed moving the gameplay-changing options away from the traditional game settings, maybe this could work for those specifically, if we decide to even keep them. I think it might start feeling a bit crowded in this menu at this point though.

![image](https://user-images.githubusercontent.com/12501091/201783893-4155e37d-c428-4922-8801-71db66479ca7.png)
oleg-derevenetz commented 1 year ago

Hi @zenseii the problem with these "experimental options" is that they are always at the roadside. They will always be "not good enough" because nobody uses them and nobody tests them, errors in them will accumulate as the logic develops. I believe that new features should either be integrated into the engine or removed.

zenseii commented 1 year ago

@oleg-derevenetz, this is a good point and I agree with this. It fits with one of the principles/aims of the project which is to not bombard the players with options, but rather present them with some select polished and well-integrated features.

Hopefully we can get everybody onboard with this and then close all issues related to the specific experimental options dialog https://github.com/ihhub/fheroes2/issues?q=is%3Aissue+is%3Aopen+experimental (Just to give an impression. Some issues are unrelated and some are missing in that link.)

oleg-derevenetz commented 1 year ago

@zenseii

I also want to point out that we have users who prefer to use the autosave option. How much work would it be to create two auto saves? This would satisfy both worlds. Heroes 4 has this exact system I described with two auto saves and I find it convenient the times I use saves.

Is it really worth it to make 2 autosaves just so as not to wait for the end of the AI turn?

zenseii commented 1 year ago

Is it really worth it to make 2 autosaves just so as not to wait for the end of the AI turn?

Sometimes you can have several sieges at many castles during the AI's turn, and having to redo these every time can be annoying, it could be an hour of gameplay lost.

My other point was that some people like @LeHerosInconnu have previously noted that they use this feature, the same thing with the Arena +1 Knowledge choice. That's why it seemed best to find a way in the middle instead of either removing or integrating it.

You could always make the point that a player should just remember to save the game right after the AI player turn ends, and I wouldn't disagree with that. Still I guess the same could also be said about the current autosave too though that if you just remember to save frequently then there is no need for it...

I also remember times when playing multiplayer in Heroes 4 when the connection broke and luckily we had the autosave from a later turn we could load up again and host from. Of course I'm sure fheroes2 network play will be a million times better and more stable, but it can never stop a power outage in your house from killing the router xD

oleg-derevenetz commented 1 year ago

@zenseii What would you call these two autosave files? Preferably a shorter name.

zenseii commented 1 year ago

The space is limited so maybe: At the start of your turn: AUTOSAVECURR (the last R shouldn't be cut) AUTOSAVETHIS (This turn/day)

Right before ending your turn: AUTOSAVELAST AUTOSAVEPREV (previous)

EDIT: I also wouldn't be against adopting some sort of CamelCase for the name, which would allow longer names like these that I have checked:

AutoSavePrevious
AutoSaveCurrent

image

oleg-derevenetz commented 1 year ago

@zenseii The options, of course, are not particularly impressive :) Need to think a bit more. The advantage of names consisting solely from uppercase letters is that they are immediately stand out from the crowd.

zenseii commented 1 year ago

@oleg-derevenetz, yes the space is always a nice challenge. How about these that keep capital letters but also distinguishes them. I prefer New/Old as they are more intuitive than 1st/2nd. image

(And before anyone says they should be translated: "AUTOSAVE" was never translated before anyways.... ALSO, leave that struggle up to the translators xD)

zenseii commented 1 year ago

More alternatives:

Capital NEW/OLD are my preferred ones so far. A player just needs the names of the two autosaves to be immediately distinguishable and not necessarily completely intuitive about what they represent, and once they know what they represent after having used them a couple of times there will be no problem with the name.

image *NEW needs the margin to be smaller by exactly 2 more pixels to fit the W. I think we can afford that. image

Naturally the most evident fact that separates these files will be the date on the right side, which should explain the player all they need to know about what the two autosaves represent.

oleg-derevenetz commented 1 year ago

Hi @zenseii

A bit off-topic, but I noticed these strings alongside the experimental ones when going through these in the PO file:

game: use evil interface game: hide interface

Should they just be removed now that they are already part of the properly integrated options?

These are not experimental options anymore, they are integrated in the GUI (see the Settings dialog that can be called from the adventure map screen).

zenseii commented 1 year ago

These are not experimental options anymore, they are integrated in the GUI (see the Settings dialog that can be called from the adventure map screen).

Yes, this is what confused me when I found them as strings in the PO file: image

I don't have the setup to quickly search for them in the project at the moment so I was wondering if anyone else could look at it and possibly remove the call to gettext _() for them.

oleg-derevenetz commented 1 year ago

OK, let's vote on the fate of the experimental options. My opinion is:

battle: show damage info

Integrate instead the "show battle order" option (make the latter either always on, or controlled via config file only)

battle: allow soft wait for troops

Remove.

world: Scouting skill shows extended content info

Remove.

world: allow to set guardian to objects

Don't know. I will abstain.

world: Windmills, Water Wheels and Magic Gardens can be captured

Abstain.

castle: allow guardians

Remove (see #6190).

heroes: allow buy a spellbook from Shrines

Abstain.

heroes: remember movement points when retreating or surrendering

Abstain.

heroes: allow to choose any primary skill in Arena

Abstain.

game: autosave will be made at the beginning of the day

Integrate - always create a separate autosave files with different names at the end of the previous turn and at the beginning of a new turn as suggested by @zenseii. There will be a PR for that.

game: offer to continue the game after victory condition

Remove (see #6191).

@ihhub @LeHerosInconnu @Branikolog @zenseii your turn :)

zenseii commented 1 year ago

@oleg-derevenetz, do you suggest making a PR for the removal of every one of them? I just want to know if this will be the case for the scouting option too which I believe has some potential similar to castle guardians.

Here are my votes:

battle: show damage info

Integrate and make always default. It's less work to keep turn order as an option like it is right now - think translation files' strings which would all have to be changed etc.

battle: allow soft wait for troops

Remove.

world: Scouting skill shows extended content info

Remove.

world: allow to set guardian to objects

Remove.

world: Windmills, Water Wheels and Magic Gardens can be captured

Remove.

castle: allow guardians

Remove.

heroes: allow buy a spellbook from Shrines

Remove.

heroes: remember movement points when retreating or surrendering

Integrate.

heroes: allow to choose any primary skill in Arena

Remove. Such a feature can be added in a different new building.

game: autosave will be made at the beginning of the day

Remove.

game: offer to continue the game after victory condition

Remove.

oleg-derevenetz commented 1 year ago

@zenseii yes, if option will be considered to be removed, I suggest to make a separate PR to remove each option, so they can be reverted/rewritten in future if there will be a need for that.

Branikolog commented 1 year ago

Hi, guys! This thread becomes really hot! :) But at the same time I'm glad, that development becomes so involving and so many people are participating. :)

battle: show damage info

Integrate. But instead of removing battle order (making it a default) I think it would be better to expand battle menu with new options. I know, lots of player hate battle order. Also, on 640x480 it covers creature sprites.

battle: allow soft wait for troops

Remove. Definitely remove. :)

world: Scouting skill shows extended content info

Remove.

world: allow to set guardian to objects

Remove. We have nice spells for guarding mines.

world: Windmills, Water Wheels and Magic Gardens can be captured

Remove. Resources have great influence on gameplay, so I'm against making them too affordable. Also, this changes original behaviour of these objects. We can simply add new objects with such capturing behaviour, but not changing the existing ones.

castle: allow guardians

Remove.

heroes: allow buy a spellbook from Shrines

Remove.

heroes: remember movement points when retreating or surrendering

Integrate. The original mechanic (of recovering movement points after retreat) is heavily abused by players.

heroes: allow to choose any primary skill in Arena

Remove. Originally this is an object rising 3 skills. We can implement in future new object for 4 skills.

game: autosave will be made at the beginning of the day

Integrate. But this requires a lot of effort. Actually, I'm not satisfied with two ~same named files available in save list. I find it rather confusing. What if we simply show a separate window, while confirming AUTOSAVE, where a player can select between two options: Previous day or The last day?

Otherwise, both savefiles could be visually separated from rest files, by another background texture or effect, another color or by placing them into a separate box within the window.

game: offer to continue the game after victory condition

Remove. Useless option.

oleg-derevenetz commented 1 year ago

@Branikolog

But this requires a lot of effort.

That's a problem. As all we know, there will be the first "real" release next month, and there is a lot of mandatory things to do. In fact, I even think to propose some sort of "feature freeze" at the end of the month to make sure that no new bugs will be introduced. Thus, the simpler solution is better.

Branikolog commented 1 year ago

Hi, @oleg-derevenetz

That's a problem. As all we know, there will be the first "real" release next month, and there is a lot of mandatory things to do. In fact, I even think to propose some sort of "feature freeze" at the end of the month to make sure that no new bugs will be introduced. Thus, the simpler solution is better.

Totally agreed! The option to load current day from the beginning is nice, but we can postpone its release a little bit.

oleg-derevenetz commented 1 year ago

@Branikolog so your proposal is to remove it for a while, but rework and add back later?

Branikolog commented 1 year ago

@oleg-derevenetz

@Branikolog so your proposal is to remove it for a while, but rework and add back later?

Yeah. Our upcoming release requires lots of other work. It would be more save, to introduce it without any untested features. The simpler - the better. After the release we can even keep players more interested, as we would release these "postponed" features, that have already been 80% ready, polished and discussed by us..

zenseii commented 1 year ago

The problem I see with removing it now is that we don't know when it will be properly added back unless we make it into a specific goal to have by x version. Looking at @oleg-derevenetz's PR for implementing it, I don't think it's a problem moving on with that and if needed we can improve this feature.

Branikolog commented 1 year ago

@zenseii I believe, in this particular case hardly anyone used this feature before, since it overwrites regular autosave, which people expect to happen at the end of the day. Introducing a feature with both savefiles available at the same menu would be some sort of innovation for our future players. I'd accept it even now, if we can promptly implement nice, well-looking design.

zenseii commented 1 year ago

@zenseii I believe, in this particular case hardly anyone used this feature before, since it overwrites regular autosave, which people expect to happen at the end of the day. Introducing a feature with both savefiles available at the same menu would be some sort of innovation for our future players. I'd accept it even now, if we can promptly implement nice, well-looking design.

In that case I suggest removing it now and then taking a look at it at a later point, since we don't have the time to make the perfect solution now.

For now the only positive number of votes are towards integrating the show damage info and the reduction of movement points after retreating/surrendering, but we'll have to wait and see what the rest think and whether they have any objections to integrating those.

ihhub commented 1 year ago

I will give my opinion and replies tomorrow as I am very busy at the moment :(

LeHerosInconnu commented 1 year ago

Hello everyone,

Mr-Bajs commented 1 year ago

Even though i like several of these options as a player.

Why not just remove most of experimental features from the 1.0 and postpone the experimental features and bundle them to the expansion Resurrection 1.3 release, seams to to more inline with the goal of 1.0?

https://github.com/ihhub/fheroes2/wiki/Project-roadmap

After 1.0 maybe the should be just be 1.0 settings that is more less just original Homm2 game rules. And a bundled experimental setting for an future expansion, i suppose it would be easier to get an more coherent experience during development if everyone plays the game with the same settings.

You either play with fheroes 1.0 ruleset or an post 1.0 release added Resurrection experimental setting.

oleg-derevenetz commented 1 year ago

OK, let's summarize the interim results in this table:

- oleg-derevenetz zenseii Branikolog LeHerosInconnu ihhub
battle: show damage info + + + + N/A
battle: allow soft wait for troops - - - - N/A
world: Scouting skill shows extended content info - - - - N/A
world: allow to set guardian to objects ? - - - N/A
world: Windmills, Water Wheels and Magic Gardens can be captured ? - - + N/A
castle: allow guardians - - - - N/A
heroes: allow buy a spellbook from Shrines ? - - + N/A
heroes: remember movement points when retreating or surrendering ? + + + N/A
heroes: allow to choose any primary skill in Arena ? - - + N/A
game: autosave will be made at the beginning of the day + - - + N/A
game: offer to continue the game after victory condition - - - + N/A

The legend is:

So it seems that we have two favorites so far ("battle: show damage info" and "heroes: remember movement points when retreating or surrendering") and two outsiders ("battle: allow soft wait for troops" and "castle: allow guardians"). The results for the rest are contradictory, and therefore most likely they will be removed from the 1.0 (but, perhaps, they will be reworked and added later, but not as "experimental options" anymore, I believe we've had enough of this).

oleg-derevenetz commented 1 year ago

@Branikolog

battle: allow soft wait for troops

Remove. Definitely remove. :)

BTW, why you don't like this option so much? The mechanics of waiting dramatically increases the flexibility of using troops, especially [relatively] slow ones. It was an undoubted innovation in HoMM3.

Alucard648 commented 1 year ago

battle: show damage info - Integrate - A must have to avoid heavy hassle for damage calculation. battle: allow soft wait for troops - Postpone for expansion - requires AI adaptation. world: Scouting skill shows extended content info - Postpone for expansion - Again AI should handle option well. Also heavy buff already OP warlocks that can how quickly gain Expert Scouting for exact neutral numbers and vacuum map rapidly. Hello Dragons on week 4! world: allow to set guardian to objects - Remove - Results in abuse, involving spending a night in mine for logistics boost. world: Windmills, Water Wheels and Magic Gardens can be captured - Keep - I hate migromanadgement. castle: allow guardians - Postpone for expansion - Again, heroes 3-like feature better to be in expansion. heroes: allow buy a spellbook from Shrines - Keep - Nothing more frustrating than forgetting to buy spellbook in castle mage guild ... heroes: remember movement points when retreating or surrendering - Remove - Definitely an abuse that can be devastating. Think Alteris 1&2. Heroes should have 0 MP on buyout from retreat. heroes: allow to choose any primary skill in Arena - Keep - A must for heroes that have low chance on getting KNW on level up game: autosave will be made at the beginning of the day - keep - Autosaves should be done on both ending turn and starting next day. game: offer to continue the game after victory condition - Remove - Useless.

Branikolog commented 1 year ago

Hi, @oleg-derevenetz

BTW, why you don't like this option so much? The mechanics of waiting dramatically increases the flexibility of using troops, especially [relatively] slow ones. It was an undoubted innovation in HoMM3.

Mainly because all battle features and troops for H3 were created considering this mechanic. Heroes 2 originally was created without this feature. That means, that each particular troop is able to perform an action at a certain moment in a battle. So all his stats, speed and even growth were created considering the fact, that this particular troop will make an action exactly at start or end of battle turn. Lets take as example Phoenixes. It's the most apparent example of glass cannon: it has high damage, but low HP. It was intended, that you attack with phoenixes in the early battle, or skip if you have a risk to loose them. In a case game allows you to wait till the end of the turn, you can perform 2 guaranteed hits with this troop, which is too much. Especially, when we talk about 6 tier troops, which are quite unbalanced, comparing to the rest creature tiers. So original gameplay implied that you often attack with this troop on early stages of the battles and will experience inevitable losses. Adding "wait" feature completely ruins original fragile balance, and creates completely new game. Which is not so bad, but definitely not a thing we're working on here. ;)

ihhub commented 1 year ago

Hi everyone!

This is my vision what we should do with the remaining options:

  1. battle: show damage info

Integrate into the game with an icon within battle options. I will take care of it.

  1. battle: allow soft wait for troops

Remove from 1.0 release. We can put it back only after teaching AI to use this option and if we won't add monsters with an ability to wait.

  1. world: Scouting skill shows extended content info

Remove. Useless option and a combination of skills and artifacts give the same effect.

  1. world: allow to set guardian to objects

Remove. As pointed out we have spells for this. We can instead add new spells by doing it which will be integration into the game. This options makes heroes 2 more like heroes 4.

  1. world: Windmills, Water Wheels and Magic Gardens can be captured

Remove. We can reintroduce it only if we add visual effects / new buildings to highlight such objects on the map. From user perspective if you see an object A you expect behavior X, not behavior X or Y.

  1. castle: allow guardians

The same as above. We need to add visual hints for this option.

  1. heroes: allow buy a spellbook from Shrines

The same as above. We need to add visual hints for this option.

  1. heroes: remember movement points when retreating or surrendering

Integrate into the game.

  1. heroes: allow to choose any primary skill in Arena

I am okay to remove or make it permanent.

  1. game: autosave will be made at the beginning of the day

Remove for now. Having 2 save files is not a user-friendly experience. Heroes 4 have such feature.

  1. game: offer to continue the game after victory condition

Remove. Games are designed to be completed when you archive your goal. At least for most of cases. For HoMM after the completion there not much to do.

As a conclusion: we make battle: show damage info and heroes: remember movement points when retreating or surrendering a part of the game. The rest of options I suggest to remove either completely or at least the code related to UI.

ihhub commented 1 year ago

Hi @oleg-derevenetz , I believe we left (based on majority of votes) with this set of actions: