Editorial illustration: Two taps and one card with a stable ID

Two taps and one card with a stable ID

The problem I needed to solve

Overlapping Joker cards can change visual order after movement. Index-based selection could preview one card and transfer another.

Implementation in this snapshot

JokerSceneRunner receives selection by InstanceId. The first tap previews, and another tap on the same card confirms; tapping another card changes preview rather than acting as a timed double-click detector.

The design decision and its cost

Only the donor hand becomes selectable, and all hands close input before transfer. JokerCardView’s raycast filter restricts touch to the exposed portion of each card.

Current boundaries

Correct vertical-hand selection depends on orientation and exposed fraction. Stable identity does not automatically solve every scene Raycast target or overlap issue.

Review scenarios and contract meaning

The error scenario needs no complex timing: a player touches the third card, the hand reorders, and the third position now belongs to another card. Index-based confirmation can transfer a different card from the preview. InstanceId addresses the card instance and reduces dependence on position. Two taps in this contract mean selecting and confirming that same instance; they are not a timed double-click detector. Touching another instance changes the preview and leaves the player an opportunity to choose.

The input layer must preserve that promise too. Only the donor hand is selectable, and input closes before transfer so an in-progress move cannot accept another choice. The raycast filter considers the exposed card portion because the whole overlapping rectangle should not become an equivalent touch target. This needs checking against orientation and exposed fraction; vertical and horizontal hands can feel different. Selecting after reordering, touching the border between cards and rapid input during transfer help distinguish identity issues from input geometry.

Preview is a small interface promise and the earlier preview should clear when choice changes. Two highlighted cards can make confirmation ambiguous even with correct identifiers. I raise this as a presentation review concern rather than a completed test. Stable identity matters, but understandable selection also needs the preview to stay synchronized with that instance.

What this stage taught me

For me, a tap should promise exactly the card that moves. Stable identity and preview feedback address one problem together: players understand their choice and the model receives that same choice.

Explore Dalo

Latest devlogs

Editorial illustration: Pasur launch and telemetry in the shared structure

Pasur launch and telemetry in the shared structure

Adding Pasur needs both a correct mode handoff and valid public telemetry.

Read article
Editorial illustration: Pasur bot decisions from capture options

Pasur bot decisions from capture options

My teammate’s Pasur bot chooses among legal options without inspecting hidden opposing cards.

Read article
Editorial illustration: Capturing table cards in Pasur

Capturing table cards in Pasur

In my teammate’s implementation, Pasur combines selecting a hand card with selecting table cards. Its rules must produce valid sets and prohibit ignoring an available capture.

Read article
Dalo