Novedades de Evergine Studio

En esta versión hemos hecho importantes mejoras en la experiencia de usuario de Evergine Studio. En este artículo repasamos los principales cambios, que esperamos que os gusten y que hagan un poco más fácil el día a día con vuestros proyectos en Evergine Studio.

Evergine Studio 2026.11.4.444 con una escena abierta

Simulación de behaviors y física desde Evergine Studio

Evergine Studio incorpora un modo Play que permite simular behaviors y física dentro del propio editor. Era una de las funcionalidades más demandadas. Hasta ahora, para ver cómo se comportaba una escena había que compilar y lanzar la aplicación, y volver al editor para retocar lo que no estuviera bien. Ahora puedes montar escenas de física complejas o comprobar la implementación y el comportamiento de tus behaviors directamente desde Evergine Studio, con un solo clic.

En la barra superior del viewport de la escena hay tres nuevos botones:

Ejecución de una escena con Play, Pause y Step en el Scene Viewer

El modo Play ejecuta una copia de la escena construida a partir de su asset, así que la escena que estás editando no se modifica: al pulsar Stop la recuperas exactamente como estaba antes de pulsar Play. Ten en cuenta que se ejecuta el asset de escena, no tu aplicación completa: el código que añadas en tu clase Scene (por ejemplo, en MyScene.cs) o en tu clase Application no se ejecuta. Si la escena no tiene ninguna cámara activa, el viewport muestra un aviso en lugar de una pantalla negra.

Para hacer sitio a los nuevos botones también hemos reorganizado la barra de la escena. Antes se mostraban a la vez las tres opciones de snap (traslación, rotación y escala). Ahora solo se ve la que corresponde a la herramienta de transformación seleccionada.

Release anterior:

Barra de herramientas de la escena en la versión anterior, con las tres opciones de snap

Nueva release:

Barra de herramientas de la escena en la nueva versión, con una sola opción de snap y los botones Play, Step y Stop

Nuevos manipuladores

También hemos rehecho todos los manipuladores con los que se mueven, rotan y escalan las entidades en el viewport de la escena. Ahora usan la implementación de la librería ImGuizmo, la misma que usan muchos motores y herramientas. Los nuevos manipuladores responden mejor y son más fáciles de agarrar, y aportan mejoras como mostrar la distancia recorrida durante una traslación:

Traslación de una entidad con el nuevo manipulador, que muestra la distancia recorrida

O los grados girados durante una rotación:

Rotación de una entidad con el nuevo manipulador, que muestra el ángulo girado en grados y radianes

Además, siguen funcionando el snap, el pivote y la multiselección, para transformar varias entidades a la vez.

Junto a los manipuladores llega el View Cube, también de ImGuizmo. Muestra la orientación de la cámara en una esquina del viewport y, con un clic sobre una de sus caras, cambia a la vista frontal, superior, lateral o cualquier otra. Así configurar la vista para editar la escena es mucho más rápido.

Cambio de vista con el View Cube de la esquina del viewport

Selección pixel perfect

Otra de las grandes mejoras del viewport de Evergine Studio es el sistema de selección. Hasta ahora, el editor seleccionaba las entidades con volúmenes simplificados (cajas y esferas ajustadas a cada modelo), así que al pulsar en el hueco que dejaba un objeto se podía seleccionar ese objeto, y era difícil seleccionar uno pequeño que estuviera detrás de otro grande. Ahora la selección es pixel perfect: se selecciona exactamente lo que ves bajo el cursor, lo que da mucha más precisión al trabajar con escenas complejas. Además, la entidad seleccionada se dibuja con un outline naranja alrededor de su silueta, para que veas de un vistazo cuál es.

Selección pixel perfect: al pulsar sobre cada objeto se selecciona y se dibuja su outline naranja

Si seleccionas la raíz de una jerarquía de entidades, sus hijos y nietos se dibujan con un outline azul. Así sabes que no son la entidad seleccionada, pero que también se verán afectados por las transformaciones que hagas sobre ella.

Una jerarquía seleccionada: la tetera raíz con outline naranja y el cono y el cilindro hijos con outline azul

Unos cuantos detalles más hacen la selección más cómoda:

