---
title: Equipment
framework: tabletopkit
role: symbol
role_heading: Protocol
path: tabletopkit/equipment
---

# Equipment

A protocol for equipment that players directly interact with in a game.

## Declaration

```swift
protocol Equipment : Identifiable where Self.ID == EquipmentIdentifier
```

## Overview

Overview To represent equipment in your game, such as cards, pieces, and dice, following these steps: Create a structure that conforms to this protocol. Declare the initialState property as either BaseEquipmentState, DieState, or CardState, depending on the type of data you want TabletopKit to sync between players. For more complex data, use RawValueState. Declare the id property as a EquipmentIdentifier structure. Implement an initializer that sets the id and initialState properties. Optionally, implement the layoutChildren(for:visualState:) method for equipment that represents groups, and the restingOrientation(state:) method to provide a custom resting orientation.

## Topics

### Gettting the initial state of the equipment

- [initialState](tabletopkit/equipment/initialstate.md)
- [State](tabletopkit/equipment/state.md)

### Displaying the equipment

- [layoutChildren(for:visualState:)](tabletopkit/equipment/layoutchildren(for:visualstate:).md)
- [restingOrientation(state:)](tabletopkit/equipment/restingorientation(state:).md)

## Relationships

### Inherits From

- [Identifiable](swift/identifiable.md)

### Inherited By

- [EntityEquipment](tabletopkit/entityequipment.md)

## See Also

### Equipment

- [Implementing playing card overlap and physical characteristics](tabletopkit/implementing-playing-card-overlap-and-physical-characteristics.md)
- [EquipmentCollection](tabletopkit/equipmentcollection.md)
- [EntityEquipment](tabletopkit/entityequipment.md)
- [EquipmentIdentifier](tabletopkit/equipmentidentifier.md)
- [EquipmentState](tabletopkit/equipmentstate.md)
- [EquipmentStateCollection](tabletopkit/equipmentstatecollection.md)
- [BaseEquipmentState](tabletopkit/baseequipmentstate.md)
- [CustomEquipmentState](tabletopkit/customequipmentstate.md)
- [MutableEquipmentState](tabletopkit/mutableequipmentstate.md)
- [CardState](tabletopkit/cardstate.md)
- [DieState](tabletopkit/diestate.md)
- [RawValueState](tabletopkit/rawvaluestate.md)
- [ControllingSeats](tabletopkit/controllingseats.md)
