Pedirle a la IA que recomiende un mazo de Clash Royale no es difícil. La pregunta que realmente tiene valor es: ¿por qué elegir estas ocho cartas? ¿Cómo se coordinan entre sí? ¿Cómo se deben jugar las cartas al atacar y defender? ¿Y cómo se debe validar el resultado recomendado?

Este artículo toma como ejemplo un mazo de contraataque defensivo con Gigante de 3.5 de elixir de coste medio, y presenta cómo convertir requisitos en lenguaje natural en análisis estratégico estructurado, para después obtener un plan de enseñanza que se pueda comprender, practicar e iterar mediante validación con código y generación de imágenes.

Todo el proceso no consiste en hacer que el modelo dé casualmente el “mazo más fuerte”, sino en dividir el trabajo en cuatro partes:

Definir las restricciones → Analizar el mazo → Validar los resultados → Crear un tutorial visual.

I. Primero, aclarar: ¿qué problema queremos que resuelva la IA?

“Hazme un mazo con el que sea fácil ganar” parece claro, pero en realidad carece de muchas condiciones necesarias: ¿en qué arena está el jugador? ¿Qué cartas ha desbloqueado? ¿Los niveles de las cartas son similares? ¿Se usan cartas evolucionadas, habilidades de campeón o tropas de torre especiales? ¿El jugador está más familiarizado con ciclos rápidos o con contraataques defensivos? El supuesto “fácil”, ¿se refiere a una ejecución simple o a una ventaja evidente contra oponentes específicos?

Si no se proporciona esta información, es muy fácil que el modelo dé una alineación que sea razonable en teoría, pero que en la práctica no se adapte a la cuenta del jugador. Por lo tanto, este caso establece primero los siguientes límites:

Dimensión Restricción de esta ocasión
Selección de cartas Priorizar cartas básicas, comunes y raras frecuentes
Forma de las cartas Forma normal, sin depender de evoluciones ni habilidades de campeón
Condición de tropas de torre Torre de Princesa normal
Condición de niveles Por defecto, los niveles de cartas de ambos lados son similares
Objetivo de manejo Roles claramente definidos, adecuado para aprender
Dirección táctica Organizar un contraataque después de defender con éxito
Límite de evaluación No afirmar que es el más fuerte de la versión en tiempo real, no inventar tasas de victoria

Estas restricciones determinan la dirección del análisis posterior: lo que buscamos es una solución básica fácil de entender y con roles complementarios, no una “fórmula infalible” sin verificar en combate real.

II. Dejar que GPT-6 Astra se encargue del análisis y que el programa se encargue de la validación

Este caso llama a GPT-6 Astra mediante la interfaz Chat Completions de AceDataCloud, y el identificador del modelo en la solicitud es gpt-6-astra. La dirección de la interfaz, el método de autenticación y la estructura de los mensajes siguen la documentación de integración de la plataforma; la disponibilidad del modelo y los parámetros deben basarse en la configuración de la plataforma en el momento de la llamada. Aquí se utiliza el identificador de modelo proporcionado por la plataforma, y no se infiere a partir de ello la disponibilidad de otras entradas de servicio.

Herramienta Trabajo del que se encarga Trabajo que no debe asumir
GPT-6 Astra Explicar los roles de las cartas, analizar la coordinación, organizar los pasos de ataque y defensa Sustituir los datos de combate reales para demostrar la tasa de victoria
Python Validar la cantidad de cartas, elementos duplicados, coste y coste de combinaciones Juzgar la fuerza práctica solo mediante sumas
GPT Image 2 Convertir el plan táctico en un póster didáctico Ser una fuente autorizada de mecánicas del juego

También es necesario distinguir entre el proceso histórico y el método de reproducción: las ocho cartas de este caso ya se habían formado en el análisis preliminar, y posteriormente se llamó realmente a GPT-6 Astra para realizar una revisión estructurada; no se hizo que Astra buscara la solución óptima global en todo el grupo de cartas. El póster didáctico fue generado por Image 2.0.

Registrar el proceso de esta manera no solo facilita la reproducción, sino que también evita exagerar “el modelo participó en el análisis” como “el modelo demostró que era óptimo”.

III. Diseño del prompt: de “recomendar un mazo” a “razonar bajo restricciones”

