Turn orders issue

For what's not in 'Top Priority Game Design'. Post your ideas, visions, suggestions for the game, rules, modifications, etc.
Message
Author
o01eg
Space Kraken
Posts: 140
Joined: Sat Dec 10, 2011 5:46 am

Turn orders issue

#1 Post by o01eg » Sat Mar 17, 2018 8:02 am

Currently we have a next sequence for turns:
  1. Make orders in UI.
  2. Send them to the server. There button blocks and it impossible to send other orders for this turn. Also other players notified you are ready.
  3. Wait for other players make their turns.
  4. Wait for the server to process turn and go to step 1.
Only exception there is loaded game. Even if player sends orders to server before game will be saved he still got a opportunity to change his orders.

If https://github.com/freeorion/freeorion/pull/2054 will be merged at a current state there will be second exception where player will be allowed to change his order with replacing his connection.

I have a two ideas to unify this:

1) Restrict player from any changes of his orders. Its remove any exception from the current turn sequence.
2) Allow to resend orders. Player will be considered ready after his first send but until all other players get ready he could send new orders. Turn button shouldn't be blocked but it would be useful to have a indication near (may be with ready.png and not_ready.png) so player will see if the server already considered him ready.
Gentoo Linux x64, gcc-7.3, boost-1.65.0
Ubuntu Server 18.04 x64, gcc-7.3, boost-1.65.1
Welcome to multiplayer server at freeorion-test.dedyn.io.Version 2018-08-13.770ca38 0.4.8 pre-RC3
Donates are welcome: BTC:14XLekD9ifwqLtZX4iteepvbLQNYVG87zK

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Turn orders issue

#2 Post by Dilvish » Sat Mar 17, 2018 4:00 pm

I would propose a variation on your #2 proposal:

All existing indicators would remain, but if the player ctrl-clicks the greyed-out turn button then it sends an 'unready' message to the server, if the server receives that unready message before it has received all the ready/order messages then the server would discard the previous orders for that player, mark the player unready and send an acknowledgement back to the player, upon receipt of that acknowledgement the player's UI would re-enable the turn button and allow entering extra orders. (And one of those message exchanges would cause all the other players to see that this player was no longer ready).
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

User avatar
Oberlus
Vacuum Dragon
Posts: 662
Joined: Mon Apr 10, 2017 4:25 pm

Re: Turn orders issue

#3 Post by Oberlus » Sat Mar 17, 2018 4:34 pm

I think a merger of both variants of #2 is better. Thus you can both (a) set a ready state that allows you to keep doing less relevant stuff (that you don't mind to delay to next turn) until everybody is ready without the need for you to keep an eye on the ready-state of all other players, and (b) revert your state to unready if you realised something important is pending and you don't want the turn to pass while you are doing it. The former, (a), may be very useful for multi-players concerned with fast-paced gaming.

o01eg
Space Kraken
Posts: 140
Joined: Sat Dec 10, 2011 5:46 am

Re: Turn orders issue

#4 Post by o01eg » Sat Mar 17, 2018 4:36 pm

Also second way allows AI to make more stronger turns. First it sends quick orders with current algorithm and then while human players make their turns it could think about stronger one.
Dilvish wrote:I would propose a variation on your #2 proposal:

All existing indicators would remain, but if the player ctrl-clicks the greyed-out turn button then it sends an 'unready' message to the server, if the server receives that unready message before it has received all the ready/order messages then the server would discard the previous orders for that player, mark the player unready and send an acknowledgement back to the player, upon receipt of that acknowledgement the player's UI would re-enable the turn button and allow entering extra orders. (And one of those message exchanges would cause all the other players to see that this player was no longer ready).
I'm afraid 'unready' message will lead to infinite turn.
Gentoo Linux x64, gcc-7.3, boost-1.65.0
Ubuntu Server 18.04 x64, gcc-7.3, boost-1.65.1
Welcome to multiplayer server at freeorion-test.dedyn.io.Version 2018-08-13.770ca38 0.4.8 pre-RC3
Donates are welcome: BTC:14XLekD9ifwqLtZX4iteepvbLQNYVG87zK

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Turn orders issue

