hessenfarmer
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2745
One Elder of Players
Location: Bavaria
|
Posted at: 2020-04-16, 13:33
Hi,
as this was reported as bug again. In the current implementation there is a corner case where a defeated player can partly ressurect and continue playing (he has no fog of war but can't attack anymore for this reason).
This happens if he has an expedition port under construction or a warehouse construction site with all construction material already delivered, while his last finished warehouse is destructed.
for this there are 3 possibilites:
1. if the last completed warehouse (this means HQ, Port and Warehouse) is destroyed, destroy all constructionsites of warehouses as well. Leaving the defeated player really a spectator (only thing he could do is dismantling/desztroying buildings)
2. Allow the above cornercase to take place to happen (especially with expeditions in progress) and therefore not declaring him defeated leaving him full playing capability.
3. change nothing
my vote is 1.
opinions?
Top
Quote
|
|
|
Nordfriese
Joined: 2017-01-17, 18:07
Posts: 2057
OS: Debian Testing
Version: Latest master
One Elder of Players
Location: 0x55555d3a34c0
|
Posted at: 2020-04-16, 13:40
The problem with 1) is that there are still more cornercases that will then surface. E.g. if you have no warehouses left but a functioning economy with woodcutters, sawmills, … you can still produce everything to build a new warehouse. (A builder could be kept in "storage" at a disconnected constructionsite.) So we'd also need to periodically destroy all WH csites, and there might be even more loopholes to be found…
IMHO the cleanest way would be a C++ change. Let's have a new function Player.mark_as_defeated() that irreversibly turns the player into a real spectator, rather than faking this mode with see_all , and disallowing all playercommands so the player won't be able to do anything at all ever again during that game.
Top
Quote
|
|
|
king_of_nowhere
Joined: 2014-09-15, 18:35
Posts: 1668
One Elder of Players
|
Posted at: 2020-04-16, 16:00
i would opt for 2: leave him not defeated. in general, a defeated player can also still send attacks while he has still soldiers available. I'd just declare them not defeated.
Top
Quote
|
|
|
hessenfarmer
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2745
One Elder of Players
Location: Bavaria
|
Posted at: 2020-04-16, 16:20
king_of_nowhere wrote:
i would opt for 2: leave him not defeated. in general, a defeated player can also still send attacks while he has still soldiers available. I'd just declare them not defeated.
If he is defeated, he currently can't launch an attack anymore. That should not be changed. Furthermore we need a definition of defeated for our winconditions and scenarios. So do you vote for 2 (not defeated if able to build a new warehouse / port) or do you propose a third option not defeated until alll warehousess and all militarysites lost?
Top
Quote
|
|
|
hessenfarmer
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2745
One Elder of Players
Location: Bavaria
|
Posted at: 2020-04-16, 16:25
Nordfriese wrote:
The problem with 1) is that there are still more cornercases that will then surface. E.g. if you have no warehouses left but a functioning economy with woodcutters, sawmills, … you can still produce everything to build a new warehouse. (A builder could be kept in "storage" at a disconnected constructionsite.) So we'd also need to periodically destroy all WH csites, and there might be even more loopholes to be found…
I am pretty sure we tested this before and it is not possible to get the materials or the builder to the constructionsite. I think the replay of my last year tournament match against hasi should show this. Reason is as far as I know that routing of worker is dependent somehow on the warehouse. So I would consider destroying the WH constructionsites and sink all ships would do the trick. By this we could also burn all milsites as well.
IMHO the cleanest way would be a C++ change. Let's have a new function Player.mark_as_defeated() that irreversibly turns the player into a real spectator, rather than faking this mode with see_all , and disallowing all playercommands so the player won't be able to do anything at all ever again during that game.
Top
Quote
|
|
|
king_of_nowhere
Joined: 2014-09-15, 18:35
Posts: 1668
One Elder of Players
|
Posted at: 2020-04-16, 18:07
hessenfarmer wrote:
king_of_nowhere wrote:
i would opt for 2: leave him not defeated. in general, a defeated player can also still send attacks while he has still soldiers available. I'd just declare them not defeated.
If he is defeated, he currently can't launch an attack anymore. That should not be changed. Furthermore we need a definition of defeated for our winconditions and scenarios. So do you vote for 2 (not defeated if able to build a new warehouse / port) or do you propose a third option not defeated until alll warehousess and all militarysites lost?
not defeated until all warehouses and all military sites lost.
actually, i would support different definitions for different cases.
I would leave the current definition for AI scenarios.
change to "all warehouses and all military sites" for human vs human. actually, i can still envision a case where a ship in expedition, and some drifting ships with some wares, could restore a full economy. and if we establish trading resources, then one could still give a contribution while defeated. in fact, i'd be in favor of removing the "defeated" status entirely among humans. i mean, it's pretty clear when someone is defeated, i don't see a need for the game declaring it.
and i'd add a win condition to kill the headquarter for seafaring maps, when you cannot conquer all the islands.
Top
Quote
|
|
|
Nordfriese
Joined: 2017-01-17, 18:07
Posts: 2057
OS: Debian Testing
Version: Latest master
One Elder of Players
Location: 0x55555d3a34c0
|
Posted at: 2020-04-16, 20:15
and i'd add a win condition to kill the headquarter for seafaring maps, when you cannot conquer all the islands.
See https://github.com/widelands/widelands/pull/3742
Edited: 2020-04-16, 20:16
Top
Quote
|
|
|
ektor
Joined: 2016-06-16, 09:41
Posts: 98
Likes to be here
|
Posted at: 2020-04-18, 08:59
Nordfriese wrote:
IMHO the cleanest way would be a C++ change. Let's have a new function Player.mark_as_defeated() that irreversibly turns the player into a real spectator, rather than faking this mode with see_all , and disallowing all playercommands so the player won't be able to do anything at all ever again during that game.
I think it's the best thing to do, let the players accept themself the defeat if it's obvious.
hessenfarmer wrote:
- if the last completed warehouse (this means HQ, Port and Warehouse) is destroyed, destroy all constructionsites of warehouses as well. Leaving the defeated player really a spectator (only thing he could do is dismantling/desztroying buildings)
And the 1) is a good option too.
Top
Quote
|
|
|
hessenfarmer
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2745
One Elder of Players
Location: Bavaria
|
Posted at: 2021-01-27, 14:32
As we are approaching a new build I got over some old bugs and found this one.
As there was no clear consensus I'd propose to change the current Win Conditions in the way of option 1 (all buildings of a defeated player get destroyed), and try to add a Wincondition for HQ hunting based on the work of asmaps and finally add a new Wincondition where real resurrection will work (if it is not already covered by endless game)
Any objections?
Top
Quote
|
|
|
kaputtnik
Joined: 2013-02-18, 20:48
Posts: 2552
OS: Archlinux
Version: current master
One Elder of Players
Location: Germany
|
Posted at: 2021-01-28, 10:37
Sounds good to me
Top
Quote
|