Sorry, we don't support your browser.  Install a modern browser

Card Front Face Visibility Desynchronization#3100

Hello. Thank you for reading this.
My issue is :

In multiplayer sessions, custom cards that have been unhidden via setHiddenFrom({}) remain visually hidden (showing the back face) for certain client players, while the host always sees them correctly.

[Reproduction]
Exact reproduction steps have not been identified. The issue does not occur at the start of the game but emerges after some time has passed during a session. Reproduction with two devices has failed so far.

[Setup]

  1. Cards are created from a custom deck, custom Lua script is attached on each card. (They are placed on the table one by one, prevented from being merged into a deck)
  2. The “Back is hidden” option is enabled.
  3. At game start, setHiddenFrom({everyone}) is applied to all table cards. (Though I believe this is not the root cause, based on Observed Behavior No.5.)
  4. When a card is acquired by a player, setHiddenFrom({}) is called to unhide it.
  5. When the card owner places the card from their hand zone onto the table, it should be visible to all players.

[Observed Behavior]

  1. The host always sees all card fronts correctly, regardless of color/perspective settings.
  2. Manually calling setHiddenFrom({}) on the affected card does not resolve the issue for the client.
  3. The client player rejoining the session fixes the issue only for that client.
  4. Calling OBJ.reload() or cloning the card makes it visible to the client again. (a copy, in the case of cloning.)
  5. Removing the initial setHiddenFrom({everyone}) call at game start did not prevent the problem.

Given that all cards appear normally to the host, that certain cards are visible to some players but not others, and that leaving and rejoining the session resolves the issue, I suspect this is a P2P desynchronization problem — however, I have no idea how to address it.

I attempted to work around this by calling reload() when an event occurs (for example, calling reload() on onDrop after a card leaves the hand), but since the scripts on the card itself — especially UI components — get reset, resolving that would make the Lua script excessively long…

I would be truly grateful if you could let me know whether this issue can be resolved at the system level, or if there is a better approach.

4 days ago