Dualidad: un motor fácil y rápido para igrostroy en Windows (Ext.)

Saludos, lector.

Esta publicación se centrará en un motor de juego prometedor y bastante joven que se ha mantenido inmerecidamente a la sombra de gigantes como Unity o Unreal Engine.

Los desarrolladores son una asociación de entusiastas liderada por Adam's Lair.

Como el sitio web oficial nos dice: “Duality es un motor de juego 2D modular que viene con su propio editor. Es fácilmente extensible, está escrito en C # y usa OpenGL para mostrar gráficos ". La dualidad utiliza una arquitectura popular orientada a componentes para escribir lógica. Escribimos un componente, lo adjuntamos a un objeto del juego, y todo funciona, salvando completamente al programador de la rutina. Otra ventaja es el soporte para complementos, que cualquiera puede crear y conectarse a sus proyectos.

"Clásico", dices, y tendrás razón. La dualidad no es peor que otras herramientas, también se encarga de la gestión de recursos, proporciona subsistemas de entrada-salida, gráficos, audio y simulación física. Si agrega el conveniente editor Dualitor a esto, puede obtener un excelente entorno para desarrollar juegos independientes.

Entonces, ¿por qué necesito Duality cuando hay soluciones más amplias como Unity?


  • Gratis (licencia MIT). No está obligado a pagar, publicar su código fuente y realizar otras acciones que restrinjan su creatividad. Las fuentes de dualidad también están disponibles en GitHub.
  • Ligereza El editor pesa ~ 100 mb, un juego totalmente funcional pesa ~ 7 mb.
  • Rendimiento En la última versión actual, v3, se ha realizado una optimización a gran escala del motor. En las pruebas realizadas para la carga de trabajo estimada, el tiempo de representación en el peor de los casos no superó los 6 ms, y la recolección de basura se realizó aproximadamente cinco veces por minuto.
  • Simplicidad Si está familiarizado con el mismo Unity o Unreal Engine, puede dominar Duality sin ningún problema. La API está bien documentada y proporciona interfaces convenientes para que el programador no se distraiga con las operaciones de bajo nivel.
  • Comunidad. Puede que miles de usuarios no lo cuenten, pero contiene desarrolladores dedicados que ayudan personalmente a los recién llegados a aprender el motor. Muy amable y puntual. Además, se han creado varios tutoriales y se ha abierto un foro que contiene una gran cantidad de información útil.

Quizás valga la pena intentarlo


Creo que quieres ver cómo se ve todo.

El editor Simple pero funcional. Muestra la vista familiar de escena, vista de proyecto, inspector y vista de cámara. A continuación se muestra un panel de registro oculto.

Dualitor


Y este es un ejemplo de código para un componente que controla el movimiento de una nave espacial.

Código
using Duality; using Duality.Components.Physics; using Duality.Input; namespace Duality_ { [RequiredComponent(typeof(RigidBody))] public class Player : Component, ICmpUpdatable { public void OnUpdate() { RigidBody rb = GameObj.GetComponent<RigidBody>(); if (DualityApp.Keyboard[Key.Left]) rb.ApplyLocalForce(-0.001f * rb.Inertia); else if (DualityApp.Keyboard[Key.Right]) rb.ApplyLocalForce(0.001f * rb.Inertia); else rb.AngularVelocity -= rb.AngularVelocity * Time.TimeMult * 0.1f; if (DualityApp.Keyboard[Key.Up]) rb.ApplyLocalForce(Vector2.UnitY * rb.Mass * -0.2f); else if (DualityApp.Keyboard[Key.Down]) rb.ApplyLocalForce(Vector2.UnitY * rb.Mass * 0.2f); } } } 



No sé sobre usted, pero estoy gratamente sorprendido por la simplicidad de este marco. Por cierto, un indicador del éxito del motor son los juegos realizados en él. Dado que es utilizado por equipos pequeños, los juegos tampoco se lanzan a nivel AAA. Así que no hay nada de qué alardear todavía. En este sitio puedes ver juegos ya hechos .
También conozco un proyecto serio que está actualmente en desarrollo y publicado en Steam, pero es mejor escribir sobre él en otro momento.

Lo que no debes esperar de Duality


El motor multiplataforma es una de sus debilidades. Solo la familia de sistemas operativos Windows es totalmente compatible, el resto son compatibles con desarrolladores externos o no son compatibles en absoluto. Tampoco hay una implementación incorporada de UI, pero dado que Duality es un motor modular, existen complementos que eliminan este inconveniente.
El próximo gran inconveniente será el problema de la API de red. Por el momento, no hay un módulo de complemento o kernel que implemente las funciones multijugador.
Y la razón principal por la cual el motor pierde ante los competidores es la pequeña comunidad. Hay muy pocas personas que están desarrollando esta buena herramienta.

Características clave del motor:


  • Física 2D basada en Farseer Physics Engine. Entre los componentes incorporados hay un Rigidbody funcional, que cubre los requisitos básicos para los objetos físicos.
  • Animación 2D utilizando el componente AnimSpriteRenderer. Junto con un sistema de entrada de usuario simple, puede animar fácilmente cualquier personaje.
  • Soporte para sombreadores de vértices y fragmentos. Si esto no es suficiente, puede implementar su propio componente para renderizar.
  • Prefabricados, incluidos los anidados, por lo que no habrá problemas con la adquisición de objetos del juego.
  • Cómodo administrador de contenido. Los enlaces a los recursos se mantienen automáticamente y se usan fácilmente en el código.
  • TileMaps se crearon como un complemento separado, pero hacen un excelente uso de las características del motor para obtener el máximo rendimiento.
  • Extensibilidad del editor. Puede agregar su propia funcionalidad al editor, escribir comandos y complementos que serán necesarios específicamente para sus tareas.


En conclusión de esta breve revisión, quiero decir que hay muchos otros motores de juego que pueden no ser inferiores a este y esto es bueno. Por supuesto, no le insto a que renuncie a todo lo que ya usa, pero le presento un proyecto de calidad. Si eres un desarrollador solitario o un equipo pequeño que busca algo simple y lo suficientemente poderoso, prueba Duality.

El sitio oficial.

Source: https://habr.com/ru/post/441608/


All Articles