

#1
Posté 16 October 2012 - 09:03 AM
une tartine de tutos
#2
Posté 20 October 2012 - 14:11 PM
"Pour les machines d'état il faut que ce soit bien expliqué, le parcours de graphe n'est pas forcément quelque chose de compliqué, mais c'est quand même ( à mon avis ) assez abstrait pour des débutants/middle."
En effet c'est d'une part complexe et d'autre par peu documenter d'ou je pense l'intéret d'un tutorial. C'est surement l'outil le plus pratique pour organiser du code notamment pour la création d'interface si on ne veut pas utiliser du MVC
"l'algo de compression z-length c'est assez complexe à expliquer, mais pourquoi pas."
Effectivement c'est un peu complexe... Je l'utilise seulement pour compresser des tableaux. Par exemple lorsque l'on crée une tileMap de 10000x10000x10000 (x,y,z) par exemple cela fait des arrays énormes
Alors qu'en z-length si la tile est identique pour chaque cellule cela revient à framex1000000000000
"Le Fast rendering (CopyPixel + Blitting) peut être intéressant oui."
Très facil à réaliser comme tuto je m'insipire du travail de Iann Loebb
Merci pour vos retours
#3
Posté 20 October 2012 - 14:30 PM

Je prêche pour ma paroisse et les machines d'état, vu que je ne sais pas du tout ce que c'est.
De votre conversation Galacta/AngelStreet je crois deviner que c'est sans doute plus difficile à transmettre qu'à comprendre…

C'est probablement pour ça qu'on trouve peu de documentation.
Du coup ça mérite d'autant plus un tuto.
On n'est pas obligés de se restreindre au public débutants (d'autant que c'est le plus difficile), des ressources pour moins débutants ce serait bien aussi (je réfléchissais d'ailleurs à un tuto "Interfaces" maintenant que j'ai grandement déblayé le terrain des novices…)
La seule question c'est "l'ange des rues est-il aussi un bon pedago ?"

une tartine de tutos
#4
Posté 20 October 2012 - 22:14 PM
- Préchargement de l'appli et des assets
- Mise en place de l'interface avec les Machines d'états
- Gestion multi-lang (JSON)
Si tout le monde est d'accord avec cela je crée un thread sur ce sujet et je bosse sur un draft.
#5
Posté 21 October 2012 - 11:20 AM
Angelstreet, le 20 October 2012 - 22:14 PM, dit :
Si, si… en général on sait si :
1) on a du gout à trouver les mots, les gestes, les métaphores et autres ruses à faire passer ce qu'on a compris.
2) c'est généralement couronné de succès
Je ne sais pas si tu t'es déjà essayé à l'exercice. Sache seulement que c'est plus de travail qu'il n'y parait :s
Je ne tente pas de te décourager hein ! Ce gros travail est aussi source de grandes satisfactions, mais ne rêvons pas c'est du taf !

Citation

Citation
Ah bah zut non, je ne pourrai pas t'aider : je ne parle pas ta langue

Thread, c'est un sujet, un fil, une conversation… ça c'est bon, je comprends même si ça me hérisse, mais draft ? 0.0 Brouillon ? Plan ? Sommaire ? Intro-test ?

une tartine de tutos
#6
Posté 21 October 2012 - 11:47 AM

Citation
J'ai failli zapper ça !

Dois-je comprendre que si un tuto théorique sur l'interface existe alors tu le mettrais en pré-requis ou que tu te proposes d'écrire la partie théorique et d'illustrer via les Machines d'états ?
une tartine de tutos
#8
Posté 22 October 2012 - 18:41 PM
Pour répondre de manière très courte à Nataly et Frangois, je ne compte pas réinventer la roue.
Je souhaite créer un tutorial simple en me focalisant sur l'essentiel. Certainis trouveront que je ne vais pas assez en profondeur mais
je préfère fournir de l'info utile avec un exemple trivial.
Un exemple d'interface en 3 étapes:
- Preloader: Comment précharger des images, ou fichiers txt wav et autres
- Menu: Affichage d'une interface simple avec un bouton "Commencer à jouer" multi-langue
- Game: Si appui sur la touche 1 affichage de l'écran "WIN" si appui touche 2 affichage de l'écran "LOSE"
Avec ce petit exemple on couvre l'interface en expliquant le préchargement, le multi-langue et les machines d'états.
On décompose bien sur en 3 parties pour que cela reste simple.
Pour la charge de travail je pense en travaillant un peu tous les soirs pouvoir faire le tout en 3 emaines 1 mois.
Qu'en pensez-vous est-ce que ça serait satisfaisant?
#9
Posté 22 October 2012 - 22:35 PM