1. Prompt abierto para formar un mazo

Si se empieza desde el propio grupo de cartas, se puede usar la siguiente plantilla:

Eres un riguroso asistente de análisis didáctico de Clash Royale.

Objetivo:
De las cartas disponibles que te proporcione, elige un mazo de ocho cartas adecuado para jugadores básicos.

Condiciones:
1. Usa únicamente las cartas que ya he desbloqueado.
2. No dependas de evoluciones ni habilidades de campeón.
3. Por defecto, Torre de Princesa normal y niveles de cartas similares.
4. Prioriza un sistema con roles complementarios, ejecución simple y fácil de aprender.
5. Debes explicar el principal método para derribar torres, antiaéreo, limpieza de grupos y forma de defender.

Entrada:
- Mi arena y copas: …
- Cartas disponibles y niveles: …
- Oponentes frecuentes: …
- Mis preferencias de manejo: …

Salida:
- Ocho cartas y sus roles
- Coste total y coste medio
- Motivos de selección
- Pasos de ataque y defensa
- Debilidades claras y el coste de los reemplazos

No inventes tasas de victoria.
Si no hay información en tiempo real, no afirmes que este es el mazo más fuerte de la versión actual.

Lo clave no es la longitud del prompt, sino si proporciona el rango permitido de selección, el objetivo de optimización y las limitaciones que deben reconocerse.

2. Prompt de revisión utilizado en este caso

Para comprobar la solución existente, esta vez la tarea se restringe aún más. A continuación se muestra una versión organizada de los requisitos reales de revisión:

Revisa el siguiente mazo, en lugar de buscar de nuevo la solución óptima de todo el grupo de cartas:

Gigante 5, Mini P.E.K.K.A 4, Mosquetera 4, Bombardero 2,
Esbirros 3, Cañón 3, Flechas 3, Bola de Fuego 4.

Por defecto:
niveles de cartas similares, Torre de Princesa normal, forma normal,
sin evoluciones ni habilidades de campeón.

Devuelve un objeto json válido que incluya:
deck, total_elixir, average_elixir,
advantages, attack_steps, defense_cases,
limitations, validation_note.

Requisitos:
- Explica el rol de cada carta.
- Distingue entre “aprovechar las tropas supervivientes de la defensa” y “obtener unidades gratis”.
- No digas que una combinación de 11 de elixir puede desplegarse completa inmediatamente con 10 de elixir lleno.
- No prometas una defensa sin recibir daño.
- No proporciones daño preciso ni tasas de victoria sin una fuente.

La conclusión principal obtenida de esta llamada real es: la baraja tiene una división de funciones clara, es adecuada para practicar el contraataque defensivo, pero las unidades aéreas necesitan protección, y durante la fase de avance también se deben conservar recursos para responder a ataques por el otro lado. Esto pertenece a un análisis teórico basado en los mecanismos proporcionados, y no equivale a pruebas en simulador ni a estadísticas de la escalera.

Cuatro, obtener análisis estructurado mediante API

La interfaz de Chat Completions utiliza autenticación Bearer Token, y el texto generado puede leerse desde choices[0].message.content.

A continuación se muestra un ejemplo simplificado de reproducción en Python. Antes de ejecutarlo, instala requests y configura ACEDATACLOUD_API_KEY en tu propio entorno de ejecución. No escribas la clave en el repositorio de código ni en el frontend del navegador. El caso real realiza llamadas mediante herramientas MCP; el siguiente código demuestra el método de acceso HTTP correspondiente, y no afirma que este script haya sido probado en el entorno del lector.

import json
import os

import requests

URL = "https://api.acedata.cloud/openai/chat/completions"

# 本案例已核对的输入快照。
# 实际项目应维护版本化卡牌资料,不要依赖模型猜测费用。
cards = [
    {"name": "巨人", "elixir": 5, "role": "只攻击建筑的高血量前排"},
    {"name": "迷你皮卡", "elixir": 4, "role": "地面单体高伤"},
    {"name": "火枪手", "elixir": 4, "role": "远程对地对空"},
    {"name": "炸弹兵", "elixir": 2, "role": "地面范围伤害"},
    {"name": "亡灵", "elixir": 3, "role": "空中部队,可对地对空"},
    {"name": "加农炮", "elixir": 3, "role": "仅对地的防守建筑"},
    {"name": "万箭齐发", "elixir": 3, "role": "清理脆皮群"},
    {"name": "火球", "elixir": 4, "role": "范围伤害与补伤害"},
]

