Projet ICN9 2016/2017
(→C++) |
(→Le moteur de jeu) |
(12 révisions intermédiaires par un utilisateur sont masquées) |
Version actuelle en date du 25 janvier 2017 à 13:35
Sommaire |
[modifier] Participants
- Titouan DEMANGE
- Thibault ELLONG
- Valentin SENE
[modifier] Cahier des charges
Le jeu est un jeu de plateforme 2D multijoueur. Le joueur doit arrviver en premier à la fin du niveau tout en haut.
Des bonus peuvent apparaître sur les terrains pour désavantager son adversaire ou s'avantager tels que des bonus de vitesse, de saut, d'invincibilité.
Le programme est à écrire en langage C++ avec la bibliothèque SFML (Simple and Fast Multimedia Library).
[modifier] Réalisations
Quelques étapes dans la réalisation du jeu.
- Prise en main de la bibliothèque SFML et téléchargement de fichiers audio et images.
- Réalisation d'un programme permettant de faire bouger un personnage avec les flèches du clavier, de modifier sa vitesse de déplacement et même de le faire marcher en arrière.
- Ecriture d'un programme demandant votre nombre d'enfants puis vous répondant avec 2 autres phrases qui varient en fonction de la réponse que vous avez donné tel que : "Bravo, vous avez 2 enfants !" ou "Et c'est pour quand le troisième ?".
- Etude des cours sur "openclassrooms" concernant le C++.
- Gestion des collisions entre objets et personnages et aussi de la gravité.
- Ecriture d'une fonction utilisant le générateur de nombres aléatoires.
- Améliorer la fonction de detection des collisions
[modifier] A faire
Ce qu'il nous reste à faire pour finir le jeu.
- Faire la fonction qui gère les points, les bonus, la vie, etc... : le moteur de jeu
- Un générateur de niveau
- Le scénario pour donner de la vie et une histoire au jeu
- Trouver le nom (si vous avez des suggestions on est ouverts)
- Le multijoueur (à 4 si possible)
- Le menu
- D̶e̶s̶ ̶c̶o̶n̶t̶r̶a̶t̶s̶ ̶p̶u̶b̶l̶i̶c̶i̶t̶a̶i̶r̶e̶s̶ ̶p̶o̶u̶r̶ ̶l̶'̶a̶r̶g̶e̶n̶t̶
- Tester le jeu pour l'équilibrer (surtout les bonus), régler les bugs et ajouter les choses manquantes
- L'améliorer
- Recommencer les 2 derniers points
[modifier] C++
voir le lien vers openclassrooms qui explique très bien ce qu'est le c++ et est l'endroit ou nous puisons nos connaissances dans ce langage.
Le c++ contrairement à d'autres langages comme le python est compilé pour être utilisé, c'est à dire que l'ordinateur ne comprend pas directement le langage et il faudra donc le traduire, code::blocks est un IDE qui permet d'éditer le code, le compiler et lancer le programme pour le tester. Sous linux, il est plus simple de compiler le programme dans un terminal, mais nous utilisons quand même code::blocks pour éditer le texte...
[modifier] Le moteur de jeu
Il devra gérer:
les statistiques
- les point de vie
- la défense
- la vitesse
- la puissance
la partie
- les bonus
- la hauteur du joueur
- la hauteur de la porte du joueur
- le temps de la partie
la physique
- la gravité (voir l'image de l'IDE ou la collision est détectée et gérée)
- les collisions
[modifier] Multijoueur
Pour le multijoueur, nous avons choisi d'utiliser la SFML partie network mais ce n'est pas la priorité, pour l'instant et jusqu'à une version future les deux joueurs seront sur le même clavier, l'objectif étant le lan
Le LAN (Local Area Network) désigne un réseau local qui relie des machines entre elles, il est ainsi possible de faire des parties avec vos amis si vous êtes sur le même réseau en wi-fi ou en Ethernet.
[modifier] Graphismes
Le but de la SFML est de gérer la partie graphique avec du code (c'est la bibliothèque graphique) nous avons donc cherché sur des sites spécialisés des packs d'images pour nos plateformes, ennemis, etc... Le dossier est sur Google Drive depuis la version 2.0 il est possible de gérer bien d'autres choses comme le réseau...
Voici, à droite, la fiche de sprite de J1 qui est utilisée pour le développement, on y voit toute les position que le personnage peut à voir en marchant. Avec la sfml, on prend l'image qu'on stock en tant que texture, on l’applique à un sprite, puis on la découpe selon la partie désirée.
ce qui donne...
if(!textureJ1.loadFromFile(("spriteJ1.png"), sf::IntRect(dec1, dec2, dec3, dec4))) { std::cout << "erreur : chargement de spriteJ1" << std::endl; } J1.setTexture(textureJ1);
puis...
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) { J1.move(0, -vitesse); dec2 = 0; } else { J1.move(0, vitesse); dec2 = 144; } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Q)) { J1.move(-vitesse,0); dec2 = 48; } if(sf::Keyboard::isKeyPressed(sf::Keyboard::D)) { J1.move(vitesse,0); dec2 = 96; }
[modifier] Game design
Dans le jeu, vous serez amenés à combattre un adversaire pour arriver en premier sur la dernière plateforme du niveau. La caméra avance toute seul vers le haut et vous mourrez si vous en sortez où si votre ennemi utilise certains bonus.
[modifier] Contrôles
- Z: sauter
- Q: aller à gauche
- S: tomber
- D: aller à droite
- [LSHIFT]: utiliser l'objet
- [ ]: utiliser un le bonus
-
- ↑: sauter J2
- ←: aller à gauche J2
- ↓: tomber J2
- →: aller à droite J2
- [RSHIFT]: utiliser l'objet J2
- ↵: utiliser un le bonus J2
[modifier] Scénario
A venir...