#10
Posté 23 October 2012 - 11:57 AM

Il est bien difficile de donner un point de vue sur le "plan" d'un tuto traitant de ce qu'on ne connait pas, je m'y risque quand même

• Le chargement et préchargement, ça a été déjà plutôt beaucoup traité, par exemple celui de tannoy traite explicitement de l'événement progress… Tu avais vu ? Tu les juges incomplets ? Sinon, que penses-tu de l'idée de poser le préchargement et le chargement en prérequis avec lien qui va bien ?
Frangois et Galacta semblent dire que 'Machine d'état' ce n'est pas un petit morceau, que ça s'adresse à un public averti…
Il me semble que si le chargement de ressources externes doit être appris, alors tu mélanges bien trop les niveaux.
• Interface, je crois qu'on ne s'est pas compris : je parlais de la classe Interface et non de l'interface graphique d'une appli
• Jeu…

j'attends avec impatience les points de vue des autres

une tartine de tutos
#11
Posté 23 October 2012 - 17:38 PM
Effectivement le sujet du préchargement est largement couvert. Donc pourquoi pas seulement couvrir le cas des machines d'états de manière très simple. Heureusement que vou êtes la pour faire évoluer la discussion ! Nous décidons donc de faire un tutorial focaliser seulement sur les machines d'état (finite machine state)

En ce qui concerne les interfaces il y a eu quiproquo (user interface et Interface le design pattern). Un tutoriel sur les interfaces (design pattern) pourrait être utile pour gérer une application multi-plateform par exemple. Mais bon je vais me concentrer sur le premier tutoriel s'il a plus nous déciderons du prochain tutoriel à suivre. (dsl pour les fautes et anglissisme je vous écris d'Irlande et je n'ai que très peu de temps libre)
Goabonga très bonne remarque Xliff vs JSON? J'ai utilisé les 2 dans différents projets sans me pencher sur la question lequel est le plus adapté à mes besoins. Basiquement les eux fonctionnent, il faut que je regarde quels sont les avantages de l'un par rapport à l'autre. Je suppose que xliff permet de faire de la validation automatique? (mais JSON aussi)
#12
Posté 23 October 2012 - 22:33 PM
Moi j'utilise les xliff sur mes applications serveur php, sf2 pour les perfs c'est sérialisé, en cache ... du coup c'est pas comparable.
Mais c'est normalisé ( http://docs.oasis-op...xliff-core.html ) et c'est bien pour soutenir lors d'une pre-vente de s'appuyer sur un respect des normes .... et oui il existe un validateur basé sur une doctype

Avec ton tuto tu peux nous pondre avec un cas concret, une factory qui nous retourne des II18nData a la qu'elle on passe un LoaderJSON ou LoaderXLIFF implementant II18Loader, non ?

