[Squeak-fr] Retour d'experience

stephane ducasse stephane.ducasse at free.fr
Ven 22 Juin 14:02:07 UTC 2007


On 22 juin 07, at 15:12, FERRERE Frédéric wrote:

> Bonjour,
>
> Voici un petit retour d'expérience sur smalltalk/squeak en  
> développement.
>
> J'ai découvert smalltalk/squeak avec le numéro 82 de linux magazine  
> france (avril 2006).
>
> Je ne me suis intéressé qu'à l'aspect programmation donc pas  
> d'Etoys, etc.
>
> Pour pouvoir un peu avancer dans l'apprentissage de nouveaux outils  
> rien ne vaut
> un petit challenge. Donc après avoir regardé de près les quelques  
> exemples
> de morphs animés dans l'image de squeak, ou bien les tutoriels sur  
> le net,
> je me suis lancé dans le portage d'un jeu.
>
> Le jeu original est un jeu sorti en 1985 sur Amstrad CPC.
> Ce choix a été guidé par un brin de nostalgie :).
> J'ai réutilisé les graphismes originals (mes talents
> de graphistes étant inexistants) pour me concentrer uniquement
> sur le moteur du jeu.
> L'utilisation des graphismes original n'est qu'une étape, il me  
> faut trouver
> un graphiste :)
> Comme le monde du jeu vidéo, en termes de développement, m'est  
> totalement inconnu,
> j'ai quand même passé beaucoup de temps pour faire le lien entre  
> mes besoins
> et l'API squeak dont la description des classes ne m'inspirait pas  
> grand chose
> (ex: BitBlt).
>
> D'ou de nombreuses heures pour éplucher ici et là morceaux de code  
> ou idée
> sur la gestion des collisions, de l'affichage, de la superposition  
> des dessins
> et la gestion des évènements clavier (voir mon mail d'avril 2006).
> Je pense avoir réinventer la roue plusieurs fois :)
>
> Comme je n'ai pas forcément beaucoup de temps à consacrer à cette  
> activité
> le tout traine un peu, mais aujourd'hui le moteur est suffisament  
> avancé
> pour que je fasse un petit bilan.
>
> L'environnement de développement Squeak est vraiment très plaisant  
> à utiliser
> , les différentes bibliothèques sont suffisament fournis pour qu'on  
> trouve
> les outils nécessaires (son, clavier, affichage).
>
> Les difficultés/Inconvénients : la documentation
> La documentation est, à mon sens, insuffisante ou tournée vers ceux  
> qui ont déjà
> suffisament d'expérience.

il n'y a pas de doc. pas insuffisante. pas de doc

> Il en manque principalement sur la description des classes ou des  
> catégories.
> En fait lorsque l'on rencontre un problème on ne sait pas trop  
> comment chercher.
> Par exemple pour supprimer les halos d'un morph il faut surcharger  
> la méthode wantsHaloFromClick
> qui n'est pas documentée.
> Heureusement il y a le wiki et la liste de diffusion de la communauté.
>
> Pour résumé, la prise en main du langage est assez rapide, la prise  
> en main
> de l'environnement aussi.

je suis impressionne

> Côté développement la gestion du code et de l'image est un peu  
> déroutante
> (sauvegarde projet, sauvegarde monticello, sauvegarde image), là  
> encore sans le wiki
> et la liste point de salut :).

il ne faut pas utiliser les projets.

> Concernant l'outil de gestion de version de code Monticello,
> ne connaissant pas parfaitement tous les concepts, je n'ai pas  
> saisi le rôle des boutons Adopt et Merge.
> Il faut passer beaucoup de temps dans le code pour trouver une  
> classe et/ou une méthode qui correspond
> à ce qu'on cherche.

merge permet de merger ce que tu charges avec ce qui est dans l'image.


> Il manque peut être une documentation à la java ou à la php sur les  
> API
> avec leur description et ce que l'on peut en faire.
>
> Pour en revenir au jeu, vous pouvez voir une petite
> vidéo
> - format ogg : http://frederic.ferrere.free.fr/sorcery.ogg
> - format mpeg4 : http://frederic.ferrere.free.fr/sorcery.mpeg

excellent j'y ai jouer des heures :)

>
> Voici quelques informations sur la conception :
>
> La scene graphique est construite en trois couches (3 niveau de  
> morphs) :
> 1) le décor est une image gif (640x288) contenue dans un Morph.
> 2) Les autres éléments (joueur, objets, enemis) sont des morph que  
> l'on ajoute
> au décor (couche 1).
> 3) un décor d'avant plan un morph (640x288). De la sorte, les  
> objets de la couche 2 semblent passer derrière
> les éléments contenus dans ce "plan".
>
> Les test de collisions avec le décor ne se font qu'entre les éléments
> de la couche 1 et 2.
>
> L'animation des éléments est basée sur les méthodes step et  
> stepTime de la classe Morph (tic toutes les 300ms)

impressionnant car morph est trop lent pour moi....

>
> La gestion du clavier est basée sur les évènements handleKeyUp et  
> handleKeyDown :
> - handleKeyDown on stoke la valeur dans une collection
> - handleKeyUp on efface la valeur de la collection
> la collection est ensuite analysée toutes les 20ms.
>
> Pour finir je souhaite faire tourner le tout sur une image squeakland
> pour diffusion via le web. Pour l'instant mes premiers essais sont  
> infructueux.
>
> Je ne suis pas convaincu que ce type de développement pourra  
> interessé la communauté
> qui semble plus orientée Etoys, Robots et Web, mais le code sera  
> mis à disposition
> le cas échéant.

Mais il faut faire une announce sur Squeak-dev

>
> Pour finir, un merci aux membres de liste pour toutes les réponses.
>
> Cordialement,
> -- 
>
> Frédéric Ferrère
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
>



Plus d'informations sur la liste de diffusion Squeak-fr