Los colores del outline, su grosor, la opacidad de las partes ocultas y el resaltado al pasar el ratón se configuran en Preferences > Viewport.

Opciones del outline de selección en la sección Viewport del diálogo Preferences

Gestión de servicios desde Project Settings

En Evergine, los servicios (clases que heredan de Service o de UpdatableService) son el equivalente a un componente o un behavior a nivel de aplicación: los usas cuando necesitas lógica o estado global que no dependa de las escenas de tu proyecto. Hasta ahora había que registrarlos por código en tu clase Application. En esta versión puedes gestionar los servicios desde el panel Project Settings de Evergine Studio, sin escribir código.

En la nueva sección Services puedes añadir los servicios de tu proyecto, quitarlos y configurar sus propiedades. El panel de propiedades usa los mismos editores que Entity Details, así que los atributos RenderProperty que ya usas en tus componentes funcionan igual en tus servicios.

La sección Services de Project Settings con un servicio y sus propiedades

La configuración se guarda con el proyecto y los servicios se registran al arrancar la aplicación mediante código generado. Si ya registras un servicio del mismo tipo en tu clase Application, tu registro tiene prioridad, así que los proyectos existentes siguen funcionando como hasta ahora. Los servicios de uso interno se pueden ocultar de la lista con el atributo [Discoverable(false)].

Proyectos que compilan en menos de la mitad de tiempo

También hemos trabajado en los tiempos de compilación del editor. Evergine Studio compila ahora tus proyectos en menos de la mitad de tiempo que la versión anterior. Como Studio compila el proyecto al abrirlo, también se nota cada vez que abres uno.

Hemos medido los tiempos con dos proyectos: un proyecto vacío y el ejemplo de física de vehículos.

ProyectoEscenarioVersión anteriorNueva versiónReducción
Proyecto vacíoCompilación limpia8,90 s3,73 s58 %
Proyecto vacíoSin cambios8,13 s3,04 s63 %
Proyecto vacíoCambio en C#8,06 s3,06 s62 %
VehiclePhysicsSampleCompilación limpia10,19 s4,41 s57 %
VehiclePhysicsSampleSin cambios9,49 s3,63 s62 %
VehiclePhysicsSampleCambio en C#9,42 s3,69 s61 %

La mejora viene de cómo se lanza la compilación:

Mejoras en la gestión de assets

La gestión de assets también ha cambiado mucho en esta release, con formas más fáciles e intuitivas de buscar assets y asignarlos a componentes y entidades.

Drag & drop de assets

Todos los selectores de assets admiten ahora drag & drop: arrastra cualquier asset desde el panel Assets y suéltalo sobre la propiedad que lo necesite en Entity Details. Por ejemplo, un material sobre un MaterialComponent, una fuente sobre un texto 3D o un sonido sobre un SoundEmitter3D. Antes ya se podía hacer con los desplegables, pero arrastrar es mucho más cómodo y rápido. Los visores de assets usan los mismos editores de propiedades, así que también puedes soltar una textura sobre un material en el visor de materiales y ver el resultado al momento.

Arrastrar un material desde el panel Assets sobre la propiedad Material de una entidad

Organizar el contenido también es más fácil. El árbol del Project Explorer admite ahora arrastrar y soltar carpetas, también varias a la vez, y puedes arrastrar assets hasta una carpeta del árbol para moverlos.

Drag & drop de entidades

Ahora también puedes arrastrar entidades desde el panel Scene Hierarchy hasta las propiedades de tipo entidad de los componentes en Entity Details. Es especialmente útil al configurar escenas de física: la propiedad Connected Body de los constraints, que conecta un cuerpo con otro, se asigna arrastrando la otra entidad. Si lo prefieres, el selector permite también buscar la entidad por nombre.

Arrastrar una entidad desde la Scene Hierarchy sobre una propiedad de tipo entidad

Tus componentes pueden aprovecharlo con una propiedad de tipo Entity. Con el atributo RenderPropertyAsEntity puedes limitar qué entidades se aceptan a las que tengan determinados componentes:

public class Follower : Behavior
{
    // Solo acepta entidades con un componente Transform3D
    [RenderPropertyAsEntity(typeof(Transform3D))]
    public Entity Target { get; set; }
}