#13
Posté 24 October 2012 - 10:27 AM
Honnetement je ne suis pas un expert dans ce domaine. A dire vrai à choisir je pense que pour un tutoriel utile à des débutants le JSON sera plus facile à présenter et ceux même-ci xliff est très proche du xml. JSON a une forme épurée avec seulement l'information utile. En terme de performance, pour la création d'un jeux ou d'une application je ne pense pas que cela soit significatif. Il existe de plus plusieurs validateur de JSON sur le web.
#14
Posté 25 October 2012 - 19:38 PM
J'aimerais proposer un un tutorial sur les machines d'états.
Ce tutoriel visera un public ayant un niveau Intermédiaire ou Expert en AS3.
Les 2 pré-requis étant la POO et les Events (Enterframe, KeyboardEvent).
Pourquoi faire un tuto sur les machines d'états? Plusieurs raisons:
- C'est un sujet peu connu
- Complexe
- Mais très utile
Une machine d'état quézaco?
Une machine d'état est une structure permettant d'organiser du code de manière claire et simple. Le but étant de créer du code facile à comprendre et donc à maintenir et à faire évoluer.
Une machine d'état est principalement utiliser dans le cas ou des actions et des vérifications doivent être effectuées de manière différente selon des états.
Dans quel situation utiliser une machine d'état?
Il n'y a pas de situation particulière. Cependant pour odnner un exemple d'utilisation une machine d'état peut être utiliser pour la programmation d'une interface graphique. Dans une interface graphique les états sont les différents écrans de l'interface. Les actions qui seront effectués vont différer selon les écrans. Il sera plus facil d'organiser le code et de le maintenir si le code est structuré avec une classe pour chaque écran. Un autre exemple est la création d'un personnage animé. Chaque animation du personnage est un état. Si je suis immobile, si je marche, si je cours, si je saute, etc... Je ne réagirais pas de la même manière si l'utilisateur appui sur une touche. (je peux sauter si je cours mais pas si je saute déjà par exemple). J'ai des exemples concrets du code source que je peux mettre à disposition pour montrer le résultat et l'implémentation.
Autre exemple:
//------ On Key Fire ------------------------------------
private function onKeyFire($evt:KeyboardEvent):void {
if($evt.keyCode == 1 && Etat=A && bool=true){
action1();
}else if($evt.keyCode == 1 && Etat=A && bool=false){
action2();
}else if($evt.keyCode == 1 && Etat=B && bool=true){
action3();
}else if($evt.keyCode == 1 && Etat=B && bool=false){
action4();
}else if($evt.keyCode == 2 && Etat=A && bool=true){
action5();
}else if($evt.keyCode == 2 && Etat=A && bool=false){
action6();
}else if($evt.keyCode == 2 && Etat=B && bool=true){
action7();
}else if($evt.keyCode == 2 && Etat=B && bool=false){
action8();
}
On peut voir dans l'exemple de code ci-dessus qu'avec seulement deux états et deux conditions le code se complexifie. Si on était amené à ajouter 2 autres états nous aurions 16 if.
Les machines d'états permettent de séparer le traitement de chaques test conditionnel et des actions associés dans différentes classes.
Dans le tutorial que je créerai je montrerais un exemple beaucoupl plus complexe ou l'on a des actions qui dépendent d'états imbriqués (si etat présent = B et si précédent etat A alors action 1 sinon action 2) et un exemple ou des actions différentes doivent être effectuées 1 seul fois si on entre dans l'état, si on reste dans l'état ou si on en sort.
Voila si le tuto vous intéresse alors dites le et lorsqu'il sera validé par l'admin je le commencerai.
Merci.
#15
Posté 25 October 2012 - 20:01 PM
Faut absolument le faire !!!


J'me comprends…
Illustrator and I
#17
Posté 25 October 2012 - 20:16 PM
J'ai un peu bloqué sur la définition des machines d'états, donc j'ai cherché et je suis tombé sur :
http://iihm.imag.fr/...hm2002-hsm.html
http://fr.wikipedia....i/Automate_fini
Ca fait de la lecture intéressante en plus

Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#18
Posté 26 October 2012 - 00:58 AM
Kosic je ne pense pas que ce sera super compliqué très loin de là. J'essayerai de rendre le tuto le plus simple possible.
Le plus compliqué c'est de comprendre la définition et l'utilité d'une machine d'état. S'en servir et ensuite un jeux d'enfant.
Monsieur spi les exemples de définitions sont intéressants mais trop complexes malheureusement.
#19
Posté 26 October 2012 - 12:01 PM
#20
Posté 26 October 2012 - 13:34 PM

ah ! déjà je commence à voir l'intérêt de la chose

- merci SPI des liens kivonbien -
ça me semble effectivement super intéressant, mais du coup, le plan que tu avais proposé, et surtout le point trois :
Citation
…me semble un peu court… non ?
vu ce que je viens de lire sous ton clavier, de toutes façons, forcé, ça ne va pas être ça :
Citation
De mon point de vue, tu devrais traiter exclusivement le thème machine d'état. Oublie préchargement et multilangues, ça n'a pas à voir.
De fait tu t'adresses à un public de dev pour leur transmettre une façon de raisonner et de structurer son code -si j'ai compris -
C'est donc un tuto/cours, par opposition aux tuto tradis qui sont des pas à pas.
Un pas à pas montre chaque étape de la réalisation d'un projet fini qui est l'objet même du tuto (comment faire ce diaporama là précisément). Par le fait même, il mélange des thèmes divers et variés, sans en traiter aucun vraiment.
Toi tu te proposes précisément le contraire : une technique expliquée à un public suffisamment averti pour se l'approprier en contexte.
Pour l'illustrer tu utilises AS3, ce pourrait C++ ou ce qu'on veut. Ne te complique pas avec le langage.
Si c'est aussi puissant/révolutionnaire qu'il y parait, ça va faire un tuto ds la catégorie des incontournables.

une tartine de tutos
#22
Posté 27 October 2012 - 09:26 AM
Je suis pas très fort en UML mais cela représente exactement l'utilité de la machine d'état.
Par contre tu ne pourra pas définir ton StateContext dans une classe.
Expliquons d'abord le graph UML que tu as réalisé pour être sur que l'on parle de la mm chose:
1. StateContext est la classe qui va contenir la liste des IState (ETAT).
2. StateContext est aussi la classe qui va définir la transition des état (les conditions nécessaires pour passer d'un état à un autre)
3. IState est une interface qui permet d'utiliser différents ETAT (A et

Le point qui me pose problème est le point 2 pour deux raisons:
- Pourquoi est-ce que tu veux que le StateContext décide les transitions? C'est techniquement possible mais l'implémentation que je vais faire fera ce ci:
- Chaque état est indépendent
- Chaque état passe par 3 étapes: Enter, Update, Exit
- Chaque état décide lorsqu'il a finit sa tache et dois passer ds un état différent
ex: EtatPreloader -> Lorsque j'ai fini de charger mes graphiques je passe à l'état EtatInterfaceGraphique
EtatInterfaceGraphique -> Si on click sur le bouton Start alors je passe à l'état EtatGameStart
Voila j'espère que cela réponds à ta question. Je pense qu'il faut vite que je m'attèle à ce sujet bouillant car il y a vraiment beaucoup de questions. MonsieurSpy comment dois-je procéder pour démarrer ?
#23
Posté 27 October 2012 - 10:32 AM
La doc wiki est à ta dispo ds le point d'interrogation en haut à droite


une tartine de tutos
#24
Posté 27 October 2012 - 10:57 AM
Mon context ne gère pas de lui meme la transition mais bien les States.
pour le diagram :
1 IContext est une interface.
2. Non quand on appelle la methode Request du context on appelle un state (c'est lui qui est capable une fois executé de definir un nouvelle index ...
3. oui c'est IState qui gère la suite ...
j'ai joint un zip ( c'est juste cette base, sans aller plus loins )

#25
Posté 27 October 2012 - 13:10 PM
Citation
Comme le dit Nath, tu vas sur le Wiki, tu t'inscrit, et tu crée ta nouvelle page (tu as toutes les infos pour la saisie si tu suis les liens de config, si tu bloque quelque part n'hésite pas à nous demander). Moi d'ordinaire je crée d'abord tout mon Tuto sur Word, je le corrige, je repasse 10 fois dessus, je le simplifie, je le fais relire, et au final je viens de déposer sur le Wiki.
Sinon techniquement, je pense qu'il faut commencer par trouver une définition claire et nette, qui ne laisse aucune place au doute, de ce que sont les machines d'états. Pour le moment de tous les échanges autour de ce tuto je n'ai toujours pas eu de définition claire (à mon niveau, et claire ne veut pas forcément dire vulgarisée ou simple, juste claire, qui définit clairement les tenants et aboutissants), à priori ceux qui savent déjà ce que c'est comprennent la définition et demandent des infos, et ceux qui ne savent pas n'ont toujours pas compris ce que c'est (même si on comprend globalement à quoi ça sert). Il me semble donc qu'il faille commencer par une définition très claire de ce qu'est une machine d'état, quitte à ce que ce soit complexe et qu'il y ait des renvois vers des définitions tierces (wikipedia ou autre), à laquelle s'accompagne une vulgarisation à destination des moins avancés et qui te permet de commencer ton tuto. De ce point de départ libre à toi de t'appuyer sur AS3 pour en montrer le fonctionnement et rédiger le tuto, etc... Sachant qu'une machine d’état ce n'est pas propre à un langage précis mais plutôt une règle organisationnelle si je comprend bien (et hop on en reviens à la définition

Le truc difficile c'est que si tu monte un tuto c'est pour des gens qui ne savent pas ce que c'est qu'une machine d'états, il faut donc commencer (à mon sens) par une définition très claire, puis entrer peut à peu dans le détail et les exemples d'utilisation. Sinon ce n'est pas un "tuto" mais une "mise en application" à destination des gens qui connaissent déjà le sujet. On est d'accord que le tuto est un niveau "expert" ou "intermédiaire", tu peux donc y aller franco sur les définitions complexes, on est censés pouvoir suivre (ou savoir où trouver les infos pour comprendre), et il ne faut surtout pas hésiter à linker des sources ou des explications externes plus approfondies pour certains sujets que tu va aborder mais pour lesquels tu ne veux pas passer 3 heures à tout expliquer en détail (histoire de rester précisément dans le sujet principal que tu traite et ne pas t'éparpiller).
Bon courage

Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#26
Posté 27 October 2012 - 15:47 PM
#27
Posté 27 October 2012 - 17:06 PM
une tartine de tutos
#28
Posté 27 October 2012 - 17:39 PM

J'me comprends…
Illustrator and I
#29
Posté 27 October 2012 - 17:40 PM

une tartine de tutos
#30
Posté 27 October 2012 - 19:16 PM
J'ai vu une rubrique programmation généralités?
http://forums.mediab...ion/generalites
Ou tout simplement dans jeux?
http://forums.mediab...shplatform/jeux
#32
Posté 27 October 2012 - 19:25 PM
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#33
Posté 27 October 2012 - 20:09 PM
"Désolé, cet utilisateur est introuvable dans notre base."
Je suis un complète noobs sorry
#34
Posté 27 October 2012 - 20:10 PM

#35
Posté 27 October 2012 - 20:14 PM
#36
Posté 27 October 2012 - 20:14 PM
#37
Posté 27 October 2012 - 20:21 PM
Sr la page WIKI connexion je ne vois pas de lien
#38
Posté 27 October 2012 - 20:28 PM
http://forums.mediab...xion#s_inscrire
Et effectivement sur la page de connexion le lien pour s'inscrire à sauté....
Pierre si tu nous lis.
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#39
Posté 27 October 2012 - 20:30 PM
#40
Posté 27 October 2012 - 20:32 PM
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#41
Posté 29 October 2012 - 20:29 PM
Tjs pas de possibilité de s'inscrire?
#42
Posté 29 October 2012 - 20:34 PM

Au moins une fois que les admins auront reparé le wiki tu n'auras qu'un copier coller a faire

Question tu peux creer un blog ?
#43
Posté 31 October 2012 - 16:47 PM
La régie m'annonce dans l'oreillette que le lien d'inscription au wiki à été réparé.
Merci à eux

Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
Jeux perso >> Mes jeux
#44
Posté 01 November 2012 - 12:41 PM
#45
Posté 04 November 2012 - 23:45 PM
Première version non finie...ici
Je vais essayer de le mettre à jour en prenant en comptes vos remarques.
Certaines personnes voudront peut être que je rentre dans le détail du code (ou pas)
Ou que je développe plus certaines parties.
J'adapterais en fonction des commentaires.
Mon objectif est de vous faire aimer et utiliser les machines d'états.
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)