For the complete documentation index, see llms.txt. This page is also available as Markdown.

Unreal

Si has creado juegos con Unreal, hay algunas diferencias clave que necesitarás conocer para empezar en All Out.


Esta guía es para desarrolladores de Unreal Engine (Blueprints / C++) que están pasando a All Out y CSL (El lenguaje de scripting personalizado de All Out).

El gran cambio (modelo mental)

En Unreal, a menudo piensas en términos de:

  • Actores en un mundo (generados, replicados, poseídos)

  • Componentes adjuntos a Actores

  • Blueprint graphs / C++ impulsando el gameplay

  • RPC + replicación lo defines explícitamente

En All Out, normalmente pensarás en términos de:

  • Entidades en una escena (con componentes)

  • Componentes (componentes proporcionados por el motor + tus propios componentes CSL)

  • Habilidades para las acciones del jugador (UI primero para móvil + tiempo de reutilización + apuntado)

  • Gameplay compartido y predicho donde la sincronización de estado es automática (sin infraestructura RPC personalizada para la mayoría del gameplay)

  • Transformaciones 2D using v2 posición y escala más un ángulo de rotación

Mapeo rápido: Unreal → All Out / CSL

Unreal
All Out / CSL
Notas

UWorld / Level

Escena

Las entidades existen en la escena; también puedes crearlas/destruirlas en tiempo de ejecución.

AActor

Entidad

Las entidades tienen transformaciones 2D y componentes.

Ubicación del actor

Entity.local_position / world_position

Decide cómo Unreal X/Y/Z se mapea al plano 2D X/Y del juego.

Rotación del actor

Entity.local_rotation

All Out usa un solo ángulo de rotación en grados.

Escala del actor

Entity.local_scale

All Out usa v2; no existe escala Z de gameplay.

UActorComponent

Component

Defines el gameplay escribiendo componentes CSL y adjuntándolos a entidades.

BeginPlay

ao_start

Punto de entrada del ciclo de vida del componente.

Tick(float DeltaTime)

ao_update(dt) / ao_late_update(dt)

Usa actualización tardía para patrones de UI/entrada usados por el motor (por ejemplo, botones de habilidades).

Blueprint graphs

Código CSL

Basado en texto, compilado como parte de tu proyecto.

Pawn/Character

Player_Base subclases

La lógica de tu jugador normalmente vive en un Player componente/clase.

Mapeos de entrada

Habilidades + asignaciones de teclas

Prioridad móvil: prefiere botones de habilidades en lugar de entrada cruda.

Replicación (Replicado vars)

Sincronización automática de estado

Escribe una única ruta de gameplay predicha en lugar de versiones separadas de cliente/servidor.

RPCs (Servidor, Cliente, NetMulticast)

Normalmente no se necesita

Usa las facilidades del motor (por ejemplo, notificaciones) en lugar de una proliferación de RPC personalizados.

Generación de actores

Scene.create_entity() / Scene.instantiate(Prefab_Asset)

Los prefabs son assets y pueden instanciarse.

UAsset referencias

get_asset(...)

Los assets viven en /res y se referencian por ruta.

Tu primer archivo CSL (imports)

CSL usa un único patrón de importación “raíz”: importa en main.csly no disperses imports en cada archivo.

Entidades y componentes (vs Actores y Componentes)

Creación de una entidad en tiempo de ejecución

Añadir y acceder a componentes

Escribir un componente personalizado (ciclo de vida)

Los procs globales del ciclo de vida se ejecutan en cada simulación de escena participante; no son solo para el servidor. Los clientes que se unan tarde pueden recibir un componente cuyo ciclo de vida de inicio ya se ejecutó, así que reconstruye la presentación a partir del estado sincronizado en ao_on_state_sync cuando sea necesario. Consulta Ciclo de vida del juego/fotograma.

Iteración de entidades/componentes

Acciones del jugador: usa Habilidades (en lugar de entrada cruda)

Los proyectos de Unreal a menudo empiezan con enlaces de entrada (Enhanced Input) y luego construyen la UI/UX encima. En All Out, Habilidades son la forma predeterminada de implementar acciones del jugador con:

  • Una interfaz compatible con móviles de botones

  • Tiempos de reutilización

  • Apuntado opcional (arrastrar para apuntar en móvil, apuntar con ratón en PC)

Dibuja los botones de habilidad desde Player.ao_late_update interior de ese jugador is_local_or_server():

Ver: Habilidades para la API completa y los patrones.

Red: “la replicación” no es tu trabajo (la mayor parte del tiempo)

Qué es diferente de la replicación de Unreal

  • El gameplay normal se ejecuta en el cliente que predice y en el servidor autoritativo.

  • Generalmente no escribes RPCs para flujos estándar de gameplay.

  • Aun así debes diseñar pensando en varios jugadores : evita el estado global; guarda el estado por jugador en la instancia del jugador.

  • No protejas el gameplay normal con Game.is_server() o desactivarás la predicción.

IU del jugador vs anulaciones visuales locales

Usa estos patrones:

  • is_local_or_server() para los controles + IU de gameplay

  • is_local() solo para anulaciones visuales específicas del jugador

Ver Fundamentos de redes.

Assets, prefabs y rutas

El /res carpeta

Los assets están en /res. Al referenciar assets, omite /res de la ruta.

Prefabs

Los prefabs son assets y pueden instanciarse mediante Escena:

Eventos de colisión y solapamiento (error común en Unreal)

Un collider habilitado con is_trigger establecido puede llamar a on_trigger_start, on_trigger_stay, y on_trigger_end. Cada callback recibe el collider del trigger y el otro collider. Un Movement_Agent no es necesario.

CSL no expone un callback general de impacto sólido equivalente a OnHit. Usa un trigger para el comportamiento de solapamiento del gameplay. Para detección amplia, consulta componentes cercanos:

Ver: Navmesh y colisión.

Diferencias de UI (UMG vs UI de CSL)

Los juegos de All Out son prioridad móvil, así que evita construir una UX solo para teclado. Usa las utilidades de UI del motor y los botones de habilidades.

Para UI personalizada, empieza con Fundamentos de la UI o Inicio rápido de UIDoc.

Flujo de partida, inventario, interactuables

Si buscas equivalentes a sistemas de gameplay comunes de Unreal:

“Trampas” de Unreal a CSL

  • No construyas una capa personalizada de RPC/replicación: empieza con la ruta de gameplay compartida y predicha y deja que el motor sincronice el estado.

  • No protejas el gameplay con Game.is_server(): el gameplay normal también debe ejecutarse en el cliente que predice.

  • Evita singletons globales para el estado del gameplay: se conectan varios jugadores; guarda el estado en el jugador o en la instancia del componente relevante.

  • Los imports están centralizados: importa carpetas una sola vez desde main.csl, no por archivo.

  • Prefiere Habilidades para las acciones: resuelve de forma consistente la UX móvil + tiempos de reutilización + apuntado.

  • Mapea diseños 3D a 2D: usa capas de renderizado en lugar de una transformación Z.

Próximos pasos

Última actualización