Concevoir une application d’envergure
Le travail de conception : un gain de temps considérable
1. Un exemple simple
La réalisation d’une application d’envergure nécessite un important travail de conception. Lorsqu’on débute dans le développement informatique, la dépense d’énergie réclamée pour cette conception n’est pas naturelle. Cela est tout à fait normal : pourquoi perdre tant de temps alors qu’il est - a priori - bien plus efficace de se plonger immédiatement dans le code ? Les personnes ayant tenté cette approche naïve pourront témoigner qu’elle n’est absolument pas la bonne - sauf peut-être pour des problèmes extrêmement simples. Il n’est cependant pas facile de s’en convaincre sans avoir personnellement vécu cette expérience.
Dans le but de reproduire l’expérience d’une réalisation sans conception, un exemple simple est considéré : le jeu de dames. Ce jeu comporte 8 pions noirs et 8 pions blancs placés sur un damier de 8 par 8 cases. Seules les cases noires peuvent accueillir des pions.
L’état initial est le suivant :
Il y a deux types de déplacement : déplacement vers une case adjacente libre, et « sauter » un pion de l’autre couleur. La création de pions « dames » n’est pas considérée dans cet exemple.
Jouant le jeu de l’implantation immédiate sans conception, le code suivant a été produit :
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
* Unique classe qui contient l'ensemble du jeu de Dames (affichage,
* déplacements, interaction, etc.)
*/
public class Checkers extends JFrame implements MouseListener {
// Damier. Trois valeurs possibles: 1 joueur blanc, 0 joueur noir, -1 case vide
private int board[][];
// Joueur actuel (1 ou 0)
private int currentPlayer;
...
Démarrage
Cette section présente les éléments nécessaires pour bien démarrer la conception puis la réalisation du jeu vidéo.
1. Choix du jeu
Le choix du jeu vidéo développé aura naturellement un impact important sur l’acquisition des compétences présentées dans cet ouvrage. Il peut être pertinent de suivre le livre tout en développant un premier jeu assez simple, puis d’en faire une deuxième lecture pour un deuxième jeu plus ambitieux. Les éléments qui suivent aideront le lecteur à mieux anticiper les éventuelles difficultés.
Graphismes
Lorsqu’on pense aux jeux vidéo, le premier élément qui vient à l’esprit est celui des graphismes. Le choix le plus simple et le plus rapide est de tout faire en texte, mais il limite beaucoup les possibilités. Puis, le choix de graphismes en 2D selon une grille régulière, comme dans le jeu Pacman présenté en exemple, n’est pas beaucoup plus difficile qu’avec des graphismes en texte. En outre, il est facile de trouver des sprites 2D sur Internet, permettant de ne pas avoir à produire les textures soi-même. Pour le cas des graphismes 3D, les choses sont plus compliquées. Sans moteur graphique avancé, il est nécessaire de passer par des bibliothèques bas niveau, comme OpenGL ou DirectX. Cette approche requiert un haut niveau de compétences, qui risque de noyer le lecteur non formé dans ce domaine. Avec un moteur graphique avancé, il est très probable que des choix de conception soient imposés. Cet état de fait ne permet pas de mener ses propres expériences en termes de conception, le principal objectif de ce livre étant de savoir concevoir des solutions complexes. En d’autres termes, un des objectifs du livre est d’être capable de créer un moteur graphique avancé, et non simplement d’être capable d’en utiliser un. En conclusion, faire un jeu en 3D en suivant cet ouvrage n’est intéressant que lorsqu’on a déjà un bon niveau de développeur, et avec une approche sans moteur graphique avancé, en travaillant directement avec OpenGL ou DirectX.
Audio
Les aspects audio ne sont pas indispensables...