#5 Post by Dilvish » Sat Mar 17, 2018 4:54 pm

o01eg wrote:I'm afraid 'unready' message will lead to infinite turn.
clarify please-- do you mean that if other players see a player switch from being ready, to unready, they they too would switch to being unready?

While there might be some small tendency to do that, I think people would get over it pretty quickly. And it seems to me like simply the price you have to pay for implementing this kind of feature in a reasonable manner. What would you really propose as an alternative?
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

o01eg
Space Kraken
Posts: 140
Joined: Sat Dec 10, 2011 5:46 am

Re: Turn orders issue

#6 Post by o01eg » Sat Mar 17, 2018 6:09 pm

Dilvish wrote:
o01eg wrote:I'm afraid 'unready' message will lead to infinite turn.
clarify please-- do you mean that if other players see a player switch from being ready, to unready, they they too would switch to being unready?
No, server always waits when all players will be ready. If we allow player to go unready it will reduce chance all player will be ready at the same time.
Dilvish wrote: While there might be some small tendency to do that, I think people would get over it pretty quickly. And it seems to me like simply the price you have to pay for implementing this kind of feature in a reasonable manner. What would you really propose as an alternative?
I propose it in the first post. With the first turn order player gets ready and then only updates his orders while waiting other players.

If there timeouts will be implemented or moderator force turn to end server simply executes latest turn orders. With allowing go unready server executes nothing as server manages ready/unready by checking presence of turn orders in appropriate structure.
Gentoo Linux x64, gcc-7.3, boost-1.65.0
Ubuntu Server 18.04 x64, gcc-7.3, boost-1.65.1
Welcome to multiplayer server at freeorion-test.dedyn.io.Version 2018-08-13.770ca38 0.4.8 pre-RC3
Donates are welcome: BTC:14XLekD9ifwqLtZX4iteepvbLQNYVG87zK

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Turn orders issue

#7 Post by Dilvish » Sat Mar 17, 2018 8:10 pm

o01eg wrote:No, server always waits when all players will be ready. If we allow player to go unready it will reduce chance all player will be ready at the same time.
I've already explained why I think the extra delay would be very minor if even noticeable-- it's hard for me to see how this could be any worse than the current delay where people know they won't have chance at all to amend their order. You haven't clarified how you really think an 'infinite turn' could happen.
I propose it in the first post. With the first turn order player gets ready and then only updates his orders while waiting other players.
I guess I should have clarified my concern with that-- it sounds to me like your original proposal would lead to many situations where a player thought they had submitted revised orders, but actually they had not quite gotten them submitted in time simply because other people completed there orders a fraction of a second prior to the revised orders being submitted. That would be a mess that should be avoided, and can readily be avoided as I described (or in other ways, I suppose). In cases where forced turn ends are a possibility, the risk of similar confusion could at least be very substantially reduced.
If there timeouts will be implemented or moderator force turn to end server simply executes latest turn orders. With allowing go unready server executes nothing as server manages ready/unready by checking presence of turn orders in appropriate structure.
So, from my original suggested variant for proposal 2, drop the part about the server discarding the previously submitting orders just because the player has unreadied themselves. So those orders could still be in place should there be a server timeout or moderator forced turn end. But I would also say that both such forced turn ends should come with a brief warning to the player, such as a 5-10 second period where their turn button flashes yellow with a countdown timer during which they could still submit any final orders.

There could also be a bit of additional handshake & warning process to completely eliminate all uncertainty about whether revised orders were submitted in time. This extra bit could probably be used even if the player were not allowed to change their status from ready to unready, but keep in mind that if you don't allow such then you encourage players to delay entering the ready state until they have an extra-high level of confidence that they won't change their mind. I am inclined to believe that the overall effect of allowing a player to go from ready to unready would likely wind up speeding up the games once players were used to it.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

o01eg
Space Kraken
Posts: 140
Joined: Sat Dec 10, 2011 5:46 am

Re: Turn orders issue

