Recetas
Las recetas son patrones comunes de múltiples operaciones que logran flujos de trabajo típicos. Utilice estos como plantillas para sus transacciones.
Requisitos Previos
- Comprensión de operaciones
- Clases de activos registradas para su dominio
- Contenedores creados para origen y destino
Paso 1 - Transferir el saldo fungible entre contenedores
Mueva una cantidad fungible de un contenedor a otro utilizando operaciones de eliminar y agregar.
Cuándo usar: Mover recursos, transferir saldos, reequilibrar inventario.
Operaciones: RemoveFungible, AddFungible
{
"operations": [
{
"op": "RemoveFungible",
"args": {
"container_id": 1001,
"class_id": 200,
"key": 1,
"quantity": 150
}
},
{
"op": "AddFungible",
"args": {
"container_id": 1002,
"class_id": 200,
"key": 1,
"quantity": 150
}
}
],
"idempotency_key": "transfer-balance-1001-1002"
}
Alternativamente, use TransferFungible para una transferencia de operación única:
{
"operations": [
{
"op": "TransferFungible",
"args": {
"from_container": 1001,
"to_container": 1002,
"class_id": 200,
"key": 1,
"quantity": 150
}
}
]
}
Paso 2 - Mover Instancia Entre Slots
Reubique una instancia única de un slot a otro dentro de los mismos o diferentes contenedores.
Cuándo usar: Reorganizar inventario, mover equipos, reposicionar artículos.
Operaciones: RemoveFromSlot, PlaceInSlot
{
"operations": [
{
"op": "RemoveFromSlot",
"args": {
"container_id": 1001,
"slot_index": 0
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"slot_index": 1,
"instance_id": 9001
}
}
],
"idempotency_key": "slot-move-9001"
}
Para intercambiar dos espacios ocupados, utilice SwapSlots en su lugar.
Paso 3 - Registrar Clase con Shape
Defina una nueva clase de activo y configure inmediatamente su forma de cuadrícula en una sola transacción.
Cuándo usar: Configuración de nuevos tipos de activos que se colocarán en contenedores de cuadrícula.
Operaciones: RegisterClass, RegisterClassShape
{
"operations": [
{
"op": "RegisterClass",
"args": {
"request": {
"class_id": 300,
"name": "Battle Tank",
"fungible": false
}
}
},
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": 300,
"shape_id": 1,
"width": 3,
"height": 2
}
}
}
],
"idempotency_key": "class-with-shape-300"
}
Paso 4 - Acuñar y Colocar Instancia
Cree una nueva instancia única y colóquela inmediatamente en un espacio.
Cuándo usar: Generación de elementos, creación de equipos, adición de muestras.
Operaciones: MintInstance, PlaceInSlot
{
"operations": [
{
"op": "MintInstance",
"args": {
"class_id": 200,
"key": 1
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"instance_id": 9001,
"slot_index": 0
}
}
]
}
Nota: Necesita conocer el ID de instancia que se va a acuñar. Utilice un esquema de asignación determinista o envíe la acuñación y la colocación como transacciones separadas.
Paso 5 - Configurar Contenedor con Saldo Inicial
Cree un contenedor y pobléelo con recursos iniciales.
Cuándo usar: Inicializando inventarios de jugadores, creando nuevo almacenamiento, configurando experimentos.
Operaciones: CreateContainer, AddFungible
{
"operations": [
{
"op": "CreateContainer",
"args": {
"container_id": 2001,
"kind": "Standard",
"owner": null
}
},
{
"op": "AddFungible",
"args": {
"container_id": 2001,
"class_id": 100,
"key": 1,
"quantity": 1000
}
},
{
"op": "AddFungible",
"args": {
"container_id": 2001,
"class_id": 101,
"key": 1,
"quantity": 500
}
}
],
"idempotency_key": "init-container-2001"
}
Paso 6 - Adjuntar Equipos al Personaje
Cree relaciones de padre-hijo entre instancias para equipos o componentes.
Cuándo usar: Equipar elementos, adjuntar componentes, construir jerarquías.
Operaciones: MintInstance, Attach
{
"operations": [
{
"op": "MintInstance",
"args": {
"class_id": 300,
"key": 1
}
},
{
"op": "Attach",
"args": {
"child_instance": 9002,
"parent_instance": 9001
}
}
]
}
Para eliminar el equipo, utilice Detach seguido de la ubicación deseada.
Solución de problemas
El orden importa
Las operaciones se ejecutan secuencialmente. Asegúrese de que las operaciones anteriores creen el estado del cual dependen las operaciones posteriores.
Utilizar claves de idempotencia
Siempre incluya claves de idempotencia para las operaciones que modifican el estado. Esto previene compromisos duplicados en caso de reintentos.
Verificar tipos de contenedores
Las operaciones de balance requieren contenedores Standard o Grid. Las operaciones de slot requieren contenedores Slots. Los tipos desajustados causan errores WrongContainerKind.
Validar cantidades
Asegúrese de que los contenedores de origen tengan un saldo suficiente antes de las transferencias. Un saldo insuficiente provoca que toda la transacción se revierta.
Próximos pasos
- Operaciones por Dominio - Referencia completa de operaciones
- Modelo de Error - Comprendiendo fallos
- Python SDK - Constructores de operaciones seguros en tipo