1

Bonsoir,

Je suis en train de préparer un nouveau jeu: l'histoire d'un gentil glouton avec de vilains fantômes... à moins que ce soit le contraire wink

Je trouve la version LYNX, Ms. Pac-Man, pas du tout adapté à la console. Je suis donc entrain de faire une version la console tenu à la verticale... oui, je sais, je suis incorrigible. wink

Techniquement, la version originale arcade est d'une résolution de 224*288, car l'écran est mis verticalement. Il aurait été logique d'en faire de même avec notre LYNX.

Vu le nombre de sprites à gérer, souhaitez moi bonne chance pour cette folle entreprise. pam

philippe
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

2

bonne chance pour cette folle entreprise cheeky

3

beauregard (./1) :
Vu le nombre de sprites à gérer, souhaitez moi bonne chance pour cette folle entreprise. pam

Ben, 5, 20 ou 100 sprites chainés, la complexité est la même. Comment déclares tu tes sprites chainés ?

Concernant le jeu, il y a pas mal de sites Internet qui parlent de l'IA/algo des fantômes, ça peut être utile.

Pour le challenge, tu peux toujours ajouter des coc#@§^ries (copyright GT Turbo) de portes qui tournent grin

avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

4

Il n'y a que 5 sprites à gérer dans Pacman (Pinky, Blinky, Inky, Clyde et Pacman) . Les Pac-gommes ne sont pas des sprites, et heureusement, car il y en a plus de 200 rien que dans le level 1!
Il faut les gérer dans une table comme les briques d'un casse briques.

http://home.pacbell.net/fantomdj/mspac/mspac_level_131_color_bug.gif

Le plus "difficile" dans un pacman, c'est la gestion des IA des Fantomes.
Blinky suit Pacman comme sont ombre.
Pinky est le plus vicieux et le plus dangereux. En plus d'être plus rapide que les autres, il cherche toujours à couper la route de Pacman en anticipant ses deplacement.
Inky est le poltron du groupe, pas agressif mais sournois. Il s'enfuit dès que Pacman s'approche d'une super pac-gomme( sauf dans un coin).
Clyde est totalement imprevisible. Il se balade dans l'écran sans faire attention à pacman.

Au bout de 25 secondes, les fantomes prennent domicile dans un coin du tableau mais pas durant toute la partie.
Il y a d'autre subtilitée je crois.

Tu pourais créer de nouvelle races.
Un fantome noir qui lance des flammes, que tu pourrais appeler "Kuky" par exemple ! grin
Ou alors un Fantome trèèèèèès lent qui manges les super pac-gommes pour se booster, que tu appelerais "DragyGt". gni



Le Temple du Thon. poisson

5

Fadest (./3) :
beauregard (./1) :
Vu le nombre de sprites à gérer, souhaitez moi bonne chance pour cette folle entreprise. pam

Ben, 5, 20 ou 100 sprites chainés, la complexité est la même. Comment déclares tu tes sprites chainés ?

j'ai mis un lien sur le source de mon casse brique (Fission), tu peux le regarder. Il existe peut être une méthode moins fastidieuse pour déclarer les sprites(?).

Au début, je pensais construire les labyrinthes à base de tiles, mais il aurait fallu un grand nombre de sprites. L'astuce, c'est d'utiliser un seul sprite représentant tout le labyrinthe, et de le zoomer... il y aura un petit scrolling pour explorer tout le labyrinthe, ça sera cool je pense. J'ai déjà fait les images (labyrinthes, le glouton et les fantômes (et leur yeux regardant dans les 4 directions)). Je vais attaquer maintenant la programmation.
Fadest (./3) :


Concernant le jeu, il y a pas mal de sites Internet qui parlent de l'IA/algo des fantômes, ça peut être utile.

