Javelin Studio X-Plane 12 English

Xplane Scripting House · X-Plane 12

Des Blueprints pour X-Plane

Xplane Scripting House réunit les graphes de nœuds et les scripts Lua dans une seule extension. Câblez votre logique visuellement, lancez-la aussitôt dans le simulateur, et passez à Lua pour ce qu'un graphe ne sait pas faire.

  • Gratuit
  • Open source · MIT
  • X-Plane 12
  • Windows 10/11

Graphes de nœuds

Un éditeur visuel dans le style des blueprints des moteurs de jeu : les événements à gauche, les actions à droite, des fils entre les deux. Chaque graphe est un simple fichier .cmgraph.

L'éditeur de graphes avec un graphe qui envoie un camion-citerne sur un trajet
L'éditeur de graphes : un camion-citerne qui suit un trajet tracé dans World Editor 3D, avec des messages traduits.

Lancé dans le simulateur

F5 envoie le graphe à X-Plane et le lance aussitôt. F6 active le débogage en direct : les fils s'allument quand ils se déclenchent, et les valeurs s'affichent au survol.

Une bibliothèque de nœuds

Événements, flux, variables, maths, logique, vecteurs, texte, valeurs et commandes du simulateur, objets, sons et déclencheurs. Tab ou clic droit pour en ajouter un, glisser depuis une broche pour le câbler.

Global ou par scène

Les graphes globaux tournent à chaque vol. Une scène peut apporter ses propres graphes : ils démarrent quand vous arrivez à moins de 20 km de son aéroport et s'arrêtent au-delà de 25 km.

Ils connaissent le monde

Follow Spline envoie un véhicule sur un trajet de World Editor 3D, choisi par son nom ou son rôle. On Enter, On Exit et While Inside réagissent à ses volumes déclencheurs.

Fonctions et graphes rangés

Réduisez une partie d'un graphe en une fonction sur sa propre page, appelez-la de partout, et laissez Ctrl+L ranger les nœuds.

Traduits

Les textes peuvent être des clés d'une table de traductions : un graphe affiche ses messages dans la langue du pilote. Anglais et français aujourd'hui.

Lua, quand un graphe ne suffit pas

LuaJIT 2.1 dans un bac à sable, pour les événements complexes du monde, les systèmes d'avions et, plus tard, les écrans de cockpit.

  • Gestionnaires d'événements, minuteries, et coroutines qui savent attendre : xsh.on, xsh.timer.every, xsh.wait.
  • Rechargement à chaud : enregistrez le fichier pendant que X-Plane tourne, il se recharge en moins d'une seconde et garde son état.
  • Les erreurs donnent le fichier et la ligne. Un budget de temps par image et un chien de garde arrêtent une boucle folle avant qu'elle ne fige le simulateur.
  • Sûr par conception : pas de FFI, un bac à sable, et son propre LuaJIT qui n'entre jamais en conflit avec XLua ou FlyWithLua.
-- scripts/hello.lua: runs on every flight,
-- and reloads as soon as you save it
local agl = xsh.dataref("sim/flightmodel/position/y_agl")

xsh.on("start", function(info)
    xsh.state.runs = (xsh.state.runs or 0) + 1
    xsh.notice("Hello from Lua (" .. xsh.state.runs .. ")", 0, 4)
end)

xsh.events.on("tow_coming", function()
    xsh.log("tow coming, " .. math.floor(agl.value) .. " m AGL")
end)
Un script global : une valeur du simulateur, un message, un état gardé entre les rechargements, et un événement de l'équipe de remorquage de Career Mode.

Où il en est

Construit en cinq étapes, chacune fonctionnant dans X-Plane avant la suivante.

  • La machine virtuelle. LuaJIT, le bac à sable, les scripts globaux, le rechargement à chaud, et les graphes qui tournent dans XSH. Construite et testée hors simulateur.
  • L'API. Datarefs, commandes, temps, monde, objets, sons, trajets, traductions, messages, menus, et l'aide dans VS Code.
  • Graphes et Lua ensemble. Les graphes appellent Lua, les événements circulent dans les deux sens, des variables partagées.
  • Systèmes d'avions. Des scripts par avion avec leurs propres datarefs et commandes, et un exemple d'hélicoptère.
  • Écrans. Une API de dessin 2D pour les écrans de cockpit, et son éditeur.

Télécharger

Pas encore publié

Pas encore publié. Le premier paquet viendra quand l'API Lua sera prête et testée dans X-Plane.

Code source

Un cœur en C++17 sans code X-Plane, un LuaJIT statique compilé sans FFI, le cœur des graphes et son éditeur Qt 6, et un plugin X-Plane léger.

Code source sur GitHub : bientôt