Salutations, lecteur.
Cette publication se concentrera sur un moteur de jeu prometteur et assez jeune qui est resté à juste titre dans l'ombre de géants tels que Unity ou Unreal Engine.
Les développeurs sont une association de passionnés dirigée par Adam's Lair.
Comme nous l'indique le site officiel: «Duality est un moteur de jeu 2D modulaire livré avec son propre éditeur. Il est facilement extensible, écrit en C # et utilise OpenGL pour afficher les graphiques. » La dualité utilise une architecture orientée composants populaire pour écrire la logique. Nous avons écrit un composant, l'avons attaché à un objet de jeu, et tout fonctionne, sauvant complètement le programmeur de la routine. Un autre avantage est le support des plugins, que n'importe qui peut créer et connecter à ses projets.
«Classique», dites-vous, et vous aurez raison. La dualité n'est pas pire que d'autres outils, elle prend également en charge la gestion des ressources, fournit des sous-systèmes d'entrée-sortie, des graphiques, des simulations audio et physiques. Si vous y ajoutez l'éditeur pratique Dualitor, vous pouvez obtenir un excellent environnement pour développer des jeux indépendants.
Alors pourquoi ai-je besoin de Duality alors qu'il existe des solutions plus étendues comme Unity?
- Gratuit (licence MIT). Vous n'êtes pas obligé de payer, de publier votre code source et d'effectuer d'autres actions qui restreignent votre créativité. Les sources de dualité sont également disponibles sur GitHub.
- Légèreté. L'éditeur pèse ~ 100 Mo, un jeu entièrement fonctionnel pèse ~ 7 Mo.
- Performance. Dans la dernière version actuellement en v3, une optimisation à grande échelle du moteur a été effectuée. Dans les tests effectués pour la charge de travail estimée, le temps de rendu dans le pire des cas n'a pas dépassé 6 ms et la collecte des ordures a été effectuée environ cinq fois par minute.
- Simplicité. Si vous connaissez le même moteur Unity ou Unreal, vous pouvez maîtriser Duality sans aucun problème. L'API est bien documentée et fournit des interfaces pratiques pour que le programmeur ne soit pas distrait par des opérations de bas niveau.
- Communauté. Il peut ne pas être compté par des milliers d'utilisateurs, mais il contient des développeurs dédiés qui aident personnellement les nouveaux arrivants à apprendre le moteur. Très sympathique et rapide. De plus, divers tutoriels ont été créés et un forum a été ouvert qui contient une grande quantité d'informations utiles.
Peut-être que ça vaut la peine d'essayer
Je pense que vous voulez voir à quoi tout cela ressemble.
L'éditeur. Simple mais fonctionnel. Il montre la vue de scène, la vue de projet, l'inspecteur et la vue de caméra familières. Voici un panneau de connexion caché.
Et ceci est un exemple de code pour un composant qui contrôle le mouvement d'un vaisseau spatial.
Codeusing 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); } } }
Je ne sais pas pour vous, mais je suis agréablement surpris par la simplicité de ce cadre. Soit dit en passant, un indicateur du succès du moteur sont les jeux qui y sont réalisés. Puisqu'il est utilisé par de petites équipes, les jeux ne sont pas non plus publiés au niveau AAA. Il n'y a donc encore rien à se vanter.
Sur ce site, vous pouvez regarder des jeux prêts à l'emploi .
Je connais également un projet sérieux actuellement en cours de développement et publié sur Steam, mais il vaut mieux en parler une autre fois.
Ce que vous ne devez pas attendre de la dualité
Le moteur multiplateforme est l'une de ses faiblesses. Seule la famille de systèmes d'exploitation Windows est entièrement prise en charge, les autres sont pris en charge par des développeurs tiers ou ne sont pas pris en charge du tout. Il n'y a pas non plus d'implémentation intégrée de l'interface utilisateur, mais comme Duality est un moteur modulaire, il existe des plugins qui éliminent cet inconvénient.
Le prochain inconvénient majeur sera le problème de l'API réseau. Pour le moment, il n'y a pas de plug-in ou de module noyau qui implémenterait des fonctionnalités multijoueurs.
Et la principale raison pour laquelle le moteur perd face aux concurrents est la petite communauté. Il y a trop peu de gens qui développent ce bon outil.
Caractéristiques clés du moteur:
- Physique 2D basée sur Farseer Physics Engine. Parmi les composants intégrés, il y a un Rigidbody fonctionnel, qui couvre les exigences de base pour les objets physiques.
- Animation 2D à l'aide du composant AnimSpriteRenderer. Avec un système de saisie utilisateur simple, vous pouvez facilement animer n'importe quel personnage.
- Prise en charge des vertex et fragment shaders. Si cela ne suffit pas, vous pouvez implémenter votre propre composant pour le rendu.
- Les préfabriqués, y compris ceux imbriqués, il n'y aura donc aucun problème avec l'achat d'objets de jeu.
- Gestionnaire de contenu pratique. Les liens vers les ressources sont automatiquement maintenus et facilement utilisés dans le code.
- TileMaps a été créé en tant que plugin séparé, mais il fait un excellent usage des fonctionnalités du moteur pour des performances maximales.
- Extensibilité de l'éditeur. Vous pouvez ajouter vos propres fonctionnalités à l'éditeur, écrire des commandes et des plugins qui seront nécessaires spécifiquement pour vos tâches.
En conclusion de cette brève revue, je tiens à dire qu'il existe de nombreux autres moteurs de jeu qui ne sont peut-être pas inférieurs à celui-ci et c'est bien. Bien sûr, je ne vous invite pas à renoncer à tout ce que vous utilisez déjà, mais je présente à votre attention un projet de qualité. Si vous êtes un développeur seul ou une petite équipe à la recherche de quelque chose de simple et de puissant, essayez Duality.
Le site officiel.