Pour le challenge, tu peux toujours ajouter des coc#@§^ries (copyright GT Turbo) de portes qui tournent grin
ça sera la partie la plus difficile, tu as des liens de ces sites ? Je compte déplacer les fantômes de 10 pixels, puis effectuer un test des coordonnées (afin d'éviter de faire ces tests en permanence).
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

6

beauregard (./5) :
Fadest (./3) :
beauregard (./1) :
Vu le nombre de sprites à gérer, souhaitez moi bonne chance pour cette folle entreprise. pam

Ben, 5, 20 ou 100 sprites chainés, la complexité est la même. Comment déclares tu tes sprites chainés ?

j'ai mis un lien sur le source de mon casse brique (Fission), tu peux le regarder. Il existe peut être une méthode moins fastidieuse pour déclarer les sprites(?).

Oula oui en effet, je n'avais pas regardé tes sources, juste le résultat...
Tu peux regarder les exemples de M. Domin ou il y a un exemple pas mal, sinon, je vais voir de mon coté pour te faire un exemple, mais en gros, tu peux déclarer un tableau de x sprites de 11 octets chacun (car il y a une astuce, si tous les sprites ont le même coeff de zoom, la même palette... ils peuvent être déclarés sur 11 octets à partir du second) que tu initialises.
Par exemple, pour un écran de 4 colonnes * 6 lignes, tu as un tableau de 24 élément (ou un 4x6).

Pour l'AI, j'avais regardé au moment de Ladybug, mais vu qu'il est passé à l'as, je n'ai pas creusé, d'ailleurs, il faudrait vraiment que je m'assures que j'ai vraiment perdu le source de celui là...
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

7

Pas vraiment un exemple, ni un tutorial, mais avec ça, tu devrais pouvoir t'y retrouver :

Pour la partie inits, il te faut déclarer les éléments suivants et la fonction init_sprites() /// on a besoin de stdlib pour bcopy() de mémoire #include <stdlib.h> // SCB est un tableau de 26 sprites de 11 octets chacun extern char SCB[25][11] at (0xfff8-16320-25*11); // spr0 est le "modèle" de sprite de 11 octet pour initialiser une occurence de SCB2[] extern char spr0[11]; // init_scb est le premier sprite à afficher, en fait, il pointe sur un sprite vide // j'aurais aussi pu le faire pointer vers le background // l'important dans le _init_scb, c'est dc.w _SCB2 // qui fait pointer le sprite suivant vers le premier du tableau SCB extern char init_scb[23]; #asm ; init_scb est utilisé pour initialiser les registres du SpriteEngine ; avec les paramètres adéquats (palette...) ; Using this trick, the 8*11 spr[]-SCBs only need 11 Bytes each! _init_scb: dc.b $c1, $10, $20 dc.w _SCB ; PTR_NEXT pointe vers le 1° sprite visible (SCB[0]) dc.w dummy ; PTR_DATA pointe vers un sprite "inexistant" dc.w 200, 200 ; x,y -> on affiche en dehors de l'écran dc.w $100, $100 ; pas de zoom dc.b $01, $23, $45, $67, $89, $ab, $cd, $ef dummy: dc.b 0,0,0 ; le sprite "inexistant" ; spr0 sert de modèle au sprites du tableau SCB _spr0: dc.b $c4, $08, $02 ; CTL0, CTL1 = réutilise la palette, COLL dc.w 0, 0 dc.w 0, 0 #endasm void init_sprites() { char i1; for (i1 = 0; i1 < 25; i1++) { bcopy(&spr0[0], &SCB[i1][0], 11); SCBX(&SCB[i1][0]) = 0; SCBY(&SCB[i1][0]) = 0; SCBNEXT(&SCB[i1][0]) = &SCB[i1+1][0]; } SCBNEXT(&SCB[24][0]) = 0; }

Le gros avantage d'utiliser une structure de 11 octets pour les sprites chainés, c'est de gagner 12 octets par sprite (ça peut gratter 1 ou 2ko au final, ce n'est pas rien), et également, c'est un peu plus rapide car le système sait que chaque sprite a les mêmes paramètres (zoom, tilt...).
Inconvénient, tu ne peux pas en zoomé un individuellement. Avantage, si tu zoomes le premier, tous le seront (ça peut être utile dans certaines circonstances)

Pour la suite, c'est facile, à un moment, tu appelles init_sprites pour initialiser ton tableau, ensuite, pour accéder individuellement à un sprite dans ton tableau :
SCBX(&SCB[ij][0]) = x; SCBY(&SCB[ij][0]) = y; // [...]


Un petit truc en passant, si tu ne veux plus afficher un sprite, tu peux soit le déplacer en dehors de l'espace écran, ou jouer sur SCBCTL1(]) pour le déclarer affichable ou non (il est initialisé à 8, mais si tu le mets à 12, ton sprite n'est plus affiché, ça accélère un peu le process).

Pour répondre à Tempi, la Lynx est une telle bête en manipulation de sprites que c'est aussi simple de déclarer les gommes en sprites, plutôt que de jouer directement sur la mémoire vidéo, contrairement au ST par exemple. En tous cas, c'est ce que j'avais fait pour Ladybug (mais bon, 24h pour un clone de pac-man avec des portes qui tournent en plus, ça laisse peu de temps à la réflexion, hormis pour les portes qui tournent bien sur grin)
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

8

templeton (./4) :
Il n'y a que 5 sprites à gérer dans Pacman...
merci pour toutes ces info, c'est cool smile
Je ne me doutais pas que chaque ghost avait son propre comportement, ça va être plus difficile que je l'avais prévu.

Grand merci Fadest pour le code assembleur, je suis une quiche totale avec ce langage smile
pour la ligne suivante:extern char SCB[25][11] at (0xfff8-16320-25*11);

il faut toujours mettre 0xfff8-16320 ?

Je n'avais pas vu pour ladybug, chapeau bas ! top
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

9

beauregard (./8) :
Grand merci Fadest pour le code assembleur, je suis une quiche totale avec ce langage smile
pour la ligne suivante:extern char SCB[25][11] at (0xfff8-16320-25*11);

il faut toujours mettre 0xfff8-16320 ?

Je n'avais pas vu pour ladybug, chapeau bas ! top

En fait, 0xfff8, c'est la limite haute de la mémoire
16320, ça correspond à la taille des 2 buffers écrans que je déclare à 0xfff8-8160 et -16320
et les 25*11, c'est la taille du tableau. Tu dois être obligé de spécifier son emplacement mémoire car il est déclaré en extern (bon, un malloc serait plus propre, pas sur que les libs Lynx gèrent bien par contre, jamais eu envie de prendre le risque vu d'autres expériences cheeky )
Pour le reste, c'est pratiquement le source de Mathias Domin tel quel (y compris la déclaration de mémoire et la partie assembleur).

