Cet article explore l'utilisation des sprites, des boîtes de munitions et d'autres éléments dans le contexte des jeux vidéo, en abordant des aspects techniques, créatifs et de collection.
Le terme "sprite" est une survivance des vieux ordinateurs et consoles de jeu.
Ces vieilles boîtes étaient incapables de dessiner et d'effacer des graphismes suffisamment rapidement pour faire fonctionner des jeux.
Ces machines possédaient un matériel spécial pour manipuler les objets du jeu qui avaient besoin d'être animés très rapidement. Ces objets étaient appelés sprites et avaient des limitations qui leur étaient propres, mais pouvaient être dessinés et mis à jour très rapidement.
Ils étaient habituellement contenus dans des tampons spéciaux du circuit vidéo. De nos jours, les ordinateurs sont généralement assez rapides pour manipuler les sprites comme des objets standards sans nécessiter de matériel dédié.
Lire aussi: Productions Disney: une analyse
Avec l'expérience acquise sur les jeux Gamebuino d'un côté, et sur le développement des fonctions javascript du site GameMakers de l'autre, je me pense à la hauteur du développement d'un petit jeu simple.
Duck Hunt, que j'adore, semble avoir une mécanique très simple, et donc pas trop compliquée à reproduire.
Je n'avais pas trop envie ni la patience de tout redessiner. Je suis donc allé rechercher des planches de sprites sur Internet. J'ai ensuite joué avec msPaint et Gimp pour isoler chaque image.
Au final, ça fait une belle petite collection d'images... Et qui dit beaucoup d'images dit autant de code pour toutes les intégrer au bon moment dans le jeu!
Le déroulement du jeu semble simple: il suffit de tirer sur des canards et ça fait monter les points. Du coup je vois que le jeu commence par une vidéo avec le chien qui saute au dessus de la haie... Et aussi que quand on a tiré 3 balles, le canard s'en va et le chien se fiche de nous!
Lire aussi: Comprendre le Tir en Boîte de Nuit
Et aussi le score qui n'est pas le même en fonction du canard ou de la balle qui le tue (tuer du premier coup rapporte plus de points) Et aussi qu'au bout de 10 canards, on change de Level.
Il faut gérer les trajectoires des canards, et faire en sorte qu'ils changent de direction aléatoirement au bout d'un certain temps. Il faut également penser a regarder ou clique le joueur. Si c'est sur un canard, alors on passe à l'animation ou le canard tombe, et se fait ramasser par le chien.
Une fois cette animation terminée, on passe enregistre le score et le fait que ce canard a été tué. Puis on passe au canard suivant. Si on a tiré à coté, on retire une balle du chargeur, et on recommence.
S'il n'y a plus de balle, l'animation se lance : le canard s'envole et le chien se fiche de nous. Après avoir débugué, ajouté de petit détails, j'estime que le jeu est "fini".
Pygame inclut un module de Sprite de haut niveau pour aider à l'organisation des jeux. Le module Sprite inclut plusieurs classes qui aident à la manipulation de détails utilisée dans la plupart des types de jeux.
Lire aussi: Alternatives aux Plombs Traditionnels pour Carabine
La version 1.3 de Pygame inclut un nouveau module, pygame.sprite. Ce module est écrit en python et inclut quelques classes à haut niveau d'abstraction pour gérer vos objets de jeu.
En utilisant ce module à son plein potentiel, vous pouvez facilement gérer et dessiner vos objets de jeu. Le module Sprite est censé être très générique. Il est possible de l'utiliser pour pratiquement n'importe quel type de gameplay.
Cette grande flexibilité a toutefois un léger défaut, elle nécessite de comprendre son fonctionnement pour pouvoir l'utiliser correctement.
Tenez compte du fait que cette introduction suppose que vous ayez un peu d'expérience en programmation Python et que vous êtes, d'une quelconque façon, familier avec les différentes étapes de création d'un simple jeu.
Le module Sprite utilise deux classes principales. La première est Sprite, qui est censée être utilisée comme classe de base pour tous les objets du jeu. Cette classe ne fait pas grand-chose en elle-même, elle inclut seulement plusieurs fonctions pour aider à la gestion des objets du jeu.
L'autre classe est Group. La classe Group constitue un conteneur pour différents objets sprite. Il y a en réalité différents types de classes Group.
Comme mentionné auparavant, la classe Sprite est conçue pour être une classe de base pour tous les objets de votre jeu. Vous ne pouvez pas vraiment l'utiliser en tant que telle, car elle est constituée seulement de plusieurs méthodes pour faciliter le travail avec les différentes classes de Group. Le sprite garde une trace du groupe auquel il appartient.
Lorsque vous utilisez les classes Sprite, il est préférable de les considérer comme valides ou vivantes lorsqu'elles sont contenues dans un ou plusieurs groupes. Lorsque vous supprimez l'instance de tous les groupes, Pygame va supprimer l'objet (sauf si vous possédez votre propre référence de l'objet quelque part).
La méthode kill() supprime le sprite de tous les groupes qui le contiennent. Elle supprime proprement l'objet sprite. Si, par hasard, vous avez déjà réuni le code source de deux jeux, vous savez certainement que supprimer proprement un objet du jeu peut être ardu.
La classe Group est un simple conteneur. Comme sprite, elle possède une méthode add() et une méthode remove() qui peuvent modifier un groupe tant que des sprites y sont contenus.
Le groupe possède d'autres méthodes comme empty() pour supprimer tous les sprites du groupe et copy() qui va renvoyer une copie du groupe et de tous ses membres à l'identique.
L'autre fonction que vous utiliserez fréquemment est la méthode sprites(). Elle retourne un objet sur lequel il est possible de boucler pour avoir un accès à chacun des sprites que le groupe contient.
Actuellement, c'est seulement une liste de sprites, mais dans les prochaines versions de Python, elle utilisera les itérateurs pour de meilleures performances.
Tel un raccourci, la classe Group contient également une méthode update(), qui va appeler la méthode update() sur chacun des sprites du groupe, en passant les mêmes arguments à chacune d'elles.
Habituellement dans un jeu, vous avez besoin d'une fonction qui met à jour l'état des objets. Il est très simple d'appeler vos propres méthodes en utilisant la méthode Group.sprites(), mais c'est un raccourci suffisamment utilisé pour être inclus dans la classe Group.
Enfin, la classe Group a deux autres méthodes qui vous permettent d'utiliser la méthode interne len(), récupérant le nombre de sprites contenus.
Un seul sprite peut être contenu dans autant de groupes que vous voulez. La première chose importante est que l'on a un moyen rapide et simple de séparer les sprites en catégories.
Un autre bénéfice important apporté par l'utilisation des classes Sprite et Group est que les groupes permettent la suppression facile des objets du jeu.
Les exemples ci-dessus et les raisons d'utiliser Sprite et les groupes sont seulement la partie émergée de l'iceberg. Un autre avantage est que le module Sprite possède différents types de groupes.
Ces différents types héritent tous du type ancêtre Group, mais ils possèdent également des fonctionnalités supplémentaires (où touchent à des fonctionnalités différentes).
C'est le groupe de type standard, sans supplément, qui est explicité ci-dessus. La plupart des autres groupes sont dérivés de celui-ci, mais pas tous.
Il possède une méthode draw() qui dessine tous les sprites qu'il contient à l'écran (ou sur une surface quelconque). Pour ce faire, il nécessite que tous les sprites qu'il contient possèdent les attributs image et rect. Il les utilise pour savoir quoi bliter et où les bliter.
Ce type est dérivé du type RenderPlain, et ajoute la méthode clear(). Cette méthode va effacer la position précédente de tous les sprites dessinés, en utilisant une image de fond pour les remplacer.
Elle est suffisamment élégante pour gérer les sprites supprimés et les effacer proprement de l'écran lors de l'appel de la méthode clear().
C'est la Cadillac des groupes de rendu. Il hérite de RenderClear, mais change la méthode draw() pour retourner une liste de Rects de Pygame, qui représente toutes les zones de l'écran qui ont été modifiées.
Le module Sprite inclut deux fonctions de détection de collisions très génériques. Pour des jeux plus complexes, elles ne seront pas suffisantes, mais vous pouvez facilement vous inspirer du code source et le modifier comme voulu.
Celle-ci contrôle les collisions entre un sprite unique et les sprites d'un groupe. Elle requiert un attribut rect pour tous les sprites utilisés. Elle retourne la liste de tous les sprites qui chevauchent le premier sprite.
Celle-ci est similaire à la fonction spritecollide(), mais est un peu plus complexe. Elle vérifie les collisions de tous les sprites d'un groupe avec les sprites d'un autre.
Du ADK, du Data East, de la balle en boite molle! Je suis trop content des jeux état mint (mais des moules fissurés/cassés pour certains).
J'ai pu faire de beaux ajouts de collec' et des upgrades de petits jeux que j'avais déjà. Avoir les World Heros en AES me fait bien kiffer, j'ai les full kit MVS correspondant sauf le Jet.
Je suis aussi super content d'avoir chopper des KOF, des en boite molle et d'autres en boite dur. j'ai les autres en MVS).
Voilà les cartouches rangées avec un accès facile au quotidien. Dilemme des boites de protection ou non.... A bientôt pour ma collec' de cartouches MVS!
Quels sont les jeux que tu aimerais avoir pour compléter la seconde tablette de ta bibliothèque? Des trucs que tu penses prenables financièrement parlant évidemment.
Aucun, j'ai déjà trop de jeux! Si je devais craquer, EN AES ce serait pour un ghost pilot en boite carton, ou un magician lord US mais vraiment si je gagne au loto. Ça me ferait mal de mettre de l'argent gagné en travaillant dans les jeux AES hors de prix.
Je peux jouer à tous les jeux neogeo entre mes AES ou MVS (à part fight fever, les quizz et majong). A cause du Covid, les prix des jeux ont augmenté de ouf. Ils se sont tous trouvé un passe-temps. Acheter des vieux jeux.
Sans ça, garou à 800€ ou last blade à 300€, c'était déjà bien trop pour moi, même si j'ai eu quelques craquages, ma barrières est basse. Et j'ai déjà bien trop débordé.
tags: #sprite #boite #de #munition #jeux #video