Latest Posts

Topic: Definition of player defeated

hessenfarmer
Avatar
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2646
Ranking
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
Avatar
Joined: 2017-01-17, 18:07
Posts: 1929
OS: Debian Testing
Version: Latest master
Ranking
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
Avatar
Joined: 2014-09-15, 18:35
Posts: 1668
Ranking
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
Avatar
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2646
Ranking
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
Avatar
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2646
Ranking
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
Avatar
Joined: 2014-09-15, 18:35
Posts: 1668
Ranking
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
Avatar
Joined: 2017-01-17, 18:07
Posts: 1929
OS: Debian Testing
Version: Latest master
Ranking
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
Avatar
Joined: 2016-06-16, 09:41
Posts: 98
Ranking
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:

  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)

And the 1) is a good option too.


Top Quote
hessenfarmer
Avatar
Topic Opener
Joined: 2014-12-11, 23:16
Posts: 2646
Ranking
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
Avatar
Joined: 2013-02-18, 20:48
Posts: 2433
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: 2021-01-28, 10:37

Sounds good to me face-smile.png


Fight simulator for Widelands:
https://wide-fighter.netlify.app/

Top Quote