task = """
请复核输入卡组,返回有效的 json 对象。

输出字段:
deck(每项包含 name、elixir、role)、
total_elixir、average_elixir、advantages、
attack_steps、defense_cases、limitations、validation_note。

默认卡等接近、普通公主塔、普通形态,无进化无英雄。
这是已有卡组复核,不是全卡池最优搜索。
没有实时对战数据,不得编造胜率、无伤承诺或精确伤害。
"""

response = requests.post(
    URL,
    headers={
        "Authorization": f"Bearer {os.environ['ACEDATACLOUD_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "gpt-6-astra",
        "messages": [
            {
                "role": "system",
                "content": (
                    "Return a valid json object. "
                    "你是严谨的游戏教学助手,只基于给定事实分析。"
                ),
            },
            {
                "role": "user",
                "content": task + "\n输入卡组:\n"
                + json.dumps(cards, ensure_ascii=False),
            },
        ],
        "response_format": {"type": "json_object"},
        "max_tokens": 2200,
    },
    timeout=(10, 180),
)

response.raise_for_status()
body = response.json()

if body.get("error"):
    raise RuntimeError(body["error"])

choice = body["choices"][0]
if choice.get("finish_reason") != "stop":
    raise RuntimeError("输出未正常结束,请检查返回状态或调整输出预算")

content = choice["message"].get("content")
if not content:
    raise RuntimeError("没有获得可解析的分析内容")

result = json.loads(content)
print(json.dumps(result, ensure_ascii=False, indent=2))

Un detalle de la interfaz encontrado en la práctica

En esta llamada, la primera solicitud en modo JSON fue rechazada por el servidor, y el mensaje de error exigía que los mensajes de entrada incluyeran json. Después de añadir explícitamente la instrucción en inglés Return a valid json object. al mensaje, la solicitud tuvo éxito.

Aquí no es necesario inferir que el fallo haya sido causado necesariamente por mayúsculas y minúsculas u otros factores. Desde el punto de vista de ingeniería, el tratamiento más prudente es: solicitar explícitamente una salida JSON, establecer al mismo tiempo el formato de retorno, comprobar el estado de finalización y, tras el análisis, continuar validando los campos y los valores numéricos.

Que pueda analizarse como JSON solo indica que la sintaxis es válida, no que el análisis del juego sea correcto.

Cinco, baraja final: contraataque defensivo de gigante de 3.5 de elixir

La propuesta de esta vez es la siguiente. El coste procede de los datos de las cartas correspondientes, mientras que las funciones y combinaciones se utilizan para explicar el diseño de esta baraja.

Carta Elixir Función principal Precauciones de uso
Gigante 5 Recibir daño, avanzar, atacar edificios No se encarga de eliminar tropas enemigas
Mini P.E.K.K.A 4 Gestionar objetivos terrestres de mucha vida Puede ser rodeado por tropas pequeñas o desviado
Mosquetera 4 Daño a distancia, principal defensa antiaérea Necesita protección; evita agruparla con otras unidades de retaguardia
Bombardero 2 Eliminar grupos terrestres No puede atacar al aire
Esbirros 3 Segunda defensa antiaérea, daño adicional Vulnerables a Flechas y daño de área
Cañón 3 Distracción en el centro, defensa auxiliar No puede atacar unidades aéreas
Flechas 3 Eliminar grupos frágiles Deben usarse contra objetivos reales
Bola de Fuego 4 Golpear retaguardias agrupadas, daño adicional No se asume que pueda eliminar de un golpe a una Mosquetera del mismo nivel

El valor de esta baraja no reside en la rareza de las cartas individuales, sino en la complementariedad de sus funciones: el Gigante proporciona la presión principal para derribar torres, el Mini P.E.K.K.A gestiona amenazas terrestres, el Bombardero elimina tropas pequeñas que interfieren con el daño de objetivo único, la Mosquetera y los Esbirros proporcionan dos fuentes continuas de defensa antiaérea, el Cañón gana tiempo para infligir daño, y los dos hechizos se encargan de despejar obstáculos y aportar daño adicional.

