Amos Beast Engine

Forum News Room Projets Amos Beast Engine

  • Ce sujet contient 31 réponses, 8 participants et a été mis à jour pour la dernière fois par Alain.Treesong, le il y a 2 années et 1 mois.
  • Créateur
    Sujet
  • #49291
    Alain.Treesong
      • Level 5
      • Messages : 224

      Bonjour,

      Je démarre ce thread pour permettre à des Amigaphiles éventuellement interessés de suivre le développement d’un petit moteur « à la Shadow of the Beast » en AMOS pour tout Amiga en visant en particulier le A500 des années 90 (donc avec 512ko de chip et 512ko de fast sans autres extensions).

      Cela permet également de rendre un peu justice (les mots sont certes un peu fort) à Amos car beaucoup de personnes racontent n’importe quoi sur ce langage fort bien fait dédié à l’Amiga. Je ne parlerai plus de ce point d’ailleurs dans la suite de ce thread.

      Donc pour le moment cela donne cela :

      Voici le lien de l’ADF : EON500_1.ADF

      Pour résumé j’ai eu envie de faire ce truc quand j’ai vu la nouvelle sur le portage du jeu PC EON sur Amiga AGA. En gros il s’agit d’un croisement entre Castlevania et Shadow of the beast. Donc c’est super et j’espère qu’ils vont aller au bout. Cela me motive en tout cas pour faire le même genre sur A500. Je ne sais pas jusqu’où cela va mener. En tout cas comme je commencais un peu à polluer le thread de EON, je commence donc ce nouveau.

      Si on revient sur la petite démo (v2), voici ce que l’on peut en dire pour le moment:

      – 320×200 en 8 +8 couleurs pour le décor. 16 couleurs pour le sprite. Des rasters.

      – Scroll en 50 fps sur A500. Gestions des sprites et bobs (le monstre qui court est un bobs de 80×60 en 8 couleurs).

      – Il faut courir vers la droite pour faire la course avec le monstre

      – Le sprite est celui de Shadow of the Beast 1. Les plan de fond et avant plan viennent de EON (merci).

      N’hésitez pas à me dire ce que vous en penser et à le tester sur vos vraies machines.

      A+

    Affichage de 15 réponses de 16 à 30 (sur un total de 31)

    Partager sur vos réseaux sociaux préférés :
    Facebooktwitterredditpinterestlinkedintumblrmail

    • Auteur
      Réponses
    • #49858
      Staff
      Zarnal
        • Level 22
        • Messages : 7915

        Bon revenons au moteur. En dual playfield, les 6 bitplans sont séparés en 2 groupes de 3 (soit 2 puissance 3 = 8 couleurs). Ce qui veut dire que l’on a 8 couleurs pour le premier plan qui accueille le scroll (l’herbe) et les monstres.

        Du coup, cela devient très limite pour mettre en couleur au niveau des bobs (en dual playfield) ? La palette doit être partagée avec l’herbe ? Et quoi qu’il en soit, je suppose que tu ne peux pas utiliser/partager la palette du second plan sur le premier ?

         

        A1200 Commodore mutant " FrankenAmiga" + 68040 + 8MO + SD 8go - A1200 ESCOM. HD 20MO. Mon meilleur et seul A500 : WinUae. CPC 6128-CPC 464.



        #49864
        Alain.Treesong
          • Level 5
          • Messages : 224

          Pour simplifier : sur le premier plan, il y a 1 couleur transparente (0), 2 couleurs verrouillées le vert, 5 couleurs variables.

          Illustration avec le dernier adf posté: les chauve souris utilisent 3 couleurs sur les 5 spécifiques, le « bison » les 5 couleurs (rouge + un dégradé de marron).

          Le passage sur de deuxième plan demande une gestion spécifque de la position des objets pour ce plan et le passage en double buffer. Faisable mais une complexité pas forcément nécessaire.

           

          #50169
          Staff
          Jim Neray
            • Level 22
            • Messages : 7198

            @Salome : La communauté est souvent très critique. Tu as totalement raison Amos bien utilisé permet de faire de très bonne choses.

            @Alain : Comme d’hab j’ai réuploadé l’archive sur le serveur pour qu’elle ne se perde pas  ;-)

            A500 - A500 Plus - A600 HD - A1200 - A2000 - A4000T - CD32 - C=64 - 1040STE - CPC6128
            Mon Amiga 500 Plus : A590, 2MB Chip, 2MB Fast, HD 1,2GB, Floppy ext.
            Mon Amiga 1200 : Blizzard 1220/4, 2MB Chip, 4MB Fast, HD 80GB, Overdrive CD

            - Micromiga.com - La boutique Amiga -
            #50424
            Alain.Treesong
              • Level 5
              • Messages : 224

              Amigaïstes assidus, bonsoir.

              Donc suite du moteur, au cas où cela intéresserait quelques un…

              Cela va être un peu long et technique. Donc les non technophiles pourront directement aller lire le texte sous l’image ci-dessous et télécharger l’adf

              Jusqu’à présent, les interactions entre la « bête » et l’environnement étaient plus que limitées. Il est donc temps de mettre en place les collisions.

              Il y a deux types de collision à gérer ci: les collisions entre le « héros » et les objets (monstres…) et les collisions entre les tirs et ces mêmes objets.  Comme le perso et les projectiles sont des sprites et que les autres objets sont faits avec le blitter, Amos met à disposition la commande « spritebob col » qui est dédiée à ce genre de traitement.

              Donc facile je me dis. Alors test et verdict : cela ne marche pas  :cry:

              Oups il y a un bug. Je suspecte le scrolling mais je me renseigne quand même un peu. Il y a un excellent thread à ce sujet dans le non moins excellent forum « Amos factory ». Donc effectivement la routine « Spritebob col » oublie de prendre en compte l’offset du scrolling et donc cela donne n’importe quoi en cas de scroll. Il va falloir faire autrement.

              En fait cette commande marche (quand elle marche) comme cela : pour un sprite donné,   recherche de toutes les intersections des rectangles des bobs avec le rectangle du sprite. Ensuite avec le blitter, vérification de la collision effective par masque.

              Pour la « beast », je n’ai pas besoin de savoir quel bob lui rentre dedans, j’ai juste besoin de l’info de collision. Par contre pour les projectiles, il faut identifier les bobs. L’utilisation du blitter n’est pas simple et impliquera une lenteur. Pour info hormis « bob », la commande qui fait travailler le blitter est la commande « screen copy ». Il y a également des commandes supplémentaires avec des extensions comme Amcaf.

              Donc pour résumer, ok pour chercher les collisions par rectangle dans lesquels sont inscris les objets. Bof pour le reste.

              Heureusement, le hardware de l’Amiga est fabuleux :-). Des registres (respectivement clxcon et clxdat) permettent de vérifier la collisions entre sprites et entre sprite et bitplanes. En fait il existe 2 commandes « set hardcol » et « hardcol » introduites dans Amos pro qui permettent d’utiliser ces registres. Bon la description faite dans le manuel est fausse… Heureusement le forum « Amos factory » (encore lui) contient un thread détaillant l’utilisation de ces commandes.

              Mais en fait cela ne me convient toujours pas :-). En effet c’est un petit « lent » car il faut faire plusieurs appel à plusieurs commande et, plus grave, cela ne marche que pour un sprite par VBL. Pas de bol, j’en ai deux à tester.

              La solution est donc d’utilser directement ces registres. En fait on peut écrire et lire lecontenu des registres Amiga avec les Doke et Deek d’amos. On peut faire par exemple deek($dff00e) pour lire la valeur du registre clxcon. Il se trouve que François Lionet, donc le créateur  d’Amos himself, a écrit un article sur le sujet dans Amiga revue n°36 page 52 et 53. Dommage il ne parle que des collisions entre sprites. Les collisions entre sprite et bitplans ne sont couvertes à priori que par le n°37 de la revue. Mais je ne l’ai trouvée nulle part sur le web.

              Bon pas grave, j’ai compris comme cela fonctionnait puisque l’on a la chance d’avoir la doc du hardware de l’Amiga sur le web.  Donc j’ai mis en place l’algo avec lecture du registre et quelques opérations logiques. Ensuite j’effectue une intersection simple pour trouver le coupable. Cela donne cela :

              En allant  à droite vous avez des pics qui sortent du sol: s’ils touchent la « beast », elle clignote pendant un petit temps d’invincibilité pour montre la collision.

              Si le joueur tire sur les pics, le projectile est stoppé et (généralement) les pics clignotent pour montrer la collision.

              Après des petits tests avec ces pics, le joueur peut continuer à droite pour courrir comme d’hab avec le bison. Ce dernier sur un autre plan n’est pas sensible tir.

              Normalement on a toujours nos chers 50 fps.

              Pour tester cela avec winuae, il faut bien cocher l’émulation parfaite du 500 donc avec collision hardware. Le mieux est bien sûr d’essayer la petite demo sur un vrai Amiga. Tous les retours sont les bienvenus.

              Lien vers l’adf : https://ufile.io/5b2tp

              https://ufile.io/5b2tp

              Ciao

               

              #50432
              Staff
              Aladin
                • Level 25
                • Messages : 15307

                Merci pour ce journal de bord fort intéressant. A y lire c’est simple, c’est compréhensible pour quelqu’un qui n’y connait rien. Vivement la suite

                #61342
                Alain.Treesong
                  • Level 5
                  • Messages : 224

                  Bonjour,

                  Six mois se sont passés et du coup l’adf associé au message « #50424 » a expiré. Je n’avais pas versionné et donc je n’ai plus cette version exactement. J’ai quelque chose d’un peu plus avancé fixant certaines choses, permettant une glissade, un meilleur tir…

                  Pour le moment cette série de billets est close. Si des personnes sont intéressées par ce petit moteur, qu’il n’hésite pas à me contacter.

                  #61655
                  Staff
                  Jim Neray
                    • Level 22
                    • Messages : 7198

                    Hello Alain.

                    Peux tu me le faire passer que je l’héberge sur AF ?

                    A500 - A500 Plus - A600 HD - A1200 - A2000 - A4000T - CD32 - C=64 - 1040STE - CPC6128
                    Mon Amiga 500 Plus : A590, 2MB Chip, 2MB Fast, HD 1,2GB, Floppy ext.
                    Mon Amiga 1200 : Blizzard 1220/4, 2MB Chip, 4MB Fast, HD 80GB, Overdrive CD

                    - Micromiga.com - La boutique Amiga -
                    #76820
                    Alain.Treesong
                      • Level 5
                      • Messages : 224

                      Hello,

                      « Rien ne se perd et tout se transforme », c’est bien connu.

                      Cela m’a pris comme cela, j’ai codé pendant 3 jours, juste avant de partir en vacances de Noël, une petite demo en Amos. Et cela a été l’occasion notamment de faire quelque chose de ce petit dev prétentieusement appelé « amos beast engine ».

                      Donc voici une dentro appelée « Merry and Happy » et qui a été montrée à la dernière demo de l’année, la Under Constuction 2019. Je l’ai soumise par « Remote entry » et donc à priori je n’ai pas participé au vote final. Peu importe la dentro a été projetée pendant la « oldschool compo ».

                      Vous trouverez des liens ici:

                      https://www.pouet.net/prod.php?which=84427

                      https://demozoo.org/productions/272700/

                      Un adf pour Amiga 500 est ici :

                      https://www.dropbox.com/s/1w2cqad6nxqqizt/merryDemoPartyVersion.adf?dl=0

                      C’est fait en 100% Amos, sans précalcul et cela tourne bien sur un A500. J’espère que cela donnera éventuellement envie à d’autres personnes codant avec ce langage de participer à la demoscene.

                      Bonnes fêtes

                      Aghnar

                       

                       

                      #78712
                      Lord of Prodos
                        • Level 2
                        • Messages : 53

                        Très intéressant comme projet… si j’avais eu ça à l’époque, j’aurais peut être écrit des jeux au lieu de jouer :lol:

                        Apple IIc
                        Apple IIGS
                        Amiga 500
                        Amiga 1200
                        Amiga 2000

                        Un gros PC de joueur... et toutes les consoles de SONY, ainsi que la Switrch de NINTENDO.

                        #79843
                        AmiDARK
                          • Level 2
                          • Messages : 50

                          Sympa ton projet à la Beast :)



                          #79899
                          Alain.Treesong
                            • Level 5
                            • Messages : 224

                            Merci @Amidark :-)

                             

                            #82593
                            Lord of Prodos
                              • Level 2
                              • Messages : 53

                              Oh, je suis bluffé parce que du Basic est capable de faire, moi qui a l’époque a toujours été alergique à l’assembleur, ça me redonne presque envie de m’y remettre :good:

                              En tout cas brafvo pour ce boulot, je suis curieux de voir la suite !

                              Apple IIc
                              Apple IIGS
                              Amiga 500
                              Amiga 1200
                              Amiga 2000

                              Un gros PC de joueur... et toutes les consoles de SONY, ainsi que la Switrch de NINTENDO.

                              #82671
                              Alain.Treesong
                                • Level 5
                                • Messages : 224

                                Merci

                                Bon c’est quand même un basic « bousté » Amiga.

                                Il n’y a pas de suite concernant ce moteur : son utilisation a pris fin avec la petite dentro.

                                A+

                                Aghnar

                                #82851
                                Lord of Prodos
                                  • Level 2
                                  • Messages : 53

                                  Ok Merci Alain, mais ça me donne envie d’aller essayer de jouer avec ça en récupérant des planches de sprites ;-)

                                  Apple IIc
                                  Apple IIGS
                                  Amiga 500
                                  Amiga 1200
                                  Amiga 2000

                                  Un gros PC de joueur... et toutes les consoles de SONY, ainsi que la Switrch de NINTENDO.

                                  #158682
                                  mikedafunk
                                    • Level 2
                                    • Messages : 52

                                    Bien joué Alain, c’est génial ce que t’as fait avec Amos bravo ! (et en 50 FPS en plus)

                                  Partager sur vos réseaux sociaux préférés :
                                  Facebooktwitterredditpinterestlinkedintumblrmail
                                  Affichage de 15 réponses de 16 à 30 (sur un total de 31)
                                  • Vous devez être connecté pour répondre à ce sujet.