Pour les fantomes, j'avais trouvé et posté ça sur un topic Jagware dédié à Ladybug Jag :
Un topic Ghost AI in PAcman sur AA :
http://www.atariage.com/forums/index.php?s...=68707&st=0

Et un site dédié à Pacman :
http://home.comcast.net/~jpittman2/pacman/pacmandossier.html

et un autre lien, trouvé sur le précédent :
http://www.donhodges.com/pacman_pinky_explanation.htm

Bon, c'est sur que c'est adapté à Pac Man, mais à Ladybug et son labyrinthe évolutif.

En particulier, on apprend que les fantômes ont 2 modes :
- la chasse (avec leur algo respectif)
- le retour point de départ ou ils rejoignent chacun un coin de l'écran, surement pour éviter qu'ils se retrouvent tous sur la même trajectoire.plus le mode fuite bien sur

avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

10

Merci Fadest pour ces précisions et ses liens. bisoo

à y est, le glouton réagit bien (collision avec le labyrinthe, scrolling), je vais aborder maintenant la partis la plus effrayante de la programmation: l'IA des ghosts wink

avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

11

beauregard (./10) :
Merci Fadest pour ces précisions et ses liens. bisoo

à y est, le glouton réagit bien (collision avec le labyrinthe, scrolling), je vais aborder maintenant la partis la plus effrayante de la programmation: l'IA des ghosts wink

x=x+random(2)-1
y=y+random(2)-1

Ok je sors smile

GT dehors
avatar
Accrochez vous ca va être Cerebral !!

12

JJe suppose que tu voulais écrire :
x+=random()%2;
x--;
y+=random()%2;
y--;

cheeky gni

avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

13

plutôt :

--x += rand()%2;
--y += rand()%2;

trivil
avatar

14

Vos fantômes traversent les murs, les gars ? tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

15

ba normalement un fantôme ca traverse les murs non ? cheeky

avatar

16

Ben ouais, mais dans Pacman non, justement grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

17

SCPCD (./13) :
plutôt :

