jan
15

Bomberman++

BomberMan Kinder
[EN] This project was realized for my second year spent at ESGI for the C++ courses.  The main goal of the project was to implement all the programming mechanisms learned during the year of study.

I chose to create a game based on the well known Bomberman !! And as the original Bomberman was a 2D game, I decided to extend the gameplay to make it a 3D one and to call it after a long, long, long time of considering …. : BomberMan++ !!

[FR] Ce projet fait suite à la seconde année du cycle ingénieur dispensé à l’ESGI pour le cours de C++. Le but étant de réaliser un logiciel grâce au langage C++ et en y intégrant les différentes techniques de programmation orienté objet vues au cours de l’année.
Ayant intégré la filière Multimédia et Animation numérique, le choix c’est porté sur le développement d’un jeu reprenant le thème du culte Bomberman :)

Download / Téléchargement

svn checkout http://bombermanplusplus.googlecode.com/svn/trunk/ bombermanplusplus-read-only

1.2 Goals / Objectifs

[EN] The project was created with several goals :

  • The re-use of my « ASE 3d model loader » developed last year. This time ported from C to C++ with Oriented Object Programming.
  • Directed a 3D real time game from A to Z.
  • Using network programming for a up to 4 simultaneous players.
  • Using SFML, a SDL API like but written in C++.

[FR] Le projet à été réalisé avec plusieurs objectifs :

  • Adaptation du « loader ASE » développé l’année dernière afin d’être utilisable en POO.
  • Réalisation du jeu en 3D temps réel.
  • Possibilité de jouer en réseau local jusqu’à 4 joueurs.
  • Utilisation de la librairie SFML (équivalent à la SDL mais orientée POO)

2 – Software Introduction / Présentation du logiciel

[EN] The software is splited into 2 pieces :

  • A Server side : a common lunch of the application used to share a match with other.
  • A Client side : to reach a Server and join a lunched match.

[FR] Le jeu se décompose en 2 parties à savoir :

  • Une partie Serveur, qui servira de passerelle pour tous les joueurs
  • Une partie Client, qui écoutera le serveur pour mettre à jour la partie en cours.

2.1 Server / Le Serveur

[EN] When you launch the game with a default setting, the software will stand as a Server. You can now start to play alone, or wait until another player join the match.

Still with a default setting, the game boots with a default level (stage), which is described in the following file : « ressources/plateau/default.plt ». We will see lately how to create another stage.

If you want to change the stage, you can use « -p » option followed by the name of the stage while launching the game.

  • ex : « bomber++.exe  -p example1.plt »

Warning : File must be in the folder : « ressources/plateau/ »

Once the game is launched, the server is listening to the 3256 port on the network for further players. So, think about open this port on your firewall !

[FR] En lançant le jeu par défaut, le  logiciel se lance est en mode « Serveur ». Le joueur peut commencer une partie seul ou attendre qu’un autre joueur vienne se connecter.
Toujours par défaut, le plateau (ou niveau) qui est lancé, est celui décrit dans le fichier « ressources/plateau/default.plt ». Nous verrons par la suite comment en créer un nouveau.

Si l’on souhaite modifier le plateau de  jeu, on peut le préciser au lancement de l’application avec l’option « -p NomDuPlateau » :

  • ex : « bomber++.exe  -p example1.plt »

Attention : le fichier doit se trouver dans le repertoire « ressources/plateau/ » du jeu.
Une fois lancé, le serveur écoute le port 3256 du réseau pour l’arrivé des futurs joueurs.
Pensez à ouvrir le port sur votre pare-feu !

2.2 Client / Le Client

[EN] Once a server game is launched on your network, use the « -ip » option to as a client join the server by giving its IP adress.

  • ex : « bomber++.exe -ip 127.0.0.1″
  • ex2 : « bomber++.exe -ip localhost »

If nothing appends after the launch, and your prompt is still displaying :

« a l’ecoute du port 3257
Envoi de – 2 : 0 , 0 »

It means that the client can’t reach the server. It could be for a few reasons. First of all, check if the server is well started. After, check if the server and the client are both on the same network and can ping each other. Finally, check if your firewall has the 3257 port open on both computers ( server and client ).

[FR] Une fois qu’un serveur est lancé sur le réseau, on peut utiliser l’option suivante pour rejoindre une partie en cours :

  • ex : « bomber++.exe -ip 127.0.0.1″
  • ex2 : « bomber++.exe -ip localhost »

Contrairement au serveur, l’attente d’information du client  est  blocante.   Il  se peut  que  le logiciel se bloque à l’étape suivante :

« a l’ecoute du port 3257
Envoi de  – 2 : 0 , 0 »

Pour rejoindre le serveur, on peut soit préciser l’adresse IP de la machine soit préciser le nom d’hôte du serveur.
Le client  va se mettre en écoute sur  le  port 3257 et se mettre à attendre la réponse du serveur.
Dans ce cas là, c’est que le serveur n’a pas reçu la demande du client. Il faut donc vérifier que les deux machines sont belles et bien sur le même réseau, et que les pares-feu aient bien été configurés.
Dans le cas ou l’on précise un nom d’hôte, si ce dernier est introuvable sur le réseau, le message suivant est affiché : « Addresse serveur non valide ».

