Aide - Recherche - Membres - Calendrier
Version complète : AS3/Sandy 3.0 : aide au choix d'un moteur 3D
Centre de Formation Flash - Forums Adobe Flash > Communauté > Jeux Flash: Développement en commun
Monsieur_Spi
Bonjour à tous,

Certains d'entre vous ont suivit l'évolution de mon petit jeu d'aventure "Aigle d'Or 2008 - épisode 1".
J'ai décidé il y a quelques temps de me lancer sur l'épisode 2 qui sera plus orienté JDR.
J'ai commencé par choisir un moteur Tile Based 2D simple en vue du dessus mais je me suis rapidement confronté à certaines limites ne me permettant pas d'avoir les rendus que je voulais.
Je me suis donc dirigé vers les moteurs 3D et j'ai profité de l'excellent lien donné par Logic dans ce topic pour en apprendre un peu plus et faire mes propres recherches (voir à mon message à la fin du même topic).

Pour bien comprendre ce que je cherche à faire il faut vous préciser que le jeu qui m'a inspiré au départ est Might and Magic 6 (voir ce petit dossier). C'est un moteur 3D simple tout à fait adapté au jeu que je souhaite faire.

Ma première idée était de me lancer sur la création d'un moteur Raycasting (grâce aux tutos de Strilles ou de André Michelle), mais je me suis retrouvé confronté à un problème de ressources en AS1/2 qui rend le moteur inutilisable pour un jeu (trop lent).

En suivant les différentes discutions sur le forum j'ai fini par comprendre mon intérêt à passer aux classes et sur les conseils de Paodao j'ai fait le choix de me diriger vers un moteur du genre "Sandy".

De là je me suis apperçut qu'il était inutile de commencer avec un Sandy 1.2 (vu que la 2.0 semble buggée) et qu'il valait mieux commencer directement avec Sandy 3.0 et AS3.

On en arrive à mon problème, aujourd'hui je me dépatouille en AS1/2, j'ai deja créé quelques jeux et je bosse sur MX 2004 mais je ne suis pas développeur même si j'ai des notions de C++ et assembleur (des restes d'un IUT informatique lointain).

Il me semble que je soit condamné à passer à AS3 et donc CS3 si je veux pouvoir obtenir des rendus intéressants et utilisables dans un jeu, j'ai donc commencé à lire le livre de Thibault Imbert que je trouve très bien mais pas super accessible pour apprendre l'AS3, enfin surtout au niveau de la syntaxe qui à première vue a pas mal changé, ceci dit j'en suis qu'au début du bouquin (1096 pages quand même !!!).

Parallélement j'ai regardé quelques tutoriaux sur Sandy (voir ici) et le "getting started with CS3 and Sandy 3.0" en vidéo (voir ici).

