Langage Verse

From air
Jump to navigation Jump to search

Le langage Verse

  • Alexandre Moua : Alexandre.Moua AT etu DOT univ-grenoble-alpes DOT fr
  • Romain Hocquet : Romain.Hocquet AT etu DOT univ-grenoble-alpes DOT fr

Résumé

Le langage Verse est un langage de programmation inventée par Epic Games. C’est un langage fonctionnel, logique et orienté objet. Il a pour but de s’imposer comme un langage standard pour le développement de jeu vidéo et d’application du métavers. Il est actuellement en phase de développement et ne dispose comme seul et unique interpréteur le jeu Fortnite. Il met en avant, son accessibilité, sa lisibilité et sa clarté de code et enfin son exécution déterministe. C’est-à-dire que pour tout entrée identique, une même instruction renvoie systématiquement la même sortie. En ce qui concerne la clarté, le code Verse se veut proche du lambda calcul et impose la détection de toute erreur à la compilation. Donc si le code Verse compile, il ne peut y avoir d’erreur dans l’exécution du code compilé. Il veut se montrer innovant en mettant en avant des nouveaux concepts comme l’exécution spéculative tout en améliorant l’encapsulation des concepts fondamentaux comme la gestion de la concurrence et des évènements.

Mots-Clés

  • ’‘’Métavers’’’ : Concept qui désigne un espace virtuel partagé et immersif, accessible via Internet, où les utilisateurs peuvent interagir entre eux, avec des environnements numériques et parfois avec des objets physiques connectés.
  • ’‘’Exécution spéculative’’’ : Si l’exécution réussi, les modifications sont validées, sinon elles sont annulées.
  • ’‘’Programmation logique et fonctionnel’’’ : Mode d’exécution sans privilèges administratifs.

Abstract

The Verse language is a programming language invented by Epic Games. It is a functional, logical, and object-oriented language. Its goal is to establish itself as a standard language for video game and metaverse application development. Currently, it is in the development phase and has only one interpreter, the game Fortnite. Verse emphasizes accessibility, readability, clarity of code, and deterministic execution. This means that for any given input, the same instruction always produces the same output. Regarding clarity, Verse code aims to be closely aligned with lambda calculus and enforces the detection of any errors at compile time. Therefore, if Verse code compiles, there can be no errors during the execution of the compiled code. The language seeks to be innovative by introducing new concepts, such as speculative execution, while improving the encapsulation of fundamental concepts like concurrency and event management.

Key Words

  • ’‘’Metaverse’’’ : Concept that describes a shared virtual and immersive world, accessible through Internet, where users can interact with eachother, with numeric environment and even physical connected objects.
  • ’‘’Speculative execution’’’ : If execution is successful, then modifications are validated, else they are cancelled.
  • ’‘’Functional logic programming’’’ : Combination in a unique programming language of the paradigms of functional programming and logic programming.

Synthèse

Introduction

Verse est un nouveau langage de programmation pour le développement d’application du Métavers et de jeu vidéo. Il est conçu par la société Epic Games. C’est un langage Open source qui cherche à s’imposer comme langage standard dans son domaine. En effet, il est conçu pour répondre aux nouvelles contraintes du Métavers contre lesquelles les précédents langages de programmation ne font pas particulièrement armées.

Qu’est-ce que le Métavers

Le Métavers est un concept qui décrit un espace virtuel partagé. Cet espace se veut immersif pour les utilisateurs. Ces derniers peuvent communiquer entre eux dans ce monde virtuel mais aussi intéragir avec un environnement numérique qui agit comme une seconde réalité. Le Métavers repose sur les 5 aspects principaux suivants.

Immersion

  • Utilise des technologies comme la réalité virtuelle (VR) et augmentée (AR) pour plonger l’utilisateur dans un environnement interactif et en trois dimensions.
  • Les casques VR, les lunettes AR ou même des dispositifs haptiques permettent de vivre une expérience plus réaliste.

Interaction sociale

  • Les utilisateurs incarnent des avatars numériques qui peuvent interagir entre eux. Ces avatars peuvent être personnalisés pour refléter l’identité ou les préférences de chaque individu.
  • Le métavers est souvent décrit comme un lieu pour :
    • Des rencontres sociales,
    • Du travail collaboratif,
    • Des événements (concerts, conférences, etc.).

Économie numérique

  • Contient des économies virtuelles où les utilisateurs peuvent acheter, vendre et échanger des biens numériques, souvent en utilisant :
    • Des cryptomonnaies,
    • Des tokens basés sur la technologie blockchain (comme les NFT).
  • Les entreprises peuvent y :
    • Vendre des produits ou services,
    • Organiser des expériences marketing,
    • Créer des bureaux virtuels.

Environnements persistants

  • Contrairement à un jeu vidéo qui “redémarre” à chaque session, le métavers est conçu pour être persistant. C’est-à-dire que les mondes virtuels continuent d’exister et d’évoluer même lorsque les utilisateurs se déconnectent.