Verificar el coste con código

No leas únicamente el average_elixir devuelto por el modelo. Un método más fiable es: recalcular usando los datos de entrada ya verificados y realizar una comprobación cruzada con la salida del modelo. Añade el siguiente código después del ejemplo anterior:

trusted_costs = {card["name"]: card["elixir"] for card in cards}

deck = result["deck"]
names = [card["name"] for card in deck]

if len(names) != 8 or len(set(names)) != 8:
    raise ValueError("卡组必须恰好包含8张不同卡牌")

if set(names) != set(trusted_costs):
    raise ValueError("模型更改了本次要求复核的卡组")

for card in deck:
    if card["elixir"] != trusted_costs[card["name"]]:
        raise ValueError(f"费用不一致:{card['name']}")

total = sum(trusted_costs[name] for name in names)
average = total / len(names)

if result["total_elixir"] != total:
    raise ValueError("模型返回的总费用不一致")

if abs(float(result["average_elixir"]) - average) > 1e-9:
    raise ValueError("模型返回的平均费用不一致")

print(f"总费用:{total},平均费用:{average}")

El resultado de la comprobación independiente de costes de este ejemplo es:

Coste total: 5 + 4 + 4 + 2 + 3 + 3 + 3 + 4 = 28
Coste medio: 28 ÷ 8 = 3.5

También se pueden seguir comprobando combinaciones habituales:

Combinación Coste total Uso
Gigante+Bombardero 7 Empuje ligero contra tropas terrestres pequeñas
Gigante+Mosquetera 9 Empuje convencional con capacidad antiaérea
Mini P.E.K.K.A+Bombardero 6 Gestionar por separado tanques y tropas terrestres pequeñas
Cañón+Mosquetera 7 Distracción y daño a distancia
Gigante+Mosquetera+Bombardero 11 Formar gradualmente un empuje completo aprovechando tropas supervivientes o la recuperación de elixir

El último punto merece especial atención: la combinación de 11 de elixir no puede desplegarse por completo de inmediato cuando solo se tienen 10 puntos de elixir. Es más adecuada para formarse con una Mosquetera o un Bombardero que haya sobrevivido a la defensa, junto con un Gigante recién desplegado, en lugar de apilar las tres cartas de una vez. El coste de la combinación es solo un coste de inversión y no demuestra que se pueda obtener ventaja de elixir de forma estable.

VI. Convertir el análisis en un plan de ataque y defensa ejecutable

Ataque: defender primero y luego convertir las tropas supervivientes en presión

La línea principal de este mazo no es invertir en un Gigante al inicio de la partida, sino:

  1. Usar el Cañón o las tropas para gestionar el ataque enemigo.
  2. Observar la vida, la posición y el elixir actual de las unidades supervivientes.
  3. Cuando las condiciones sean adecuadas, añadir un Gigante delante de las tropas supervivientes.
  4. Tras ver la carta de respuesta del rival, decidir si añadir tropas o lanzar un hechizo.
  5. Conservar la capacidad de gestionar un ataque por la otra línea.

Por ejemplo, si la Mosquetera sigue viva tras defender, despliega el Gigante antes de que ella cruce el puente, para que el Gigante reciba primero el daño y la Mosquetera continúe atacando. Aquí, el beneficio de recursos procede de que una unidad por la que ya se ha pagado participa tanto en la defensa como en el contraataque, y no de obtener de la nada una Mosquetera gratis.

Defensa: elegir componentes según la amenaza

Amenaza del rival Enfoque prioritario
Unidades que atacan edificios, como el Montapuercos Usar a tiempo el Cañón en el centro para distraer y añadir cartas según el apoyo
Objetivos terrestres con mucha vida Mini P.E.K.K.A junto con el daño de la torre; si es necesario, usar primero un edificio para cambiar la ruta
Grupos de tropas terrestres pequeñas Gestionarlos con el Bombardero o usar Flechas en el momento adecuado
Ataque aéreo Desplegar por separado a la Mosquetera y los Esbirros para evitar que el daño de área los elimine a la vez
Apoyo de retaguardia agrupado Usar Bola de Fuego para añadir daño y luego dejar que las tropas se encarguen

