IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Unreal-Rust expose le moteur de rendu d'Unreal à Rust via une interface de fonction étrangère en C,
Le C++ aurait un gros défaut dans Unreal qui serait mieux géré avec Rust

Le , par Bruno

64PARTAGES

6  0 
Rust est un langage de programmation affectionné pour ses qualités en mémoire, notamment la sécurité mémoire. Alors que beaucoup se demande si le langage ne va pas ravir la vedette aux langages plus anciens tels C et C++, Maik Klein, Ingénieur logiciel chez Embark Studios et programmeur Rust semble donner plus de crédit à ce questionnement en annonçant Unreal-Rust qui permet d’explorer la possibilité d’écrire un jeu en Rust en utilisant Unreal comme moteur de rendu.

Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research, avec la contribution du créateur de JavaScript Brendan Eich. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.


Avec Rust, il est possible de développer des pilotes de périphériques, des systèmes embarqués, des systèmes d'exploitation, des jeux, des applications web, et bien d'autres choses encore. Des centaines d'entreprises dans le monde entier utilisent Rust en production pour des solutions multiplateformes et économes en ressources. Des logiciels connus et appréciés, comme Firefox, Dropbox, et Cloudflare, utilisent ce langage. De la startup à la multinationale, du système embarqué au service web à haute disponibilité, Rust est une excellente solution.

Si certains programmeurs préfèrent utiliser les langages de programmation qui on fait des preuves tels C ou encore C++, ce n’est pas le cas de Maik Klein, programmeur Rust, qui veut bien developper un jeu en Rust en utilisant le moteur Unreal.

Rendu à sa version 5, Unreal Engine est un moteur de jeu vidéo propriétaire développé par Epic Games. Il permet d’effectuer des créations 3D en temps réel, de donner vie à des expériences étonnantes en temps réel.

« L'attente est terminée : nous sommes très heureux d'annoncer qu'Unreal Engine 5 est désormais disponible. Avec cette version, nous voulons permettre aux petites et grandes équipes de repousser les limites du possible, visuellement et interactivement. Unreal Engine 5 (UE5) vous permettra de réaliser des contenus et des expériences 3D en temps réel de nouvelle génération avec plus de liberté, de fidélité et de flexibilité que jamais auparavant », a déclaré l’équipe de développement.

Peut-on écrire un jeu en Rust en utilisant Unreal ?

Rust via C ffi

Si développer un jeu en Rust est possible, le faire en utilisant le moteur de rendu Unreal peut présenter quelques challenges. Alors on serait en droit de se demander s’il est possible d’écrire un jeu en Rust en utilisant Unreal ? Oui en utilisant le concept d’interface de fonction étrangère, c’est-à-dire exposé des fonctions C ou tout simplement appeler des routines ou utiliser des services écrits en C (Rust via C ffi). Ce qui serait toutefois très fastidieux selon Maik Klein.

« Après une semaine, j'ai exposé quelques fonctions qui me permettaient d'obtenir des entrées, de définir et de récupérer la position d'un acteur. Avec cela, je pouvais enfin déplacer un personnage dans Unreal. J'ai étudié comment Unreal gère les animations. Dans cet exemple, le personnage est déjà truqué et possède des animations. Ces animations sont pilotées par un AnimationBlueprint. Tout ce que j'avais à faire était d'indiquer la vélocité à laquelle le personnage court, et l'AnimationBlueprint s'occuperait du reste. »


Maik Klein réussis à faire marcher son personnage en exposant une fonction ffi GetRustVelocity, fonction qui lui permet de déplacer un personnage avec Rust dans Unreal et unreal-rust est né.

unreal-rust

Unreal-rust permet d'écrire des jeux avec Unreal Engine en Rust. C’est une intégration Rust pour Unreal. Rust se soucie de la propriété, de la mutabilité et des durées de vie. « Mapper les concepts d'Unreal à Rust 1 à 1 ne ferait que causer un mal de tête ». Au lieu de cela, unreal-rust sera écrit sur le AActor d'Unreal et exposera son API d'une manière conviviale pour Rust.

Le premier grand changement est qu'unreal-rust utilisera un Entity Component System (ECS). Pour unreal-rust, Maik Klein utilise bevy au lieu de développer son propre système. « Je ne suis qu'un seul développeur et je dois choisir mes batailles. Écrire et maintenir un ECS me distrairait du travail réel. Les gens de bevy ont fait un travail formidable pour rendre l'ECS convivial », déclare-t-il.

Toute la logique des applications dans Bevy utilise le paradigme Entity Component System. L'ECS est un modèle logiciel qui consiste à décomposer un programme en entités, composants et systèmes. Les...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !