CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Pyxberzerk

_Xaar
_Xaar
Niveau 10
25 février 2007 à 19:42:46

Bonjour,

Je vois déjà tous les fans du manga berzerk se demander si le sujet parle d´une adaptation de cette série, et bien non, désolé :)

Pyxberzerk est un clône de Berzerk sur Atari 2600 sur lequel je travaille en ce moment. Le but de ce projet c´est de bosser les collisions de sprites et plus particulièrement les collisions "pixel-perfect" ; je pense que jusqu´ici j´ai obtenu un assez bon résultat même si pour adapter cela à un jeu qui contient un vaste nombre d´ennemis différents comme un jeu de plate forme ou un shoot il y aurait du boulot.

[3615 mylife] Accessoirement Berzerk est aussi le premier vrai jeu vidéo auquel j´ai joué quand j´étais gosse, finalement je pense que j´aurais raté quelque chose si j´avais eu comme je le voulais à l´époque une nes au lieu d´un Atari 2600, mes parents ayant préféré l´Atari parce que c´était moins cher :gni: [/3615 mylife]

Screenshot du menu :
http://perso.orange.fr/pyxsoftware/images/pyxberzerk_01.png

Screenshot in game :
http://perso.orange.fr/pyxsoftware/images/pyxberzerk_02.png

Pour ceux qui connaissent l´original ça a donc vraiment la même tête en cours de jeu.

Ce qui est fait jusqu´à présent : les menus, le déplacement du héro, changement de niveau quand on atteind une sortie, apparition d´un certain nombre de robots légèrement animés qui restent sur place, collision pixel-perfect avec les murs et les robots (sauf au niveau de l´animation des "yeux" des robots, détail qui est prévu d´être corrigé par la suite), remplacer le curseur du menu par autre chose qu´un gros cube jaune.

Reste à faire : que le héro puisse tirer, les robots aussi, que les robots puissent bouger, les bruitages, système de vies et de score, augmenter la difficulté en fonction du nombre de niveaux passés.

Demo windows (si quelqu´un sous vista pouvait me confirmer que ça marche ce serait sympa) :
http://perso.orange.fr/pyxsoftware/fichiers/pyxberzerk_demo_windows.zip

Demo source (fonctionne sous windows et linux, necessite python et pygame) :
http://perso.orange.fr/pyxsoftware/fichiers/pyxberzerk_demo_source.zip

Les touches :
- haut/bas/espace dans les menus;
- les touches fléchées pour bouger le héro (le tir est prévu avec la touche espace, pour l´instant le héro dirige ses bras dans la direction voulue sans tirer);
- echap en cours de jeu pour obtenir un menu de pause.

Les touches "spéciales développement":
- F1 pour baisser la vitesse du jeu à 1 image par seconde (pour voir au ralenti si les collisions sont bien comme il faut);
- F2 pour remettre la vitesse normale;
- F3 pour passer direct à un nouveau niveau.

Le jeu fonctionne en 320*240 (donc vous risquez d´avoir une fenêtre 320*240 au milieu d´un écran 640*480 en fullscreen avec un matos/un os qui ne gère pas cette résolution), la config conseillée c´est mon ordi -> 500 Mhz 256 Mo cg intel i810.

Si vous avez des remarques à faire ( par exemple du genre "bah en fait si tu fais ça tes collisions marchent pas" ) je suis preneur.

_Xaar
_Xaar
Niveau 10
25 février 2007 à 19:47:51

J´ai oublié de rajouter l´essentiel tellement ça me parait évident: la particularité de ce jeu c´est que les murs sont électrifiés, n´ayez pas une crise cardiaque en essayant d´en toucher un :gni:

De la même facon touchez un robot et vous perdez une vie.

KeepSmile
KeepSmile
Niveau 4
25 février 2007 à 20:09:49

Bonjour,

Tout d´abord, je tiens à te féliciter car un projet qui se concrétise c´est pas tous les jours :), même si c´est pas le jeu 3D de l´année avec le quel tu vas devenir riche :) (on est amateur, pas professionnel ;) ), de plus j´ai testé sous Windows XP familial, ca tourne très bien et je trouve ca plutôt bien fait :), j´ai pas eu la chance de jouer à la version originale donc je peux pas vraiment comparer.

J´ai hâte de voir les futurs améliorations :)

Bonne chance

[ChaChat]
[ChaChat]
Niveau 6
26 février 2007 à 12:51:55

Du beau boulot encore une fois. Testé sous Ubuntu Linux 6.10 avec Python 2.4 et Pygame 1.7.1 ca marche parfaitement. C´est très fluide ! (en même temps la fenêtre n´est pas très grande). Bonne continuation !

_Xaar
_Xaar
Niveau 10
26 février 2007 à 20:32:24

Merci des commentaires :)

C´est très fluide ! (en même temps la fenêtre n´est pas très grande).<<<

Et puis c´est pas non plus comme s´il y avait 3 scrollings différentiels avec des effets de zoom et de rotations, mais faut bien un début à tout :oui:

elhuron
elhuron
Niveau 6
26 février 2007 à 20:40:10

Bien foutu ^^
C´est du bon boulot!

Il tourne nickel aussi sur mon vieux ordinateur.
Ca a du etre plutot interessant de tester la collision au pixel pres.

Bonne continuation :)

_Xaar
_Xaar
Niveau 10
03 mars 2007 à 23:24:38

Ca a du etre plutot interessant de tester la collision au pixel pres.<<<

Tout à fait, d´ailleurs au cas où ça intéresserait quelqu´un d´autre je vais expliquer un peu comment je fais (c´est pas forcément la meilleure solution non plus hein...). Je précise au passage que je me suis inspiré de cette page là :
http://www.games-creators.org/wiki/D&eacute;tection_pixel-perfect_des_collisions_2D

Prenons les deux sprites ici:

http://perso.orange.fr/pyxsoftware/images/pixel_perfect_1.png

Dans un premier temps je teste si les deux rectangles contenant les sprites se recoupent :

http://perso.orange.fr/pyxsoftware/images/pixel_perfect_2.png

Pour l´instant c´est juste un test de collision classique, avec x1,y1 les coordonnées du point haut-gauche du rectangle du robot, x2,y2 les coordonnées du coin bas droite, et pareil avec x3,y3 et x4,y4 pour le héro si on a if x3<=x2 et x4>=x1 et y3<=y2 et y4>=y1 qui sont vrais alors les deux rectangles ont une partie commune.

Cette partie commune sur l´exemple c´est là où il y a les couleurs sur l´image suivante :
http://perso.orange.fr/pyxsoftware/images/pixel_perfect_3.png

C´est ensuite que je passe si nécessaire à la comparaison pixel par pixel, en utilisant une sorte d´équivalent binaire des masques des sprites, équivalent qui donne par exemple ça pour un robot (avec une police non monospacée ça risque d´être un peu de travers sur votre écran):

0000111111110000
0000111111110000
0011110000111100
0011110000111100
1111111111111111
1111111111111111
1100111111110011
1100111111110011
1100111111110011
1100111111110011
0000110000110000
0000110000110000
0000110000110000
0000110000110000
0011110000111100
0011110000111100

Pour la zone qu´on a à vérifier:

http://perso.orange.fr/pyxsoftware/images/pixel_perfect_4.png

La partie du sprite du robot c´est celle là:

http://perso.orange.fr/pyxsoftware/images/pixel_perfect_5.png

La partie du masque que je récupère donne ceci:

0110000
0111100
0111100

Si si, on reconnait bien le pied du robot :oui:

Pour la partie concernée du sprite du héro...

http://perso.orange.fr/pyxsoftware/images/pixel_perfect_6.png

...le masque donne ça:

0000001
0000001
0000001

Ensuite j´additionne ligne par ligne les parties de masques récupérées : si deux pixels se trouvent à la même place on obtiendra un 2 dans le résultat (1+1, c´est trop dûr la prog) et à ce moment j´arrête le test de collision et je renvoit une info comme quoi les deux sprites sont entrés en collision.