Todos estos planes dependen de la posición, el nivel, el momento y el apoyo enemigo, y no deben entenderse como fórmulas fijas sin recibir daño. Aunque el Cañón puede atraer unidades aéreas que solo atacan edificios, él mismo no puede atacar al aire.

Explicación de debilidades que debe conservarse

Una salida estratégica de IA cualificada debería indicar claramente al jugador cuándo la partida será difícil:

  • Después de que la Mosquetera y los Esbirros sean eliminados, la presión aérea aumentará claramente.
  • Este mazo no tiene hechizos de reinicio, por lo que no se deben apilar tropas a ciegas frente a defensas de tipo Infernal.
  • Tras invertir en el Gigante, la otra línea puede convertirse en el objetivo de presión del rival.
  • 3.5 de elixir no equivale a un ciclo ultrarrápido; cuando las cartas defensivas clave se alternan, es posible que no vuelvan a la mano a tiempo.

Por lo tanto, el modelo proporciona un punto de partida para practicar; posteriormente, aún debe ajustarse según el nivel de tus cartas, los rivales habituales y los registros de batalla.

VII. Generar un póster didáctico 4K a partir del plan táctico

El texto es adecuado para explicar los motivos, mientras que las imágenes son más adecuadas para mostrar las relaciones de posicionamiento y el orden de despliegue de cartas. Este caso no adoptó el método de organizar mecánicamente ocho cartas grandes, sino que diseñó la imagen en tres etapas didácticas conectadas:

Defensa de bajo coste → Gigante delante, tropas supervivientes avanzan → Ver claramente la respuesta, añadir apoyo.

La imagen siguiente es el póster didáctico generado en esta ocasión por Image 2.0. Tras comprobarlo, el tamaño del archivo de imagen es 3840×2160, 16:9.

Póster didáctico de contraataque defensivo con Gigante de 3.5 de elixir: ocho cartas básicas, costes y pasos de defensa y contraataque

Figura: diagrama didáctico táctico generado por IA; no es una captura de una partida real ni se utiliza para expresar rangos de ataque precisos ni posicionamientos casilla por casilla.

El prompt debe describir las «relaciones didácticas», no solo el «estilo visual»

«4K, rico en detalles, sensación cinematográfica» solo puede describir la dirección visual y no puede garantizar que el resultado generado tenga valor didáctico. Por lo tanto, el prompt también debe incluir:

  • Relación de roles: el gigante delante, el mosquetera y el bombardero detrás.
  • Relación de fases: defensa a la izquierda, contraataque a la derecha, conectados con flechas.
  • Restricciones mecánicas: el gigante solo ataca edificios; el cañón y el bombardero no pueden atacar al aire.
  • Jerarquía de información: título, tutorial de tres pasos, lista de mazo, coste, notas.
  • Explicación de límites: enseñanza de la forma normal, los efectos dependen del nivel de las cartas y de la ejecución.

A continuación se muestra un prompt simplificado adecuado para reproducir la idea, no un registro textual del prompt largo original:

制作一张16:9横版、3840×2160的中文战术教学海报。

主题:皇室战争“3.5费巨人防守反击”。
画面不是卡牌网格,而是生动的3D卡通竞技场教学场景。

左侧:加农炮中场拉扯,迷你皮卡处理地面肉盾,
火枪手对空,炸弹兵清理地面小兵。

右侧:巨人在最前方向敌方建筑推进,
防守存活的火枪手和炸弹兵在后方分散跟进,
亡灵提供空中支援。

用清晰箭头表达:
低费防守 → 补巨人反击 → 看清解牌再补支援。

底部展示八张卡及费用:
巨人5、迷你皮卡4、火枪手4、炸弹兵2、
亡灵3、加农炮3、万箭齐发3、火球4。

标注:
平均圣水3.5;
巨人+炸弹兵=7费;
巨人+火枪手=9费。

提醒:
保留防守圣水、后排分散站位、先看解牌再交法术。

确保中文清晰、战术指向准确。
不要画巨人攻击部队,不要画加农炮或炸弹兵攻击空中。

Configuración de la interfaz de imágenes

La documentación de la interfaz de generación de imágenes admite especificar las dimensiones en píxeles mediante size; la especificación 4K de 16:9 es 3840x2160; escribir únicamente “4K” en el prompt no puede sustituir el parámetro de dimensiones.

