Nous avons ajouté beaucoup de fonctionnalités à l'API Lua suite aux ajouts de boucliers et de stress de combat de noyau en plus des changements d'amarrage et d'embarquement.
Nous avons pris en compte un grand nombre de vos commentaires et suggestions et nous avons apporté quelques changements pour améliorer la cohérence et la mise en œuvre de Lua.
Ces changements sont mineurs ; nous ne pouvons pas retravailler toute l'API Lua sans casser la plupart de vos scripts.
Dans cette optique et pour finaliser la mise en œuvre de l'API Lua associée à l'amarrage et aux modifications futures d'autres mécaniques, nous avons décidé d'ajuster quelques parties qui peuvent être majeures pour les créateurs de Lua, tant pour l'ajout de nouvelles fonctionnalités que pour l'amélioration et la cohérence de l'API dans son ensemble.
Dans cette première partie d'un devblog en trois parties, nous aborderons les récents changements et ajouts apportés à Lua, notamment ceux liés à l'amarrage et à la dépréciation des quaternions.
MODIFICATIONS ET AJOUTS
Tout d'abord, nous avons décidé de retravailler la manière dont sont gérés les référentiels associés aux constructions et aux éléments.
Auparavant, certaines fonctions renvoyant des informations de position ou d'orientation se référaient au centre ou même à un coin de la construction, d'autres à la position de l'unité centrale dans la construction.
Pour l'avenir, nous avons tout normalisé. Une fois ces changements mis en œuvre, toutes les fonctions seront basées sur le cadre de référence de la construction dont l'origine est le centre de la zone de construction. En outre, afin de garantir la fonctionnalité des systèmes de vol et de protéger l'unité gyroscopique, nous avons intégré une représentation plus claire de l'orientation.
Une unité d'orientation est un élément qui est utilisé pour définir l'orientation de votre construction. Il y a deux unités d'orientation dans le jeu, l'unité centrale et l'unité gyroscopique.
Comme une construction ne peut exister sans une unité centrale unique, l'unité centrale est toujours l'unité d'orientation par défaut. En appuyant sur F sur une unité gyroscopique, vous pouvez passer à l'utilisation de l'unité gyroscopique comme unité d'orientation actuelle.
Vous pouvez voir que le marqueur et la flèche qui s'affichent lorsque vous entrez en mode construction indiquent l'orientation donnée par l'unité d'orientation active.
Vous pouvez activer une unité gyroscopique en appuyant sur F sur celle-ci et ainsi utiliser son orientation.
Pour ces changements, nous avons ajouté :
<int> core.getOrientationUnitId() : Renvoie l'UID de l'unité d'orientation actuellement active (l'unité centrale ou l'unité gyroscopique).
Nous avons également modifié les fonctions suivantes :
<vec3> core.getConstructOrientationForward() : Renvoie le vecteur de direction avant de l'unité d'orientation active dans les coordonnées locales de construction.
<vec3> core.getConstructOrientationUp() : Renvoie le vecteur de direction vers le haut de l'unité d'orientation active dans les coordonnées locales de construction.
<vec3> core.getConstructOrientationRight() : Renvoie le vecteur directionnel droit de l'unité d'orientation active dans les coordonnées locales de construction.
<vec3> core.getConstructWorldOrientationForward() : Renvoie le vecteur de direction avant de l'unité d'orientation active dans les coordonnées du monde.
<vec3> core.getConstructWorldOrientationUp() : Renvoie le vecteur de direction vers le haut de l'unité d'orientation active dans les coordonnées du monde.
<vec3> core.getConstructWorldOrientationForward() : Renvoie le vecteur de direction droite de l'unité d'orientation active dans les coordonnées du monde.
<vec3> core.getConstructWorldPos() : Renvoie la position du centre de la construction dans les coordonnées du monde (au lieu de la position des unités d'orientation).
SUPPRESSION DES QUATERNIONS
Les quaternions sont le quotient de deux lignes dirigées dans un espace tridimensionnel ou le quotient de deux vecteurs. En observant comment les joueurs utilisaient Lua et en lisant leurs commentaires, nous avons réalisé que très peu de joueurs étaient familiers avec cette notion mathématique de représentation de la rotation.
Par conséquent, nous avons décidé de supprimer les quaternions de l'API Lua et d'exposer à la place les vecteurs de direction des objets.
Bien que cela entraîne l'ajout et la modification de certaines fonctions, les fonctions dépréciées resteront rétrocompatibles et afficheront un message de dépréciation dans la console Lua.
<quat> core.getElementRotationById(<int> uid) : DÉPRÉCIÉ
<vec3> core.getElementPositionById(<int> uid) : Renvoie la position de l'élément, identifié par son UID dans les coordonnées locales de la construction (au lieu du coin de la construction).
<vec3> unit.getMasterPlayerRelativePosition() : DÉPRÉCIÉ
<quat> unit.getMasterPlayerRelativeOrientation() : DÉPRÉCIÉ
Et nous avons ajouté les fonctions suivantes :
<vec3> core.getElementForwardById(<int> uid) : Renvoie le vecteur de direction avant de l'élément identifié par son UID dans les coordonnées locales de construction.
<vec3> core.getElementUpById(<int> uid) : Renvoie le vecteur directionnel ascendant de l'élément identifié par son UID dans les coordonnées locales de construction.
<vec3> core.getElementRightById(<int> uid) : Renvoie le vecteur de direction droite de l'élément identifié par son UID dans les coordonnées locales de construction.
<vec3> unit.getMasterPlayerPosition() : Renvoie la position du joueur qui dirige actuellement l'unité de contrôle dans les coordonnées locales de la construction (par rapport au centre de la construction et non de l'unité de contrôle).
<vec3> unit.getMasterPlayerWorldPosition() : Renvoie la position du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées du monde.
<vec3> unit.getMasterPlayerForward() : Renvoie le vecteur de direction avant du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées locales de construction.
<vec3> unit.getMasterPlayerUp() : Renvoie le vecteur de direction vers le haut du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées locales de construction.
<vec3> unit.getMasterPlayerRight() : Renvoie le vecteur de direction droite du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées locales de construction.
<vec3> unit.getMasterPlayerWorldForward() : Renvoie le vecteur de direction avant du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées du monde.
<vec3> unit.getMasterPlayerWorldUp() : Renvoie le vecteur de direction vers le haut du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées du monde.
<vec3> unit.getMasterPlayerWorldRight() : Renvoie le vecteur de direction droite du joueur qui utilise actuellement l'unité de contrôle, dans les coordonnées du monde.
AJOUTS D'API LUA LIÉS À L'ARRIMAGE
Avec le nouveau mécanisme d'amarrage, nous voulions donner aux joueurs les moyens de gérer la relation parent-enfant entre les constructions.
Certains de ces ajouts ont été effectués dans la mise à jour Ares (0.26.12) ; Cependant, nous avions prévu d'autres modifications et ajouts, qui seront inclus dans la version des modifications Lua délivré.
Nous avons ajouté et modifié les fonctions suivantes :
<vec3> core.getVelocity(): Renvoie la vitesse linéaire de la construction, par rapport à son parent, dans les coordonnées locales de la construction.
<vec3> core.getWorldVelocity(): Renvoie la vitesse linéaire de la construction, par rapport à son parent, dans les coordonnées du monde.
<vec3> core.getAbsoluteVelocity(): Renvoie la vitesse linéaire absolue de la construction dans les coordonnées locales de la construction.
<vec3> core.getWorldAbsoluteVelocity(): Renvoie la vitesse linéaire absolue de la construction dans les coordonnées du monde.
<vec3> core.getParentPosition(): Renvoie la position du parent de la construction lorsqu'elle est ancrée dans les coordonnées locales de la construction.
<vec3> core.getParentWorldPosition(): Renvoie la position du parent de la construction lorsqu'elle est arrimée, dans les coordonnées du monde.
<vec3> core.getParentForward(): Renvoie le vecteur de direction avant du parent de la construction dans les coordonnées locales de la construction.
<vec3> core.getParentUp(): Renvoie le vecteur directionnel ascendant du parent de la construction dans les coordonnées locales de la construction.
<vec3> core.getParentRight(): Renvoie le vecteur de direction droite du parent de la construction dans les coordonnées locales de la construction.
<vec3> core.getParentWorldForward(): Renvoie le vecteur de direction avant du parent de la construction dans les coordonnées du monde.
<vec3> core.getParentWorldUp(): Renvoie le vecteur directionnel ascendant du parent de la construction dans les coordonnées du monde.
<vec3> core.getParentWorldRight(): Renvoie le vecteur directionnel droit du parent de la construction dans les coordonnées du monde.
Des questions ? Des commentaires ?
Nous sommes sûrs que certains des passionnés de Lua de notre communauté auront des questions et des commentaires sur ce blog. Postez-les ici pour que notre expert résident de Lua, Ligo, puisse en discuter avec vous: https://board.dualthegame.com/index....ussion-thread/
La deuxième partie est prévue pour la semaine prochaine. Vous y trouverez de nombreuses informations sur les changements apportés au radar, la base de données de la bibliothèque, un atlas en jeu et un système de gestion des événements.