Voir la version complète : Aborder le développement de scripts (X3CT)
grimgroth
22/10/2008, 00h29
Bonjour à tous,
je viens d'acquérir X3 terran conflict, et je rentre ainsi dans la famille des joueurs de l'univers X.
J'ai participé à la campagne de X3 réunion et j'ai été franchement admiratif devant le travail effectué par certains en matière de scripts.
Voilà pourquoi je viens solliciter vos conseils.
Comment avez-vous commencé à écrire des scripts pour X3 (que ça soit réunion ou les versions précédentes) ?
Existe-t-il des API fournies par Egosoft, ou simplement des documentations ? Et dans le cas contraire, avez-vous épluché les fichiers créés par l'installation/exécution du jeu ?
Bref, de quelle manière commencer l'écriture de scripts ?
Merci d'avance.
Grim
Hop, teleporte dans le forum idoine. Bienvenue a toi. :-D
C'est une bien vaste question que tu poses la. Je laisse nos maitres scripteurs te repondre...
Ben... Pour ma part, je suis parti de scripts simples réalisés par d'autres scripteurs pour comprendre les bases de l'éditeur. Une fois qu'on a compris comment ça marche, je me base sur le MSCI Handbook (document sur le scripting de 120 pages, bien que dépassé, avec une description de pas mal de fonctions de script, disponible sur le or) quand j'ai un doute sur une fonction, pour le reste, ça se fait "au feeling". Vu que je suis programmeur de profession, et ayant fait du modding sur pas mal d'autres jeux, j'ai pas besoin de beaucoup plus.
Sinon, il y a quelques tutoriaux sur le forum Egosoft.
Et si vraiment j'ai un problème, je demande à Azz. :biggrin:
Pour les liens vers des tutoriaux, si quelqu'un peut accéder au forum Egosoft et les retrouver...
http://forum.egosoft.com/viewtopic.php?t=80504
J'ai commencé sur X2 à force de bidouiller les scripts pour les rendre compatibles entre eux et me faire une méga-install avec tous les scripts qui me plaisaient..
J'en avait modifié pas mal pour les adapter à mes besoins/goûts et les débuggers quand c'était nécessaire. J'ai fini par connaitre sur le bout des doigts tous les script de la Xai corporation (alias Moggy2), ceux de LV, et quelques autres...
Quand X3 est sorti, vu que tout à coup il manquait un tas de choses auxquelles je m'étais habitué sur X2, j'ai décidé de les recréer, et du coup d'en faire profiter les autres. En fait il y'avait pas mal de scripts que j'avais déjà développés sur X2 et que j'ai transposés et adaptés sur X3, ce qui m'a fait gagner du temps...
Pour débuter, comme l'indique Ben, le mieux est de prendre un script existant, de fonctionnement simple, et d'essayer de comprendre ses mécanismes, de le transformer, adapter, améliorer jusqu'à ce que ses rouages n'aient plus de mystère.
La doc incontournable est le MSCI programmer's Handbook, un document pdf, réalisé par un passionné (décidemment, que ferait egosoft sans eux :hem:...), qui commence à dater puisqu'il a été réalisé à l'époque de X2. Il ne recense pas les nouvelles fonctions introduites par x3 et x3 TC, mais toutes les fonctions de base y sont et sont toujours valides, la bible du scripteur en quelque sorte.
téléchargeable dans la section download de X2 (et en anglais of course)
http://www.egosoft.com/download/x2/bonus_en.php
ça plus les tutos dont Tixjoe a donné le lien, il y'a déjà de quoi faire...
Sinon l'éditeur de script à le bon goût de nous prendre par la main puisqu'on ne tape pas les fonctions, mais on les 'pioche' dans des menus, ce qui rend les premiers pas plus simples, même si par la suite on peut pester contre la lenteur et lourdeur du procédé...
L'autre avantage de l'éditeur est qu'il est intégré au jeux, on peut donc créer/tester/modifier en temps réel.
On peut même laisser ses Mk3 trimer et ses usines engranger pendant qu'on développe tranquillement son script à l'ombre d'une station :lolkc:
Le nombre de fois que j'ai dû fermer en catastrophe un script en cours d'édition à cause de l'arrivée impomptue de xénons ou pirates un peu énervés :-D
grimgroth
23/10/2008, 21h45
Merci pour vos réponses.
Je suis moi aussi développeur, mais j'ai la fâcheuse habitude bosser avec des docs (plus ou moins carrées mais quand même).
Je vais essayer de suivre vos traces, et de regarder des petits scripts.
Néanmoins, pouvez-vous me donner le principe de fonctionnement d'un "script" ?
De quelle façon un script est pris en compte par le jeu, A quel moment, comment le lancer, quel est le point d'entrée d'un script, est-ce qu'il y a un point d'entrée (comme un main() en C) ? etc.
Merci pour vos réponses
Grim
nexuspolaris
24/10/2008, 13h22
il y a un max de développeur Irl qui jouent a X3 c fou ...
je suis moi même developpeur
Si tu veux te lancer dans le scripting, surtout n'hesite pas ! :-D
il y a un max de développeur Irl qui jouent a X3 c fou ...
je suis moi même developpeur
Peut être parce que X3 est un jeu très technique, où on passe beaucoup de temps à programmer le comportement de vaisseaux, en défense, en transport, ravitaillement etc..., sans parler de la gestion des usines.
ça titille forcément tout développpeur qui se respecte et qui trouve là la transposition ludique de son boulot irl.
Si en plus on parle de développement de script, alors là le programmeur normalement constitué s'évanouit de plaisir yaisse2
J'ai moi aussi été développeur, gestion commerciale, production, stocks et comptabilités toussa... mais je vous rassure (ou pas) il y'a longtemps que j'ai arrêté.... c'était dans une vie (très) antérieure :-D
pouvez-vous me donner le principe de fonctionnement d'un "script" ?
De quelle façon un script est pris en compte par le jeu, A quel moment, comment le lancer, quel est le point d'entrée d'un script, est-ce qu'il y a un point d'entrée (comme un main() en C) ? etc.
Tout d'abord il y'a un petit abus de langage dans le monde Xiens qui fait que ce qu'on appelle un script (par exemple pilotIA) est en fait tout l'ensemble des scripts créés pour cette application (par exemple le script d'éjection de l'IA, lui même appelé par le script de gestion des extension IA etc...)
Pour lancer un script il y'a plusieurs façons de procéder.
- La plus évidente est de lier le script à une commande qu'on va rajouter dans les menus de vaisseaux ou de stations, se reférer pour cela au tuto de SerialKicker figurant dans le lien donné par Tixjoe.
Globalement il existe 62 emplacements fixes par menu (menu combat, de piratage, de déplacement..., ou de station). Ces emplacements sont fixes et limités, si deux scripts utilisent le même slot commande, le dernier lancé écrasera la commande mise en place par le précédent. D'où l'importance que les scripteurs se coordonnent si on veut avoir un minimum de compatibilité entre les scripts. Il existe un post dans la section 'scriptage' du forum anglais où chacun peut réserver les slots commandes qu'il veut utiliser.
-On a la possibilité de lancer automatiquement certains scripts au démarrage du jeu. Il suffit pour cela de nommer le script 'setup.VotreNomDeScript'.
Bien évidemment, on utilisera ce type de script en premier lieu pour mettre en place les commandes-scripts du paragraphe précédent.
-On a la possibilité de lancer automatiquement un script au démarrage du jeu quand un joueur utilise une map particulière. Même principe que précédemment, sauf que le nom du script sera cette fois-ci 'galaxy.NomDeLaMap.VotreNomDeScript'. C'est utilisé dans les mods pour mettre en place certains éléments particuliers, ou des départs alternatifs.
-Enfin il existe ce qu'on appelle les AL-Plugin qui se lancent eux aussi au début du jeu, et qui ont la particularité de gérer un timer et donc de lancer des tâches à intervalles définis. Ils permettent aussi au joueur un paramètrage type O/N qui apparait dans le menu option/réglage IA du jeu.
ça doit aussi sûrement apparaitre dans un tuto quelque part...
sinon, se reférer au MSCI programmeur's handbook. :wink:
grimgroth
24/10/2008, 21h57
C'est vrai que ça semble être un sacré bac à sable pour les gens qui veulent se donner la peine de plonger dans le scripting.
J'espère arriver un jour à de belles créations, c'est pas comme au boulot où on est pressé par le temps.
En tous cas, merci pour vos réponses. J'ai commencé à lire le msci programmer's handbook, mais il était tard et j'ai fini par aller me coucher.
Je suis tombé sur les points que tu (Azz) énumères ici, et je vais continuer la lecture de ce bouquin.
A bientôt pour mes premières questions concrètes.
A+
Grim
Si en plus on parle de développement de script, alors là le programmeur normalement constitué s'évanouit de plaisir http://www.3enfamille.net/vb/../Forum_confrerie/Smileys/content/yaisse2.gif
Ouais, au début. Ensuite, on commence à paniquer, on perd un temps fou à retrouver dans les menus cette ù$*=^$*$^ de fonction qu'on mettrait deux secondes à taper à la main, et on s'effondre quand les problèmes vous tombent sur le coin de la figure, car y a aucun moyen de debugger.
Ca change du boulot, en effet. Une récréation? J'en suis moins sûr. :biggrin:
Je noircis volontairement le tableau, hein. C'est pas si mal foutu que ça. Mais faut autre bien sûr de ce qu'on fait, car la moindre erreur se paie cash : reboot de PC. Y a pas vraiment moyen de rattraper une erreur au vol, à moins de prendre rapidement de très bonnes habitudes : fermer ses if / while dès qu'on les ouvre, blinder chaque while par un timer (wait 5 ms), ce genre de petites choses qui vous évite des 95% de problèmes par la suite lors du debuggage.
De toute façon, la programmation nécessite une dose non négligeable de sadisme et de masochisme. Il faut savoir souffrir, et il faut savoir évacuer sa souffrance sur quelqu'un d'autre, en particulier sur son PC ou ce ù^$^=)=$ de Visual Studio 2005 de ù^$£!,;=$ qui n'arrête pas de me gonfler pour des ù?$^:!*/=ù%. Le seul moyen de conjurer ça est de pousser un énorme rire sadique lorsque vous terminez une tâche qui vous a pris plusieurs jours, ou lorsque vous trouvez un bug que vous cherchez depuis plusieurs heures. J'ai une certaine réputation au boulot sur ce point. Ils croient tous que je suis fou. Mais ils le sont sans doute plus que moi. Et puis, ce n'est pas moi qui ris en permanence, c'est mon double maléfique.
grimgroth
26/10/2008, 11h18
Yop m'sieurs dames,
Je disais justement à un collègue que le métier que nous faisons nous rendait fous. Je vois que je ne me trompe pas :)
Pour en revenir à mes moutons, j'ai lu le MCSI Handbook (presque tout) et suivant vos conseils je vais regarder un peu comment ça se passe dans des scripts simples. En avez-vous à me conseiller pour débuter ?
Et aussi, est-on obligé d'éditer nos scripts avec l'éditeur ingame ? On ne peut pas écrire tout ça dans un bon vieil éditeur de texte externe ?
Merci !
Non, on est obligé de passer par l'éditeur in-game.
On peut toutefois visualiser les scripts hors-jeu en xml, c'est parfois plus pratique, d'autant qu'on peut ainsi suivre les liens des appels de scripts.
Vu le relatif manque de scripts TC pour l'instant, je te conseillerai bien de regarder le script de cheat de cycrow, tu y verras l'utilisation de pas mal de fonctions comme la création de vaisseaux, de groupes, de stations etc... et l'exploitation des menus.
Powered by vBulletin™ Version 4.0.3 Copyright © 2012 vBulletin Solutions, Inc. Tous droits réservés - Version française vbulletin-fr.org