Cette brève du soir pour vous présenter un des derniers outils que j’ai développé. Il s’agit d’un éditeur que j’ai construit pour aller de paire avec la dernière version du moteur 3D isométrique que je développe depuis plus d’un mois.
La grande nouveauté, c’est l’apparition de triggers éditables, qui permettent d’associer la case d’une map à une action prédéfinie à l’intérieur du moteur. Je trouvais plus intéressant à long terme de privilégier un système d’actions qui soit totalement indépendant des tiles (graphismes). La position des triggers est placée dans une matrice séparée qui est interrogée à chaque fois qu’un personnage fait halte sur une case. L’intérêt c’est de pouvoir trigger par exemple une action asseoir à partir de n’importe quel modèle de tile (graphisme), que cela soit une chaise, un fauteuil, un canapé, une table … Deuxième avantage et non des moindres, les tiles ne sont pas des objets customs mais se contentent juste d’être de vulgaires symboles destinés à l’affichage. Ce n’est donc pas l’objet que l’on interroge pour pouvoir déclencher une action mais une matrice dédiée qui broadcastera (si une action lui a été assignée aux coordonnées x,y) un message aux éventuels intéressés. Pas besoin de switch pour identifier l’action à appeler, ce serait une perte de process, j’utilise simplement des nombres (identifiants) qui sont concaténés au moment du broadcast à la chaîne Trigger.

Pour l’instant seulement quatre triggers sont disponibles : Trigger1, Trigger2, Trigger3 et Trigger4 qui permettent de sortir d’une map pour aller sur une autre. La classe MapFactory sait que si le Trigger1 est appelé, elle devra charger la map qui se trouve au Nord de celle en cours d’affichage, si c’est le Trigger2 celle à l’Est , le 3 celle au Sud… Et ainsi de suite … Elle calculera dés lors dynamiquement le nom de la prochaine map. Je vous passe outre la nomenclature que j’utilise pour les identifier. Une fois le document XML chargé et parsé elle recherchera un Trigger correspondant pour déposer le personnage en se remémorant la direction d’où il venait. Si le personnage allait au Nord, il sera placé à la sortie Sud de la map suivante dos à celle-ci.
Deuxième nouveauté, le système d’export des données, je n’exporte plus que les cases occupées avec un système de compression en base32, et celles qui sont libres et interdites avec une conversion binaire sur 5 bits passée elle aussi dans la moulinette base32. J’obtiens du coup en sortie un format hyper léger qui brutalise beaucoup moins la bande passante et le processeur pendant les temps de chargement. (C’est fou d’ailleurs comme l’objet XML est gourmand en process au moment du parsing !). Ma classe XmlToObject me sert d’interface pour reconstruire de façon intuitive l’objet map une fois loadé.
Pour résumer, j’ai choisi au niveau de mon moteur un système avec trois matrices par map. Une matrice pour les objets graphiques, une autre pour les triggers et une dernière constituée uniquement de booléens pour accélérer le pathfinding. J’utilise le pathfinder de Grant Skinner que j’ai converti en AS2.0 pour avoir les temps de calculs les plus courts et ne pas surcharger le système ou freezer l’affichage.
Dernier point, chaque objet graphique existe dans deux orientations différentes, les deux dernières sont générées dynamiquement en passant la propriété _xscale en négatif pour un gain de poids évident.

C’est marrant, mais plus le temps passe et plus je m’aperçois que le développement d’Atomic Boarder ressemble au développement d’un vrai jeu à petite échelle, avec ses outils, son moteur, ses retards au niveau des délais qu’on s’était fixé, ses bugs, ses différentes versions, orientations et évolutions … J’ai aussi développé récemment un player pour accompagner l’éditeur. Il permet de tester en deux temps trois mouvements une map à l’aide d’un personnage de son choix. Pour le graphiste qui design les maps, c’est assez pratique.
On devrait ouvrir demain avec une version alpha du moteur d’affichage et quatre maps disponibles. La première version multi-joueurs ne devrait pas tarder non plus, un bon mois (maxi) devrait suffire si je ne m’attarde pas trop à fignoler et enrichir le moteur isométrique de nouvelles features.
De nouvelles perspectives graphiques sont envisagées pour plus tard, on projette de faire une version avec des personnages 3D exportés en bitmap. On a déjà commencé à faire des tests et ça rend plutôt bien.
Je vous tiens au courant…
Vraiment du beau boulot
bravo 

