Recetas
Las recetas son patrones comunes de múltiples operaciones que logran flujos de trabajo típicos. Utiliza estas como plantillas para tus transacciones y ajusta los IDs y metadatos para que se adapten a tu dominio.
Requisitos previos
Estas recetas asumen que ya tienes lo básico en su lugar. Si te falta algún requisito previo, completa ese paso primero para evitar fallos de validación.
- 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. Este es el patrón más seguro cuando desea un control explícito sobre cada paso.
Cuándo usar: Mover recursos, transferir saldos, reequilibrar inventario.
Operaciones: RemoveFungible, AddFungible
{
"operations": [
{
"op": "RemoveFungible",
"args": {
"class_id": 200,
"key": 1,
"quantity": 150,
"from": {
"container_id": 1001,
"kind": "balance"
}
}
},
{
"op": "AddFungible",
"args": {
"class_id": 200,
"key": 1,
"quantity": 150,
"location": {
"container_id": 1002,
"kind": "balance"
}
}
}
],
"idempotency_key": "transfer-balance-2026-01-15-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 espacio a otro dentro de los mismos o diferentes contenedores. Este patrón preserva la auditabilidad y evita el estado parcial durante los cambios de equipo.
Cuándo usar: Reorganizar inventario, mover equipos, reposicionar artículos.
Operaciones: RemoveFromSlot, PlaceInSlot
{
"operations": [
{
"op": "RemoveFromSlot",
"args": {
"container_id": 1001,
"slot_index": 1
}
},
{
"op": "PlaceInSlot",
"args": {
"container_id": 1001,
"slot_index": 2,
"instance_id": 9001
}
}
],
"idempotency_key": "slot-move-2026-01-15-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,
"flags": 2,
"name": "Battle Tank"
}
}
},
{
"op": "RegisterClassShape",
"args": {
"request": {
"class_id": 300,
"stack_key": null,
"shape": {
"width": 3,
"height": 2
}
}
}
}
],
"idempotency_key": "class-with-shape-2026-01-15-300"
}
Paso 4 - Agregar 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: AddInstance
{
"operations": [
{
"op": "AddInstance",
"args": {
"class_id": 200,
"key": 1,
"location": {
"container_id": 1001,
"kind": "slot",
"slot_index": 1
}
}
}
]
}
Nota: La respuesta del commit lista los IDs de instancia creados bajo created_entities.instances, que puedes utilizar en operaciones posteriores.
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": { "type": "balance" },
"owner": null,
"policies": null
}
},
{
"op": "AddFungible",
"args": {
"class_id": 100,
"key": 1,
"quantity": 1000,
"location": {
"container_id": 2001,
"kind": "balance"
}
}
},
{
"op": "AddFungible",
"args": {
"class_id": 101,
"key": 1,
"quantity": 500,
"location": {
"container_id": 2001,
"kind": "balance"
}
}
}
],
"idempotency_key": "init-container-2026-01-15-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: Adjuntar
{
"operations": [
{
"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 de balance o de red. Las operaciones de ranura requieren contenedores de ranuras. 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
- Referencia de Acción - Referencia completa de operaciones
- Modelo de Error - Comprendiendo fallos
- Python SDK - Constructores de operaciones seguros en tipo