<!--
{
  "availability" : [
    "visionOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "TabletopKit",
  "identifier" : "/documentation/TabletopKit/TabletopAction",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "TabletopKit"
    ],
    "preciseIdentifier" : "s:11TabletopKit0A6ActionP"
  },
  "title" : "TabletopAction"
}
-->

# TabletopAction

A protocol for objects that describe an action in a tabletop game.

```
protocol TabletopAction
```

## Topics

### Getting the player

[`var playerID: PlayerIdentifier?`](/documentation/TabletopKit/TabletopAction/playerID)

The player performing the action.

### Getting game-specific information

[`var context: UInt64`](/documentation/TabletopKit/TabletopAction/context)

An integer value that your game uses.

### Moving equipment

[`static func moveEquipment(some Equipment, childOf: any Equipment, order: MoveEquipmentAction.Order?, pose: TableVisualState.Pose2D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/moveEquipment(_:childOf:order:pose:context:))

[`static func moveEquipment(matching: EquipmentIdentifier, childOf: EquipmentIdentifier, order: MoveEquipmentAction.Order?, pose: TableVisualState.Pose2D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/moveEquipment(matching:childOf:order:pose:context:))

### Changing equipment state properties

[`static func updateEquipment<E>(E, faceUp: Bool?, seatControl: ControllingSeats?, pose: TableVisualState.Pose2D?, boundingBox: Rect3D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:faceUp:seatControl:pose:boundingBox:context:))

[`static func updateEquipment<E>(E, rawValue: UInt64?, seatControl: ControllingSeats?, pose: TableVisualState.Pose2D?, boundingBox: Rect3D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:rawValue:seatControl:pose:boundingBox:context:))

[`static func updateEquipment<E>(E, seatControl: ControllingSeats?, pose: TableVisualState.Pose2D?, boundingBox: Rect3D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:seatControl:pose:boundingBox:context:))

[`static func updateEquipment<E>(E, state: E.State, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:state:context:)-6kawf)                             

[`static func updateEquipment<E>(E, state: E.State, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:state:context:)-88v3m)                             

[`static func updateEquipment<E>(E, state: E.State, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:state:context:)-8tmnn)                             

[`static func updateEquipment<E>(E, state: E.State, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:state:context:)-j62v)                              

[`static func updateEquipment<E>(E, value: Int?, seatControl: ControllingSeats?, pose: TableVisualState.Pose2D?, boundingBox: Rect3D?, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateEquipment(_:value:seatControl:pose:boundingBox:context:))

### Taking turns

[`static func setTurn(forSeat: some TableSeat, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/setTurn(forSeat:context:))

[`static func setTurn(forSeats: some Sequence, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/setTurn(forSeats:context:)-3msxi)                                    

[`static func setTurn(forSeats: some Sequence<any TableSeat>, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/setTurn(forSeats:context:)-4sgng)                                    

[`static func setTurn(matching: TableSeatIdentifier, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/setTurn(matching:context:)-6mq07)                                    

[`static func setTurn(matching: [TableSeatIdentifier], context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/setTurn(matching:context:)-88ymv)                                    

### Keeping score

[`static func updateCounter(ScoreCounter, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateCounter(_:context:))

[`static func updateCounter(matching: ScoreCounter.Identifier, value: Int64, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/updateCounter(matching:value:context:))

### Creating bookmarks

[`static func createBookmark(StateBookmark, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/createBookmark(_:context:))

[`static func createBookmark(id: StateBookmarkIdentifier, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/createBookmark(id:context:))

### Adding actions

[`static func customAction(some CustomAction, context: UInt64) -> Self`](/documentation/TabletopKit/TabletopAction/customAction(_:context:))

## Relationships

### Conforming Types

[`UpdateEquipmentAction`](/documentation/TabletopKit/UpdateEquipmentAction)

[`UpdateCounterAction`](/documentation/TabletopKit/UpdateCounterAction)

[`CreateBookmarkAction`](/documentation/TabletopKit/CreateBookmarkAction)

[`MoveEquipmentAction`](/documentation/TabletopKit/MoveEquipmentAction)

[`SetTurnAction`](/documentation/TabletopKit/SetTurnAction)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)