La configuración principal del cuerpo de la solicitud es la siguiente, donde prompt debe sustituirse por la descripción completa del póster:

{
  "model": "gpt-image-2",
  "prompt": "此处填写完整的战术教学海报提示词",
  "size": "3840x2160",
  "quality": "high",
  "n": 1,
  "output_format": "png",
  "response_format": "url"
}

La interfaz correspondiente es:

POST https://api.acedata.cloud/openai/images/generations

Fallos y cambios durante el proceso de generación real

En esta ocasión se utilizó inicialmente Image 2.5, pero la tarea terminó con un error explícito del servicio ascendente y no produjo ninguna imagen. Posteriormente, tras confirmar el cambio, se usó gpt-image-2, manteniendo las especificaciones 4K y 16:9, y finalmente la generación se realizó con éxito.

Aquí hay un importante principio de ingeniería:

Mientras la tarea siga en ejecución, consulta la misma tarea; después de que la tarea falle explícitamente, decide si reintentar o cambiar de modelo.

La herramienta de imágenes MCP utilizada en esta ocasión se ejecuta mediante tareas asíncronas: tras el envío se obtiene el ID de la tarea, y luego se consulta hasta que tenga éxito o falle. Al llamar directamente a la interfaz HTTP, se debe manejar la respuesta síncrona o la devolución de llamada asíncrona según la documentación correspondiente; no se deben mezclar las estructuras de retorno de distintos métodos de llamada.

VIII. ¿Cómo convertirlo aún más en una herramienta de iteración sostenible?

Si se quiere ampliar este caso para convertirlo en un verdadero asistente de mazos, se pueden añadir tres capas de capacidad.

1. Datos versionados

Registrar los nombres de las cartas, costes, objetivos de ataque, niveles y fecha de actualización de los datos. Para los datos que cambian fácilmente, como daño, vida y alcance, utilizar información con fuentes, en lugar de depender de la memoria del modelo.

2. Restricciones de la colección de cartas del usuario

Tomar como entrada las cartas desbloqueadas por el usuario y sus niveles. Cuando la diferencia de niveles es muy grande, una combinación teóricamente razonable no necesariamente significa un mejor rendimiento real.

3. Retroalimentación de combate

Registrar continuamente los principales medios de ataque del rival, en qué fase se perdió la ventaja de elixir, si las cartas clave antiaéreas se usaron de forma descoordinada, y si el problema proviene de la estructura del mazo o de la colocación y el momento.

Después, dejar que el modelo proponga sugerencias de ajuste que solo modifiquen una o dos variables cada vez, en lugar de cambiar todo el mazo después de perder cada partida.

El póster también debe someterse a una validación independiente: comprobar si las ocho cartas están completas, si el chino es correcto, si los costes son coherentes y si las flechas apuntan a los objetivos correctos. Que la generación tenga éxito no significa que la validación del contenido haya sido aprobada, y que la resolución sea correcta tampoco significa que el diagrama táctico sea completamente preciso.

Conclusión

Lo que muestra este caso no es que la “IA calcule automáticamente el mazo más fuerte”, sino un método de uso más fiable:

usar restricciones para delimitar la tarea, usar GPT-6 Astra para explicar la combinación, usar código para verificar los valores, usar Image 2.0 para mostrar las tácticas y, después, usar la retroalimentación de combate para corregir el plan.

La idea central del mazo de gigante obtenido finalmente puede condensarse en una frase:

El cañón distrae, el mini P.E.K.K.A. se ocupa de los tanques, la mosquetera cubre el aire, el bombardero limpia grupos; después de defender, deja que el gigante se ponga al frente.

En comparación con recibir solo los nombres de ocho cartas, el mayor valor de este método es que los jugadores no solo saben “qué llevar”, sino que también pueden entender “por qué llevarlo así y cuándo deberían jugar de esta manera”.

Referencias

Este artículo es un caso de práctica de estrategia y desarrollo asistido por IA, y no es una guía oficial de Supercell. La portada y el póster didáctico son imágenes ilustrativas generadas por IA; los personajes y marcas comerciales relacionados con «Clash Royale» pertenecen a sus respectivos titulares de derechos.