Je commence tout juste à m’intéresser à la 3D iso et j’espère en arriver là un de ces 4
bye
Posted by ekameleon | 7 novembre 2003, 8 h 24 minPS : c’est marrant
tu as posté ton message le 5 décembre ? c’est moi qui suit totalement en retard ? ou toi qui est passé dans une faille dimensionnelle ?
Posted by Anonyme | 7 novembre 2003, 8 h 25 minlol, sûrement une intervention divine de la quatrième dimension !
Merci pour tes commentaires
Posted by Francis Bourre | 7 novembre 2003, 8 h 28 minYop, du super boulot !!! Tu penses rendre tes sources dispos en OpenSource ? (pas interessé du tout le mec ;o))
Sinon, sans vouloir te mettre la pression, quand est-ce que tu penses mettre les affichages ISO dans ton ticket sur le Z-sorting ?!? 8D Je m’étais lancé dans une moteur 3D iso, mais en fait je suis en plein doute sur le langage à utiliser :
- AS2, langage dans lequel j’ai commencé ?
- ou AS1, que je connais mieux, et qui me parait plus cohérent surtout, mais qui demande à ce que je recode mes classes …
A+, et encore bravo !
Posted by LAlex | 7 novembre 2003, 8 h 50 minYep,

ton moteur m’a l’air bien partit .. ce serait pas mal d’en avoir une petite demo live
Nous avons developpé un moteur iso du même type il y a un peu plus d’un an accompagné également d’un éditeur de room, vous ai créé un petit apperçu ici : http://www.polykrom.com/isoed/isoEd.gif
L’edition et la gestion des hauteurs y est intégrée, edition de grosse tile et assignation d’action broadcastée depuis une tile précise (idem que toi).
Le tout est sauvegardé en tant qu’Objet dans un SO permanent sur un serveur FlashCom gerant le multiuser (les performances sont assez impressionantes).
J’avais à l’époque étendu le pathfinding de Casper schuirink :
http://www.schuirink.net/~casper/flash/AI/path-flasm.html, mais les dernières versions que j’ai vue depuis me semble encore plus optimales.
Nous allons nous remettre dans le bain iso dès le mois de décembre, un gros projet de site communautaire nous attends.. j’ai hâte !!
En tous les cas merci pour toutes les infos dont tu nous fais part ici concernant tes recherches , ça motive à améliorer encore et encore ce type de dev.
J’essayerai de vous tenir au courant de l’évolution de notre systeme dans mon blog ou ici à l’occas
chuss
Posted by Polykrom | 7 novembre 2003, 9 h 24 minOuah, il a l’air de déchirer ton moteur aussi polykrom !!!
On peut pas en avoir un ch’tite demo aussi ?!?
Posted by LAlex | 7 novembre 2003, 11 h 22 minLAlex : Yop, du super boulot !!! Tu penses rendre tes sources dispos en OpenSource ? (pas interessé du tout le mec ;o))
petepx: Non malheureusement, je suis payé pour développer ce moteur, donc au final je ne suis pas autorisé à le diffuser publiquement.
Je peux juste promettre de vous faire partager quelques unes de mes découvertes et avancées au fer et à mesure que je le développerai.
Sinon Artepict Studio compte plus tard le vendre pour une somme modique sous forme de set d’outils et composants.
LAlex : Sinon, sans vouloir te mettre la pression, quand est-ce que tu penses mettre les affichages ISO dans ton ticket sur le Z-sorting ?!?
petepx : Pendant ce week-end de quatre jours, promis
LAlex : Je m’étais lancé dans une moteur 3D iso, mais en fait je suis en plein doute sur le langage à utiliser
petepx : Si j’étais toi, je le continuerai en AS2.0 :p
Polykrom : ton moteur m’a l’air bien partit .. ce serait pas mal d’en avoir une petite demo live
petepx: C’est chose faite maintenant … Comme le suggérait LAlex, ça serait cool d’avoir une demo du tien aussi qui a l’air assez abouti si on en croit le screen
Sinon question au passage, comment amortir commercialement une license FLashCom, quand je vois les prix des licenses j’hallucine !!! Quand tu penses que après être passé à la caisse t’as toujours pas payé le serveur dédié !!!
Et dernière question, comment géres-tu tes sets graphiques (persos + tiles), je serai ravi d’en discuter avec toi si ça te dit
Posted by Francis Bourre | 7 novembre 2003, 23 h 04 minSalut, beau boulot.Félicitation!
Une petite idée, comme tu as 1,2,3 et 4 en tant que trigger,tu pourrais ajouter 5 et 6 pour haut et bas.
Posted by Mazesoul | 19 janvier 2004, 21 h 05 minmoi je suis informaticien et je me dis tjrs kil y a des sacres psycho du dev. sur le net….ben ten es un!!bo boulot,je me suis jamais interesse a la 3D ms ca a l’air pas mal
Posted by Amo | 15 mars 2004, 11 h 56 minHow would I get in touch with you for a possible project collaboration, Francis?
Joen Weidemann
Posted by Joen Weidemann | 31 mars 2004, 13 h 04 mincool ton projet

