1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants :...

24
1 Projet Informatique (CSC 3502) Développement d’un jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG Lundi 02 Juin 2008 Encadrant : Sébastien LERICHE du département informatique

Transcript of 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants :...

Page 1: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

1

Projet Informatique (CSC 3502)

Développement d’un jeu de combat 2D de type arcade

Étudiants :

Valérie BRANCHE

Jacqueline TAN

Tian Sheng TAN

Muqiu ZHENG

Lundi 02 Juin 2008

Encadrant : Sébastien LERICHEdu département informatique

Page 2: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

2

Plan de présentation

1. Présentation du sujet

2.1 Le site web : Son contenu et son codage2.2 Le site web : Aperçu

3. Installation et appréhension de la SDL

4. Principe du chargement d’image

5. Gestion du temps

6. Règles d’animations et de mouvements

Page 3: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

3

Plan de présentation

7. Boucle locale

8. Algorithme général

9. Esthétique du jeu

10. Critiques du résultat

11. Propositions d’évolution

12. Conclusion

Page 4: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

4

1. Présentation du sujet

Concevoir un jeu de combat 2D de type arcade dans l’esprit d’un Street Fighter

2 joueurs contrôlent chacun un personnage par l’intermédiaire du clavier et de l’écran

Le programme doit respecter des règles d’animations et de mouvements bien définies

Page 5: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

5

1. Présentation du sujet

Contraintes de réalisations- Jeu portable sur tout système d’exploitation- Langage C- Code sous licence GNU/GPL

Exigences de qualité requises- Documentation- Cycle en V- Site Web

Page 6: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

6

2.1 Le site Web : son contenu et son codage

Contient les documents relatifs au projet (planning, cahier des charges, …), les comptes-rendus des réunions, les codes sources, une présentation de l’équipe.

Codage manuel en utilisant le langage HTML

Utilisation de frames pour un menu fixe sur la gauche

http://site.voila.fr/piarcade/index.html

6

Page 7: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

7

2.2 Le site web : Aperçu

7

Page 8: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

8

3. Installation et apprentissage de la SDL

Nécessité d’installer un compilateur (Microsoft Visual C++ 2008 Express Edition)

Téléchargement de la bibliothèque sur un site consacré à la SDL www.libsdl.org

Apprentissage de la SDL grâce aux tutoriaux sur le site du zéro :

- Ouvrir une fenêtre- Manipuler des surfaces- Charger une image- …

Page 9: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

9

4. Principe de chargement d’une image

SDL_Surface *ecran = NULL, *imageDeFond = NULL;

SDL_Rect positionFond;

positionFond.x = 0; // pour positionner notre image

positionFond.y = 0;

SDL_Init(SDL_INIT_VIDEO); // Chargement du système vidéo

/* Ouverture d’une fenêtre en mémoire vidéo */

ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);

/* Chargement d'une image dans une surface */

imageDeFond = IMG_Load("image.png");

Page 10: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

10

4. Principe de chargement d’une image

/* On copie par-dessus l'écran */ SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);

/* Mise à jour de l’écran */SDL_Flip(ecran);

/* Libération de la surface */SDL_FreeSurface(imageDeFond);

Utilisation de ce principe sur nos sprites avec des tableaux d’images et des compteurs d’images

Page 11: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

11

5. Gestion du temps

SDL_Delay (40) : permet d’attendre 40 millisecondes avant de renvoyer l’image.

On obtient alors 25 images par secondes

SDL_GetTicks ( ) : permet d’obtenir le nombre de millisecondes depuis le début du jeu

Utile pour définir une durée maximale de partie à 100 sec au moyen de timers

timeStart = SDL_GetTicks ()

timeGoing = (SDL_GetTicks () – timeStart)/1000

Page 12: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

12

6. Règles d’animations et de mouvements

Importance de définir les propriétés et règles sur : les coups de pied/poing, les sauts, l’accroupissement, la défense…

Exemples

- 3 niveaux de coups de pied/poing

- Un mouvement est intégralement exécuté avant de pouvoir en exécuter un nouveau

- Impossibilité de se déplacer en position accroupie

Page 13: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

13

7. Boucle locale

Forme initiale