Les masques des sprites je les ai mit dans des fichiers textes qui sont chargés au lancement du jeu, au tout début j´avais essayé en piquant directement les couleurs des pixels dans les images en mémoire mais passé un certain nombre de pixels ça devient un peu trop lent :(

_Xaar
_Xaar
Niveau 10
03 août 2007 à 23:05:46

Un petit up pour dire que le projet n´est pas abandonné, c´est juste que ça avance très lentement :sleep:

Screenshot en zoom*2 de la tronche définitive du menu avec le curseur qui va bien et une nouvelle police :

http://perso.orange.fr/pyxsoftware/images/pyxberzerk_03.png

Screenshot du gars en train de tirer :

http://perso.orange.fr/pyxsoftware/images/pyxberzerk_04.png

Oui bon d´accord, c´est pas comme s´il y avait des tas d´effets spéciaux :)

Les tirs s´arrêtent dès qu´ils rencontrent un mur, en bas à gauche du screen ce sont les vies restantes, au milieu l´arme utilisée car je compte en mettre deux au lieu d´une pour le jeu original et à droite c´est le score.

_Xaar
_Xaar
Niveau 10
15 août 2007 à 00:24:58

Petit topo sur les 2 armes vu que je viens de les intégrer correctement dans le jeu.

- la 1ère est un laser (abbréviation "LA") de base, comme dans le jeu original elle peut balancer un seul rayon à la fois, ce rayon disparait en touchant un mur/un robot/un tir ennemi et seulement à ce moment là vous pouvez en balancer un autre ;

- la 2e est un super laser (abbréviation "SL"), elle a la particularité de pouvoir traverser plusieurs robots à la fois --> s´il y a 50 robots alignés c´est le carton ! A cause de celà elle peut sembler beaucoup plus balaise que le laser de base sauf que ce sera plus difficile de s´en tirer quand vous serez cerné de plusieurs cotés : puisqu´elle ne peut balancer qu´un rayon à la fois également il faudra attendre à chaque fois qu´après avoir fini de dégommer un robot le rayon heurte un mur pour tirer dans une autre direction (genre sur le robot qui vient d´arriver dans votre dos). Si vous tirez sur des grands espaces vides de murs à la longue ça va pas le faire.

Au début de chaque partie on pourra choisir son arme qui ne pourra pas etre changée en cours de jeu. Les meilleurs scores garderont une référence de l´arme utilisée et j´espère obtenir vu les avantages/désavantages de chacune une bonne balance entre les deux.

master-gromi
master-gromi
Niveau 7
15 août 2007 à 13:55:06

Un projet bien sympa ^^
Perso sous windows vista Home prenium ça passe nickel.
Perso j´ai hate de voir la suite!

_Xaar
_Xaar
Niveau 10
15 août 2007 à 23:39:36

Merci bien :)

1er retour sous Vista ça se fête, ça peut servir de savoir que dans deux ans quand tout le monde ou presque sera passé sous Vista au lieu d´Xp on me répondra pas tout le temps "ça marche pas ton truc, ça veut pas se lancer" :o))

_Xaar
_Xaar
Niveau 10
19 août 2007 à 02:55:52

Des petits trucs en plus de terminés :

- quand les robots se font toucher il y a une petite animation d´explosion smileyesque fidèle au jeu original ;

- on gagne des points à chaque robot descendu (chiffre non définitif mais facile à changer dans le code selon la difficulté de l´ia qui reste à faire), plus un bonus si on descend tout les robots d´un niveau au lieu de passer au suivant en laissant des survivants ;

- les vies sont gérées aussi, que ce soit quand on en perd jusqu´au game over ou quand on en gagne (tout les x points, là aussi chiffre non définitif selon les perfs que montrera l´ia des robots) ;

- tout le système des meilleurs scores est fini aussi.

Dans le jeu original il y a 12 niveaux de difficulté avec des variations notamment au niveau des robots et des vies sups, je compte pour ma part en faire un seul bien équilibré pour que ce ne soit pas trop dur ni trop facile (genre pas comme dans mario bros sur atari 2600 où on gagne tellement de vies sups alors que la difficulté cesse d´augmenter après une quinzaine de niveaux que la seule facon de perdre c´est de foncer exprès sur les ennemis).

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment