[Squeak-fr] Retour d'experience

Serge Stinckwich Serge.Stinckwich at info.unicaen.fr
Ven 22 Juin 14:07:56 UTC 2007


Le 22 juin 07 à 15:12, FERRERE Frédéric a écrit :

> Bonjour,
>
> Voici un petit retour d'expérience sur smalltalk/squeak en  
> développement.

Salut Frédéric.
Merci, c'est important d'avoir ce genre de retour d'expérience

> J'ai découvert smalltalk/squeak avec le numéro 82 de linux magazine  
> france (avril 2006).

Cela fait plaisir de savoir que notre série d'articles lance de  
nouvelles vocations ;-)

> 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).

C'est un jeu dont tu avais conservé les images ?

> 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 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é.

En ce qui concerne la documentation, n'hésite pas à prendre un peu de  
temps pour compléter le wiki et
nous faire ainsi partager tes nouvelles connaissances. Cela  
facilitera d'autant la tâche pour les nouveaux utilisateurs de Squeak.
Si tu as écrit des description de classes, il faut les faire remonter  
pour qu'elles soient intégrées au noyau.
Chaque petite modification améliore la qualité de la documentation.

> Pour résumé, la prise en main du langage est assez rapide, la prise  
> en main
> de l'environnement aussi.
> 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 :). 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.

Oui, la gestion sous forme d'image est assez déroutante pour tous  
ceux qui ont l'habitude de manipuler des fichiers.

> 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.

Si tu as écrit des choses, envoie les pour intégration au noyau.

> 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

Impressionantes ces vidéos ! Beau boulot. Comment as tu reproduire le  
gameplay aussi précisemment ?

> 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)
>
> 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.
>

Détrompe toi, cela nous intéresse. La communauté ne tourne pas  
qu'autour des Etoys et de Seaside. Nous sommes très nombreux ici à  
faire du hardcore Smalltalk.

Merci de nous faire partager ton travail. En ce qui concerne la mise  
à disposition du code, je pense que cela nous intéresse, mais il y a  
le problème de droit autour des images du jeu d'origine que tu as  
utilisé.

A+
--                                                         oooo
Dr. Serge Stinckwich                                     OOOOOOOO
Université de Caen>CNRS UMR 6072>GREYC>MAD               OOESUGOO
                                                           oooooo
Smalltalkers do: [:it | All with: Class, (And love: it)]   \  /
                                                             ##





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