3 – Let’s play / Jouons un partie

3.1 Introducing / Présentation

[EN] This is what you can see if you launch the game with a default setting (using the « default.plt »). You can now :

  • Move your BomberMan.
  • Throw out a bomb.

By fly over your mouse on the screen, you can select all the positions where an action is possible (or not). To display all the case on the stage, just press the « C » key on your keyboard, and a second time to make it disappear.

[FR] Ceci est l’image du jeu pour le lancement d’un partie standard (utilisant le plateau « default.plt »).
Les différentes actions réalisables sont :

  • Le déplacement du bomberman
  • Le lancement d’une bombe

En survolant l’écran de la souris, vous pourrez sélectionner les différentes cases du jeu. Pour afficher l’ensemble des cases du jeu, on peut utiliser la touche « C » de son clavier :

[EN] The selection of a position is made by a projection of the stage « seen from the top ». This projection is made function to the rotation of the camera around the stage, so that it’s easier for you to select a position.

To have a display of this projection, and make it easier to understand how does it work, just press the « P » key on your keyboard.

[FR] La séléction de la case est faite suivant une projection du plateau « vue du dessus ». Cette projection est  réalisée suivant l’angle d’orientation de la caméra. Ainsi cela rend plus facile la sélection d’une case.
Pour vous aider, la touche « P » de votre clavier permet d’afficher cette projection avec l’ensemble des cases à disposition.

Display Projection

3.2 Actions / Les Actions

[EN] Now that you can select a position, all you need is to move your BomberMan or throw out bombs over the stage. To do it, nothing is easier :

  • Left click : to move to the selected position.
  • Right click : to throw out a bomb at the selected position.
  • Middle click + moving : to rotate the camera around the stage.

[FR] Maintenant que vous pouvez sélectionner une case, vous pouvez réaliser les 2 actions vues précédemment à savoir se déplacer et lancer des bombes. Pour cela rien de plus simple :

  • Clic Gauche : Déplacement sur la case sélectionnée
  • Clic Droit : Lancement d’une bombe sur la case sélectionnée.
  • Clic Molette + déplcament : rotation de la caméra autour de la scène.

[EN] Those 3 actions are possible with conditions depending on the distance from you to the selected position :

  • Blue case : you can move or throw a bomb to this position.
  • Green case : you can only thow a bomb to this position.
  • Red case : you can’t do anything.

!! Now it’s time for you to play :D !!

[FR] Pour la réalisation des actions il y a 3 cas possible :

  • Dans le cas Bleue : vous pouvez vous déplacer OU lancer une bombe.
  • Dans le cas Vert : vous pouvez lancer une bombe.
  • Dans le cas Rouge : Il vous est impossible de réaliser une action.

!! A vous de jouer maintenant :D !!

4 – Stage creation / Création d’un plateau

4.1 An example / Un exemple

[EN] To make your own stage, go to the folder « ressources/plateau/ » of the game. There you can find a template file called « default.plt ». You can duplicate it to make yours.

[FR] Pour créer un plateau il faut se rendre dans le respertoire « ressources/plateau/ » du jeu. Vous  y  trouverez  un  fichier  « default.plt » étant un patron pour  la création d’un nouveau.

4.2 File description / Description du fichier

[EN] You can write your stage throw a 3D array as you can declare a 3D array in the C language. You have to use 2 levels of embraces.

[FR] On décrit le plateau à travers une matrice à 3 dimensions comme on pourrait le faire pour déclarer un tableau à 3 dimensions en C, à savoir entre 2 niveaux d’imbrication d’accolades.

Example / Exemple :
{
{1, 0, 2}
{2, 1, 0}
}

[EN] As far, we have describe a flat stage with the dimension : X = 3, Y = 2 et Z = 1. By nested your embraces you can create a stage with any width, height or length. You only have to declare the same number of X or Y along the file.

[FR] On vient ainsi de décrire un plateau de jeu de dimension X = 3, Y = 2 et Z = 1. En imbriquant toutes les accolades, on peut atteindre un plateau avec une taille en X, Y et Z quelconque.
Le seul impératif est de respecter pour chaque description de ligne le même nombre de valeur en X et en Y.

4.3 Array values / Les valeurs de la matrice

[EN] Each value in the array have to be between 0 and 2. Each value have a different meaning :

  • 0 : is an empty case.
  • 1 : is a non-destructible case ( stone box )
  • 2 : is a destructible case ( wood box )

Now, it’s up to you to create your own stage !!

[FR] Chaque valeur entre 0 et 2 représente un type d’objet différent.
0 : est une case vide.
1 : est une case non destructible ( cube de pierre )
2 : est une case destructible ( cube de bois )
A vous de créer votre propre plateau…


Pas de commentaire

Pas encore de commentaire.

Comments RSS Feed  

Désolé, les commentaires sont fermés pour le moment.

top