Dernier message
Portrait de RenardEnjoy
Inscrit le : 30/09/2013
Commentaires : 5
Messages : 54
#1
Message Sujet: [WIP] Shoot them up     28/01/2014 à 21:45

La programmation, certainement une chose qui peut faire tourner de l’œil plus d'un avec plus ou moins de grâce. Je créé ce fil pour vous partagez le développement d'un jeu, pas de Construct 2, pas de Game Maker, pourquoi donc?
Simplement parce qu'il s'agit d'une préparation pour un entretien pour une école de Game Programming lors duquel je présenterais les sources de mon jeu qui seront "évaluées".

Choix technologiques

Le jeu sera programmé sur une bonne vieille console PlayStation2 avec le kit de développement de la team PS2DEV qui est OpenSource.

Pourquoi une console?

Pour les contraintes que ça impose. Aujourd'hui nous avons trop tendance à nous reposer sur la surenchère de mémoire RAM que contiennent nos ordi. Pour ainsi dire, "J'ai de la place donc j'en prend autant que je peux". Le but ici avec un développement sur console est un peu un retour aux sources et un défi pour moi.

Mon choix pour le langage se portera sur le C, un bon vieux langage qui tiens la route (puis aussi que j'en ai pas forcément d'autre sous la main de dispo)

Le jeu

Pas la peine de partir sur un truc de compliqué, je compte pas refaire un Resogun ou autre schmup.

Vu mon manque de créativité artistique, les éléments du jeu ne seront que des primitives de la librairie graphique (c'est à dire des éléments de base: triangle, carré etc...). Peut être que par la suite je verrais pour ajouter des sprites si une âme charitable accepte de m'en créer.

Donc nous incarnons un triangle ayant une pointe pouvant alterner entre trois couleurs: Rouge, Vert et Bleu (tiens c'est original ça).
Viendront alors à votre encontre une série d'ennemie (cercle rempli de couleur) qu'il faudra éliminer.

Le bestiaire (si on peut appeler ça comme ça) sera composé:

  • Ennemie rouge, vert ou bleu simple. On peut détruire avec n'importe quelle arme (l'arme étant visualisée par la couleur de la pointe du triangle).
  • Ennemie rouge, vert ou bleu ++. On ne doit les tuer qu'avec la bonne arme, sinon Game Over (oui je sais, c'est cruel).
  • Les bosses.

Le score sera compté de la sorte:

  • 10 points pour chaque ennemie tué
  • Un bonus *2 si on utile la bonne couleur sur l'ennemie (le rouge sur le rouge etc...)
  • Un combo multiplicateur pour chaque ennemie tué avec la bonne couleur. Il sera perdu si il n'y a pas de kill au bout de 10sec.

Le jeu se déroulera dans une arène.

Point de départ

Il serait un peu bête de partir de vraiment rien. J'utiliserais donc deux choses faisant partie des programmes de démonstration du kit de développement:

  • L'initialisation de la manette (qui est plutôt fastidieuse)
  • L'initialisation de la librairie graphique (qui est méga chiante)
Etapes de création

Voici une petite liste des choses à faire et des choses faites:

Faites
  • Initialisation de la manette
  • Initialisation de l'affichage
  • Faire apparaitre un triangle (la base quoi)
  • Faire translater le triangle
  • Faire pivoter le triangle
A faire
  • Créer tir
  • Afficher les ennemies
  • Gérer la physique
    [tab]
  • projectile/ennemie
    [tab]
  • ennemie/joueur
  • Compter le score + combo
  • Créer les différentes phases du jeu (vagues d'ennemies etc)
  • Créer les feedbacks
  • Gérer la musique et le son
Le point

Vous vous en doutez à l'heure actuelle ce n'est pas bien folichon. Voici un humble exemple de ce que j'ai:

IMAGE(http://projet-metel.fr/ressources/shootthemup.jpg)

L'executable est un .elf que vous pouvez faire tourner avec un émulateur PS2.

Je ne cacherais pas qu'il m'a fallut du temps pour arriver à ça. Mais pourquoi?

Pourquoi?

ouai un gros titre pour dire qu'on rentre un peu dans le vif du sujet. Tire la langue

Déjà il faut imaginer un écran comme une grille (de pixel en l’occurrence).
Ensuite le point 0 , 0 ne se trouve pas au milieu de l'écran mais en haut à gauche. Encore plus fourbe, l'axe des Y (verticale donc) augmente lorsqu'on descend. En somme ça donne:

IMAGE(http://projet-metel.fr/ressources/shootthemup_2.jpg)

Ensuite, pour effectuer une translation des points du triangle, rien de très difficile, on augmente ou diminue les valeurs en X et Y de chaque point composant le triangle.
Viens ensuite la roation du triangle, rotation qui se fait selon l'angle du joystick droit de la manette, là je rigole un peu moins, moi qui ai toujours trouvé que les maths ne servaient pas à grand chose, aujourd'hui je me prend un retour de flamme in my face.

On commence par un petit coup d'oeil sur une manette de PS2:

IMAGE(http://projet-metel.fr/ressources/manette_ps2.jpg)

Déjà vous pouvez voir que l'orientation de l'axe Y va vers le bas, de plus la manette nous envoie deux données par stick: la position sur l'axe X et Y sur une échelle qui va de 0 à 255.
Je ne sais pas pour vous, mais j'avais le pré-sentiment que pour choper mon angle j'allais galérer et je ne me suis pas trompé.

Pour les plus curieux un morceau de code où je récupère mon angle et l'applique à mon triangle.

Spoiler :