Programmation en Lua

Dual Universe donnera la possibilité aux joueurs d'optimiser ou d'automatiser certaines parties de leurs Constructions grâce à la programmation en utilisant le langage "Lua". Le Lua est très simple, et l'un des langages informatiques les plus faciles à apprendre. Dans Dual Universe, chaque élément contiendra son propre ensemble de valeurs et de fonctions. Un moteur pourra exercer une force, un détecteur pourra détecter un objet, une porte s'ouvrira... Chacune des valeurs d'un élément pourra potentiellement être utilisée dans un script Lua. Un moteur pourra recevoir un ordre spécifiant la force à exercer et à quel moment le faire, parce que sa poussée est une valeur assignable. Une porte peut être ouverte ou fermée, et selon si elle est ouverte ou fermée, se sont des valeurs différentes. Les interactions entre tous les éléments d'une construction seront orchestrées par des scripts Lua qui seront dans ces Unité de Traitement Distribué (DPU), qui seront stockés dans le Noyau.

## L'Unité de Traitement Distribué (Distributed Processing Unit (DPU))

Les DPUs peuvent être utilisés par les joueurs pour paramétrer des systèmes automatiques ou des "comportements" pour les constructions, qui s'activent en réponse à des conditions prédéfinies. Les joueurs peuvent ajouter des scripts Lua aux DPUs, et chaque DPU possède des "slots" dans lesquels des éléments peuvent être connectées, ce qui permet au DPU d'utiliser ses scripts Lua pour contrôler les éléments connectés. Chaque DPU possède plusieurs gestionnaires d'événement (handlers), chacun avec ses propres filtres (filter), qui permettent aux joueurs de paramétrer des conditions qui activent le DPU. Lorsque la condition requise pour un gestionnaire d'événement est satisfaite, le code Lua correspondant pour ce filtre est exécuté. Le script peut utiliser tout type de valeurs associées à l'élément connecté au DPU.

Par exemple: Un joueur peut connecter un DPU à une porte et à une série de détecteurs, avec comme condition-filtre d'ouvrir la porte lorsque les détecteurs sont déclenchés dans un certain ordre.

## Les scripts et le Multijoueur

les Scripts tournent sur l'ordinateur du possesseur du script, mais le code du script est synchronisé avec tous les joueurs à portée de la construction hébergeant le script, donc son effet peut être vu ou déclenché même si le joueur faisant tourner le script n'est pas à porté du joueur déclenchant le script. Les actions des scripts sont synchronisées par le serveur pour tous les joueurs. Même si les scripts tournent sur l'ordinateur du joueur, de nombreux joueurs peuvent simultanément faire tourner des scripts créés par un seul joueur (et donc tournant sur l'ordinateur de ce joueur), et tous les joueurs peuvent voir le script et ses effets. La seule exception est qu'il ne peut y avoir deux joueurs contrôlant en même temps le même élément. Un joueur ayant les droits (via le système RDMS) d'utiliser une construction scriptée aura accès à l'éditeur Lua dans le jeu, et pourra modifier le script et le désosser.

## L'Editeur Lua

L'**éditeur Lua** sera l'outil principal pour créer, éditer et visualiser les scripts Lua. L'écran de l'éditeur est divisé en 3 parties: la zone montrant les connexions avec les éléments sur la gauche, la zone avec les filtres de condition au milieu, et le code brut sur la zone à droite. L'éditeur Lua permet de créer rapidement des scripts en fournissant une série de fonctions prédéfinies, qui peuvent être invoquées, et des Evénements qui peuvent se produire avec chacun des éléments.

## Les Limitations

Certaines limitations ont été implémentées pour empêcher que certains aspects du jeu ne soient dévalués par les joueurs.

* Les scripts tourneront seulement si un avatar est à une certaines distance du noyau de la construction hébergeant le script.
* Les armes, lorsque contrôlées par un script, seront extrêmement moins efficaces comparé à celles utilisées par des joueurs (par exemple, en limitant le nombre d'actions par seconde pour le script). Tout ceci est fait pour rendre le jeu équilibré.
* Le minage ne pourra pas être scripté quelque soit la manière utilisée; le minage pourra seulement être réalisé par des joueurs utilisant leur Nanoformeur.

## Remarque

Au moment venu, cette page deviendra un guide plus détaillé de la programmation Lua dans Dual Universe. Pour l'instant, peu d'informations sont disponibles.

## Liens externes

1. DevBlog: Lua Script and Distributed Processing Units (09/18/2015)
2. Dual Universe Pre-Alpha Tutorial: Lua Scripting (November 24, 2017) First Developers' tutorial related to the Lua Scripting.

## Références

1. ↑ Dual Universe YouTube Channel, "Dual Universe DevDiary Updates - July 2017 | Pre-Alpha Video", Timestamp: 0:48 - 1:56. https://www.youtube.com/watch?v=4Vrf50dZrv4. 07/31/2017.