85 lines
4.5 KiB
TeX
85 lines
4.5 KiB
TeX
\chapter{Introduction}
|
|
|
|
Dans le cadre du module Projet C.M.I. du second semestre de L1,
|
|
nous avons développé en équipe un jeu vidéo nommé « Skizzle ».
|
|
Notre groupe est composé de trois personnes~: Maëlle \textsc{Beuret},
|
|
Rémi \textsc{Cérès} et Mattéo \textsc{Delabre}.
|
|
|
|
L'objectif de ce projet est la création d'un jeu vidéo fonctionnel.
|
|
Le jeu mobilise les bases d'algorithmique apprises au premier semestre ainsi
|
|
que nos connaissances et recherches personnelles. La création de ce jeu nous
|
|
a permis de renforcer nos capacités de travail en collaboration, en
|
|
communication et en gestion de projet en général.
|
|
|
|
Le développement du projet s'est déroulé sur une période d'un mois
|
|
et une semaine~: du vendredi 4 mars 2016 au lundi 11 avril 2016 inclus.
|
|
Chaque vendredi, lors de la séance de trois heures consacrée au projet,
|
|
les trois membres de l'équipe se réunissent pour résumer le travail effectué
|
|
la semaine passée et planifier celui de la semaine à venir.
|
|
|
|
\section{Choix du jeu}
|
|
|
|
Nous avons d'abord réalisé une étude comparative entre trois jeux
|
|
vidéos possibles. Pour ces jeux vidéos, le choix était libre. Notre choix
|
|
s'est porté sur un jeu avec un principe original inspiré des jeux de
|
|
plates-formes, de coopération et de réflexion. Nous l'avons appelé
|
|
« Skizzle », à mi-chemin entre l'anglais \emph{skill} et \emph{puzzle.}
|
|
|
|
Le jeu se joue à deux joueurs. Chaque joueur est affecté à une balle qu'il
|
|
contrôle par le clavier. Le but est pour ces joueurs de faire traverser leur
|
|
balle à travers des niveaux prédéfinis. Pour ce faire, les joueurs doivent
|
|
utiliser différents phénomènes physiques et constructions mises en place
|
|
à la fois dans le niveau et dans le moteur physique du jeu.
|
|
|
|
Les niveaux se présentent sous la forme de casse-têtes courts à difficulté
|
|
progressive. Les deux joueurs doivent souvent réfléchir et s'entraider
|
|
pour pouvoir parvenir à la fin. Ce n'est que lorsque les deux joueurs
|
|
franchissent la ligne d'arrivée que la partie est gagnée.
|
|
|
|
\section{Cahier des charges}
|
|
|
|
Le jeu doit fonctionner sur tous les systèmes courants (Linux, OS X, Windows).
|
|
À l'ouverture du jeu, un menu doit permettre d'orienter le joueur vers
|
|
les différents états de jeu disponibles, notamment le jeu ou l'éditeur.
|
|
Avant d'ouvrir le jeu, on doit pouvoir choisir le niveau à jouer. Avant
|
|
d'ouvrir l'éditeur, on doit pouvoir choisir le niveau à éditer ou si l'on
|
|
veut créer un nouveau niveau.
|
|
|
|
Le jeu se joue à deux joueurs qui incarnent chacun une balle contrôlable au clavier.
|
|
Une partie doit se présenter sous la forme d'un niveau où les joueurs
|
|
ont une position initiale et une position à atteindre pour gagner.
|
|
Chaque partie est limitée en temps. La durée limite est définie selon le niveau.
|
|
|
|
Les mécanismes physiques à implémenter sont la force d'attraction chargée
|
|
(coulombienne), la force de gravité, les forces de frottement et les
|
|
collisions entre objets. La force de gravité est appliquée selon un vecteur
|
|
de norme constante mais de direction et sens modifiables selon les
|
|
conditions du niveau.
|
|
|
|
La caméra des joueurs doit être centrée sur la position intermédiaire
|
|
des deux joueurs et doit s'orienter dans la direction inverse
|
|
de la direction actuelle de la gravité, en tout temps.
|
|
|
|
Chaque niveau est composé d'objets. Chaque objet possède une masse,
|
|
un coefficient de frottement statique et dynamique, un coefficient
|
|
de restitution, une charge, une position, une vitesse et un calque d'affichage
|
|
(couche). Un objet est soit une balle d'un joueur soit un bloc. Un bloc
|
|
peut être neutre ou posséder une particularité.
|
|
Les blocs particuliers sont définis complètement dans la section
|
|
\ref{sec:manuel-objets}.
|
|
|
|
Dans chaque niveau est définie une zone de jeu. Cette zone est un polygone
|
|
contrôlé par un nombre arbitraire de points. Si un objet avec une masse
|
|
non-infinie se trouve en dehors de cette zone (notamment un joueur
|
|
ou bien un bloc déplaçable), il doit être immédiatement tué. S'il s'agissait
|
|
d'un joueur, la partie se termine.
|
|
|
|
Les niveaux doivent être éditables par un éditeur. L'éditeur permet
|
|
de créer un nouveau niveau ou d'éditer un niveau existant. Il permet
|
|
de placer des objets prédéfinis sélectionables depuis la barre d'outils.
|
|
Il permet notamment de situer les positions initiales des joueurs
|
|
et du(des) bloc(s) d'arrivée. On doit pouvoir modifier la polarité des objets
|
|
depuis l'éditeur. Le niveau modifié doit pouvoir être sauvegardé. On doit
|
|
pouvoir tester le niveau en cours d'édition depuis l'éditeur sans perdre
|
|
son travail. On doit pouvoir modifier la taille de la zone de jeu.
|