[Journal de bord] Création d'un petit jeu de zombies
Salut ici :p
J'aimerai mettre en pratique une petite idée qui me trotte dans la tête depuis un certain temps. Lorsque je décide de créer un nouveau jeu, j'ai tendance à faire ça un peu à l'arrache, sans poser de base et sans réfléchir en profondeur à certains aspects pourtant importants. Et surtout, je fait ça dans mon coin sans demander d'avis à personne.
Jusque là, j'était en train de travailler sur un autre projet : Extinction. Mais je tourne en rond pour le finir, il manque un petit quelque chose et j'ai décider de le mettre de côté pour l'instant, le temps que l'inspiration revienne.
J'ai donc envie de me lancer dans un autre jeu qui sera beaucoup moins ambitieux. Pour le moment, je table sur 2 mois au maximum pour avoir quelque chose de plus ou moins finalisé (J'ai commencé tout ça le 15 octobre, je vais mettre quelques messages à la suite pour l'avancement jusqu'ici). Et au passage, je pense qu'il serait intéressant de tenir à jour ce petit journal de bord pour expliquer et pour discuter de toutes les étapes de réalisation du jeu (game-design, graphisme et programmation).
J'espère que ça pourra vous être utile à vous autant qu'à moi et que vous pourrez m'apporter avis et critiques :p
____________________
Maintenant, commençons par le commencement ^^
Quel genre de jeu ?
Alors, quel sera le genre de ce jeu ? C'est pas compliqué, j'ai regardé ce que je savais faire et ce que j'aimais bien et j'ai mélangé tous ça ^^
Je sais faire des jeux multijoueurs
Je sais dessiner (avec plus ou moins de succès)
Je ne sais pas faire de 3D
Je ne sais pas faire de 3D isométrique
J'adore les zombies ^^
J'adore plus particulièrement le film Zombies et son remake L'armée des morts
J'adore le jeu Dead Rising
Je compte pas faire un jeu super original avec des concepts jamais vues. Je veux faire un truc simple, efficaces et pas trop long à faire :mrgreen: Donc, à partir de ce constat, je pense faire le jeu suivant :
Gameplay :
Les joueurs incarneront des survivants qui tentent de survivre dans un centre commercial envahi par une foultitude de zombies.
Ca c'est la base, mais je compte orienter le jeu sur deux points importants :
- La survie, grâce à une gestion de la faim, le joueur devra explorer le centre commercial pour se nourrir, sous peine de mourir de faim. La plupart des interactions multijoueurs viendront de ce concept.
- L'utilisation d'objets, qui permettra aux joueurs de combattre les zombies avec un grand nombre d'objet différent. Mais ces objets seront fragile, ce qui obligera les joueurs à souvent combattre avec ce qui leurs tombent sous la main.
Graphisme :
C'est la partie qui m'inquiète le plus, je ne veux pas "voler" de sprites qui ne m'appartiennent pas, donc va falloir faire un truc jolie et fonctionnel avec des compétences limités :o
Donc là, j'ai pas trop le choix, comme je ne sais pas faire de 3D ou de 3D isométrique, je vais faire ça en 2D, mais en 2D un peu plus évolué qu'un Mario sur un seul plan. En gros, seul le décors sera en 3D isométrique, tout le reste (Personnage, zombie, objets) sera en 2D. Ce sera un peu le même principe que le jeu Castle Crasher, dont voici un petit screen :
Castle Crasher
Les zones seront surtout étirées en largeur mais les joueurs pourront se déplacer en haut et en bas (Mais même en marchant vers le haut, le joueur restera de profil). Par contre, je pense pas prendre en compte l'axe Z, donc les joueurs ne pourront pas sauter.
Technique :
C'est la partie que je maîtrise le mieux, et qui me posera le moins de problème.
Le client sera en flash, en 800x600 et utilisable via un navigateur ou un fichier exécutable. Le serveur sera en Java qui tournera sur un serveur dédié et la connexion se fera par socket (donc en temps réel). La base de donnée sera une base MySQL.
____________________
Voilà :p ça c'est la base de la base. Je vais pas encore détailler le gameplay, car pour l'instant, je travaille sur les personnages et leurs animations et voir ce dont je suis capable de faire (pas la peine de prévoir de nager dans le gameplay si je n'arrive pas à faire l'animation de nage :mrgreen:). Pour l'instant, j'ai un perso pas trop moche qui cours de façon pas trop ridicule, mais je détaillerai tout ça dans un prochain message, quand j'aurais un personnage qui peut attendre, courir et tenir un objet.
Les collisions et la profondeur
Citation:
Envoyé par
BrItneY
Débutant dans la création de jeux sous flash, je me pose une petite question : Comment fais tu tes animations ?! Directement avec flash ?! Tu fais l'animation du squelette puis attaches une texture dessus, c'est bien cela ?! :roll:
Oui, c'est exactement ça. J'anime mon petit personnage baton en timeline et ensuite, une fois en jeu, je remplace dynamique les batons par des textures (des MovieClip en fait). De cette facon, les textures suivent les déformations de l'animation (translation, rotation, etc).
____________________
Aujourd'hui, je vais parler de la mise en place du système de collision et du système de profondeur.
La profondeur des joueurs et des objets
Dans un jeu en 2D comme ça, il faut gérer la profondeur sur l'axe nord-sud. En gros, si un objet est plus bas qu'un autre, il doit se retrouver devant ce dernier.
Pour mettre en place un tel système, j'ai découpé l'espace de jeu en petite case de 20 pixels sur 20 pixels. Comme ceci :
http://forums.jeuxonline.info/attach...1&d=1225312206
Quand le joueur se déplace sur l'axe Y et qu'il change de ligne, ça déclenche la mise à jours de la profondeur du dit joueur. C'est à dire qu'on regarde sa position en fonction des autres objets du monde et on ajuste sa profondeur. Par exemple, si le joueur est plus bas qu'une table ça donne ceci :
http://forums.jeuxonline.info/attach...1&d=1225312580
Alors que si le joueur est plus haut, il se retrouve derrière :
http://forums.jeuxonline.info/attach...1&d=1225312580
Le fait d'avoir découpé l'espace en petit carré de 20x20 permet de déclencher ce genre de mise à jours beaucoup moins souvent que si j'avais testé ça pixel par pixel, ce qui économise beaucoup de ressource. L'inconvénient, c'est que les objets doivent être attachés sur cette grille pour éviter d'avoir des chose comme un joueur légèrement plus bas qu'un objet mais de quand même rester derrière. Ce genre de problème se produira en revanche entre les joueurs, mais bon, comme ils seront souvent en mouvement, ça sera moins désagréable. Au pire, je peut toujours rétrécir le quadrillage.
En revanche, un autre problème s'est posé à moi au bout d'un moment. Dans le dernier screen, on peut voir que je suis plus bas que la chaise posée sur la table mais que je suis quand même derrière celle-ci. En fait, j'ai du mettre en place un système de liaison entre les objets pour ce genre de cas, où un objet est en fait posé sur un autre objet. Ca me permet de prendre en compte la position d'un seul objet pour calculer la profondeur de tout un groupe d'objet.
On le voit bien sur ce screen :
http://forums.jeuxonline.info/attach...1&d=1225312206
Les deux bouteilles d'eau sont à la même position sur l'axe Y mais celle de droite est liée à la table ce qui la place devant mon personnage. De cette façon, on voit bien qu'elle est en fait posée sur la table, alors que l'autre est posée par terre.
Les collisions
J'ai profité de ce quadrillage pour mettre en place mon système de collision. J'ai créé un truc tout bête qui prend en compte la taille de l'objet pour marquer certaines cases du quadrillage comme étant "non franchissable". Comme le montre ce petit screen (Les cases vertes ne peuvent plus être traversées) :
http://forums.jeuxonline.info/attach...1&d=1225312206
Si un objet est trop petit, il ne déclenche pas de collision avec les joueurs, comme le montre la petite bouteille en haut à gauche.
Comme pour la profondeur, le fait d'utiliser un quadrillage permet d'économiser des ressources plutôt que de gérer les collisions pixels par pixels. D'autant que pour ce genre de vue, ya pas besoin d'avoir un truc ultra précis :p
Tout ceci se fait dynamiquement. C'est à dire que sur flash, j'ai une scène qui représente un niveau où je place mes différents objets à l'arrache. Ensuite, c'est le jeu en se lançant qui reconstruit le monde en rendant les objets sélectionnable, en les attachant au quadrillage et en créant les zones de collision suivant la taille de l'objet. Ca va me permettre de créer du contenu rapidement sans trop d'effort à paramétrer chaque objet avec des valeurs numériques :p
De plus, ce quadrillage me servira plus tard pour gérer le pathfinding des zombies. Ca permettra de rendre les objets infranchissable pour les zombies et ça me donne des idées de gameplay autour des barricades et autres joyeusetés du genre :)
Prochaine étape : le tapage de zombies 8-)