j’ai decouvert atomic boarder ya qques mois, mais je savais pas que c’etait de toi
Je m’etait lancé dans un projet de ce type il y a qques temps, en as1, mais je l’ai abandonné, la publication aurait été impossible car mon server est codé en rebol et je n’ai pas les moyen de me payer un dedié…
Quel server utilises-tu?
dans tous les cas, tres bon boulot
Posted by BlackWizzard | 2 avril 2004, 11 h 01 minSalut F,
Je suis content que tu continues à updater ton blog. Il est vraiment actuel.
Tu aurais un conseil pour compresser une série de chiffres?
La compression LZW de Lalex a un glitch.
J’apprécierais ton commentaire.
Continue le beau travail.
Denis-Patrick Tremblay
Posted by Denispat | 19 juillet 2004, 23 h 40 minLa compression LZW n’est pas de LAlex, mais de Shoebox …
Posted by LAlex | 20 juillet 2004, 9 h 10 minOups. Désolé.
J’ai essayé de convertir ma série de chiffres en binaire, question de la compresseur. Le hic c’est de conserver les valeurs binaires. J’ai essayé de les convertir en charcode mais le résultat ne ce décompile pas : (
Vous feriez quoi à ma place?
Posted by Denispat | 20 juillet 2004, 14 h 41 min‘de la compresseur’ = de les compresser
J’ai pas encore eu ma dose de café on dirait : P
Posted by Denispat | 20 juillet 2004, 15 h 04 minDenispat > Tu devrais poser tes questions sur des forums … Un blog n’est pas vraiment approiprié pour ca ! ;o)
Flash Forum
Flash France
FlashXPress
++ ^^
Posted by LAlex | 20 juillet 2004, 15 h 32 minDésolé, je ne voulais surtout pas abuser du blog.
Je n’aurais pas cru qu’à un blog qui parle d’Actionscript il y aurait été abusif de demander conseil.
Qu’importe. Merci de votre attention.
P.-S. – Tu devrais retirer ton code bugué Lalex ; P
Posted by Denispat | 21 juillet 2004, 1 h 04 minExcellent !!!
Salut à tous et félicitation à toi Petepx!
))
Je suis actuellement sur un projet similaire (3d iso chat)…
Je suis donc agreablement surpris et surtout tres heureux d’etre tombé sur un blog evoquant le 3d iso multiuser en Flash
J’aurai pas mal de question mais je ne vais pas polluer ton blog…ceci dit si tu as un tout ti peu de temp, je serai ravi de faire ta connaissance Petepx. Je suis sur Paris
Bon couraaaaaaaaage :p
Posted by Red | 17 octobre 2004, 17 h 54 min