#8 Post by o01eg » Sun Mar 18, 2018 12:55 pm

I'm afraid of such situation on attached picture. But maybe a better to implement a variant with 'unready' message and if it lead to infinite turn make an option to disable it.
Attachments
turnorders.gif
turnorders.gif (9.63 KiB) Viewed 487 times
Gentoo Linux x64, gcc-7.3, boost-1.65.0
Ubuntu Server 18.04 x64, gcc-7.3, boost-1.65.1
Welcome to multiplayer server at freeorion-test.dedyn.io.Version 2018-08-13.770ca38 0.4.8 pre-RC3
Donates are welcome: BTC:14XLekD9ifwqLtZX4iteepvbLQNYVG87zK

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Turn orders issue

#9 Post by Dilvish » Sun Mar 18, 2018 3:02 pm

o01eg wrote:I'm afraid of such situation on attached picture.
It has already been very clear that you are afraid of something like that. It's almost offensive if you really didn't think I understood that much. :lol:

What is not at all clear, and what I have been asking you to clarify, is how you think such a pattern would continue indefinitely-- why you think that cycle would ever continue for any more than what you actually show there, and why you think even that much vacillation would happen for more than a brief settling in time while players get accustomed to the new dynamic.

The players have learned to generally avoid infinite turns with the current end-turn process, and I think they'd manage just fine with a new one also. Fear of them failing to do so might be a reason to implement a timer, but would not be a reason to establish an error-prone process.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

Ophiuchus
Vacuum Dragon
Posts: 505
Joined: Tue Sep 30, 2014 10:01 am

Re: Turn orders issue

#10 Post by Ophiuchus » Mon Mar 19, 2018 8:05 am

What I would like about the non-blocking ready system: it would allow for faster pace games and it may lead to less frustration.

So lets say, after a player presses the "its-ok-if-the-turn-advances" button, one can still give refining orders until all players have pressed once the "its-ok-if-the-turn-advances" button.

That way the slowest player that turn makes all important decisions. While the other players can wait actively doing not-so-important decisions. Everybody is busy, nobody is bored.

Probably in a basic implementation AI would do their normal orders and then "press" the button.

I also like the idea of the warning "going-to-advance-turn in 1minute", with the ability to press the "finish-the-turn-button" for locking orders and speedup of end of turn.

If everybody is prioritizing and fast, that means a lot of non-so-important decisions do not have to been made at all, effectivily saving life time of all the players involved ;)

@oleg For multiplayer, maybe we can make the AI serverless. Each AI would get its own virtual cpu in parallel and hopefully would be finished before any player is. We do not need cpu power waiting until everybody is finished, but if it is finished we need a lot. This would scale to any number of AI :)
(and doing it this way, maybe if someone like you is maintaining a server, you dont have to pay for the AI processing cost, but people could plug in their own processing power)
Any code or patches in anything posted here is released under the CC and GPL licences in use for the FO project.

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Turn orders issue

#11 Post by Dilvish » Mon Mar 19, 2018 9:03 am

Ophiuchus wrote:What I would like about the non-blocking ready system: it would allow for faster pace games and it may lead to less frustration.
I myself am still pretty convinced that without the ability to 'unready' themselves, or at least have a guaranteed extra amount of time from a countdown, players will have a bigger incentive to extra-sure they have done everything before they 'ready' themselves, and that the game would actually progress more quickly if they have the 'unready' option.

This scenario you paint where players would pick a handful of really important orders to submit, and even though they have a bunch of other stuff they know they'd prefer to do that turn they would still hit the turn advance button and just try to squeeze in whatever portion of that extra stuff they happened to be able to do before everyone else did the same, seems unrealistic. If people know they want to do something, then they'd generally want to make sure they'd done it before they ended their turn.

In my opinion, the more significant opportunity to speed up the game is to cut out the period of time where people have finished everything they can think of, but they still sit there looking everything over, hemming and hawing, unwilling to say "OK my turn is definitely over" until they are really convinced they are not forgetting something.