Las referencias se guardan por identificador y se resuelven al cargar la escena. Al instanciar un prefab, o al duplicar o pegar entidades, se reasignan solas para que las copias apunten a las entidades copiadas y no a las originales.

Assets raw a través de AssetsService

Para cargar y manejar assets desde código en Evergine siempre usamos AssetsService, que concentra todas las funcionalidades de este ámbito. Ahora, además de los tipos de assets reconocidos, también puede cargar assets raw: ficheros en formatos que Evergine no reconoce, como un JSON de configuración, un CSV con datos o un formato propio. El nuevo método LoadRaw<T> te da un stream del fichero y tú decides cómo leerlo, así que tienes toda la flexibilidad que necesitas. Además, cargas los assets soportados y los raw de la misma forma, algo que hasta ahora tenías que gestionar aparte construyendo la ruta del fichero a mano.

protected override void CreateScene()
{
    var assetsService = Application.Current.Container.Resolve<AssetsService>();

    var text = assetsService.LoadRaw<string>(EvergineContent.Raw.hello_txt, stream =>
    {
        using var reader = new StreamReader(stream);
        return reader.ReadToEnd();
    });

    var textComponent = this.Managers.EntityManager.FindFirstComponentOfType<Text3DMesh>();
    textComponent.Text = text;
}

El identificador del asset sale de la clase generada EvergineContent, como el de cualquier otro asset. El resultado no se cachea: cada llamada vuelve a leer el fichero, así que guárdalo si lo necesitas más de una vez.

Mejoras generales

Por último, unas cuantas mejoras más pequeñas en la interfaz de Evergine Studio. No son tan llamativas, pero también aportan mucho a la mejora de la experiencia de usuario que el equipo de Evergine ha perseguido en esta release.

Un panel Output del que se puede copiar

Hemos reescrito el panel Output, donde se registra toda la información de lo que va haciendo el editor. Antes mostraba cada mensaje como un elemento de una lista, y copiar varias líneas era casi imposible. Ahora puedes seleccionar texto directamente, o hacer clic derecho y usar Select All, para copiarlo o analizarlo con una herramienta externa. Esto facilita la depuración y el reporte de incidencias.

Texto seleccionado en el panel Output con el menú Copy, Select All y Clear

Rango HDR en el Texture Viewer

El visor de texturas incorpora un control de rango para recorrer los valores de las texturas HDR, que van mucho más allá de 1. Ajusta el rango para ver los detalles que solo aparecen en una franja concreta, como las zonas más brillantes o las más oscuras de un mapa de entorno.

Una textura HDR en el Texture Viewer con el control Range ajustado

Propiedades string multilínea

Ahora puedes editar strings de varias líneas desde el editor. Basta con añadir el atributo RenderPropertyAsTextBox a la propiedad de tu componente, behavior o drawable:

[RenderPropertyAsTextBox(multiline: true, maxLength: 512, placeholder: "Custom text")]
public string DisplayTag { get; set; }

En Evergine Studio la propiedad se muestra como un campo multilínea, con un placeholder cuando está vacía y un contador de caracteres que respeta la longitud máxima indicada.

La propiedad DisplayTag editada como texto multilínea, con el contador 122/512

Cerrar todas las pestañas

Al hacer clic derecho sobre la pestaña de un documento aparecen Close, Close Others y Close All. Como en Visual Studio, funcionan por ventana: cerrar todo en una ventana flotante no cierra los documentos de la ventana principal.

Menú de una pestaña con las opciones Close, Close Others y Close All

Restaurar los valores de un perfil

Cada perfil (Windows, Android, Web…) puede sobrescribir la configuración de las texturas y las directivas de los shaders. Hasta ahora, una vez cambiabas uno de esos valores no era fácil volver atrás. Los perfiles tienen ahora un botón para restaurar los valores originales con un solo clic.

Y además

Pruébalo ya

Todas estas mejoras están disponibles en la nueva release de Evergine. Actualiza desde el Evergine Launcher, abre tu proyecto y prueba el modo Play, la nueva selección y los manipuladores. Si encuentras algún problema o tienes ideas para mejorar Evergine Studio, cuéntanoslo en nuestro repositorio de GitHub.

Jorge Cantón
Autor
Jorge Cantón
Research Director at Plain Concepts