--x += rand()%2;
--y += rand()%2;

trivil

grin

J'avais commencé à l'écrire, mais j'ai eu un doute sur la pré-décrémentation dans ce cadre (person, j'ose pas avec le compilo Lynx)...
Pour les murs, il suffit de multiplier le rand()%2 par le résultat logique disant si oui ou non il y a un mur (bon, c'est pas optimisé, mais ça devient illisible, GT devrait apprécier)
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

18

J'ai installé Free Screen To Video pour capturer une fenêtre et ainsi en faire une vidéo, et c'est un chouette logiciel. smile
une vidéo de la demo en .flv (le lecteur freeware VLC est notre ami):
http://www.mirari.fr/huw6

Bon visionnage les jeunes.





avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

19

Pas besoin de télécharger, tu peux afficher ta vidéo dans un post comme ceci :

[flash]http://www.mirari.fr/module/file/player/player_flv_maxi.swf?showfullscreen=1&showloading=1&showstop=1&showtime=1&flv=ton fichier vidéo?a=open[/flash]

Et ça donne ça :
[flash]http://www.mirari.fr/module/file/player/player_flv_maxi.swf?showfullscreen=1&showloading=1&showstop=1&showtime=1&flv=http://www.mirari.fr/huw6?a=open[/flash]

Sympa. Ça fait juste bizarre que le pacman arrête de grignoter quand il ne bouge plus. Et il manque un bon bruitage de chomp-chomp ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

20

Zerosquare (./19) :
Sympa. Ça fait juste bizarre que le pacman arrête de grignoter quand il ne bouge plus. Et il manque un bon bruitage de chomp-chomp ^^
pour la gestion de la mâchoire, c'est fidèle à l'original wink
[flash]http://www.mirari.fr/module/file/player/player_flv_maxi.swf?showfullscreen=1&showloading=1&showstop=1&showtime=1&flv=http://www.mirari.fr/n4Xn?a=open[/flash]
avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx

21

Ca peut t'aider?
0eQZ

22

Fadest (./17) :
SCPCD (./13) :
plutôt :

--x += rand()%2;
--y += rand()%2;

trivil

grin

J'avais commencé à l'écrire, mais j'ai eu un doute sur la pré-décrémentation dans ce cadre (person, j'ose pas avec le compilo Lynx)...
Pour les murs, il suffit de multiplier le rand()%2 par le résultat logique disant si oui ou non il y a un mur (bon, c'est pas optimisé, mais ça devient illisible, GT devrait apprécier)


GT Deja perdu, ca me fait quand meme peur, un langage qui suivant le compilo utilisé donne pas du tout les memes resultats. Donc si tu compiles sur un Falcon, les fantomes dansent la lambada, compilés sur un PC ils deviennent des danseurs de tectonik !!

un code 68000 assemblés sur un Atari ou un Amiga donnera EXACTEMENT le meme resultat, oui cela faisait longtemps qu'une guerre des langages avaient pas été lancés !!! wink

GT rabbit

P.S. : s'il vous plait on relance pas une guerre des langages, je rigolais !!!
avatar
Accrochez vous ca va être Cerebral !!

23

D'un autre coté, ton code 68000 sur une Lynx embarrassed
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

24

Et puis bon, normalement le déplacement est géré par le Kernel (roxe).

25

Pacman peut-être, mais les fantômes, c'est pas dans le shell cheeky ?
avatar
De nouveaux jeux pour vos vieilles consoles ? En 2024 ?
https://yastuna-games.com

26

27

Ben s'il a envie que Namco lui tombe dessus, oui...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

28

Fadest (./25) :
Pacman peut-être, mais les fantômes, c'est pas dans le shell cheeky ?
grin

29

Des nouvelles de tout ça ?
Atari Jaguar :
http://perso.orange.fr/jaguar-64bit/

! Jagware !

30

Fredifredo (./29) :
Des nouvelles de tout ça ?
je ne suis pas aller plus loin, car par la suite j'ai exploré d'autres contrées électroniques... et depuis peu je fais des travaux nettement plus manuels (rénovation de l'appart). wink

avatar
Travaux, concept of proof, divers :
Megadrive
topics/172-143753-moved-juju-densetsu
Lynx
sections/255-developpeurs-lynx