while( ) { switch ( ) case( touche “ ” enfoncée ) for ( ) // on parcourt les sprites affichage

SDL_Flip( ) ; SDL_Delay( ) ;

}

Problème : nécessite d’étudier tous les sous-cas en fonction des combinaisons de touches

Page 14: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

14

7. Boucle locale

Solution apportée

- Définir une variable « état du personnage » au sein

de la structure de donnée associée au personnagetypedef enum {STILL, JUMPING, CROUCH, MIDKICK…} states

- Définir une variable « état du clavier »keystate = SDL_GetKeyState( NULL );

Page 15: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

15

7. Boucle locale

while ( ) { /* Obtenir l’état courant du clavier */ SDL_GetKeyState ( )

/* Calcul du nouvel état du personnage */ stateChangeCharacter ( ) /* Mise à jour de l’état du personnage */

updateCharacter (personnage & clavier) … /* Mise à jour de l’affichage écran */ refreshScreen ( )}

Page 16: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

16

8. Algorithme général

1. Vérifier l’état du clavier

2. Calculs du nouvel état du personnage

3. Mise à jour du nouvel état du personnage

4. Application des règles d’arbitrage

5. Quelques cas particuliers

6. Chargement des sprites après mises à jour

7. Mise à jour de l’écran ou reprise/fin de jeu

getkeystate

stateChangePlayerOnestateChangePlayerTwo

updateCharacter

result

updateCharacterCombat

printCharacter

refreshScreenrestartGame

if 0

if 1if 0

Page 17: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

17

9. Esthétique du jeu

Page d’accueil

- Demande au personnage s’il veut commencer ou quitter le programme

- Demande de rentrer les nom des personnages

Module : welcome.h, welcome.c Fonction : int welcomePage ()

Page 18: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

18

9. Esthétique du jeu

Fin de partie

- Vainqueur euphorique et perdant à terre

- Demande aux joueurs de continuer ou quitter le jeu

Module : restart.h, restart.c Fonction : int restartGame ( )

Page 19: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

19

10. Critiques du résultat

Les sautsPrise en compte prévue de la pesanteur

Implémentation non aboutie Solution proposée : sauts linéaires

Les rebondsGestion prévue des rebonds

Implémentation compliquée Uniquement gestion des collisions

entre personnages

Page 20: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

20

10. Critiques du résultat

Programme non portable

SDL_enableKeyRepeat ne fonctionne pas sous Windows une de nos règles initiales d’animation n’a pas pu être appliquée

Quelques problèmes d’arbitrage notamment dans le cas des sauts

Jeu basique mais possibilités de l’améliorer pour le rendre plus attractif et ludique

Page 21: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

21

11. Propositions d’évolutions

Rendre le jeu portable

Ajout de personnages supplémentaires afin de laisser le choix du personnage aux joueurs

Définir des règles de jeu plus évoluées comme des parties en plusieurs tours, dans des univers différents

Implémenter des « coups spéciaux » pour donner un aspect encore plus fun au jeu

Définir une conception dynamique des règles d’arbitrage

Page 22: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

22

12. Conclusion

Développement :

- Application du C avec une nouvelle bibliothèque

- Familiarisation avec la manière d’écrire les codes pour faire des jeux vidéos

- Partie conception détaillée essentielle dans notre projet, autant dans sa définition que dans son implémentation.

Page 23: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

23

12. Conclusion

Gestion de projet :

[--] Problème de communication au sein de l’équipe pendant le première moitié du projet : communication indirecte via MSN ou par mails

[--] Incompatibilité d’exécution du programme sur nos différents ordinateurs : nécessité de déplacer des sous-dossiers, bugs de l’exécutable…

Page 24: 1 Projet Informatique (CSC 3502) Développement dun jeu de combat 2D de type arcade Étudiants : Valérie BRANCHE Jacqueline TAN Tian Sheng TAN Muqiu ZHENG.

24

12. Conclusion

[++] Bonne répartition des tâches selon nos aptitudes

(site web, gestion de projet, programmation)

[++] Respect du planning, efficacité dans la détection de problèmes et la recherche de solutions

Bon avancement du projet : pas de retard pénalisant, objectifs initiaux généralement atteints

et obtention d’un programme fonctionnel