J'ai fini par comprendre pas mal de trucs et surtout l'intérêt de passer par AS3 qui réduit considérablement les ressources utilisées (10 fois plus rapide que AS1/2 notament à l'aide du typage fort qui sert à la compilation) et d'utiliser un module externe pour gérer la 3D, et Sandy semble être le plus maléable pour mes besoins. Je vais donc acheter CS3.

Ceci étant dit, j'ai un soucis de compréhension, avec mes petites notions de programmation je me sent un peu perdu dans tout ces changements et j'essayes de trouver de la documentation Sandy en français qui m'explique un peu comment gérer toutes les classes et les subtilités d'utlisation du moteur.

J'ouvre donc aujourd'hui ce petit topic pour tous ceux qui, comme moi, souhaiteraient se lancer sur AS3+Sandy 3.0 pour créer des jeux vidéos 3D avec Flash.

Si vous avez des infos, des tutorials, des astuces ou autre en Français n'hésitez pas à en faire profiter la communauté icon_wink.gif
Il existe bien sur une partie dédiée à Sandy sur Mediabox, mais rien de réellement dédié aux jeux.

D'autre part, je souhaitait savoir si d'après vous le choix de Sandy est le meilleur ou du moins le plus maléable ou le plus facile à prendre en main pour la création de jeux, avez-vous des conseils en ce sens ?

Je laisse ce topic ouvert, j'y ajouterai mes différentes évolutions autour de la construction de mon moteur (si je ne laisses pas tomber par manque de temps icon_razz.gif ).

Merci à tous.
verpan
Si tu as des sous à investir je te conseillerais plutôt d'acheter director, tu auras un vrai moteur de 3d hardware rapide avec des particules des bones et autres effets, pas mal de calculs mâchés par l'api lingo 3d (notemment tout ce qui est matrices)

Si tu es un peu light niveau budget c'est pas la peine d'acheter flash cs3, il y a flashDevelop qui est gratuit et plus rapide que flex builder.


Concernant ton jeu maintenant, je crois bien que m&m6 mixait terrains et murs, le raycaster c'est pas bon pour ça , sandy me semble être la solution la plus adaptée en attendant astro.


La plus grosse difficulté dans ton dev va être la gestion du culling: il faut trouver les cellules qui sont présentes dans ton champ de vision.

Il y a deux algorithmes à mixer (et cramponne-toi car c'est du travail), ça serait long de les décrire dans les détails alors je le fais en survol, tu pourras me demander des précisions ensuite:


A/ culling de frustum
ça sert à trouver les cases présents dans le trapèze de vision


il y a deux formules de base:

1/calculer les 4 "plans" du frustum 2d.
il y a plusieurs façons de faire, de la plus simple/lente à lire à la plus compliquée/rapide à lire : vecteur normal et distance , équation cartésienne , équation réduite

2/faire un test approximatif carré vs frustum 2d.
comme ce sont des carrés on a que deux points du carré à tester contre chaque plan
si chaque plan du frustum a deux points du carré du côté + la case est entièrement visible
si chaque plan du frustum a au moins un point du carré de son côté + , la case est partiellement visible
si au moins un plan du frustum n'a aucun point du carré de son côté + , la case n'est pas visible

ensuite un bref résumé de l'algo:

ta map doit avoir un format puissance 2 pour pouvoir la parcourir rapidement avec la règle du quad tree qui va téviter d'avoir à tester toutes les cases visibles: quand une cellule est entièrement visible, pas besoin de prolonger les tests sur ses child car on sait que tous ses enfants sont visibles, et quand une cellule est pleinement cachée on stoppe la récursion.

le culling doit être ordonné en front to back, cela se passe directement dans la fonction récursive. ça permet déjà de limiter le nombre de polygones par l'arrière plan mais ça permet deux autres optimisations qui vont te quadrupler la vitesse:


B/ réduction détail en arrière plan

plus on est loin de la caméra, plus on limite la profondeur de récursion et plus on représente le terrain avec des chunk larges et peu détaillés (par ex des carrés composés en triangles disposés en étoile)

tu vas gagner beaucoup de vitesse dans les espaces très ouverts



C/ occlusion

rien ne sert de tester les cellules qui sont cachées par une autre, par exemple quand tu affiches un mur qui cache ce qui se trouve derrière, ou une petite colline dont les heights dépassent le haut du champ de vision

ton culling étant ordonné front to back, tu consultes les occluers avant ce qui est derrière. A chaque fois que tu tombes sur une case occludante, tu relances deux nouveaux frustums de part et d'autre de cette case

avec cette optimisation tu auras un rendu vraiment très rapide dans les espaces avec beaucoup d'obtruations





voilà bon courage tu vas en avoir besoin...
Monsieur_Spi
Salut,

Merci pour ta réponse, je crois en effet qu'il y a du boulot mais çà m'intéresse.
Je vais commencer à regarder Sandy de vachement plus près, je viendrais surement poser des questions au fur et à mesure de mes avancées icon_wink.gif
verpan
et si tu as peur de ne pas avoir le temps de te lancer dans ce genre de dev, il vaut mieux te rabattre sur de la 2d

je bosse sur un moteur de ce genre en ce moment et j'en bave icon_neutral.gif



pour l'algo du culling ce n'est pas la peine de t'embêter à le tester avec sandy, un affichage 2d rudimentaire avec des lignes des cases et des chiffres est suffisant

c'est la partie la plus compliquée du dev donc normalement c'est par là qu'il faut commencer (après ça l'affichage avec sandy te paraitra enfantin...)
Monsieur_Spi
En fait le temps ne me fait pas peur, comme je le disait plus haut si je fais le choix de me lancer sur la 3D c'est que le rendu 2D ne me convient pas pour ce que je souhaite faire. La raison qui peut me faire abandonner c'est si je me lance sur un autre projet, comme çà s'est passé sur le dev de l'épisode 1, là je n'aurait plus de temps à y consacrer.
J'ai mis 4 ans entre le départ de l'Aigle episode 1 et sa finalisation et Beta tests avec bien sur de grosses coupures de plusieurs mois (voire 1 ans) avant de m'y remettre, si je dois mettre encore 4 ans pour faire mon MM qu'à celà ne tienne ! icon_wink.gif
Je fais çà pour le fun donc pas de contrainte.
verpan
Tu sembles avoir la patience nécessaire icon_mrgreen.gif c'est déjà un bon début ^^D
kiroukou
Bonjour Monsieur_Spi,

Et bien comme je bosse dans le jeu vidéo flash, et que bien entendu je connais Sandy icon_razz.gif , je pourrais t'aider sur certains points précis alors n'hésites pas smile.gif

Il me semble que Sandy est pas trop mal comme API pour le jeu. Jusque là, sans vouloir rentrer dans un débat puéril, Sandy propose des jeux 3D sympathiques. On a vu un DOOM like, un rubik cube, un pong 3D, un jeu de Karting (en cours wink.gif), et un énorme jeu qui est en cours depuis plus d'un an et qui n'est pas encore sorti (mais celui là, risque de faire très mal!). Bref, d'autres y sont arrivés, alors je ne vois pas de raison que tu n'y arrives pas.

Monsieur_Spi
Hello,

Merci Kiroukou, je n'hésiterai pas en cas de questions.
J'avoue prendre un peu d'avance en postant ce message, je suis en plein déménagement et je risque de ne pas m'y mettre vraiment avant mi-octobre.
J'ai regardé pas mal de choses qui se faisaient et mon choix se porte de plus en plus sur Sandy effectivement qui me semble le plus adéquat à ce que je souhaite faire.
Dès que je m'y met sérieusement je posterai mes évolutions et questions ici, ne serait-ce que pour aider ceux qui se lanceraient dans la même démarche.

Sinon pour info, j'ai deja la plus grosse partie de l'interface de faite, avec tous les modules complémentaires (gestion des caractérisques des persos, embauche de PNJ, gestion des inventaires, HUD général, gestion de la vie et du mana, gestion des maps, scénario, descriptif technique, bestiaire, descriptif et tableaux de valeurs des armes, armures et magies etc..).
J'en suis au moteur et je ne suis pas contre de bosser à plusieurs dessus si d'autres se sentent de tester ce genre de moteur.

Merci en tout cas pour la proposition de coup de main, je n'hésiterai pas si le besoin se fait sentir (et il se fera surement sentir icon_mrgreen.gif )
rif152
Bonjour,
je vais suivre également ce sujet avec interet, car meme si je suis un vrai débutant, j'espere bien réussir a ammener mes projets a termes, et la 3d pourrait etre trés interessante.

Kiroukou, tu travail sur Sandy non? Autrement je suis également interessé de voir un peu les jeux déja réalisé, et le jeu de Karting c'est toi qui le fait?

Et pour terminé, je vais aller consulté les tutoriaux, mais avait vous d'autre conseil?
En tout qu'a je vais suivre ce topic avec interet smile.gif
paodao
Citation
Kiroukou, tu travail sur Sandy non?


je crois qu'on peux le dire oui
Citation
Thomas Pfeiffer(kiroukou) started this project in Oct 2005 and nowadays there's a real development team which provides you all that amazing content.

http://www.flashsandy.org/developers/team

icon_mrgreen.gif

a+
rif152

Action Script

Thomas Pfeiffer(kiroukou) started this project in Oct 2005 and nowadays there's a real development team which provides you all that amazing content.


C'était bien ce que je pensais smile.gif, sacré boulot, et la moi je dit "bravo"!
verpan
Je veux pas faire de pub à thomas mais je pense aussi que sandy est la lib la plus adaptée pour les jeux, si c'est pas la seule, car je crois que papervision et away3d ne gèrent pas le clipping des polygones
kiroukou
smile.gif

Oui sans parler de pub (mais en même temps la vraie pub rapporte de l'argent, moi je ne gagne rien de rien avec Sandy alors... smile.gif), Sandy gère en effet le clipping de polygones, ce qui permet d'envisager de vrais environnement en immersion.
Bon forcement cela ralentit l'animation, mais je vais me pencher cette semaine sur le problème, pour apporter un bon petit gain en performance pour la prochaine version.

Joni
Citation ("Kiroukou")
mais en même temps la vraie pub rapporte de l'argent, moi je ne gagne rien de rien avec Sandy


C'est pour cela qu'on n'hésite pas à te complimenter quand on parle de Sandy. Parce que franchement, faire un truc aussi suivi et documenté pour pas un rond, c'est quand même un beau geste d'altruisme.icon_wink.gif

A+

Joni
kiroukou
Merci Joni.
Je me permet juste de rajouter que sans de réelles aides, cela ne serait vraiment pas été possible. Au début de ce projet il y avait quand même: thecaptain, [NiKO], petepx, itératif, bref que du beau monde qui a bien bossé avec moi pour mettre en place les premières versions. Depuis le projet est plus international, donc pas mal d'aides de partout, meme si ce sont souvent que de petits coups de pouces. Bref tout ça pour dire, que c'est grâce a tout ces gens que je peux encore continuer à partager sur la 3D en flash, domaine qui me plait tant wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.