How to handle user error during simultaneous private phases?

In my Antiquity module, city building is simultaneous and private. I have handled this by sending all the pieces the players need to private windows, on which no moves are reported. There is a commit counter property, and when players = player number have clicked “commit” (which is of course reported), the build phase ends and all the pieces are sent back to public windows with a report on what everyone built.

This works fine as long as no-one makes any mistakes.

Potential problems are:

In an asynch game, someone starts a log before clicking through to the end of the previous log. After 4 logs are submitted, the phase doesn’t end, and no-one knows where the error lies or how much of which log(s) have been lost. In one game, even having every player click commit again was insufficient to proceed, the game was stuck until 3 logs were redone.

In a server game, someone uses undo and undoes something someone else did at roughly the same time. No reports, so it’s difficult to tell what is undone. The UI attempts to mitigate this by not deleting any pieces during building and making it easy to send pieces back and change layouts, but I can’t prevent use of undo entirely.

Are there any solutions to these problems? How are private phases usually handled? Should I include an override button to end the private phase prematurely in an asynch game, even if doing so is guaranteed to cause someone’s build to be incomplete?

Yeah I had the same issue in my module. One thing I did that helped mitigate the issue is that I added an audible “click” sound for every activity in the simultaneous phase that is difficult to trace an undo. So if a player hears a bunch of clicks, he knows other players are still busy doing stuff. So when he needs to undo something and heard a bunch of clicks, he can put everyone on high alert. It doesn’t eliminate the issue but it certainly makes it more manageable.

Nice idea. Doesn’t really work for my module, but nice idea.

Perhaps it would be be possible to create your own “undo” buttons to cover the most common mistakes? For example, if people frequently discard the wrong card, have a button which will redraw the last card discarded by that player (which would use a Global Property that gets set when the card is discarded)?

Yes, I discouraged use of undo by replacing discard/delete commands with labelled areas to place goods to be used, etc. Nothing actually gets discarded until all the players click commit, at which point everything gets discarded and reported. So there’s no real reason to use undo, but that doesn’t necessarily mean no-one will.

Sounds like a feature request: ability to turn “undo” on and off.

That would be a really good feature request, makes a lot of sense.