Applications multiples

  • Jeux vidéo : Des plateformes comme Roblox ou Fortnite sont des exemples de précurseurs du métavers.
  • Travail : Des espaces de réunion virtuels.
  • Éducation : Des cours ou formations en réalité virtuelle.
  • Culture et loisirs : Des concerts, expositions d’art ou visites touristiques virtuelles.

Concepts Fondamentaux

Tout d’abord, Verse pioche un peu dans toutes les approches de programmation existantes.

Orienté objet : Verse est un langage objet avec un fonctionnement similaire à Java. Tout comme ce dernier, il dispose d’un “garbage collector”. Egalement il propose une gestion des évènements avec une pompe à évènement similaire à Java et un gestion de la concurrence.

Fonctionnel : Sa propriété fonctionnel et logique lui permet de produire des parsers très efficaces et bien plus léger qu’un parser classique en langage objet. Cette propriété est très utile notamment dans les jeux où ils faut pouvoir charger très rapidement des grands fichiers de données comme pour la reprise d’une sauvegarde par exemple.

Descriptif : Verse n’est pas à proprement parler un langage descriptif. Cependant, il ne dispose pas d’instructions. En effet, toutes les instructions en Verse sont considérées comme des expressions inspirées du lambda calcul. De ce fait, la structure d’un code Verse ressemble beaucoup à un langage descriptif comme Lustre ou yaml. Cela apporte l’avantage d’être très facilement lisible car on évite beaucoup d’instruction impératives notamments des boucles pour obtenir la valeur d’une variable.

Particularité de Verse

Exécution spéculative : L’exécution spéculative est l’une des fonctionnalités majeurs de Verse. Elle permet de définir des modifications qui peuvent être annulées tant qu’elles n’ont pas été validées.

if
    DoSomething()
    X < 200
else
    DoSomethingElse()

Sur l’exemple précédent, le code va exécuter la fonction “DoSomething()”. Cette fonction va modifier l’environnement. Cependant, lorsque l’exécution va continuer, si la valeur de X est inférieur à 200, toutes les modifications à l’intérieur du block if vont être complètement annulées. C’est une fonctionnalitée très utile pour le développement de jeu vidéo car elle faciliterai énormément le code de retour en arrière très fréquent dans le média.

L’exécution ne peut échoué : L’autre fonctionnalité phare de Verse est la propriété qui empêche un code compilé d’échoué à l’exécution. En effet, toute erreur possible est détectée à la compilation du code. Donc un code compiler ne peut contenir d’erreur. Cette fonctionnalité est utile pour gagner du temps de débuggage sachant que la correction de bug dans un jeu vidéo potentiellement multi-threadé et en réseau est très hardu. Attention, le code compiler peut toujours être faux dans le cas où il ne respecte pas la spécification. Dans ce cas, cette fonctionnalité n’apporte rien pour aider à la correction de cette erreur. De plus, les langages à exceptions permettent déjà de détecter plus facilement l’origine de l’erreur lors d’une erreur d’exécution. Nous trouvons cette fonctionnalité bienvenue mais pas révolutionnaire.

Limites d’utilisation

Pour le moment, Verse ne peut être interprété que par le jeu Fortnite bien que l’objectif finale est de proposer un interpréteur bien moins contraignant. Ensuite, il demande de part les nouveautés qu’il apporte un temps d’adaptation pour se familiariser avec les nouveaux paradigms du langage. Bien qu’il apporte des options intéressantes notamment sur la lisibilité du code ou sur son aspect déterministe, ses fonctionnalités sont à l’heure actuelle assez dispensable. Egalement en tant que nouvel arrivant, la communauté du langage n’est pas très développer dans le monde professionel. Tout ces désaventages impact fortement Verse et ne le rend à l’heure actuelle pas assez rentable pour investir dessus. souvent privilégié à la complexité de Podman.

Conclusion et Perspectives

Pour conclure, Verse est un langage qui à pour objectif d’améliorer l’efficacité du code d’un jeu vidéo et surtout de le rendre bien plus lisible et maintenable dans le temps. Il pioche dans quasiment toutes les familles de style de programmation même l’approche descriptive dans le but de devenir un langage standard pour l’industrie du jeu vidéo. Cependant il n’est à l’heure actuelle qu’une solution en développement. De plus, il est encore dépendant du jeu Fortnite comme unique interpréteur.

4. Sources

La page de documentation officielle d’Epic Games sur le langage Verse :

Référence du langage Verse - Epic Games

Forum communautaire officiel d’Epic Games sur le développement basé sur les produits d’Epic Games. Ne contient pas que de la documentation pour Verse :

Forum communaire sur le développement avec les outils d’Epic Games

Conférence d’introduction au langage Verse :

Conférence de Simon Peyton et Tim Sweeney sur l’introduction au langage Verse

Topic du forum Epic Games sur ce qui rend Verse unique :

Topic sur la particularité de Verse - Forum Epic Games

Page wikipédia du langage Verse :

Le langage Verse

Petit projet github qui contient des antisèches sur le langage Verse :

Verse cheatsheet

Conférence de présentation de Verse sur la chaîne officiel d’Unreal Engine :

Conférence Verse - GDC 2023