Whereas on the other hand people are more comfortable relinquishing their turn quickly if it is a relaxed environment where they know that even after passing the turn to the next guy they could still think a bit and say "oh wait I forgot to do X, please let me do that", and that situation is more akin to being able to go back to 'unready'.

With a timer and warning, there is no risk of infinite turns. It wouldn't even necessarily have to be a fixed timer-- it could be that once all but one player are ready that a short countdown starts (and there could be a longer timer that applies if multiple players are not ready).

It could be that the timer is the real key, so long as the player would get a countdown timer before the turn ended, then for my concerns that would be close enough to what I was proposing for the unready status; I just strongly think you need to avoid a situation where the turn ends abruptly without warning while a player is trying to submit a last-second order.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

Telos
Space Floater
Posts: 21
Joined: Thu May 09, 2013 4:46 am

Re: Turn orders issue

#12 Post by Telos » Tue Mar 20, 2018 2:42 am

I've played quite a lot of multi-player Dominions on Llamaserver, which is fairly representative of FreeOrion (another 4X game where players submit orders to servers roughly simulataneously, then the server executes all orders at once and resolves the ensuing battles).

A common setting on Llamaserver allows players to revise their submitted turns, so long as not all players have submitted a turn yet (and so long as a deadline timer hasn't expired), as in the OP's second proposal. I have definitely made use of the opportunity to revise orders, and would definitely be slower about submitting my turns if I didn't have the comfort of knowing that I could fix mistakes if they occurred to me soon enough. So I definitely think that an opportunity to revise your turn is valuable, and has the net effect of making the game go faster.

I don't think Llamaserver has a "belay those orders!" option, but I can also see how that would be helpful, and could help to reduce frustration and confusion that would arise in cases where players start issuing new orders, then the turn advances on the basis of their old orders, and they need to sort out their memories of which of the orders they remember having made really happened, and which didn't. So I'd be in favor of a "belay those orders!" option. It might even make sense to (at least have an option) make this automatic, as soon as a player enters new orders in their interface, sending a "belay" message to the server (or popping up a dialogue asking whether they player wants to).

If you want to ensure infinite turns won't happen, probably the best way is with a turn clock. Without a turn clock, you're just counting on the players to be good sports, which fortunately they often are. I don't think having a "belay those orders" button would have the net effect of increasing turn length very much -- might even decrease it -- and regardless twould be worth it due to the frustrations avoided.

Telos
Space Floater
Posts: 21
Joined: Thu May 09, 2013 4:46 am

Re: Turn orders issue

#13 Post by Telos » Tue Mar 20, 2018 2:46 am

Another option that could work well in conjunction with a turn clock would be to give players a "I'm ready" check box. Once all players have clicked "I'm ready" then the turn would advance. Otherwise, it would advance when the timer expires. In many circumstances it could make sense for a player to submit some orders, so they'll be sure that vital stuff will happen even if they don't manage to revisit those orders, so it would make sense for them not to click "I'm ready".

User avatar
Vezzra
Release Manager, Design
Posts: 4606
Joined: Wed Nov 16, 2011 12:56 pm
Location: Sol III

Re: Turn orders issue

#14 Post by Vezzra » Thu Mar 22, 2018 11:48 am

Just wanted to note that I pretty much agree with Dilvish assessments. I don't think the "inifinite turn" issue is actually going to happen in reality. A player will only "unready" their turn when something they have missed or want to change comes to their mind, which I expect to be the exception. "Unreadying" multiple times within one turn sounds like an extremly unrealistic scenario.

Telos idea of doing an automatic "unready" when a player submits orders after finishing their turn also sounds worth considering.

User avatar
Oberlus
Vacuum Dragon
Posts: 662
Joined: Mon Apr 10, 2017 4:25 pm

Re: Turn orders issue

#15 Post by Oberlus » Tue Apr 03, 2018 8:54 am

I think multiplayer players' opinions should weight more on this than non-multiplayer's.

Infinite turns won't happen for obvious reasons: players would die, sun will engulf earth and kill servers, etc.
The point is that o01eg's proposal would encourage/facilitate faster paced games, and that is a very valuable characteristic.

Post Reply