The Big Bad World of Exercise

Transcription

The Big Bad World of Exercise
Master 2 Interaction Homme-Machine
Mémoire de fin d’études
The Big Bad World of Exercise
2009-2010
Louis NOVAL
Mémoire | BBWoE 2010
2
RESUME
Le présent document décrit l’ensemble du travail réalisé dans le cadre de mon stage qui a eu
lieu du 26 mars 2010 au 27 aout 2010 dans le laboratoire EQUIS à Kingston, Canada. Ce laboratoire,
spécialisé dans la recherche autour des jeux vidéo collaboratifs, travaille sur les exergames depuis une
dizaine d’années. Le but du stage a été de produire une plateforme d’aide au prototypage d’exergame.
Vous trouverez dans ce document : une description de la démarche mise en œuvre, les moyens utilisés
et les résultats obtenus.
Mots-clefs : Exergame, jeu vidéo, jeux vidéo de plateforme, réseau, Farseer physics, moteur physique,
XNA.
ABSTRACT
This document describes all the work done as part of my internship, which took place from
March 26th, 2010 to August 27th, 2010 in EQUIS laboratory in Kingston, Canada. This laboratory
specializes in research around collaborative video games working on Exergame past ten years. The aim
of the course was to produce a platform for prototyping assistance exergame. You will find in this
document: A description of the design process, the means used and the results leading to an exergame
prototyping platform.
Tags: Exergame, video game, platformer, network, physics engine, Farseer physics, XNA, HCI.
Mémoire | BBWoE 2010
3
Mémoire | BBWoE 2010
4
TABLE DES MATIERES
Résumé ......................................................................................................................................................... 3
Abstract ......................................................................................................................................................... 3
Table des figures ........................................................................................................................................... 9
Remerciements ........................................................................................................................................... 11
Introduction ................................................................................................................................................ 13
Guide de lecture.......................................................................................................................................... 15
Contexte ...................................................................................................................................................... 17
1.
Présentation du laboratoire........................................................................................................... 17
2.
Les projets : l’exergame dans le laboratoire .................................................................................. 17
3.
Les utilisateurs ............................................................................................................................... 17
4.
Rappel du sujet .............................................................................................................................. 18
5.
Objectif........................................................................................................................................... 18
Gestion de projet ........................................................................................................................................ 19
1.
Méthode ........................................................................................................................................ 19
2.
Gestion des risques ........................................................................................................................ 21
3.
Livrables ......................................................................................................................................... 21
4.
Les parties prenantes du projet ..................................................................................................... 22
Analyse ........................................................................................................................................................ 23
1.
2.
Analyse de l’existant : Life Is A Village ........................................................................................... 23
a)
Gameplay .............................................................................................................................. 23
b)
La plateforme de développement......................................................................................... 23
Etat de l’art .................................................................................................................................... 24
a)
L’exergame multi-joueurs ..................................................................................................... 24
b)
Les jeux de plateformes ........................................................................................................ 27
Mémoire | BBWoE 2010
5
3.
4.
Technologie .................................................................................................................................... 30
a)
Hardware ............................................................................................................................... 30
b)
Software ................................................................................................................................ 31
Bilan de l’analyse ........................................................................................................................... 32
Conception .................................................................................................................................................. 33
1.
Introduction ................................................................................................................................... 33
2.
Le monde virtuel ............................................................................................................................ 33
3.
L’avatar dans ce monde virtuel...................................................................................................... 35
a)
Durant la phase d’apprentissage .......................................................................................... 35
b)
Les premières versions du monocycle et du tank ................................................................. 36
c)
Interaction de l’avatar sur les entités de ce monde virtuel .................................................. 37
évolution du système de commande............................................................................................. 38
4.
5.
d)
Un troisième avatar et une amélioration des précédents .................................................... 40
e)
Nouveau design graphique ................................................................................................... 41
Plusieurs mondes virtuels ? ........................................................................................................... 41
a)
Première version : découverte de JANUS ............................................................................. 41
b)
Deuxième version : la première version réellement multi-clients........................................ 42
c)
Troisième version : optimisation........................................................................................... 43
d)
Quatrième version : ajout de fonctionnalités et du système de succès ............................... 44
De l’analyse à la conception : évolution des objectifs dans le projet ............................................ 45
Architecture logicielle ................................................................................................................................. 47
1.
Le client .......................................................................................................................................... 47
MotherClass et BBWoE .................................................................................................................. 48
6.
a)
CurrentGame ......................................................................................................................... 49
b)
GameEntity ............................................................................................................................ 50
Serveur ........................................................................................................................................... 50
Mémoire | BBWoE 2010
6
a)
7.
Le serveur .............................................................................................................................. 50
Réseau............................................................................................................................................ 51
Evaluation ................................................................................................................................................... 53
Bilan et Perspectives ................................................................................................................................... 55
1.
Bilan ............................................................................................................................................... 55
2.
Perspectives ................................................................................................................................... 55
Bibliographie ............................................................................................................................................... 57
Glossaire...................................................................................................................................................... 60
Annexes ....................................................................................................................................................... 62
1.
2.
3.
4.
Les textures de BBWoE .................................................................................................................. 62
a)
Avatars .................................................................................................................................. 62
b)
Surfaces ................................................................................................................................. 63
c)
Les objets du monde ............................................................................................................. 64
d)
La maison .............................................................................................................................. 66
Rapport de Brainstorming ............................................................................................................. 67
a)
Première réunion .................................................................................................................. 67
b)
Deuxième réunion ................................................................................................................. 68
c)
Troisième réunion ................................................................................................................. 70
Test utilisateurs.............................................................................................................................. 72
a)
First user test......................................................................................................................... 72
b)
Second user test .................................................................................................................... 73
Architecture client ......................................................................................................................... 75
a)
Overview ............................................................................................................................... 75
b)
Focus on the object hierarchy ............................................................................................... 78
c)
Focus on the loading phase ................................................................................................... 79
d)
Focus on GameEntities properties ........................................................................................ 80
Mémoire | BBWoE 2010
7
e)
5.
How the avatars works? ........................................................................................................ 81
Documentation développeur supplémentaire .............................................................................. 83
a)
How the entities works? ....................................................................................................... 83
b)
Moving BBWOE from computer to computer ...................................................................... 84
c)
Tiny things that can create troubles ..................................................................................... 85
6.
Le wiki ............................................................................................................................................ 86
7.
Présentation du projet ................................................................................................................... 86
8.
Etat de l’art .................................................................................................................................... 86
9.
a)
Life is a village........................................................................................................................ 86
b)
Persistent or Asynchronous gameplay (in multiplayer game) .............................................. 88
Details des Sprints.......................................................................................................................... 91
a)
Avant le premier sprint ......................................................................................................... 91
b)
1er Sprint : du jeudi 1er Avril au jeudi 15 Mai ...................................................................... 91
c)
2eme Sprint : du jeudi 15 Avril au jeudi 29 Mai .................................................................... 92
d)
3eme Sprint : du jeudi 29 Avril au jeudi 13 Mai .................................................................... 92
e)
4eme Sprint : du lundi 17 Mai au jeudi 27 Mai ..................................................................... 92
f)
5eme Sprint : du jeudi 27 Mai au jeudi 10 Juin ..................................................................... 92
g)
6eme Sprint : du jeudi 10 Juin au jeudi 24 Juin ..................................................................... 92
h)
7eme Sprint : du jeudi 24 Juin au jeudi 15 Juillet.................................................................. 93
i)
8eme Sprint : du jeudi 15 Juillet au jeudi 29 Juillet............................................................... 93
j)
9eme Sprint : du jeudi 29 Juillet au jeudi 19 Aout ................................................................ 93
Mémoire | BBWoE 2010
8
TABLE DES FIGURES
Figure 1 : le stage d’un point de vue sprint ................................................................................................ 19
Figure 2 : processus de conception en spirale ............................................................................................ 20
Figure 3 : les parties prenantes ................................................................................................................... 22
Figure 4 : LiaV .............................................................................................................................................. 23
Figure 5 : Nintendo Wii Fit .......................................................................................................................... 24
Figure 6 : Microsoft Kinect .......................................................................................................................... 24
Figure 7 : Sony Playstation Move ................................................................................................................ 24
Figure 8 : Nautilus ....................................................................................................................................... 26
Figure 9 : Breakout for two ......................................................................................................................... 26
Figure 10 : Space Panic (1980) .................................................................................................................... 28
Figure 11 : Super Mario Bros (1985) ........................................................................................................... 28
Figure 12 : Sonic qui court .......................................................................................................................... 28
Figure 13 : Sonic en boule ........................................................................................................................... 28
Figure 14 : X-moto....................................................................................................................................... 29
Figure 15 : Super Paper Mario .................................................................................................................... 29
Figure 16 : manette de Xbox 360 ................................................................................................................ 30
Figure 17 : PCGamerBike ............................................................................................................................ 30
Figure 18 ..................................................................................................................................................... 31
Figure 19 ..................................................................................................................................................... 31
Figure 20 ..................................................................................................................................................... 31
Figure 21 : "FloatingPlatform" .................................................................................................................... 34
Figure 22 : BBWoE à ses débuts .................................................................................................................. 34
Figure 23 : "Ramp" ...................................................................................................................................... 34
Figure 24 : la chenille et la boule ................................................................................................................ 36
Mémoire | BBWoE 2010
9
Figure 25 : le monocycle ............................................................................................................................. 36
Figure 26 : le tank........................................................................................................................................ 36
Figure 27 : l'ascenseur en fonctionnement ................................................................................................ 38
Figure 28 : commande à revoir ................................................................................................................... 39
Figure 29 : New Beetle ................................................................................................................................ 40
Figure 30 : New Beetle 2.0 .......................................................................................................................... 40
Figure 31 : monocycle final ......................................................................................................................... 41
Figure 32 : New Beetle finale ...................................................................................................................... 41
Figure 33 : configuration réseau 1ere version .............................................................................................. 41
Figure 34 : configuration réseau 2e version ............................................................................................... 42
Figure 35 : dialogue client serveur, première version ................................................................................ 43
Figure 36 : dialogue client serveur, version finale ...................................................................................... 43
Figure 37 : vue état/événement du dialogue client/serveur ...................................................................... 44
Figure 38 : apercu global du client .............................................................................................................. 48
Figure 39 : l'architecture des entités .......................................................................................................... 49
Figure 40 : aperçu du serveur ..................................................................................................................... 50
Figure 41 : Janus dans BBWoE .................................................................................................................... 51
Mémoire | BBWoE 2010
10
REMERCIEMENTS
Je tiens à remercier Nicholas Graham pour m’avoir offert la possibilité d’effectuer ce stage de
cinq mois au Canada et d’avoir été d’une aide précieuse tout au long du projet. Je remercie également
Eril Berkok avec qui j’ai travaillé sur ce projet. Tad Stach également, qui a aidé tout au long du projet, en
partageant son expérience des exergames. Cheryl Savery qui a conçu JANUS pendant ce stage et a aidé à
son intégration. Chris Wolfe, pour sa connaissance, quasi-biblique, de la technologie « .Net ». Enfin tous
ceux de l’EQUIS laboratory qui ont collaboré de près ou de loin au travers, notamment, de la conception
participative.
De l’autre cote de l’océan cette fois, je tiens d’abord à remercier mon tuteur pédagogique, Philippe
Palanque, pour son humour et sa disponibilité. Je remercie également tous les gens qui ont fait ce que le
master IHM est aujourd’hui, mais aussi l’ensemble du master sans qui ce stage n’aurait pas été possible.
Enfin je remercie Laëtitia Ferrari pour avoir passé autant de temps à la relecture, parfois fastidieuse, de
ce rapport.
Mémoire | BBWoE 2010
11
Mémoire | BBWoE 2010
12
INTRODUCTION
Les changements de nos modes de vie impliquent une sédentarisation de plus en plus
importante de la population. Cette baisse du temps passé à l’extérieur du foyer familial est en partie due
à la présence de plus en plus forte des écrans dans notre vie de tous les jours, aux travers de médias
comme les jeux vidéo, eux aussi en forte progression. Tous ces changements entrainent des
conséquences plus ou moins importantes sur notre société, comme l’augmentation de l’indice moyen
masse corporelle de la population mais aussi l’augmentation de la population déclarée comme obèse.
L’exergame, l’association de jeux vidéo et d’effort physique, permettrait sous certaines conditions qui
seront décrites dans la partie analyse de ce document, de promouvoir l’activité physique et ainsi
améliorer l’état de santé des plus sédentaires d’entre-nous.
L’EQUIS laboratory travaille sur l’exergame depuis de nombreuses années. Les tests actuels
étant tous effectués dans le laboratoire, il est impossible de statuer sur la motivation d’un joueur à
pratiquer un exergame après plusieurs semaines de jeu. L’arrivée sur le marché de solution de mini vélo
USB comme le PCGamerBike allié à un outil qui permettrait au laboratoire de développer à terme un
exergame 2D multi-joueurs et ainsi de prendre en compte de nouveaux facteurs comme les aspects
sociaux d’un exergame.
Mémoire | BBWoE 2010
13
Mémoire | BBWoE 2010
14
GUIDE DE LECTURE
Contexte ………………………………………………………………………………………………………………………………….………..p.17
Cette partie présente l’environnement qui a entouré ce stage, le laboratoire, les projets dans lesquels il
est impliqué, les utilisateurs de BBWoE ainsi que les objectifs initiaux du stage.
Gestion de projet ………………………………………………………………………………..…………………………………………….p.19
Vous trouverez dans cette partie des détails relatifs à la méthode employée durant ce projet, les risques
inhérents au projet et enfin les livrables attendus.
Analyse de l’existant ……………………….……………………………………………………………………………..……….………..p.23
Vous trouverez une analyse de « Life is a Village » dans cette partie. Un projet d’exergame de l’EQUIS
laboratory en 2002, qui est très proche de ce projet de stage.
Etat de l’art ………………………………………………………………………………………………………………………….….………..p.24
Cet état de l’art présente dans un premier temps des jeux de plateforme au travers d’un historique
pour, dans un second, présenter les spécificités de la conception d’un exergame multi-joueurs.
Conception …………………………………………………………………………………………..…………………………………….……..p.33
Cette partie parcourt le projet sous quatre angles différents : conception de l’avatar, conception du
monde dans lequel il évolue, mise en réseau des mondes virtuels et enfin évolution des objectifs durant
le projet.
Architecture logicielle ……………………………………………………………………..…………………………………….………….p.48
Probablement la partie la plus technique du projet, elle décrit le prototype final aux moyens de
diagramme UML. Elle apporte aussi des informations sur le fonctionnement du JANUS.
Evaluation …………………………………………………………………………………………………………………………….…………..p.54
Cette partie revient sur les retours des utilisateurs durant le projet et explique comment aurait du être
testé BBWoE si nous avions eu les ressources pour le faire.
Bilan et perspectives …………………………………………………………………………………………………………………………p.56
Enfin, vous trouverez un bilan d’avancement du projet, mais aussi des pistes possibles d’évolution de
BBWoE. Cette partie est aussi pour moi l’occasion de donner mon point de vue sur ce que ce projet m’a
apporté.
Mémoire | BBWoE 2010
15
Mémoire | BBWoE 2010
16
CONTEXTE
1. PRESENTATION DU LABORATOIRE
L’EQUIS laboratory (“Engineering Interactive Systems at Queen’s University”) est un laboratoire
qui est spécialisé dans la recherche autour des jeux vidéo collaboratifs. Ces travaux se concentrent
autour de quatre axes : l’exergaming, les architectures collaboratives (groupware), les jeux sur surface
multitouch et l’audio ambiant dans les jeux d’extérieurs. De plus le laboratoire travaille en partenariat
avec des entreprises prestigieuses comme Alcatel-Lucent ou encore AutoDesk.
2. LES PROJETS : L’EXERGAME DANS LE LABORATOIRE
L’axe exergame existe dans l’EQUIS laboratory depuis une dizaine d’années déjà. Les gros
projets effectués dans cet axe ont tous un point commun : Life Is A Village (LIAV). Ce projet a permis de
fournir au laboratoire un exergame 3D avec une structure modulaire qui permet de rapidement
personnaliser l’avatar ou le monde qui l’entoure, afin de recréer son propre mini-jeu.
Cependant manipuler des objets 3D et tout un environnement, demande plus de temps de
développement qu’un simple univers 2D. Son utilisation est donc délicate surtout quand le laboratoire
veut prototyper un mini-jeu afin de conduire des tests utilisateurs en moins de deux mois. L’EQUIS
laboratory utilise également la technologie XNA pour prototyper des mini-jeux à des fins de test. Un
remplacement de LIAV en 2D en utilisant la technologie XNA permettrait de réduire, voir d’annuler le
temps d’apprentissage d’une nouvelle technologie.
Le prototype que je développerais permettrait également de tester un exergame sur une plus grande
période. En effet le laboratoire n’a pas les ressources pour développer un jeu vidéo 3D avec
suffisamment de contenu pour motiver des gens à y jouer pendant plusieurs semaines. Ce but est à plus
long terme et ne sera pas atteint pendant ce stage.
3. LES UTILISATEURS
Dans ce projet, il y a deux types d’utilisateurs bien distincts :


le premier groupe d’utilisateur est composé des chercheurs de l’EQUIS laboratory qui se
serviront de BBWoE pour développer des mini-jeux à tester. Leur profil peut varier
légèrement, mais ils ont tous en commun d’avoir des antécédents de développement
sous XNA et donc des compétences en développement C#. Il se regroupe sous le terme
« développeur » utilisé dans la suite de ce document ;
le deuxième groupe d’utilisateurs, qu’on appellera « utilisateurs finaux », se compose de
joueurs potentiels du prototype de jeu développé durant le stage. Le public visé est très
large puisque il concerne toute personne qui pourrait être intéressée pour jouer à un
exergame. Les collègues du laboratoire forment un groupe d’utilisateurs finaux
potentiels assez divers. Il faudra cependant bien choisir les personnes pour éviter un
Mémoire | BBWoE 2010
17
échantillon trop jeune ou constitué d’une population plus accro aux jeux vidéo que la
moyenne.
4. RAPPEL DU SUJET
« Développer un prototype itératif d’exergame utilisant un PcGamerBike (via une API fournie).
Afin d’améliorer les possibilités et le gameplay du jeu, le stagiaire devra utiliser Farseer Physics pour
XNA afin d’intégrer une gestion réaliste de la physique. Le type de jeu vise à se rapprocher d’un jeu de
plateforme évolué, auquel on ajoutera des composants nécessaires à tout exergame (voir la publication
de Tadeusz B. Stach). »
5. OBJECTIF
Le but initial du stage est donc de produire un prototype d’exergame. Ce prototype devra être
développé incrémentalement, l’analyse permettra d’orienter les choix les plus importants de
conception. Cependant la méthode utilisée pendant ce projet permet une flexibilité qui amènera à
probablement réorienter ou affiner cet objectif.
Remarque : consulter le chapitre 5 de la phase de conception pour plus de détails sur les objectifs du
projet.
Mémoire | BBWoE 2010
18
GESTION DE PROJET
1. METHODE
La méthode AGILE est une méthode itérative et incrémentale de développement. Seuls des
petits incréments du prototype sont modifiés à chaque itération : l’important est de fournir un code
fonctionnel à chaque fin d’itération, appelé sprint. A l’EQUIS laboratory un sprint dure 2 semaines. Cette
méthode d’itération très rapide présente le gros avantage de permettre des tests très réguliers sur des
parties spécifiques du prototype. Les résultats étant rapides à analyser et à intégrer dans le processus de
conception, ce dernier peut changer d’orientation à l’issue d’un seul test. Cependant des objectifs à long
terme (plusieurs sprints) sont également établis quand cela est nécessaire et à moins qu’un résultat ne
les remette en cause, maintenus jusqu'à validation du prototype par l’équipe.
sprint
1
sprint
2
sprint
3
sprint
4
sprint
5
sprint
6
sprint
7
sprint
8
sprint
9
Figure 1 : le stage d’un point de vue sprint
L’utilisation de cette méthode de développement n’a pas été choisie par hasard, elle est le fruit de
l’expérience de T.C. Nicholas Graham. Il a choisi cette méthode car il a observé son efficacité pour
développer des prototypes de jeux vidéo : le chercheur peut ainsi tester petit à petit des incréments de
son prototype afin de reconsidérer, le cas échéant, une partie du prototype qui ne serait pas réalisable.
Comme expliqué précédemment, il est aisé d’intégrer dans le processus de conception, des tests
régulièrement. L’ajout de tests utilisateurs et de réunions avec les utilisateurs ne pose donc pas de
problème.
Remarque : pour la figure 1, il est intéressant de noter que chaque illustration a été choisie afin de
représenter la dominante du sprint en court. Cependant une image ne permettant pas comprendre
réellement de quoi le sprint a été fait, vous trouverez dans l’annexe 9 plus de détails sur chacun des
sprints.
Mémoire | BBWoE 2010
19
On peut d’ailleurs représenter cet enchainement de sprint (Figure 1) sous cette forme (Figure 2).
Figure 2 : processus de conception en spirale
On retrouve dans ce schéma la notion de sprint couplée au processus qui est enseigné dans notre
master IHM.
Rappel des spécificités de notre méthode AGILE :




sprint de deux semaines ;
réunion de suivi toutes les semaines (les jeudis) ;
les orientations décidées durant la réunion sont postées sur un Wiki ;
mise à profit des utilisateurs : lors de phase de générations d’idées (Brainstorming),
durant des tests utilisateurs, mais aussi pendant les réunions de suivi de projet.
Mémoire | BBWoE 2010
20
2. GESTION DES RISQUES
Probabilité
Impact
Difficultés d’accès aux
utilisateurs
Faible
Critique
Blocage du
développement
Moyenne
Important
Blocage lors de
l’intégration
Forte
Critique
Rejet du prototype final
Moyenne
Critique
Prévention
Définir les utilisateurs
potentiels du prototype au plus
vite afin de planifier des tests
au plus tôt
Avancer la phase
d’apprentissage au tout début
du projet pour maximiser
l’expérience de technologies
utilisées
Utiliser un développement
itératif qui permet de
minimiser ce genre de
problème
Inclure des utilisateurs
potentiels dès les premières
réunions de projet. Tester le
prototype régulièrement avec
eux
3. LIVRABLES
A l’issue du stage, il faudra en anglais :




rendre l’intégralité du code source du prototype ;
avoir posté, sur le wiki du laboratoire, des indications afin d’aider au suivi du prototype; (Annexe
6)
mettre à jour le site du laboratoire avec un texte explicatif du projet ; (Annexe 7)
ajouter à ce texte une vidéo du projet d’environ trois minutes. (Annexe 7)
Mémoire | BBWoE 2010
21
4. LES PARTIES PRENANTES DU PROJET
Figure 3 : les parties prenantes
Cette figure (3) présente tous les gens qui ont contribué directement au projet. T.C. Nicholas Graham,
encadrant du stage porte également la casquette de client et d’expert du projet. Il est accompagné par
Tadeusz B. Stach, qui fait une thèse sur l’exergaming, expert pour le projet, mais aussi utilisateur
« développeur ». Cette équipe d’experts sera présente à toutes les réunions de projet, tout comme
l’équipe de projet constituée par Eril Berkok, étudiant en 3eme année à Queen’s University ainsi que
moi-même, étudiant en Interaction Homme Machine. Enfin le dernier acteur du projet, plus à l’écart car
il n’est pas présent dans le laboratoire, est Chris Oliver qui travaillera en tant que graphiste pour le
projet. Il sera en charge de dessiner les textures que l’on retrouvera dans la version finale de BBWoE. Je
travaillerai les deux premiers mois sur le projet, en me concentrant sur le « Front End », Eril arrivera
dans un second temps et améliorera le « Back End ».
Mémoire | BBWoE 2010
22
ANALYSE
1. ANALYSE DE L’EXISTANT : LIFE IS A VILLAGE
Life Is A Village (LiaV) est un exergame développé par l’EQUIS laboratory en 2002. Il se base sur
le moteur open-source OGRE. Même s’il a été développé pour être utilisé en tant que tel, il a servi de
base pour quasiment tous les projets d’exergame qui ont suivi.
A) GAMEPLAY
Au démarrage du jeu, le joueur se retrouve dans la peau d’un avatar robotisé. Le joueur peut utiliser ses
jambes pour faire avancer l’avatar. Afin de compléter le vélo, le joueur tient un pad dans la main qui lui
permet d’effectuer différentes actions (voir annexes 8). En se déplaçant, l’avatar explore un vaste
paysage, ainsi il trouve un emplacement approprié pour fonder un nouveau village. Une fois cette
première étape achevée, le but de l’exploration s’oriente vers la recherche de ressources (comme du
bois près des forêts ou de la pierre près des rochers). Apres avoir développé le village, le joueur a accès
à des bâtiments plus avancés et à des décorations pour embellir le village et ainsi l’encourager à
continuer. Le jeu supporte un système de sauvegarde et de reprise pour éviter de perdre la progression.
B) LA PLATEFORME DE DEVELOPPEMENT
LiaV a tellement été réutilisé depuis, qu’il a
été impossible de retrouver le code source
de la première version. Cependant des
projets encore récents du laboratoire
utilisent des versions améliorées de LiaV.
C’est pourquoi les réunions de projet et les
discussions avec les collègues ont été
l’occasion d’en apprendre plus sur ce que
pensent les utilisateurs de ce jeu.
Même si l’utilisation d’un vélo pour faire
marcher un avatar pourrait paraitre bizarre
au premier abord, le parallèle marcherait
plutôt bien. De plus comme on le voit sur la
figure 4, la 3D procure un effet d’immersion
non négligeable sur l’expérience de jeu.
Figure 4 : LiaV
Afin de récompenser le joueur à la fois pour des actions assez simples, mais également pour des actions
sur le plus long terme, le gameplay comprend un mélange d’objectifs à court et long terme. Le fait
d’aller chercher des ressources pour les stocker dans son village est un objectif à court terme puis avoir
assez de ressources pour construire un nouveau bâtiment est un objectif à long terme.
Mémoire | BBWoE 2010
23
En ce qui concerne les différents périphériques d’entrés, le jeu en supporte un grand nombre. Le joueur
peut utiliser une manette de jeu, un clavier, une souris, un joystick et un Tunturi bike. Cependant le
temps d’apprentissage pour LiaV ne doit pas être négligeable à en juger par le nombre d’actions
possibles ou l’existence de deux modes : le mode de jeu normal et le mode de construction.
Même si l’accès au jeu n’a pas été possible, j’ai pu discuter avec une partie des concepteurs des projets
qui se basent sur LiaV. Ils ont tous salué l’architecture de ce projet, modulaire, qui permet une
compréhension du code rapide. D’ailleurs c’est probablement pour cette raison que l’on retrouve LiaV à
la base d’autant de projet, y compris non exergame.
Les projets exergames qui en découlent : Frozen Treasure Hunter, Hearth Burn, les améliorations de
LIAV …
Remarque : on retrouve dans la partie suivante de nombreux résultats qui sont issus des travaux de
recherches portant sur LiaV.
2. ETAT DE L’ART
Cette partie a été écrite grâce aux travaux de
recherche de Tadeusz B. Stach. Cet étudiant, qui fait une thèse
sur les exergames, a suivi et aidé à l’accomplissement de ce
projet. Tous les travaux de conceptions de ce projet sont basés
de près ou de loin sur ses recherches disponibles sous la
Référence 32.
A) L’EXERGAME MULTI-JOUEURS
L’obésité des 25 – 34 ans est passée de 1979 à 2004 de 8,5% à
20,5% [Ref 1]. Des études ont montré que cette augmentation
est partiellement due à la sédentarisation de nos modes de vie
Figure 5 : Nintendo Wii Fit
[Ref 2]. D’autres études ont également montré un lien entre l’obésité des
adolescents et nos medias actuels comme les jeux vidéo [Ref 3]. Les jeux
vidéo, qui sont de plus en plus présents dans nos sociétés, sont une
forme de divertissement interactif qui propose de plus en plus de
périphériques d’entrées conçues pour se dépenser physiquement.
Nintendo Wii fit (Figure 5), le Playstation Move (Figure 7) ou encore
Microsoft Kinect (Figure 6) sont autant de solutions matérielles
proposées par les constructeurs aux exergames.
Les exergames multi-joueurs sont
des jeux qui permettent de jouer à
deux joueurs ou plus, tout en
pratiquant une activité physique.
Figure 7 : Sony Playstation Move
Figure 6 : Microsoft Kinect
Mémoire | BBWoE 2010
24
Des recherches en psychologie des sports ont montré qu’être en groupe augmente la motivation et
améliore les résultats [Ref 4, 5, 6]. Yim et Graham ont montré [Ref 7], à l’aide de LiaV, que les jeux multijoueurs pouvaient intégrer les bénéfices de l’exergame en groupe. Cet état de l’art s’attachera à
montrer des solutions pour concevoir un exergame multi-joueurs.
DES FACTEURS QUI INFLUENCES LA MOTIVATION
Musique :
Il a été montré [Ref 8] que la musique apporte plus à un exercice physique que la présence d’un
instructeur ou à son identification avec un tiers (présence de son propre avatar à l’écran par exemple).
Des expériences [Ref 9] ont montré trois principaux axes. Premièrement, de l’exercice combiné à de la
musique améliore l’intensité de celui-ci [Ref 10, 11, 12]. Deuxièmement, la perception de la douleur, lors
d’un exercice, baisse avec la présence de musique [Ref 12, 13, 14]. Enfin, la musique influence le joueur
afin de le pousser à de plus hauts niveaux d’intensité dans l’exercice *Ref 11, 13, 14].
Coach :
Des travaux ont montré l’importance d’un coach lors d’exercice physique, notamment comme facteur
bénéfique pour la motivation et l’appréciation de celui-ci [Ref 15]. Westcott [Ref 16] définit certaines
caractéristiques importantes : la connaissance de remise en forme, l'enseignement de compétences,
l'enthousiasme et une attention personnelle. Brehm [Ref 17] suggère que les qualifications de
l'instructeur, le professionnalisme, l'expérience et une attention personnelle sont des facteurs clés dans
l'adhésion de l’effort physique.
Le jeu à plusieurs :
Jouer en groupe peut avoir une influence positive sur la motivation et l’adhérence à l’effort physique
[Ref 4, 18, 19]. L’encouragement de la famille ou même des gens avec qui on joue, sont autant de
facteurs motivants pour le joueur [Ref 18]. Beaucoup d’exergames essayent de tirer parti des bénéfices
apportés par le jeu en groupe en supportant le jeu à deux ou plus.
Interaction de joueur à joueur :
Les interactions entre personnes en sport peuvent se passer de plusieurs façons. Dans les jeux d’équipe,
les co-équipiers coopèrent pour vaincre d’autres joueurs. La compétition implique un concours entre les
participants et il a été montré qu’elle présente un facteur de motivation supplémentaire [Ref 20]. Cette
coopération n’a pas besoin d’impliquer énormément de joueurs pour jouer un rôle bénéfique car il a été
montré que deux personnes peuvent suffirent [Ref 4 et 21].
COMMENT CONCEVOIR UN EXERGAME MULTI-JOUEURS ?
Mémoire | BBWoE 2010
25
Un exergame multi-joueurs a besoin de faciliter le regroupement des joueurs afin de bénéficier de la
motivation positive apportée par la cohésion. Dans leurs exigences de conception, Yim et Graham [Ref
4] utilisent trois approches de soutien au regroupement :



cacher les niveaux de condition physique des joueurs ;
réduire les obstacles au regroupement ;
aider activement la formation de groupe.
Les exergames distribués permettent de cacher l’apparence d’un joueur derrière son avatar virtuel et
évitent donc les problèmes d’estime de soi [Ref 22 et 23]. Permettre aux amis de jouer ensemble peut
avoir un impact positif sur la cohésion de groupe. Toutefois, de nombreux jeux vidéo ont plusieurs
serveurs ce qui divisent donc les joueurs. Cette pratique doit être évitée dans un exergame, quand cela
est possible [Ref 4]. Les mécanismes d’équilibrages automatiques peuvent permettre à des joueurs qui
seraient normalement séparés par leur écart de niveaux, de jouer ensemble. Une approche possible en
faveur de la formation de groupe serait d’inclure des taches collaboratives dans le jeu. Par exemple, on
retrouve des exergames dont la victoire dépend de la coopération entre les joueurs [Ref 24, 25, 26, 27].
La communication et la coordination nécessaires entre les acteurs peuvent avoir une influence positive
sur la cohésion du groupe, il faut donc proposer aux joueurs un système adéquat.
SYNCHRONE VS ASYNCHRONE
Figure 9 : Nautilus
Figure 8 : Breakout for two
On peut parler de jeux multi-joueurs synchrones lorsque les joueurs évoluent dans un univers en
simultané. Cette configuration est la plus utilisée dans les jeux multi-joueurs actuels, mais aussi dans les
exergames. On la retrouve dans de nombreux projets, comme Breakout for Two (Figure 8) [Ref 28] ou
Nautilus (Figure 9) [Ref 29]. Ce dernier est un exergame où les joueurs doivent coopérer devant un
même écran (co-localisé) afin de jouer. Les exergames existants ont démontré qu’ils peuvent s’adapter
aussi bien à des gameplay compétitifs que coopératifs, en réseau ou co-localisés.
Mémoire | BBWoE 2010
26
Au contraire, les jeux asynchrones ne se déroulent pas dans un même univers, ou alors pas en même
temps. Par exemple Triple-Beat [Ref 30] propose un affrontement entre différents coureurs, mais la
course n’a pas besoin de se dérouler en même temps. Le jeu affiche en temps réel si la performance
courante du joueur est en dessous ou au dessus de ces concurrents. Triple-Beat est actuellement le seul
exergame asynchrone, les jeux coopératifs ou co-localisés asynchrones n’ont pas été réellement
expérimentés. Nous ne connaissons donc pas bien les conséquences que pourraient avoir un exergame
asynchrone collaboratif sur la motivation de ces participants.
QUALITE ET EFFICACITE D’UN EXERCICE PHYSIQUE
Le but d’un exergame n’est pas seulement d’amuser, il faut aussi que le jeu implique le joueur dans une
activité physique importante, suffisamment importante pour entretenir voir améliorer sa santé. D’après
l’American College of Sports Medicine (ACSM), qui est le plus gros complexe médical pour le sport au
monde, il faut que l’exercice remplisse un certain nombre de critères [Ref 31] :




fréquence : trois à cinq jours par semaine d’activité sportive ;
intensité : 65% à 90% du rythme cardiaque maximum ou 50% à 80% de la consommation
maximum d’oxygène ;
durée : 20 à 60 minutes d’activité continue ou non (la durée dépend de l’intensité de celle-ci) ;
type : toute activité qui implique un maximum de muscles du corps en les sollicitant
continuellement.
Beaucoup d’exergame commercialisés aujourd’hui sont plus conçus pour proposer une nouvelle forme
d’interaction plutôt qu’un réel exercice physique (ex : Wii, EyeToy …). Les exergames utilisant des
périphériques comparables aux vrais appareils d’entrainement (ex : GameBike) ont globalement de
meilleurs résultats pour la santé. On remarque également un manque de documentation concernant la
conception d’exergame, il n’existe pas de guidelines pour améliorer les futurs exergames par exemple.
BILAN
Malgré les mauvaises performances sur le plan de la santé qu’offrent les exergames actuels, on
remarque que tous les constructeurs de console s’y intéressent, le dernier en date étant Microsoft avec
le Kinect. Ce n’est que très récemment que les recherches ont démarré autour des aspects multi-joueurs
dans l’exergaming et ses conséquences sur la motivation et le temps de jeu du joueur. La création d’un
prototype multi-joueurs permettra donc probablement d’aider à l’exploration de ce nouveau champ.
B) LES JEUX DE PLATEFORMES
Mémoire | BBWoE 2010
27
Ce type de jeu fonctionne souvent avec un écran coulissant qui suit l’avatar. La plupart du temps, le
joueur se déplace dans un environnement hostile plein d’ennemis. Il peut les éviter ou les tuer.
Les premiers :
Figure 10 : Space Panic (1980)
Figure 11 : Super Mario Bros (1985)
Le premier jeu de plateforme est probablement
Space Panic (Figure 10), le joueur pouvait uniquement déplacer son avatar dans les quatre directions,
sans fonction de saut.
Mais durant cette décennie, le jeu de plateforme qui se vend le plus est Super Mario Bros. Son gameplay
novateur allié à une console plus abordable (NES/famicom) et plus vendue y sont pour beaucoup (Figure
11).
Sonic the hedgehog est probablement un des premiers jeux de
plateforme qui propose un gameplay aussi rapide. C’est le
Figure 12 : Sonic qui court
Figure 13 : Sonic en boule
premier succès qui propose des niveaux pensés pour un avatar
qui est capable de courir (Figure 12) et de rouler en même
temps (Figure 13). Le hérisson peut en effet se mettre en boule
pour rouler lors d’une descente par exemple.
« Nouvelle génération » :
Donkey Kong Country (DKC) sur SuperNes est le jeu le plus
vendu sur cette plateforme avec 8 millions de copies [Ref 33]. Il
est aussi un succès technique, car malgré que tout le jeu soit en
2D, à l’aide d’images pré-calculées, le joueur à un effet de 3D
notamment sur son avatar. La plupart des jeux de plateforme
qui sont sortis après DKC sont soit de vrais jeux nouvelle
génération (avec de plus en plus de 3D), soit des jeux de la vieille école, comme X-moto.
Mémoire | BBWoE 2010
28
Deux succès originaux :
X-moto (2005) est le clone open source d’un jeu de
plateforme : Elastomania (2000). Comme ce dernier,
jouer à X-moto consiste à passer des niveaux. Pour
passer au suivant, le joueur doit contrôler un avatar
sur une moto afin de récolter toute les pommes, puis
la fleur qui symbolise la ligne d’arrivée. On retrouve
dans ces deux jeux un moteur physique qui permet un
gameplay assez original. On note cependant une
différence, X-moto est plus réaliste, plus abouti avec des objets
complexes dans des niveaux (comme des ascenseurs).
Comme on peut le voir sur la figure 14, l’interface est assez
sommaire. On retrouve en haut à gauche, le chronomètre, le
meilleur temps et le nombre de pommes collectées. Dans l’angle
opposé, on aperçoit la mini-carte. Tout le jeu ce joue au clavier :
barre d’espace pour changer de direction, flèche haute pour
accélérer, bas pour freiner et enfin les deux directions pour
s’équilibrer (une rotation vers la gauche ou vers la droite).
Figure 14 : X-moto
Super Paper Mario (2007) est original car il est le premier jeu de
plateforme à combiner gameplay 2D et 3D à n’importe quel instant
de la partie. En début de partie le joueur démarre avec deux
dimensions. En avançant il accède à la capacité de se déplacer et
de voir dans la troisième dimension pendant une courte période de
temps. Cette dimension lui permet ainsi de passer des obstacles,
de voir des objets cachés, etc. La figure 15 donne un aperçu de la
différence entre ces 2 vues.
BILAN
Figure 15 : Super Paper Mario
Cette présentation permet d’introduire de ce qui est devenue la
référence des jeux de plateforme. Elle a aussi été l’occasion de
présenter un jeu comme X-moto, qui comme BBWoE est constitué d’un avatar qui évolue dans un
monde avec des entités, régis par les lois de la physique.
Remarque : vous trouverez en annexe un état de l’art portant sur les mondes persistants synchrone et
asynchrone. Ce travail aurait pu servir si nous avions eu plus de temps, notamment pour choisir des
orientations de la partie multi-joueurs. Finalement son contenu n’influence pas suffisamment la
conception pour l’intégrer dans ce présent document. Cependant il pourrait être réutilisé lors d’une
évolution possible de BBWoE.
Mémoire | BBWoE 2010
29
3. TECHNOLOGIE
A) HARDWARE
Le prototype est conçu pour fonctionner sur un
Select
ordinateur
récent disposant
d’un
système
d’exploitation Windows XP minimum. Durant
son développement il a été testé
Stick gauche
régulièrement sur un Intel Core i5 720
disposant de 4 Go de ram et d’un système
d’exploitation Windows 7 32 bits édition
professionnelle.
La partie Input du jeu est confiée à
l’association d’un pad de Xbox 360…
Start
Y
X
B
A
Pad
directionnel
Stick droit
Gâchette
gauche: LT
Gâchette
droite: RT
LB
RB
Figure 16 : manette de Xbox 360
… mais aussi à un pédalier électronique (PCGamerBike) qui permet
d’effectuer un effort physique et de récupérer des valeurs de vitesse de
rotation.
Figure 17 : PCGamerBike
Mémoire | BBWoE 2010
30
B) SOFTWARE
.Net : (prononcer « dot net »)
Ce framework (Figure 18) développé par Microsoft, sous Windows
uniquement, inclut une grande variété de librairies. Comme le java, il
précompile le code écrit en un code intermédiaire (Common Intermediate
Langage) avant de le faire exécuter par une machine virtuelle qui produira le
code d’exécution à proprement parler (Common Langage Runtime).
Figure 18
C# :
Ce langage développé par Microsoft se veut à la fois une amélioration du C++ et une alternative à Java.
On retrouve ce langage dans le framework .Net. A l’inverse de ce framework, le C# est libre. Il existe
d’ailleurs des compilateurs libres multiplateformes comme dotGNU.
XNA pour .Net :
Cet ensemble d’outils (Figure 19) assiste le développement de jeux vidéo. Il
se présente comme une extension des librairies de .NET, il est massivement
utilisé par l’EQUIS laboratory pour prototyper des jeux vidéo.
Figure 19
Farseer Physics Engine :
Ce moteur physique (Figure 20) open source a été développé à destination
de l’environnement .NET. Il permet d’intégrer un moteur physique dans un
projet XNA à moindre coût : il suffit de définir les règles à appliquer (vitesse
du vent, masse de chaque objet, leurs propriétés de surfaces …) et le moteur
gère le reste.
Figure 20
GAIM :
Ce framework développé par l’EQUIS laboratory sert d’interface entre la capture d’actions ou
mouvements du monde réel : mouvement d’un vélo électronique, d’une Wiimote, d’un capteur
cardiaque ... et la restitution de celles-ci pour le développeur.
Janus :
Ce framework développé par l’EQUIS laboratory permet d’aider à l’implémentation d’une couche réseau
dans des applications C#. Il fournit également des fonctions d’interpolation qui optimisent le
positionnement d’objets en cas de mauvaise qualité du réseau.
Mémoire | BBWoE 2010
31
4. BILAN DE L’ANALYSE
Cette analyse permet de donner une idée du travail qui va initier la phase de conception :
l’objectif premier sera de concevoir un jeu de plateforme minimaliste, pour ensuite incrémentalement y
ajouter, en accord avec les utilisateurs, les composants centraux d’un exergame « réussi ». Par exemple
l’ajout d’un coach virtuel prendrait trop de temps par rapport à ce que cela apporterait (déjà testé et
publié). Alors qu’intégrer une partie réseau au projet permettrait d’étudier les conséquences des
interactions collaboratives entre les joueurs et leurs conséquences sur la motivation, mais aussi d’autres
aspects sociaux liés à l’exergame. La partie exergame de cet état de l’art a permis de se rendre compte
qu’il fallait maximiser la motivation du joueur afin de le garder suffisamment sur le jeu, à un niveau
d’exercice suffisant pour sa santé.
La partie portant sur les jeux de plateforme a permis de redécouvrir un panel de jeux de plateforme aux
gameplay parfois éloignés. X-moto, avec son moteur physique et la présence d’entités, est d’ailleurs le
plus proche du sujet de stage.
Mémoire | BBWoE 2010
32
CONCEPTION
1. INTRODUCTION
Conformément à la demande du client, le prototype devra être constitué de deux grandes
parties : d’un côté, le monde virtuel et de l’autre, l’avatar qui interagit avec ce monde. Je présenterai
dans un premier temps le processus qui a conduit à la création de ce monde virtuel, puis dans un second
temps on se concentrera sur l’avatar et ses possibilités d’interactions. Pour chacune des deux parties, je
reviendrai sur le tout début du projet pour expliquer les choix qui ont orienté son évolution vers ce qu’il
est aujourd’hui. Enfin, une dernière partie reviendra sur l’ensemble du projet pour expliquer les
objectifs et les raisons de leurs évolutions.
2. LE MONDE VIRTUEL
Le premier « monde virtuel » utilisé dans BBWoE remonte à la phase d’apprentissage. Il n’était
alors qu’une simple suite de rectangles à l’écran, rapidement implémentables car le rectangle est
l’élément de base de XNA et de pharseer physics. Une des demandes initiales du client a été de pouvoir
ajouter « facilement » de nouveaux objets à ce monde. Poussée par l’architecture de XNA, la décision de
supporter un type d’objet par classe c’est donc fait toute seule car elle permet un support souple :
chaque objet est séparé du reste, tout en gardant une structure commune d’un objet à l’autre. La
complexité de chaque entité est ainsi isolée de la complexité globale du programme. Assez rapidement,
la liste de création, d’initialisation puis d’ajout dans le moteur physique a gagné en longueur et donc en
complexité. On a donc décidé d’ajouter le chargement du monde virtuel depuis un fichier. J’ai décidé
d’utiliser un format XML pour permettre de standardiser suffisamment la définition du monde. Cette
décision a été portée par une demande optionnelle du client : être assez souple pour pouvoir supporter
« facilement » l’ajout d’un éditeur de niveau externe.
Mémoire | BBWoE 2010
33
Figure 22 : BBWoE à ses débuts
Après avoir décidé des valeurs de friction et de rebond des toutes premières entités avec des tests
utilisateurs, il a été nécessaire de créer de nouvelles entités, de plus en plus complexes, afin de pouvoir
construire un monde plus élaboré, plus proche de ce qu’on retrouve
dans les jeux vidéo actuels. Après des entités carrées (« Box » &
« Ground »), une entité « Circle » semblait indispensable : elle
permettrait de créer des grandes roues ou simplement des ballons
(Figure 21). Toutes les entités créées étant particulièrement figées,
Figure 21 : "FloatingPlatform"
en accord avec les utilisateurs développeurs, nous avons décidé
d’ajouter une entité plus complexe : un tapis roulant permettrait
de rendre le déplacement du joueur plus difficile et donc augmenter l’effort physique nécessaire pour
traverser une zone (Figure 21).
A la suite de cet ajout dans le monde virtuel, un cap de complexité a été franchi : les objets que
l’on ajoutera seront difficilement plus complexes du point de vue du moteur physique. Le choix
des objets à ajouter au jeu a continué de se faire lors de réunions avec les utilisateurs. Nous
avons choisi des objets aussi divers qu’une rampe de saut (Figure 23), un ascenseur,
une plateforme volante (Figure 22), un trampoline ou un objet de décor
générique. Certains choix comme le trampoline ou les éléments de décor
Figure 23 : "Ramp"
ont été faits dans un simple but d’amélioration des niveaux de
Mémoire | BBWoE 2010
34
démonstrations que nous voulions développer. Au contraire, l’intégration de la rampe au moteur
physique a nécessité la maitrise d’une nouvelle fonction : l’ajout de formes non-géométriques.
L’ascenseur et la plateforme volante ont comme point commun d’être les premières entités à intégrer
une fonction d’utilisation (voir paragraphe « Interaction de l’avatar sur les entités de ce monde
virtuel »). C’est à la suite de l’ajout de ces dernières entités que nous avons décidé de créer un premier
monde virtuel (sprint 3). Le nombre d’entités était suffisant, seules les entités de décors manquaient à
l’appel et ne permettaient donc pas de créer un monde réellement riche.
Ce monde a été amélioré successivement et a été utilisé finalement jusqu'à la fin du projet. La version
initiale a été créée en moins de 4h et écrite directement en XML à partir d’un schéma. L’évolution du
prototype vu comme un jeu mono-joueur s’arrête ici, la nouvelle version décrite dans la section portant
sur le multi-joueurs supporte néanmoins le fonctionnement hors-ligne.
3. L’AVATAR DANS CE MONDE VIRTUEL
A) DURANT LA PHASE D’APPRENTISSAGE
Dès le début du projet, lors de la phase d’apprentissage, l’avatar était une simple roue que l’on
déplaçait de gauche à droite à l’aide des flèches directionnelles du clavier. Il semblait alors important,
dans un but d’apprentissage, de synchroniser les mouvements de cette roue avec les mouvements d’un
vélo (PCGamerBike). Ceci est réalisé en quelques heures en utilisant une API déjà développée
précédemment par l’EQUIS laboratory : GAIM. Afin de compléter cette nouvelle méthode d’interaction,
l’ajout d’un pad semblait indispensable afin de changer de direction avec l’avatar ou simplement sauter.
L’utilisation de l’association pad et PCGamerBike est de toute façon un pré-requis du projet. Le choix des
touches dans un premier temps a été relativement simple, il s’appuie sur les expériences de l’équipe
dans les jeux de Xbox 360 qui utilisent ce même pad.
Cependant un problème s’est alors posé : XNA n’embarque pas de gestion de la caméra en mode 2D.
J’avais pourtant besoin de pouvoir centrer la vue sur la roue. De plus, l’utilisation massive de texture de
haute résolution ralentissait le jeu, il faudrait donc ajouter à la caméra un système qui traite
uniquement ce qui est dans le champ. J’essayais donc de déplacer uniquement les objets du monde et
garder l’avatar statique, cependant cette idée se heurte à l’utilisation du moteur physique et les
problèmes de collisions ne tardent pas à apparaitre. C’est sur le forum de Farseer physics qu’est trouvé
la solution : une classe caméra 2D, qui remplit toutes les conditions et même plus puisqu’elle incorpore
en plus des fonctions de zoom. L’intégration de cette classe s’est faite sans problème.
Mémoire | BBWoE 2010
35
B) LES PREMIERES VERSIONS DU MONOCYCLE ET
DU TANK
Dans un second temps, l’ajout d’un nouvel avatar
semblait inévitable, comme l’évolution du premier ! Le choix
du nouvel avatar a été fait lors par l’ajout de l’entité
« BeltEntity » au jeu. Comme l’illustration 22 (page 34) le
montre, cette entité à une forme de tapis roulant. On
remarque également la proximité
Figure 24 : la chenille et la boule
forte entre l’avatar chenille et cette
entité (Figure 24). La création d’un avatar chenille ne posait donc pas de problème
technique et avait en plus le gros avantage de fluidifier le parcours sur décor accidenté.
De plus, la chenille étant totalement symétrique, elle ne pose pas de problème en cas de
retournement.
En même temps, le premier avatar a évolué en monocycle
(Figure 25). Cette décision, qui a été prise lors d’une réunion
de sprint, est motivée par la proximité entre le
PCGamerBike et un monocycle. Afin d’éviter tout
problème de retournement, il est décidé de contraindre la
selle à rester en permanence vers le haut. Il a
Figure 26 : le monocycle
également été décidé d’améliorer l’avatar chenille.
Figure 25 : le tank
L’avantage de la symétrie pose aussi un problème, l’avatar est jugé trop
impersonnel pour rester en l’état. L’ajout d’une tourelle (Figure 26), afin de
transformer l’avatar chenille en tank, a été effectué, mais celle-ci a fait remonter un problème de
blocage en cas de retournement. Une solution est alors trouvée lors d’une réunion de projet : utiliser
une touche de stabilisation lorsque le tank est en contact avec aucune entité (lors d’un saut ou d’une
chute libre).
Ces deux avatars sont utilisés pour le premier test utilisateurs. Il a des fins multiples :



la principale est d’avoir des retours sur le contrôle à la manette et sur les feedbacks des
mouvements des avatars à l’écran. Par rapport au feedback de l’avatar, l’accent est mis sur les
différentes surfaces (bois, herbe, glace) sur lesquelles l’avatar peut se mouvoir ;
donner des opinions plus générales sur le jeu;
enfin, une première occasion de présenter mon travail aux collègues du laboratoire qui
m’aideront à faire ce test.
Le premier utilisateur a en fait été testé deux fois. En effet, nous n’avons pas eu assez de temps pour
tester les deux avatars. A la suite du premier test, une simple modification des coefficients de
frottement de la glace a permis d’obtenir un bien meilleur ressenti. A l’issue de ces deux séries de tests
avec ce premier utilisateur, il a été nécessaire d’ajuster quelques paramètres du jeu afin d’éviter une
focalisation des prochains utilisateurs sur ceux-ci (problèmes de freinage et de blocage des roues du
Mémoire | BBWoE 2010
36
tank). Les utilisateurs B et C, à l’inverse du premier, ont pédalé rapidement jusqu’au maximum et n’ont
donc ressenti quasiment aucune différence entre les surfaces. Quelques idées originales proposées
durant ce test :
1. pourquoi ne pas utiliser les pédales dans le sens inverse pour freiner au lieu d’un bouton ;
2. permettre la rotation du monocycle rendrait son utilisation plus intéressante.
Lors des tests, les utilisateurs A et C ont mentionné que l’utilisation du monocycle avait un mauvais
feedback comparé au tank. Nous avons remarqué, lors de ce test, que le tank se retourne et se bloque
assez souvent. La fonction ajoutée afin d’effectuer un saut de remise en place rapidement marche mais
reste contraignante à utiliser. En cas de retournement, l’utilisateur doit sauter puis presser la touche de
stabilisation (bouton X). La plupart du temps les utilisateurs testés ne se souvenaient pas de la séquence
de touche ou alors pressaient le bouton X trop peu de temps pour effectuer un retournement complet.
Afin de stabiliser l’avatar dans les airs, l’ajout de rotation, grâce aux gâchettes de la manette, semblait
naturel. Il a cependant été critiqué par une partie de l’équipe le jugeant trop complexe. C’est la raison
pour laquelle nous l’avons testé avec les utilisateurs et comparé au système de stabilisation
automatique. Ces tests sont détaillés dans la partie « Evolution du système de commande ».
A l’issue de ce premier test, le prototype a évolué pour intégrer toutes les remarques sauf le problème
de retournement qui a été traité ultérieurement. L’utilisation du pédalier pour freiner l’avatar (idée une)
est implémentée. Cependant l’ajout de la rotation au monocycle (idée deux) pose un problème de
contrôle. Il faudra juger de son utilisabilité lors d’une nouvelle session de test, mais cet avatar semble
être réservé à un public expérimenté.
C) INTERACTION DE L’AVATAR SUR LES ENTITES DE CE MONDE VIRTUEL
Après une nouvelle phase de sprint, qui a démarré par une réunion pour choisir les nouvelles
orientations du projet, nous décidons d’améliorer l’interaction entre l’avatar et le monde virtuel.
Chaque entité aura une méthode Use(), Enter() et Exit(). Les méthodes Enter() et Exit() ont pour but de
donner un comportement différent lors du passage de l’avatar près d’elle : par exemple l’ouverture
d’une porte quand l’avatar la touche. La méthode Use() permet d’appliquer une force à une entité si le
joueur est en contact avec elle et qu’il presse la touche utilisation. C’est avec cette méthode que
fonctionnent les entités « Elevator » et « FloatingPlatform ».
Cependant durant la phase d’implémentation de ces méthodes, je me heurte à un problème : comment
savoir si on touche réellement une entité et ensuite comment savoir lesquelles sont utilisées lorsque la
touche « utiliser » est pressée. Sur le moment j’ai décidé simplement de colorer les entités touchées en
rouge et celles utilisées en vert. Ce système a en fait été conservé car il est une solution très
performante à un problème de feedback important pour l’utilisateur, surtout sur des entités dont il est
difficile de percevoir rapidement qu’on effectue une action dessus. La couleur de contact conservée
n’est quasiment pas visible de telle sorte qu’elle ne gène en rien l’utilisateur et en ce qui concerne
l’utilisation, j’ai conservé la couleur verte. Il est cependant important de noter que le choix de ces
Mémoire | BBWoE 2010
37
couleurs est trop important pour ne pas être soumis à l’avis des utilisateurs. Il faudra donc le prendre en
compte quand BBWoE sera réutilisé pour créer un jeu.
Dans un second temps, ces méthodes ont permis de développer un système de ligne de départ et
d’arrivée. Franchir la ligne de départ déclenche le compteur et seul la ligne d’arrivée peut l’arrêter. Cette
illustration du fonctionnement possible d’un chronomètre a ensuite été réutilisée lors de la conception
du système de succès qui est présentée dans cette partie.
Fonctionnement de l’ascenseur (Figure 27) : par défaut il est en bas. S’il n’est pas en bas et qu’il n’est
pas utilisé, il retourne graduellement en position basse. Tant que la méthode Use() est appelée,
l’ascenseur remonte graduellement jusqu'à sa position maximale.
Figure 27 : l'ascenseur en fonctionnement
EVOLUTION DU SYSTEME DE COMMANDE
Depuis le début du projet, le système de commande utilisé marche plutôt bien, cependant il a été créé
en se basant sur des expériences de deux personnes de l’équipe. Une session de brainstorming a donc
été organisée afin d’effectuer des choix et, dans le cas échéant, de proposer des idées pour revoir le
système de commande (Figure 28).
Mémoire | BBWoE 2010
38
Use Brake
Jump
Gauche/Droite
La consigne du stage est d’ « utiliser un
PCGamerBike couplé à un pad afin de contrôler un avatar ».
Tout ce qui a été décidé ensuite peut donc être remis en
question par les participants. Avant de démarrer, cette
consigne
est
rappelée
aux
participants de la réunion.
Zoom
avant/arrière
Les idées proposées dès le début vont
dans ce sens :
1. pourquoi ne pas utiliser le
Rotation
vélo pour stabiliser l’avatar
gauche
dans les airs et pas pour le
déplacer ? Ou pourquoi ne pas
utiliser le vélo pour les deux fonctions ?
2. pourquoi ne pas utiliser les touches RB et LB
pour zoomer plutôt que les touches du pad
directionnelles avant et arrière ?
3. pourquoi ne pas utiliser une simple touche pour le
changement de direction plutôt qu’un stick ?
Rotation
droite
Figure 28 : commande à revoir
Au final, l’ensemble de ces idées tente de trouver des
alternatives à ce qui existe déjà. Cependant tous les participants de la réunion s’accordent à dire qu’une
majorité des attributions déjà faites sont efficaces. Seule une fonction posait réellement problème à leur
sens : l’emploi du bouton utiliser.
Comme dit précédemment, le bouton X permet de déclencher une action au contact d’une entité. Dans
les airs et donc en contact avec aucune entité, une pression sur le bouton utiliser déclenche une
stabilisation automatique de l’avatar jusqu'à un relâchement de celui-ci. Hors un système de
stabilisation manuel existait déjà et les participants à cette réunion (qui ont testé le prototype)
pensaient qu’il était largement suffisant et même plus adapté. Suite à ces avis, ce système de
stabilisation automatique a totalement été supprimé. Cependant une bonne partie des idées citées
précédemment ne pouvait pas être appliqués :

l’idée 1 ne peut être utilisée : au vu du gameplay déjà utilisé dans le prototype, l’utilisateur ne
dépenserait pas assez d’énergie en se servant du vélo pour stabiliser un avatar uniquement dans
les airs. Cette action est en plus moins naturelle, surtout avec l’utilisation du monocycle. Une
alternative aurait été d’utiliser le vélo pour stabiliser l’avatar dans les airs en complément de
son utilisation au sol. Cependant cette idée pose un problème de conflit évident : l’utilisateur
devrait s’arrêter de pédaler dès que l’avatar décolle du sol afin d’éviter tout retournement et
inversement une fois que l’avatar retouche le sol. De plus, le PCGamerBike à une certaine inertie
qui n’aurait pas améliorée pas la situation ;
Mémoire | BBWoE 2010
39


l’idée 2 a été testée, elle a posé deux problèmes : l’utilisation du pad Haut/Bas est plus intuitive
pour effectuer un zoom arrière ou avant que l’utilisation des boutons à droite et à gauche de la
manette. Un autre problème a été soulevé par l’utilisation des gâchettes LT/RT pour la rotation
de l’avatar : elles sont très proches de ces boutons et leur utilisation entrainerait probablement
des inversions fréquentes ;
l’idée 3 a été proposée lors des premières réunions de sprint. Le but alors était de proposer un
système de commande le plus rapide de prise en main possible. Il se trouve que déplacer le pad,
situé à gauche de la manette, à droite ou à gauche est une des premières actions que l’on a
observé et ce, dès les premiers tests utilisateurs.
D) UN TROISIEME AVATAR ET UNE AMELIORATION DES PRECEDENTS
Avant même cette période de test, il a été proposé lors d’une réunion de fin de sprint l’ajout
d’un troisième avatar : une « New Beetle » (Figure 29). Le choix de ce modèle a été encouragé par sa
forme arrondie qui permettrait d’éviter un blocage de la voiture sur le
dos jugé trop
facile par nos observations lors de ce premier test utilisateur. Il
est
également décidé d’ajouter un feedback lors d’un saut. La
solution retenue est un ajout de fumée lorsque l’avatar
décolle du sol.
C’est à partir de cette « line-up » qu’est amorcé le second
test utilisateur. Celui-ci ce concentre sur le recueil de
Figure 29 : New Beetle
remarques encore une fois, mais surtout celles relatives à
la jouabilité des avatars. Le but ici était d’effectuer une dernière modification pour obtenir une version
finale de nos trois avatars. Des utilisateurs nommés A, D et E passèrent ce test (seul l’utilisateur A avait
déjà passé le premier test). Voici une liste des points les plus intéressants relevés par ce test :




un utilisateur apprécie le monocycle, surtout pour le challenge offert par son déséquilibre
permanent ;
« le tank est largement plus abouti que les deux autres avatars, en particulier la « New Beetle »
qui a des comportements étranges » (roues qui sautent en permanence, bug de collisions, etc.) ;
la fumée comme feedback de saut marche. Ceci dit, un utilisateur changerait la couleur pour du
gris (pour « plus de réalisme ») ;
« cette version du prototype est définitivement plus fun que la précédente ! »
Plus de la moitié des points abordés lors du test ont été corrigés rapidement. Seul quelques uns,
notamment ceux de la « New Beetle » ont nécessité des changements
plus radicaux. Malgré de multiples tentatives de réglage des
paramètres physiques de la voiture, il a été impossible d’obtenir un
gameplay convenable.
Suite à ce blocage, la structure même de la voiture a été modifiée.
Lors des tests, cet avatar avait tendance à se bloquer ou à être
Figure 30 : New Beetle 2.0
Mémoire | BBWoE 2010
40
ralenti par des objets du décor qui touchaient sa carrosserie régulièrement. L’avant et
l’arrière de l’avatar ont donc été coupés et les roues doublées de taille (Figure 30). Suite à
ces changements, puis à une phase de réglage des suspensions de la voiture, nous avons
fait valider ces améliorations, au travers d’un test utilisateur, afin de s’assurer que tout
le monde ressente la différence.
E) NOUVEAU DESIGN GRAPHIQUE
Depuis le début du projet, j’ai utilisé des textures trouvées sur internet, qui
n’étaient pas forcement très adaptées. A partir du sixième sprint, Chris Oliver, un
graphiste, a collaboré avec l’équipe de projet afin de designer de nouvelles textures
pour le projet. Il a commencé par proposer de nouveaux modèles d’avatars, qui après un
vote dans le laboratoire, ont permis de donner une nouvelle dimension au projet. Je ne
listerai pas tout ce qu’il a produit pour BBWoE, pour cela se référer à l’annexe 1.
Cependant il est important de présenter les nouvelles versions du
monocycle (Figure 31) et de la « New Beetle » (Figure 32).
Figure 31 : monocycle
Il est intéressant de noter que celle-ci respecte les
final
spécifications de la New Beetle 2.0.
Figure 32 : New Beetle finale
4. PLUSIEURS MONDES VIRTUELS ?
L’intégration d’un mode multi-joueurs dans le prototype a été central. Comme décrit
précédemment dans l’analyse, il est important d’apporter des notions collaboratives afin de motiver
suffisamment le joueur. Ce mode multi-joueurs est aussi l’occasion de créer un serveur qui pourra
héberger un monde aux dimensions quasi-illimitées et ainsi pousser le joueur à l’explorer.
A) PREMIERE VERSION : DECOUVERTE DE JANUS
Cette première version a permis de
découvrir le fonctionnement de JANUS. Elle a servi à
l’apprentissage mais également à la création d’un
serveur écrit en C# qui charge le niveau (en un seul
envoi de message) depuis une Base de Données
(BD), puis l’envoie au client. Cette première version
du serveur ne supporte qu’un seul client en
simultané (Figure 33). On ne peut donc pas encore
vraiment parler de version multi-joueurs.
Figure 33 : configuration réseau 1ere version
JANUS utilise en fait lui aussi des sortes d’entités,
appelées « Stream ». J’ai donc défini « EntityStream » qui permettra de synchroniser les entités du jeu
dans un premier temps. Sur chaque « stream », il est possible d’appeler une méthode send() qui permet
Mémoire | BBWoE 2010
41
d’envoyer les valeurs au serveur, get() pour demander la valeur courante de l’entité au serveur et enfin
sendCommand() qui permet d’envoyer une chaine de caractère directement à un client.
Cependant la réflexion entourant la connexion de plusieurs clients s’est assez vite arrêtée sur un
problème : comment synchroniser plusieurs moteurs physiques ? La première solution proposée a été
de déplacer le moteur physique sur le serveur. Cette solution n’est pas réalisable pour deux raisons,
premièrement nous serions alors limités par le nombre d’objets physiques dans le monde. Enfin, la
bande passante consommée pour le serveur serait énorme, ce qui pose un problème de prix de la
connexion pour le serveur mais aussi pour les clients (au Canada les connexions internet sont souvent
limitée en volume échangé). La seconde solution serait de synchroniser des parties du moteur en
fonction de la position des avatars. C’est finalement cette dernière solution qui a été retenue.
B)
DEUXIEME VERSION : LA PREMIERE VERSION REELLEMENT MULTI-CLIENTS
Cette deuxième version apporte le support du
jeu en multi-joueurs : jusqu'à quatre clients
peuvent se connecter sur le même niveau. Le
niveau est chargé au fur et à mesure du
déplacement de l’avatar dans le monde.
Cependant, comme le serveur envoi chaque
entité à tous les clients, ils chargent des parties
de niveau qu’ils n’ont pas forcement besoin. De
plus, chaque client ne voit pas la position des
autres avatars.
Figure 34 : configuration réseau 2e version
Ce schéma (34) présente le fonctionnement du
réseau d’un point de vue matériel, cette
configuration restera valide jusqu'à la fin du
projet.
L’arrivée de plusieurs clients et le support du chargement en temps réel, en fonction de la position de
chacun des avatars, entrainent forcément une certaine complexité dans le dialogue client/serveur. La
figure 35 présente la structure de « stream » utilisée pour faire dialoguer le client et le serveur dans
cette version. On remarque la présence de cent « EntityStream » chargés d’envoyer les valeurs des
paramètres des entités, ainsi que quatre « GhostStream » chargés de communiquer au serveur la
position des avatars (un « GhostStream » par client).
Mémoire | BBWoE 2010
42
Figure 35 : dialogue client serveur, première version
C)
TROISIEME VERSION : OPTIMISATION
Même si le support de client passe de quatre à dix, cette incrémentation permet d’apporter
surtout une utilisation du réseau plus optimisée. A chaque entité, le serveur attribue un nom unique, ce
nom est communiqué à chaque client qui en a besoin (Figure 36) via un mécanisme expliqué à la page
suivante. Le serveur évite donc d’envoyer une même entité à chaque client un par un. De plus cette
entité est stockée dans une mémoire tampon pour éviter que le serveur la recharge depuis la BD. Le
positionnement de chaque avatar, qui était déjà communiqué au serveur dans la version précédente, est
maintenant renvoyé à chaque client afin qu’il affiche un fantôme des concurrents.
Figure 36 : dialogue client serveur, version finale
Mémoire | BBWoE 2010
43
L’ajout de création de nouvelle entité, à la demande, nécessite d’utiliser le système de message intégré
dans la dernière version de JANUS (sendCommand()). Je filtre chaque message et discrimine l’action en
fonction de l’information d’entête de celui-ci. La conception d’une simple machine à état permet de
représenter ce que nous voulons faire (Figure 37). Le but ici est de s’assurer que le client et le serveur
sont prêts à recevoir les valeurs de la nouvelle entité.
Charger nouvelles entites: “arbre1 et route3”
Serveur
Client
“Reçu”
Reçu
Entité
Reçu
Entité
“Reçu”
Fin
Fin
Figure 37 : vue état/événement du dialogue client/serveur
« » : Message envoyé a travers le réseau avec la fonction sendCommand() de JANUS.
D) QUATRIEME VERSION : AJOUT DE FONCTIONNALITES ET DU SYSTEME DE SUCCES
Le temps passé sur la troisième version a permis de constater une nette amélioration de la
stabilité. Cette quatrième version s’est donc attachée à ajouter des fonctionnalités. Ainsi chaque client
fournit au serveur un nom de joueur à la connexion. Cet identifiant permet d’associer à chaque joueur
un ensemble de succès.
Mémoire | BBWoE 2010
44
Remarque : à l’inverse de l’envoi des positions de l’avatar ou des propriétés d’une entité, les échanges
entre le client et le serveur pour le nom du joueur ou pour déclencher un succès sont ponctuels. Pour
cette raison, ils utilisent le système de message de Janus.
Dans cette itération deux succès ont été implémentés :


« TimeAchievement » qui est en fait une amélioration de l’entité qui servait de départ et
d’arrivée (StartStopEntity). A chaque arrivée, le temps du joueur est envoyé au serveur et s’il
est suffisamment faible, il déclenche un succès qui est ajouté à la BD ;
« RegionAchievement » : une nouvelle entité qui déclenche un succès dès que l’on atteint une
zone. Elle met également à jour la BD pour tenir compte de ce nouveau succès.
Cette version inclut également une nouvelle entité : « HouseEntity ». Cette maison est en fait un
assemblage de briques élémentaires que le joueur collectera dans des implémentations du jeu. Une des
évolutions du projet sera probablement d’implémenter un jeu de construction de sa propre maison dans
BBWoE. Et ainsi proposer un système de collecte de briques dans le jeu (objectifs à court terme) pour
ensuite construire sa maison lors d’un mini-jeu (objectif à long terme).
Synthèse des problèmes soulevés par le multi-joueurs :



problème de latence entre les clients. Solution apportée par JANUS ;
problème de synchronisation des moteurs physiques. Complexe à mettre en place et même
impossible avec la bande passante requise (ligne internet supérieure à une ligne ADSL pour
chaque client) ;
monde quasiment infini, mais qui peut être exploité en utilisant un minimum de bande
passante. Solution partielle avec l’utilisation du modèle client/serveur. (Simple de mise en
place, d’exploitation).
Ce dernier sprint a permis d’intégrer également un système de succès, nous avons donc pour cela créé
une nouvelle entité : « regionAchievement ». Elle permet de déclencher un succès lors du passage du
joueur sur celle-ci. Chaque succès est associé au nom du joueur dans la base de données. De plus, la
base de données étant sous MySQL, nous l’avons interfacé avec un serveur web et écrit une page PHP
qui permet de suivre les scores de chaque joueur. Ce module permettra de reprendre BBWoE et de
travailler sur les aspects sociaux du jeu.
5. DE L’ANALYSE A LA CO NCEPTION : EVOLUTION DES OBJECTIFS DANS LE PROJET
Cette partie permet de décrire l’évolution des objectifs pendant le projet. Son positionnement
dans la partie conception se justifie dans la mesure où le raffinement des objectifs a été fait au fur et à
mesure de la conception du prototype.
Le but initial du stage a été de produire un prototype d’exergame. La phase d’analyse a permis de se
rendre compte de l’importance de la motivation dans la conception d’un exergame. Tous les choix de
Mémoire | BBWoE 2010
45
conception du jeu ont donc directement ou indirectement maximisés cette motivation afin que
l’exergame lui-même soit positif pour la santé de l’utilisateur.
Après la phase d’analyse de l’activité, l’objectif a donc été de produire un premier prototype
d’ « exergame de plateforme ». C’est pour cela que des tests sur l’avatar et le ressenti du joueur par
rapport aux différentes surfaces ont été fait. Mais en parallèle de ces tests, un deuxième objectif plus
global a vu le jour au travers de simples choix d’architecture, la généricité des composants du monde
(entités), leur chargement par un fichier XML. Ces choix sont autant d’objectifs, à courts termes, qui
visent à former une plateforme plutôt qu’un prototype d’exergame. Dans la suite, l’aspect création d’un
exergame est resté au second plan pour se concentrer sur les fonctionnalités de cette plateforme : mise
en réseau, amélioration des entités, amélioration du réseau ...
En fait, les réunions de suivi du projet, très régulières (une par semaines), ont permis de choisir chaque
parties que les utilisateurs « développeur » souhaitaient voir dans BBWoE. Dans chacune des réunions
était présenté l’état courant du prototype. Cette présentation a souvent permis de discuter précisément
d’un feedback ou d’un fonctionnement du programme qui ne convenait pas ou au contraire qui était
intéressant et devait aussi être ajouté ailleurs. Tout ceci nous a permis de produire le prototype tel qu’il
est présenté dans la partie qui suit.
Mémoire | BBWoE 2010
46
ARCHITECTURE LOGICIELLE
Cette partie présente le prototype tel qu’il est à la fin du projet. Elle permet donc d’approfondir
ce qui a déjà été abordé lors de la partie précédente. Dans un premier temps, je présenterais
l’architecture du client. Ensuite, nous verrons l’architecture du serveur. Pour finir, nous parlerons de
l’intégration de Janus utilisé pour les lier. Les deux premières parties se concentreront donc, à l’inverse
de la derniere, sur les aspects non réseau du projet.
1. LE CLIENT
Mémoire | BBWoE 2010
47
Figure 38 : apercu global du client
La figure 38 présente le client dans son ensemble. Pour des raisons évidentes de lecture toutes les
classes correspondantes aux entités ont été factorisées en une classe nommée ici « ObjectNameEntity ».
La description de l’architecture est organisée comme la lecture d’un arbre en profondeur : de haut en
bas puis de gauche à droite.
Remarque : cette architecture a été élaborée après plusieurs itérations (plusieurs sprints). Chaque choix
a été fait après discussion avec les utilisateurs « développeurs » lors de réunions de suivis de projet.
MOTHERCLASS ET BBWOE
Mémoire | BBWoE 2010
48
MotherClass est la classe mère qui a été créée uniquement pour permettre l’ajout ultérieur d’un menu
de sélection de serveur, de personnalisation de son avatar, etc. Pour le moment elle appelle juste la
classe principale du jeu.
BBWoE est la classe principale du jeu. Elle interconnecte les commandes du jeu (classe InputControl), la
gestion de la caméra (classe Camera2D), l’arrière-plan (classe BackgroundTextures) et le moteur
physique (classe CurrentPhysicsProperties) avec le jeu en court (classe currentGame).
A) CURRENTGAME
Probablement la classe la plus complexe du projet, elle gère le chargement et le fonctionnement de
toutes les entités du monde virtuel.
CHARGEMENT LOCAL
Le chargement s’effectue à partir d’un fichier XML, dans un premier temps la classe XMLReader va lire le
fichier XML, pour ensuite initialiser les entités les une après les autres. La classe GameEntity récupère la
liste des entités chargées pour pouvoir les ajouter à la liste des composants XNA. C’est à partir de cette
liste que chaque entité est mise à jour à chaque appel de la méthode CurrentGame.Draw().
CHARGEMENT RESEAU
Dans un souci de performance, j’ai confié cette tâche à un thread supplémentaire. Régulièrement la
classe CurrentGame amorce un thread qui vérifie si de
nouveaux objets ont été envoyés par le serveur. Si c’est le cas
ce nouveau thread crée les nouvelles entités, les initialisent et
les ajoutent à la liste des composants XNA.
PALETTE
La classe palette permet de changer efficacement
un ensemble de texture sans retoucher au
niveau. L’idée serait de proposer au joueur
de personnaliser le
monde virtuel qui
entoure sa maison et
de permettre aux
joueurs qui viendraient
visiter d’avoir les textures
du jeu qui changent en
rentrant dans
la zone.
Cette
Figure 39 : l'architecture des entités
Mémoire | BBWoE 2010
49
fonctionnalité est prévue dans l’architecture et utilisée par une bonne partie des entités. Il manque juste
un système de séparation en zone, qui sera très probablement implémenté lors de la prochaine
itération.
B) GAMEENTITY
Cette classe est une représentation générique des entités qui composent le
monde de BBWoE. Chaque entité hérite donc de ces propriétés, y compris les
avatars. Elle permet de modifier rapidement la réaction de toutes les entités lors
d’un contact avec l’avatar par exemple. La figure 39 (page précédente) permet
de mieux comprendre comment s’articulent chacune de ces classes entres-elles.
Remarque : le nombre d’entités est volontairement faible afin de conserver une
bonne lisibilité du schéma.
6. SERVEUR
Contrairement au client, le serveur n’est pas un projet XNA. Il n’est
donc pas soumis aux mêmes contraintes d’héritage. C’est un projet C# lié à
une base de données MySql et faisant le lien entre ce qu’elle contient et les
différents clients.
A) LE SERVEUR
Comme on le voit sur la figure 40, le serveur a une architecture très simple. Comme
pour le client la partie réseau est mise de côté. La classe « EntityDatabase » n’est
pas réellement une classe dans la mesure où elle représente le tuple entité stocké
dans la base de données. Le reste de l’architecture du serveur
montre une classe principale, « Program », qui contient la méthode
main(). Mais aussi la classe Entity qui permet de stocker les entités
dans une mémoire tampon afin d’éviter trop de requête à la base de
données. L’optimisation consiste à stocker l’entité à chaque requête,
dans un dictionnaire et ainsi éviter de refaire la même requête pour le client suivant. Enfin,
la classe XMLReader permet de charger un fichier XML dans la BD. Cette étape se fait
manuellement, en cas de mise à jour d’un niveau par exemple, et pourra être automatisée
à l’issue de ce stage.
Mémoire | BBWoE 2010
Figure 40 : aperçu du
serveur
50
7. RESEAU
Figure 41 : Janus dans BBWoE
La partie réseau a été réalisée à l’aide de JANUS, une API développée par l’EQUIS laboratory, qui a été
conçue pour simplifier la réalisation et l’intégration de la partie réseau dans un programme. La figure 41
présente la place que prend cette API dans le projet BBWoE. Afin de poursuivre ce qui est expliqué dans
les paragraphes précédents consacrés au client et au serveur, je détaille ici comment s’articulent les
connexions qui existent entre leurs deux classes principales et JANUS. Les classes « EntityStream » et
« GhostStream » permettent de dialoguer en passant par le serveur central de JANUS :
« StreamServer ». Chaque instance de la classe « EntityStream » contient toutes les données nécessaires
à la création d’une entité. Chaque client utilise une instanciation de « GhostStream » afin d’envoyer au
serveur la position de son propre avatar et ainsi permettre à tous les clients d’en afficher une image. Du
fait de l’unicité de cette classe à chaque client, elle me permet également d’envoyer des messages au
serveur ou au client. C’est avec cette méthode qu’est envoyé le nom d’une nouvelle entité à charger par
exemple.
Remarque : même si le schéma 41 ne le met pas en avant, StreamServer est hébergé physiquement sur
le serveur.
Ce chapitre a été l’occasion de décrire l’architecture du côté client/serveur, mais aussi l’architecture qui
leur permet de communiquer. Cependant pour l’approfondir il est recommandé de lire la partie
« Implémentation Design » du wiki disponible dans l’annexe 6.
Mémoire | BBWoE 2010
51
Mémoire | BBWoE 2010
52
EVALUATION
Ce projet, à deux faces, cible deux groupes d’utilisateurs. Depuis le début ils ont été impliqués
durant les différentes phases, au travers des réunions de suivi de projet (utilisateurs développeurs) et au
travers de réunions de brainstorming ou de tests utilisateurs (utilisateurs finaux).
Il semblerait logique, à première vue, de vouloir avoir des retours des deux groupes d’utilisateurs en fin
de projet. Ce serait vrai si nous voulions toujours améliorer la jouabilité du jeu. Hors, au fur et à mesure
du projet, un nouvel objectif est apparu. L’objectif premier a été de créer un exergame. Petit à petit,
celui-ci c’est détourné (autour du 7ème sprint) pour mettre en place une plateforme permettant de
développer rapidement et efficacement un exergame. En fin de projet, après avoir fait valider depuis
plusieurs mois le gameplay des avatars, il n’est plus central de faire intervenir les utilisateurs finaux. Il
aurait cependant été intéressant de tester le prototype avec des utilisateurs développeurs.
En fait, l’intégration d’Eril dans le projet a été aussi l’occasion de voir comment se comporte un
développeur qui prendrait le prototype en main. Ainsi, nous avons constaté qu’il est assez simple pour
un novice de modifier une entité dans le monde ou d’éditer le monde afin de rajouter ou déplacer des
entités déjà existantes. Cependant cette étape a également permis de constater que la création de
nouvelle entité nécessite plus de temps d’apprentissage. Il faut que l’utilisateur crée une nouvelle classe
entité, ajoute dans la parseur XML la création de cette nouvelle entité et ajoute l’initialisation de l’entité
dans la classe « CurrentGame ».
Un test sur plusieurs utilisateurs développeurs potentiels en fin de projet aurait permis de dresser une
liste plus complète, plus précise des défauts de ce prototype et ainsi donner des objectifs clairs à
destination de la prochaine itération. Il aurait cependant nécessité des ressources assez importantes : au
moins cinq développeurs potentiels et plusieurs jours de développement avec chacun d’entre eux. Des
ressources que n’avait pas le laboratoire pendant cette période d’été (campus de Queen’s University
vide).
Mémoire | BBWoE 2010
53
Mémoire | BBWoE 2010
54
BILAN ET PERSPECTIVES
1. BILAN
Comme nous l’avons vu dans la partie évaluation, ce projet s’est déroulé en deux parties. La première
partie a été un succès, les tests utilisateurs qui ont porté sur les avatars et le ressenti des joueurs lors de
leurs utilisations ont permis de constater un réel plaisir de jeu.
Mais l’objectif final va plus loin et ajoute une dimension supplémentaire au projet, le fonctionnement en
réseau d’un prototype générique. Il est difficile en fin de projet et sans test utilisateur de dire si le
prototype remplit ses objectifs de souplesse et réutilisabilité. Cependant sa généricité permet de
prototyper de nouveaux jeux rapidement (en plus des livrables demandés, je fournirai les briques
nécessaires à la création de trois mini-jeux à l’issue de ce stage).
Ces résultats ont été rendus possible par l’utilisation des enseignements du master IHM d’un côté
(brainstorming, test utilisateurs, architecture logicielle, diagramme état/événement …) et d’un autre,
par les enseignements que j’ai eu en master Informatique fondamentale (parseur XML, réseau …). Il a
été aussi l’occasion pour moi de d’approfondir mes connaissances en C#/.Net, mais aussi découvrir XNA
et l’utilisation d’un moteur physique dans une application interactive.
D’ailleurs, l’intégration de toutes ces technologies aurait pu bloquer tout le processus de conception,
mais l’utilisation de sprints très courts a probablement permis d’éviter ce désagrément, cependant en
limitant peut-être le recul qu’on pouvait avoir sur le projet. Finalement, cette cadence aura permis
d’explorer beaucoup de composantes importantes pour l’exergame.
2. PERSPECTIVES
Pendant le déroulement du stage, T.C. Nicholas Graham a été contacté par des médecins qui travaillent
sur la problématique du manque d’activité sportive chez les enfants déficients moteur. L’exergame est
une des solutions envisagée par ces chercheurs afin de résoudre leur manque d’activité physique :
effectivement sous certaines conditions d’utilisabilités, la motivation supplémentaire apportée par le jeu
vidéo pourrait leur permettre de faire plus d’exercice. Ce nouveau champ qui s’ouvrirait à BBWoE,
nécessiterait de poursuivre les travaux, tant au niveau du contrôle de l’avatar qui serait à repenser
complètement, qu’à l’aspect social procuré par le jeu en multi-joueurs.
Le projet est si vaste qu’il pourrait également être scindé en plusieurs parties. Il faudrait en effet
développer un éditeur de niveau qui générerait le code XML que BBWoE utilise pour définir le monde
virtuel (interface WIMP, tactile, autre ?). Dans un second temps, cet éditeur permettrait de réellement
travailler le Game Design du jeu ou de proposer aux joueurs eux-mêmes de designer leur bout
d’environnement.
Mémoire | BBWoE 2010
55
La partie réseau du jeu doit aussi être poursuivie, l’interfaçage de la base de données avec un serveur
http permettra de commencer un travail sur l’impact social du jeu dans la motivation des utilisateurs
finaux. Mais le jeu lui-même devra aussi évoluer, avec l’ajout de textures, de succès et donc d’entités.
Enfin, afin d’intégrer des succès sur le plus long terme, il serait intéressant de développer un jeu de
construction de maison dans le jeu, déjà amorcé avec l’entité «HouseEntity ».
Mémoire | BBWoE 2010
56
BIBLIOGRAPHIE
1. Theppkema, M. Adult obesity in Canada: measured height and weight. Nutrition: Findings from
the Canadian Community Health Survey, no. 1, Statistics Canada, 2008.
2. Manson, J.E., Skerrett, P.J., Greenland, P., and VanItallie, T.B. The escalating pandemics of
obesity and sedentary lifestyles: a call to action for clinicians. Archives of Internal Medicine, 164,
249-258, 2004.
3. Graf, C., Tokarski, W., Predel, H, Koch, B., and Dordel, S. Overweight and obesity in childhood –
how can physical activity help? Physical Education and Sport, 50, 54-59, 2006.
4. Annesi, J.J. Effects of minimal group promotion on cohesion and exercise adherence. Small
Group Research, 30(5), 542-557, 1999.
5. Heinzelmann, F., and Bagley, R. W. Response to physical activity programs and their effects on
health behavior. Public Health Reports, 85 (10), 905-911, 1970.
6. Hohepa, M., Schofield, G., and Kolt, G.S. Physical activity: what do high school students think?
Journal of Adolescent Health, 39, 328-336, 2006.
7. Yim, J. and Graham, T.C.N. Using games to increase exercise motivation. In Proceedings of the
Conference on Future Play, 166-173, 2007.
8. Wininger, S.R., and Pargman, D. Assessment of factors associated with exercise enjoyment.
Journal of Music Therapy, 40(1), 57-73, 2003.
9. Karageorghis, C.I., and Terry, P.C. The psychophysical effects of music in sport and exercise: a
review. Journal of Sport Behavior, 20(1), 54-69, 1997.
10. Copeland, B. L., and Franks, B. D. Effects of types and intensities of background music on
treadmill endurance. The Journal of Sports Medicine and Physical Fitness, 31(1), 100-103, 1991.
11. Elliott, D., Carr, S., and Savage, D. Effects of motivational music on work output and affective
responses during sub-maximal cycling of a standardized perceived intensity. Journal of Sport
Behavior, 27(2), 134-147, 2004.
12. Wales, D. N. The Effects of Tempo and Disposition in Music on Perceived Exertion, Brain Waves,
and Mood During Aerobic Exercise. Master's thesis, Pennsylvania State University, 1985.
13. Boutcher, S.H., and Trenske, M. The effects of sensory deprivation and music on perceived
exertion and affect during exercise. Journal of Sport and Exercise Psychology, 12(2), 167-176,
1990.
14. Steptoe, A., and Cox, S. Acute effects of aerobic exercise on mood. Health Psychology, 7(4), 329340, 1988.
Mémoire | BBWoE 2010
57
15. Patton, N. The influence of musical preference on the affective state, heart rate, and perceived
exertion ratings of participants in aerobic dance/exercise classes. Dissertation Abstracts
International, 52(8), 2858a, 1991.
16. Westcott, W. Role-model instructors. Fitness Management, 48-50, 1991.
17. Brehm, B.A. Successful Fitness Motivation Strategies, Human Kinetics Publishers, 2004.
18. Beauchamp, M.R., Carron, A.V., McCutcheon, S., and Harper, O. Older adults’ preferences for
exercising alone versus in groups: considering contextual congruence. Annals of Behavioral
Medicine, 33, 200-206, 2007.
19. Heinzelmann, F., and Bagley, R. W. Response to physical activity programs and their effects on
health behavior. Public Health Reports, 85 (10), 905-911, 1970.
20. Moran, A.P. Chapter 2: Motivation and goal-setting in sport. Sport and Exercise Psychology (1st
ed.), Routlege, 2004.
21. Hohepa, M., Schofield, G., and Kolt, G.S. Physical activity: what do high school students think?
Journal of Adolescent Health, 39, 328-336, 2006.
22. King, A.C., Kiernan, M., Oman, R.F., Kraemer, H.C., Hull, M., and Ahn, D. Can we identify who will
adhere to long-term physical activity? Signal detection methodology as a potential aid to clinical
decision making. Health Psychology, 16(4), 380-389, 1997.
23. Ransdell, L.B., Taylor, A., Oakland, D., Schmidt, J., Moyer-Mileur, L., and Shultz, B. Daughters and
mothers exercising together: effects of home- and community-based programs. Medicine and
Science in Sports and Exercise, 35(2), 286-296, 2003.
24. Heumer, G., Carlson, D., Kaligiri, S.H., Maheshwari, S., Hasan, W., Jung, B., and Schrader, A.
Paranoia Syndrome – a pervasive multiplayer game. International Symposium on Pervasive
Gaming Applications, 2006.
25. Laakso, S., and Laakso, M. Design of a body-driven multiplayer game system. Computers in
Entertainment, 4(4), 7, 2006.
26. Strömberg, H., Väätänen, A., and Räty, V. A group game played in interactive virtual space:
design and evaluation. Conference on Designing interactive Systems: Processes, Practices,
Methods, and Techniques, 56-63, 2002.
27. Wakkary, R., Hatala, M., Jiang, Y., Droumeva, M., and Hosseini, M. Making sense of group
interaction in an ambient intelligent environment for physical play. Proceedings of the
Conference on Tangible and Embedded interaction, 179-186, 2008.
28. Mueller, F., Gunner, S., Thorogood, A., O'Brien, S., and Wulf, V. Sports over a distance. Personal
and Ubiquitous Computing, 633-645, 2007.
29. Strömberg, H., Väätänen, A., and Räty, V. A group game played in interactive virtual space:
design and evaluation. Conference on Designing interactive Systems: Processes, Practices,
Methods, and Techniques, 56-63, 2002.
Mémoire | BBWoE 2010
58
30. de Oliveira, R., and Oliver, N. TripleBeat: enhancing exercise performance with persuasion.
MobileHCI, 255-264, 2008.
31. Pollock, M., Gaesser, G., Butcher, J., Despres, J, Dishman, R., Franklin, B., and Garber, C. ACSM
position stand: the recommended quantity and quality of exercise for developing and
maintaining cardiorespiratory and muscular fitness, and flexibility in healthy adults. Medicine &
Science in Sports and Exercise, 30(6), 975-991, 1998.
32. Stach, T. (2010) Design aspects of multilayer exergames. /Technical Report 2010-571, School of
Computing Queen's University/.Link: http://research.cs.queensu.ca/TechReports/Reports/2010571.pdf
33. Gamespot DKC, http://www.gamespot.com/gba/action/donkeykongcountry/review.html
Mémoire | BBWoE 2010
59
GLOSSAIRE
ADSL : Asymmetric Digital Subscriber Line, est une technologie réseau qui permet d’augmenter le
spectre électrique utilisé sur les lignes téléphonique conventionnelles afin d’augmenter la bande
passante disponible.
AGILE : méthode de développement privilégiant le développement rapide, les contacts fréquents avec le
client incluant une démonstration concrète.
BD : (Base de Données). Une structure logicielle qui a été pensée pour stocker une grande quantité de
données tout en optimisant son temps d’accès au maximum. L’accès à ces informations est souvent fait
à l’aide d’un langage spécifique (SQL pour ce projet).
C# : langage de programmation orienté objet de Microsoft.
Exergame : jeu vidéo qui nécessite une activité physique du joueur.
Feedback : retour d’un système à un utilisateur des suites d’une action qu’il a accomplie.
HTTP : (Hypertext Transfer Protocol). C’est un protocole réseau qui est la base du World Wide Web. On
utilise ce protocole à chaque fois que l’on se connecte à internet à l’aide d’un navigateur.
IDE : Integrated Development Environment, Interface WIMP qui assiste le développeur lors de son
travail.
LiaV : Life Is A Village est un exergame basé sur le moteur open source OGRE. Ce projet de l’EQUIS
laboratory est réutilisé dans quasiment tous les projets du laboratoire qui font intervenir de la 3D.
Microsoft : multi-nationale, créatrice de Windows ou plus récemment de la Xbox.
MySQL : système de gestion de base de données, un des plus répandus au monde.
MVC : Patron de conception signifiant Modèle Vue Contrôleur.
PCGamerBike : nom donné au modèle du vélo électronique utilisé pour le projet, semblable à un Tunturi
Bike mais quasi-transportable.
Php : langage de script libre très répandu sur internet qui permet de faire générer des pages web html
par un serveur distant. Ce langage s’interface facilement avec d’autres technologies web comme le
JavaScript ou MySQL.
Plug-in : module externe complétant une application hôte en accroissant ses fonctionnalités.
Tunturi Bike : l’EQUIS laboratory possède deux de ces vélos d’appartement modifiés. Ils permettent,
durant un effort physique, d’envoyer des données à un ordinateur et ainsi de récupérer le nombre de
tours par minute, le nombre de Watt produit etc.
Mémoire | BBWoE 2010
60
UML : Unified Modeling Language, il s’agit d’un langage de modélisation graphique de l’architecture
d’un logiciel.
Visual Studio : IDE de Microsoft, il permet via un plug-in de développer des jeux XNA.
Xbox Live : plateforme réseau qui distribue du contenu multimédia et des jeux vidéo pour la console de
Microsoft (Xbox 360).
Xbox 360 : console de jeu nouvelle génération, elle peut exécuter des applications/jeux XNA.
XNA : une API de Microsoft d’aide au développement efficace de jeux vidéo. Souvent utilisé dans le
prototypage de mini-jeux ou le développement de jeux vidéo indépendant pour la plateforme Xbox Live.
WIMP : Window Icon Menu Pointing. Paradigme d’interaction utilisé par des applications depuis environ
une trentaine d’années (exemple : l’Explorer Windows, la suite Microsoft Office ou encore les interfaces
KDE ou Gnome que l’on retrouve sous Linux).
Mémoire | BBWoE 2010
61
ANNEXES
1. LES TEXTURES DE BBWOE
Cette annexe présente les textures qui ont été dessinées par Chris Oliver pour le projet. Elle inclut
également quelques textures qui persistent dans BBWoE depuis ses débuts, comme celles du tank. Elle
n’est pas une liste exhaustive de toutes les textures de BBWoE mais plutôt un aperçu qui permet d’avoir
une idée assez précise de l’identité graphique du jeu.
A) AVATARS
VOITURES
MONOCYLE
Mémoire | BBWoE 2010
62
TANK
LES FANTOMES
LES EFFETS
B) SURFACES
Mémoire | BBWoE 2010
63
C) LES OBJETS DU MONDE
Mémoire | BBWoE 2010
64
Mémoire | BBWoE 2010
65
D) LA MAISON
Mémoire | BBWoE 2010
66
2. RAPPORT DE BRAINSTORMING
A) PREMIERE REUNION
What? (Aim)
The inputs techniques use since the prototype development has been choose arbitrary, so we need a
brainstorming session to give new (different) ideas.
Where?
This brainstorming takes place in the new meeting room of the EQUIS: the garden.
Who?
Actors:
Eril Berkok, undergraduate student working in BBWoE project;
Andrew Heard, undergraduate student;
Claire Joly, Master HCI student;
Louis Noval, Master HCI student.
When?
Date: Thursday 20th May 2010
Why?
See next.
INTRODUCTION
The meetings before this first brainstorming generates sometimes few ideas, but have not been
organize for that. Especially project meetings, where we decide what kind of input we want to use. After
a lot of decision takes because the Xbox 360 pad is use like that in 90 % of the cases. We want to have a
real user center input method. Before this meeting: the bike was use to move the avatar: if you pedaling
clockwise, the avatar go forward (if avatar facing forward). Contrary, if you pedaling counter-clockwise,
the avatar go backward (if you facing forward). The player was able to change avatar’s direction by using
pad's left thrumstick, left or right for facing left or right. The other actions of the avatar are:
Brake using B button;
Use when the avatar touch the object using X button;
Jump when the jump progress bar is full, using A button;
Zooming in/out by pressing the crossbar pad up or down;
The last functionality add to the avatar is the rotation management. First the user can stabilize the
rotation by pressing the Use button when the avatar doesn’t touch something. But I had other buttons
Mémoire | BBWoE 2010
67
for directly rotate the avatar clock wisely and counter-clock wisely. This buttons are: the triggers (left or
right for clocker or counter-clockwise rotation). The buttons upper this triggers for the same using easily
to try on user if the function can be tested on real time).
All of us have already played at BBWoE, but the improvement of the game varies in our mind: Andrew
has been play just few hours before the meetings, Claire play BBWoE 2 weeks later. She doesn’t know all
the changing about the rotation. But actors don't remember all the controls.
GENERATED IDEAS
After an introduction in a brief talk about our point of view on how the brainstorming works, the idea
generation and discuss start.
Why using the pedals for moving the avatar, pedals are not better to use for stabilize the avatar in the
air or using pedaling for moving and for stabilizing when you are in the air.
The actors think that the triggers are a good solution for this rotation problem too.
The changing of avatar direction can be simple by using a simple button (Y should be just perfect for
that).
After discussion about how the use function works for now, Claire asks why we not choose to take right
thumbstick direction + press it to give a specific direction and intensity to the force. This should be use in
addition to the simple way that we find to do that (press just a button).
About the zoom, Andrew talks why we don't take RB and LB for managing the zoom (buttons upper the
triggers).
After this meeting, we start a discussion about the hypothetic future of this project, and I talk about the
nick idea: the climbing. Eril in joking said "like the batman grappling hook?” This idea can be interesting
in following project improvements.
CONCLUSION
This meeting has two points of view about this conclusion: In one hand we don't have generated a lot of
real ideas. But in another, a lot of idea generated is near already implemented function. The strategy to
assign buttons at already using function seems to pay.
B) DEUXIÈME RÉUNION
What? (Aim)
A start of thinking about track editor have to be done before the next sprint, we need some ideas from
different people on this part of the game.
Where?
Mémoire | BBWoE 2010
68
This brainstorming takes place the main room of EQUIS lab.
Who?
Actors:
Eril Berkok, undergraduate student working in BBWoE project;
Andrew Heard undergraduate student;
Claire Joly, Master HCI student;
Louis Noval, Master HCI student.
When?
Date: Wednesday 26th May 2010
Why?
See next.
INTRODUCTION
This track editor is not really important for our user testing, in first time. Because for longer user testing
we have to add a good gameplay for keep the player in the game enough time for his healthy. So this
first version of track editor doesn’t really aim a good design. Some features should probably not
implement, but we want a quick, basic and easy to use editor. The idea is to add a second iterate to
really take the time for developing this editor.
GENERATED IDEAS
After an introduction in a brief talk about our point of view of why we do this meeting, the ideas
generation and discuss start:
Prompt the track editor;
We can start the editor during the game by pressing the big X button (in the middle of the pad);
We can use Back button too for that;
This action does the game in pause for the player;
Directly access by a game menu;
Access to the different shapes, different sprites;
Using Dpad combine with a basic 2D menu presenting different items;
During this action, you can change sprite apply on the object using LB or RB;
Or by pressing LB + a direction with the left thrumbstick;
Another idea is using two menus (one for the textures, and another for the entities);
Another idea about these menus is using pie menu: LB you pop a menu entity, RB you pop a texture
menu.
Editing the size of shape:
You can change the size of the shape after his selection;
Mémoire | BBWoE 2010
69
Or, you can change the size when you have selected one;
For changing this size, using right thrumbstick seems to be the simple way. You increase the width by
moving the stick right, reduce by left. You increase the height by moving the stick up, reduce by down.
Actions based on buttons:
(A) Pick up something;
(X)(When you have nothing already selected) Pick up something (more closely than the original
gameplay);
(X) (When you have something selected) apply the modification and unselect you object;
(B) Undo operation on current object if you have selected one, if you are not, undo last operation;
(A) Start a physics testing;
Dpad for check and edit physics properties of the current object (Y button is free and can be use to
prompt this menu).
CONCLUSION
All this idea is really interesting, and gives new orientations on a more precise design. But because we
probably will develop a basic editor, we have to refine this idea to keep the most simple and remove all
too complex functionality. After this, we should bring some interaction problem, and need to find new
ways. This meeting reaches this simple goal.
C) TROISIÈME RÉUNION
What? (Aim)
Reflect about how to split houses for easily personalizes them. How to re-use as less as pieces of terrain
possible for making a nice world? What kind of terrain you imagine in this game?
Where?
This brainstorming takes place the garden of the EQUIS lab.
Who?
Actors:
Eril Berkok, undergraduate student working in BBWoE project;
Claire Joly, Master HCI student;
Louis Noval, Master HCI student.
When?
Date: Monday 26th July 2010
Why?
Mémoire | BBWoE 2010
70
See next.
INTRODUCTION
The main goal of this meeting is reduce de number of different sprites that we need on the game. This
number can be reduce by factorize quite similar sprites (like with the houses) or by re-using the same
texture lot of time (but in this case we want to hide this to the user).
GENERATED IDEAS
After an introduction in a brief talk about our point of view of why we do this meeting, the ideas
generation and discuss start.
First we start to discuss about the houses:
We can split the houses by isolated each scenery pieces;
Very flexible, higher level of tuning;
Contrary, we can isolate houses stairs by stairs;
Very simple to use, the most Lego like?
A mix: An atom for each stairs (a piece of wall + window) for generating building in height AND in Width;
A real mix before the two other solutions;
After we go on the different surfaces: (already exist surfaces that work: ice/wood/grass)
You can add this kind of surfaces:
Pavement (road);
Stone;
Mud;
Sand/gravel;
Steel -> girder.
For avoid having always the same details that user see by traveling the world:
You can adding scenery object on top of this surfaces (like in sonic the hedgehog);
Changing the size in Width can be a solution for re-using textures.
CONCLUSION
The solution of splitting houses stairs by stairs are really simple to use, and you can add stairs for long
term achievement easily. But after discuss with Nick, it seems not enough flexible for further
developments of the game. It's the reason why we will take the opposite solution; even if we will not
have enough time for implement it completely. Moreover these little pieces can be collect by the player
easily in different parts of the word. For the new ground, I will give to Chris this different surfaces and
ask him which ones should be the best in term of visual effect (depending of what he want) This surface
will have maximum details remove for be able to add it in a second time directly in the XML file of the
"level".
Mémoire | BBWoE 2010
71
3. TEST UTILISATEURS
Remarque : ces tests ont portés sur les utilisateurs dis finaux, donc le public qui est censé jouer avec le
prototype et pas le modifier.
A) FIRST USER TEST
This informal test is the first of a probably long series. The goal of this test is multiple:
Have different feedback on specific functionality;
About the gamepad thumbstick use to change direction;
About the feedback of the avatar when you move;
About what you feel when you use the bike on ice or other different ground?
Give opinion about that functionality, and more generally;
Present what I have done at my colleagues since I'm at EQUIS lab.
This test phase has been sharing between two days, the first only the user A test, cause to not enough
time. Theses feedbacks have been important, and easy to fix for many of them.
USER A
Ice not enough slicing;
Brakes not enough efficient;
Pad to change direction sometime don't take new direction;
A weird bug of direction, sometime the upper part of the tank doesn’t turn, but the tank goes in other
direction;
Not enough difference between wood and grass.
All these problems (expect the bug of direction) have been solving in few minutes. The direction trouble
have been modify next morning. The next day I ask to the same user (A) to test again on the new version
of the game.
I have forgotten to add the brake on the bike...
Object on ice have a better behavior;
But the bike has a feedback not clear cause by the symmetrical of his seat;
The using of pedals clockwise for break is a good think;
The wheel of the tank is sometimes too close. Why do not solve this with stack wheel?
The problem of asymmetrical seat should be solving when I will add an avatar on the seat. The problem
of wheel too close have been solve by modify directly the position of the wheel.
After that, user B and C test the game.
USER B
At high speed, you don't feel the difference between the different surfaces;
When you pedaling fast, the tank have too much speed (all the avatar is deform);
When you press twice left pad, your avatar is completely loose, you can't track them with the camera;
USER C
Mémoire | BBWoE 2010
72
Not enough difference between the surfaces;
The tank feedback is better that the unicycle feedback. Unicycle has to rotate to be more fun.
For the user B, the problem of camera has been solving first, just a value to store before erase it. The
difficulty to feel the difference at high speed can be cause by a too small world to see different distance
to stop the avatar. Future tests will check this hypothesis.
For the user C, the problem of not enough difference between different surfaces has to be re testing at
next test. Because I already change variables, and maybe different user have different feelings. The
opinion about a better feedback for the tank than for the unicycle have already is mention by user A. I
probably add rotation to the unicycle when I solve the problem of how to keep it on the wheel.
All the other problems have been solving at the end of these tests.
B) SECOND USER TEST
You will have to test a simple level, with 3 type of avatar. I want feedback about the game, but I prefer
focus about gameplay around the avatar. So you will perform the test and respond at simples questions
next. I take notes in parallels of our discussion during the test or after.
User A: (Hardcore gamer)
Order of test: Unicycle Tank Beetle
User B: (Gamer)
Order of test: Tank Beetle Unicycle
User C: (None gamer)
Order of test: Beetle Unicycle Tank
USER A
Do you enjoy playing BBWoE, depending on which avatar you have?
Unicycle:
Seams better than last time;
Balancing is good -> "quite perfect".
Beetle:
Not enough rotation;
The car is easily stacked on the back.
Tank:
In floating platform, too much to do at the same time (using function maybe too complex to handle)
About the control of theses avatars, do you have any remarks, advises?
Feels better;
Rotation is great;
Smoke effect is a good idea of feedback, but the picture is not.
Do you think that it’s adapting control for this kind of game (platformer, multiplayer, exergame)?
Yeah, but the jump bar is useless...
If you have to play again at BBWoE, what avatar you probably prefer to use? Why?
Mémoire | BBWoE 2010
73
Unicycle, because the balancing is fun to manage.
If we decide to create a fourth avatar, what kind of think that can be?
Motorcycle (like X-Moto) or a simple wheel.
USER B
Do you enjoy playing BBWoE, depending on which avatar you have?
Unicycle:
Harder than tank;
But fun.
Beetle:
Too much bounce when you pedaling faster;
Need some improve about wheels behaviors (adding grip?).
Tank:
Control feels simpler than the last time;
Tank seams refine.
Note: Understanding how the triggers (rotation) work in 1 minute.
About the control of theses avatars, do you have any remarks, advises?
The rotation using the triggers seams intuitive;
The smoke is cool;
A lot more fun this time.
Do you think that it’s adapting control for this kind of game (platformer, multiplayer, exergame)?
If you have to play again at BBWoE, what avatar you probably prefer to use? Why?
Tank, it's the easiest to play.
If we decide to create fourth avatar, what kind of think that can be?
Don’t know.
USER C
Do you enjoy playing BBWoE, depending on which avatar you have?
Unicycle:
Have to keep your avatar straight -> increase interest;
More difficult, but more fun;
Quite natural.
Beetle:
Too light?
Wheels too much slicy;
Why the car jump when I try to go fast? (Bad behavior)
Keep the speed too much time;
Weird position of the car body compare to the wheels.
Tank:
Much easier;
Seams a tank behavior (Weight + chain);
Too high jump?
Pleasant;
Need to increase the Weight?
About the control of theses avatars, do you have any remarks, advises?
Mémoire | BBWoE 2010
74
I think it can be better to inverse thrumbstick and triggers...
The smoke is good effect; maybe a darker texture can increase the realism?
Do you think that it’s adapting control for this kind of game (platformer, multiplayer, exergame)?
I don’t know.
If you have to play again at BBWoE, what avatar you probably prefer to use? Why?
Tank because it's easier to play, better control. But probably the Unicycle when I will be better.
If we decide to create fourth avatar, what kind of think that can be?
3 avatars seem enough …
4. ARCHITECTURE CLIENT
This is a view of different classes in BBWoE:
A) OVERVIEW
Mémoire | BBWoE 2010
75
The next points will introduce contains of this classes.
MOTHERCLASS
For the moment this class is useless, just for editing screen resolution. But the idea is to keep this class
to add easily further functions.
BBWOE
Mémoire | BBWoE 2010
76
The main class of BBWoE project, in this class call loading function in LoadContent() method, update
data in Update() loop and call few object to draw in Draw() loop.
CURRENTGAME
This class has to keep all object and there palette to draw in memory. It’s use to call all the JANUS
communication for loading EntityStream and GhostStream. You can comment or uncomment #online
and #offline if you want to switch the game between these modes.
CURRENTPHYSICSPROPERTIES AND BACKGROUNDTEXTURES
CurrentPhysicsProperties will store all the physics properties of the current place, it’s the same thing for
BackgroundTextures, and the feedback of another texturing should be using to differentiate physics
properties like gravity.
GAMEENTITY
This class is generic class of an object, or an avatar.
OTHER *ENTITY CLASSES
This is all object of the world, with generic definition to be easily reused or adapt to the context. You
have just to call <name>Entity(<param1>,<param2>,...), add this object to the Contains. See object
hierarchy part for more details.
AVATAR
This is a generic class of the already implemented avatar: Monocycle and tank. See object hierarchy part
for more details.
OTHER CLASSES
CAMERA 2D
Manage camera gesture, zoom, and other properties relatives of the view (object is in the camera's
field...).
INPUTCONTROL
Manage all key, pad, and Ipower event, change values of global variables in the avatar file.
INPUTHELPER
Mémoire | BBWoE 2010
77
Manage input for change camera properties, this file will probably be deleting, it depends if we want a
control of the camera by the user, and if the user prefers that too.
XMLREADER
A class to easily create a world using a XML files. In this file the program create new entity after there
loading.
B) FOCUS ON THE OBJECT HIERARCHY
This is a view of the objects classes:
GAMEENTITY
This class is a generic class that contains generic approach for each object: a position, a size, a mass ...
The applyPower() method should move easily an object using the avatar and his use function.
THE AVATAR
The avatar class is a specific class inherits from GameEntity. So the main difference is an orientation of
the avatar. This orientation as type of enumeration Orientation: Up, Down, Left, Right. The camera will
track the object call Shape1 include in our avatar.
MONOCYCLEENTITY & TANKENTITY
Real implementation of each avatar: Loading of bodies, textures, and geometric in LoadContent()
Drawing of this bodies in the Draw() method.
*ENTITY
Mémoire | BBWoE 2010
78
Each <objectName>Entity class is use implement object: Loading of bodies, textures, and geometric in
LoadContent() Drawing of this bodies in the Draw() method.
Like the avatar entities, the difference between two objects can be important. For the moment the most
complex (unique) is the BeltEntity. But BBWoE should be more and more complex
C) FOCUS ON THE LOADING PHASE
Before the game is able to run, the program has to load. More the project progress, more this phase has
to be complex. It's the reason why I try to describe how does it works. Like the first diagram, the first
class to be call when the game start is BBWoE (MotherClass is useless for the moment).
This diagram tries to present the BBWoE classes from a loading point of view. He as to be read from up
to down:
Mémoire | BBWoE 2010
79
The BBWoE diagram call BackgroundTextures class to have a list of possible background. Next, BBWoE
create an instance of CurrentGame. This class will use a class call Palette to have a texture name for
each name of object. It's the call of an Avatar class (TankEntity, UnicycleEntity or BeetleEntity) by
CurrentGame who start the real loading of object. This wills LoadContent of the object. The last step for
CurrentGame is calling of ReaderXML to load the other entire game object. After that, all the
LoadContent() method have been initialize, the game can start to run.
D) FOCUS ON GAMEENTITIES PROPERTIES
Mémoire | BBWoE 2010
80
These properties are sum up in level.xml. For example, this is a GroundEntity:
<ground
id="1" (int, range: [1,oo[)
texture="box" (string)
friction="0.8" (float, range: ]0,+oo[)
restitution="0.1" (float, range: ]0,+oo[)
mass="100" (int, range: ]0,+oo[)
angle="1" (float, range: ]-oo,+oo[, but between ]-Pi,Pi[ is enough)
heightWidth="new Vector2(1000, 100)" (string, with int between ]-oo,+oo[)/> startPos="new Vector2(960, -700)" (string, with int between ]-oo,+oo[)
achievement="false" (bool)
gravityless="true"> (bool)
</ground>
Note: You can write the vector2 with this shorter format: heightWidth="1000,100"
All the gameEntities use this Entry format for the moment (except BeltEntity and StartStopEntity).
The Id property is just use for make easily de difference between two object.
<belt
id="1"
texture="belt"
friction="0.8"
restitution="0.1"
mass="100"
angle="0"
size="150"
startPos="new Vector2(4400, -500)"
achievement="false"
speed="100">
</belt>
For the belt I should add a second texture parameter.
E) HOW THE AVATARS WORKS?
An assembly of different bodies has created each avatar. Some bodies as implemented as Geom in to
add collision detection (see Farseer Physics manual for more information). Even if this picture uses old
avatar sprites, all the physics still true. A picture to illustrate with a body view of each avatar:
Mémoire | BBWoE 2010
81
About the legend:
Motion: Wheels where the torque force is apply when you pedaling.
Rotate: When you press a rotate button, the torque force is applied on this body.
Collision: Theses objects have a listener to check if something is in contact (for detect object to use for
example).
Mémoire | BBWoE 2010
82
StackBack: This body (call UpBody) is use to detect when the avatar is stack on the back after a Big Bad
Jump.
Note: Even if the sprites of the Unicycle and the Beetle have been changed, the objects for the physics
engine didn't change at all. So this picture still completely true at the end of the project, like others
parts.
5. DOCUMENTATION DEVELOPPEUR SUPPLEMENTAIRE
A) HOW THE ENTITIES WORKS?
As you can see on these pages BBWoE use a generic system of entities. Each entity use is own bunch of
methods:
LoadContent() is for initiate all the content:
The spritebatch for drawing objects later
Each textures that you need for this entity
The origin for align the texture on the body
The body (the physics view of your entity) (read [physics] for more details)
The geom in some cases (the object use by farseer for detect collisions)
Adding of the body or the geom in the simulator (the geom include the body, so add the "bigger" that
you can).
Adding the event for Enter and Exit method on the object, don't forget to add this event on the
components list.
Action method will be call when the user press the use button and touch the object at the same time.
You have the time and the strength of this action in parameter. You can modify this parameter for each
entity in the game directly in CurrentGame.cs -> OnWheelCollision([..]) method.
Draw(GameTime gT) method is use for draw the specific entity on the screen. This drawing have to be
between a call of spriteBatch.Begin([..]) and a spriteBatch.End(). The SpriteBatch.Begin([..]) contains
different parameters:
SpriteBlendMode is use for apply different treatment to the transparent part of textures.
SpriteSortMode is for modify the order of drawing textures for this specific entity
SaveStateMode is for avoid to erase the older textures after each new drawings
((MotherClass)_game).Camera.CameraMatrix is for using the Camera2D class
For each entity, you have to add this function for keep descent performance:
Camera.ShouldDraw(Sprite, Position, Origin, Angle).
Mémoire | BBWoE 2010
83
You can override Enter() and Exit() method for add a specific behavior to your entity when an avatar go
in or out.
B)
MOVING BBWOE FROM COMPUTER TO COMPUTER
Assuming you're transferring from Eril's computer, you should have the following:
BBWOE Server:
BBWOE Server itself;
MySQL Server 5.1;
bbwoe_entities database contained in MySQL Server 5.1;
MySQL Connector Net 6.2.3;
Windows XP or newer;
Visual Studio 2008.
BBWOE Client:
BBWOE Client itself;
Windows XP or newer;
Visual Studio 2008;
XNA 3.1.
Procedure to move:
On the computer containing the database, first go to cmd.exe (in Windows 7 on the search bar, type in
command and it should show up).
Here you should have a black command prompt. What you need to do is perform what is referred to as
an SQL dump. This will copy the schema and data of the tables of the database into a convenient and
portable file.
To do this, type in this command:
mysqldump -u(USERNAME) -p(PASSWORD) (DATABASENAME) > (PATH).sql
Anything in and including the brackets is to be replaced with the appropriate data. Typically the
USERNAME will be root, and the PASSWORD will be whatever you set it to when you first installed
MySQL Server. DATABASENAME is the name of the database that you wish to dump (in this case,
bbwoe_entities). PATH is simply the path to where you want to store the dump. Mine was this:
C:\SQLDump\bbwoe_entities.sql
Now that you have this file, you can copy and paste, or move, wherever you want just as you would any
other file. Remember that this only stores the schema and data of the tables, not the actual database
into which it'll be stored;
Mémoire | BBWoE 2010
84
Move the SQL dump to whichever computer you'd like. Make sure MySQL Server 5.1 is also installed and
setup according to how you'd like it;
To import the database, return to cmd.exe (same way as it was done in the first step) and type in the
following command:
mysql -u(USERNAME) -p(PASSWORD) (DATABASENAME) < (PATH).sql
All the same information mentioned in step 3 applies here. Make sure that DATABASE is already created
in the MySQL server, since the dump will not create that. PATH is where you stored the dump. Also keep
in mind the command here is mysql rather than mysqldump. This is a mistake that I made that cost me
quite some time, and I hope that you, my successor, will not also make this mistake.
Install MySQL Connector Net 6.2.3. This will enable us to connect our MySQL database to Microsoft
Visual Studio;
Now you can bring the server and client components of the BBWOE program over to this computer.
Open the server project;
In Microsoft Visual Studio 2008, you need to find your way to "Connect to Database" (may be under a
different name in different versions, "Add Data Source" was also another name I've seen). This can be
found under the Tools tab;
Select MySQL database (this will show up now that the MySQL connector is installed);
Enter information, and test connection. Name of the server will probably be localhost, user id will
probably be root. When this succeeds, simply select bbwoe_entities from the drop box. Now the
program can see the database;
You are done! Simply launch the server, and then the client.
Also make sure that JANUS' StreamServer is begun before you start the server/client. Currently the
server sends a startup command to it, but you needs to make sure it are pointing to the right place. It's a
line in the Program.cs class in the server component. Make sure it's referring to a StreamServer.exe that
actually exists.
C) TINY THINGS THAT CAN CREATE TROUBLES
All the entities that I’ve develop works, but should not support all possible entry values.
For example the BeltEntity don't support different angles value. You have the same problem with the
size of entities that you can modify, if a ground entity is too large, you will have a part of the entity
invisible on the screen.
For the moment BBWoE use colors for appears action on the avatar on object, but we need to change
that by choosing better color than green and red, or by finding another feedback.
Mémoire | BBWoE 2010
85
You can switch between avatars by using the start button; we have to create a menu for choosing the
avatar before the game start (or another thing);
The XML parser use for BBWoE is not perfect and have to be improves: Lot's of entities uses useless
parameters or unperfected names;
The using of a 2nd thread for loading the game improve the performance of the online version of the
game, however the game still have tiny freeze cause by the using of the component list by both of this
threads;
The server support up to 10 clients at the same time, you can improve this number by simply change
numberClient variable in the client AND in the server.
6. LE WIKI
Les annexes 2, 3, 4, 5 peuvent être trouvées
http://dundee.cs.queensu.ca/wiki/index.php/BBWoE
sur
le
wiki
à
cette
adresse :
Les annexes ont le même contenu mais cependant, le wiki peut avoir été mis à jour depuis son
intégration dans le rapport.
7. PRESENTATION DU PROJET
Dans la liste des livrables à fournir, il est demandé une vidéo du projet ainsi qu’un texte général de
présentation du projet. Vous trouverez ces documents sur le site du laboratoire, à cette adresse :
http://equis.cs.queensu.ca/?page_id=448
8. ETAT DE L’ART
A) LIFE IS A VILLAGE
This project aimed to create a full 3D game based on the famous open source engine OGRE. The game
makes use of a combination of an electronic bike and a game pad for player input.
GAMEPLAY
The player take place in a large terrain, compose by mountains, valleys, trees. By pedaling, the avatar
explores the landscape to find a location for this village. After this first step, the player has to seek
resources in this new world. You can harvest wood near forest, stone near to cliffs. Because you start
with just one villager, you can harvest just one resource at the same time, but by adding additional
building, you increase your harvest capacity. You can access to greater resources on harder place to
reach (top of mountains for example). After developing your village a little bit, you have access to
advanced buildings, scenery structures for your village for example. But this game is made to be play on
just a single session, so players can save the game state, and later pick up.
Mémoire | BBWoE 2010
86
The basic controls are: You pedaling for going forward, faster you pedaling faster you go. With your pad
you can brake, steering, and many other actions. For example, in the game when you want harvest a
new resource like wood: First you have to be close enough for pop-up a message that ask you if you
want to harvest this wood. Next you press "1" button on the pad (same position than X on Xbox 360
pad) to validate your action.
But you can play this game with a lot of different inputs:
IN NORMAL MODE
Tunturi bike:
Pedaling forward for going forward (faster you pedaling faster you go);
You have a force-feedback depending the difficulty of the terrain;
Pedaling backward just do nothing.
With the mouse you can moving your avatar:
Left click: walk forwards;
Right click: brake.
With the pad:
Left thumbstick control moving forwards and braking;
Right thumbstick control the camera view (up and down) and turns the avatar (left and right);
Button number 2 and the two right triggers control the brake;
Button number 3 and 4 control gear down and up;
Button number 1 is action button, for cut down trees for example;
Button number 10 (kind of start button) inserts a building (switch to building insert mode).
With the keyboard:
Arrow UP and W move the avatar forwards;
Arrow DOWN and S apply the brake;
LEFT and RIGHT and A and D turn the avatar left and right;
ESCAPE exits the program;
PAGE UP / PAGE DOWN shift the avatar's "gears" up and down;
ENTER is the action button;
HOME and END pitch the camera up and down;
PRINT SCREEN takes a screenshot image and saves it to the current working directory;
B inserts a building (switch to building insert mode).
IN BUILDING MODE
With the pad:
Right thumbstick positions the building;
Button number 3 and 4 rotate the building left and right;
Mémoire | BBWoE 2010
87
Button number 2 is used to cancel building insert;
Button number 10 button confirms the building insert;
With the keyboard:
Arrow keys and WADS move the building;
B inserts the building;
DEL cancels the building insert;
Q and E rotate the building.
Start of Analysis:
First, in this game you running your avatar when you pedaling. The parallel is not perfect but works; the
immersion seams better than just press a button for walking (but need to be tested on people for check
if everybody as same sensibility). Another good point is that: you need to move a lot in this game
because you want to discover new resources, new landscape; so this increases the efficiency of the
exercise. Forgive motivation to the player, the game use a combine of short term and long-term goals.
You have to searching for resources (short term) and after enough resources you can build a new type of
building (long term). For the controls, the good point is that the game supports a lot of different
peripherals (pad, keyboard, mouse, joystick, Tunturi bike). But it's hard to remember all shortcuts for
each state. Another problem is the lack of consistency between normal and building state: the button
for gear Up and Down is use for rotate Left or Right the building for example. The player discover the
control each time he get stack, his try different button until something append on the screen.
Even if the HCI have to be improving, this exergame have been developing to be re-used. So the most
important is a architecture that can be modify for create new tests/games faster as possible. This is
harder to see, but LiaV is use in more than 10 projects in the lab like Frozen Hunter treasure or Heart
Burn (2 exergames). And I don't know one of these users complain about bad code readability or
something like that.
B) PERSISTENT OR ASYNCHRONOUS GAMEPLAY (IN MULTIPLAYER GAME)
Remarque : cet état de l’art n’a pas été terminé car les recherches n’ont pas été suffisamment utiles au
projet pour mériter d’y consacrer plus de temps. Il m’a cependant permis de découvrir ce que sont les
jeux multi-joueurs asynchrone, même si je n’ai pas pris le temps de rédiger cette partie vu que BBWoE
n’est pas encore assez mûr pour pouvoir y intégrer ce genre de gameplay.
INTRODUCTION
With the rising popularity of MMORPG like World of Warcraft (Blizzard Entertainment, 2004), the
MMORPG style is the kind of game that we think when we thinking about multiplayer games. But this
kind of game still Hardcore gamer oriented (even if WoW is one of the most casual MMORPG game).
This paper tries to present, in the first hand, main idea of persistent world oriented, like MMORPG, and
other, in the other, asynchronous game. In conclusion we will present few games base on persistent
world combine with asynchronous communication.
Mémoire | BBWoE 2010
88
PERSISTENT (SYNCHRONOUS) WORLD
A BIT OF "HISTORY"
You can find elements of actual persistence game in older game like Trade Wars (1984) or Wasteland
(1988) but it's the advent of MMORPG that really express what a persistent world can be.
We cannot present MMORPG without explain what is MUD (Multi-User Dungeon). It was the first
adventure game to support multiple users. The player was to connect to a server using the Local
network of the university, and answer to the Dungeon Master questions by basics worlds (yes, no, leap,
go in ...).Screenshot of recent version of MUD:
MUD based on Dungeon & Dragon (D&D), is the precursor of nowadays MMORPG. (Multi-User
Dungeon). You can find a lot a game designers or developers influence by MUD (Interview Brad
McQuaid, Interview Brian Green). But the first graphical MORPG was Neverwinter Nights (First Graphical
Online RPG) This game start with server who can connect 50 players on the same game in 1991. Internet
connection costs dropped, and improvement of server (500 players on a same server in 1995) created
hourly player charge decline. This explains a part of the constant improvement of the players’ number
between 1991 and 1997 July (115000 players) the date where the game was stop. Ultima Online
released in 1997 was set in the already popular Ultima universe. It was also more involved, complex
than many of its predecessors. Ultima online is now credited with popularizing the genre (IGN Ultima
Online review). Everquest launched in 1999 was the most successful MMORPG in the U.S for five years
and was the basis for 16 expansions. Since Everquest, the genre continue to progress with new
gameplay mechanism like Realm vs Realm (RvR) in Dark Age of Camelot or free to play MMO who
generating revenue by selling in-game enhancements.
Mémoire | BBWoE 2010
89
NOWADAYS
Persistent worlds can be simulated in offline games, such as in the Animal Crossing series. Even though
nothing happens while the game is off (due to the obvious technical constraint), the illusion of
persistence is created by advancing events as soon as the game is turned on. The game generates events
that could have happened during the real-world time in which the game was inactive.
Nowadays, World of Warcraft are the most play MMORPG around the world, about 11.5 Millions
(Blizzard Press Release 2008). You find in WoW a mix of gameplay innovation since Ultima Online.
Players have to improve abilities of our avatar. For do that, the avatar have to win some experience
points, stuff, gold. You have many ways to interact with the world: you can move your avatar using your
keyboard and your mouse, you can talk with the avatar around you using a chan include in the game
(you can call avatar near you, but you can talk in a specific chan if you want, your group chan, or guilde
chan for example). When you playing with your guild you have to use VOIP software to directly talk with
your ally (mumble, teamspeak or ventrilo). But there is asynchronous way to discuss in WoW. You can
sell or buy stuff like weapons using a specific auction market in the game. If you win an auction, you
receive your object directly by Mail in few hours. But you can use this Mail system to write letter to
other character, or send objects.
<Talk about the non online persistent world Animal crossing. >
But MMORPG is not the only nowadays game that let player interacting in a persistent virtual world.
Animal crossing is one of these games: You playing an animal that living in a town filled with cartoonish
animal characters. You can interact with them for buying house, work, trade, and personalize their
environment. The game is already synchronized on the real world: If you playing the night the game will
be darker that during the day.
ASYNCHRONOUS GAMEPLAY
Diplomacy and Play-By-Mail
"The most successful game for this format is clearly Diplomacy" (Gamasutra asynchronicity)
Describe Diplomacy and the problems
Describe why Play-my-Mail is a good solution.
Battlemail: Play-By-Email
Describe how battlemail kung-fu work
Conclude about this game
The first version of Animal Crossing ran on a Nintendo GameCube (GC) support asynchronous multi-play
with up to four players. This console support synchronous gameplay, its deliberate designers choice to
let player discover this world alone. These players can interact with their friends or family members who
play the same game, but indirectly: by leaving notes, gifts, completing tasks, or even planting flowers or
trees.
CONCLUSION
Mémoire | BBWoE 2010
90
Persistent asynchronous gameplay. We already talk about Animals Crossing,
BIBLIOGRAPHY
Blizzard Press Release 2008: http://eu.blizzard.com/fr-fr/company/press/pressreleases.html?081223
China, What's coming next? 2010: http://www.readwriteweb.com/archives/
china_social_gaming_landscape_whats_coming_next.php
Trade Wars (1984): http://en.wikipedia.org/wiki/Trade_Wars
Wasteland (1988): http://en.wikipedia.org/wiki/Wasteland_%28video_game%29
Online World Timeline 2002: http://www.raphkoster.com/gaming/mudtimeline.shtml








Multi-User Dungeon (1978): http://www.livinginternet.com/d/di_major.htm
Interview Brad McQuaid: http://www.guru3d.com/gamereviews/brad-mcquaidinterview/index1.shtml
Interview Brian Green: http://grindingtovalhalla.wordpress.com/2009/04/23/psychochild/
First Graphical Online RPG: http://www.mcvuk.com/press-releases/34298/NeverWinter-Nights
Petition about NWN: http://www.wired.com/culture/lifestyle/news/1997/06/4625
IGN Ultima Online review: http://pc.ign.com/articles/759/759391p1.html
Gamasutra asynchronicity:
http://www.gamasutra.com/view/news/24310/Analysis_Asynchronicity_In_Game_Design.php
Animal Crossing 2001: http://en.wikipedia.org/wiki/Animal_Crossing_%28video_game%29
9. DETAILS DES SPRINTS
1
2
3
4
5
6
7
8
9
A) AVANT LE PREMIER SPR INT
Cette première phase c’est déroulée en deux parties. Le premier jour a permis de découvrir le
laboratoire, l’environnement de travail comme le bureau que j’ai partagé avec Chris Wolfe pendant 5
mois. Ensuite la deuxième partie a permis principalement de prendre en main Pharseer physics, le
moteur physique utilisé pour ce projet. Cette prise en main a été l’occasion de développer un monde 2D
minimaliste qui a été repris en début de premier sprint et qui est en fait l’embryon initial de BBWoE.
Enfin c’est pendant cette phase d’apprentissage que Tadeusz B. Stach m’a donné des sources sur
l’exergame dont son papier présenté dans la partie analyse, que vous pouvez retrouver sous la
référence 32.
B) 1ER SPRINT : DU JEUDI 1ER AVRIL AU JEUDI 15 MAI
Mémoire | BBWoE 2010
91
Ce sprint se partage en différents objectifs : d’un côté tout en continuant cette phase d’apprentissage,
améliorer l’architecture de cet embryon initial afin qu’il puisse être utilisé dans la suite du projet. Ce
sprint a aussi été pour moi l’occasion d’intégrer l’API GAIM au projet et donc d’utiliser le vélo pour
contrôler l’avatar. Enfin ce sprint a permis d’introduire le wiki afin de suivre l’évolution du projet de plus
près.
C) 2EME SPRINT : DU JEUDI 15 AVRIL AU JEUDI 29 MAI
La tâche a été divisée en deux : poursuivre le « refactoring » amorcé dans le sprint précédent tout en
commençant un travail avec les utilisateurs finaux. Ici, l’amélioration du ressenti lors du pédalage sur
différente surfaces a été mesuré et amélioré.
D) 3EME SPRINT : DU JEUDI 29 AVRIL AU JEUDI 13 MAI
Ce sprint est la dernière évolution majeure du client. Il améliore des entités, résous des problèmes
soulevés par les utilisateurs (développeurs ou finaux) mais aussi ajoute de nouvelles entités pour
permettre la création d’un niveau qui permet quelques minutes de jeu. C’est lors de ce sprint que les
entités évoluent pour supporter des événements lorsque l’avatar les touches ou se détache d’elles.
E) 4EME SPRINT : DU LUNDI 17 MAI AU JEUDI 27 MAI
(Début du sprint en retard en raison de l'absence de T.C. Nicholas Graham le 13 Mai.)
Poursuite des travaux du sprint précédent, notamment pour finaliser quelques entités comme
l’élévateur. Répondre aux constatations des tests utilisateurs, comme le problème de l’avatar qui se
bloque très souvent et gâche le gameplay. Implémentation d’une destruction automatique de l’avatar
qui entraine un « respawn » de celui-ci. Un autre problème qui se pose est le manque de contrôle de
l’avatar dans les airs. Enfin commencer à réfléchir à un mini éditeur de niveaux intégré au jeu.
F) 5EME SPRINT : DU JEUDI 27 MAI AU JEUDI 10 JUIN
Ce sprint se découpe en deux parties : poursuite des améliorations du client par ajout d’un feedback lors
d’un saut (fumée). Ajout d’un système de saut qui fonctionne uniquement si la voiture touche le sol
(demandé par les utilisateurs testés). Enfin c’est lors de ce sprint que démarrent mes recherches sur les
jeux vidéo persistant afin de préparer la deuxième partie du projet.
G) 6EME SPRINT : DU JEUDI 10 JUIN AU JEUDI 24 JUIN
Dernière semaine de travail sur le client avant que je le connecte au serveur, en partie déjà implémenté
par Eril. Dernière amélioration des avatars, notamment la “New Beetle” qui est découpée. Création de la
première version de la vidéo de présentation du BBWoE pour le site du laboratoire (Annexe 7). Durant la
deuxième semaine commence l’intégration du client et du serveur avec l’API Janus.
Mémoire | BBWoE 2010
92
H) 7EME SPRINT : DU JEUDI 24 JUIN AU JEUDI 15 JUILLET
(Premier sprint de trois semaines en raison de l'annulation d'une réunion)
Trois axes de travail sur ce sprint : ajouter le projet sur le site de l’EQUIS laboratory (effectué par Eril).
Réalisation d’une itération et demie concernant l’amélioration de la connexion client/serveur. Et enfin,
poursuivre les travaux de rédaction de l’état de l’art.
I)
8EME SPRINT : DU JEUDI 15 JUILLET AU JEUDI 29 JUILLET
Poursuite du travail d’amélioration du multi-joueurs, par ajout de fonctions. Amélioration des
performances du serveur en ajoutant une mémoire tampon afin de réduire le nombre de requêtes de la
BD. Amélioration des performances du client également, par modification de la fonction qui charge les
entités du serveur en la séparant du reste du code pour qu’elle soit traitée comme un second thread.
Début de la rédaction d’une section sur le wiki qui complète la documentation à l’attention des
utilisateurs « développeurs ». Deuxième itération de la vidéo de présentation du projet.
J) 9EME SPRINT : DU JEUDI 29 JUILLET AU JEUDI 19 AOUT
(Dernier sprint, qui a duré 3 semaines en raison d'une semaine de pause au milieu)
Poursuite de la rédaction de la documentation à l’attention des utilisateurs « développeur ». Opération
de nettoyage du code, à la recherche de tous les bouts de français qui resterait à l’intérieur, mais aussi
tous les noms de variables non adaptés. Implémentation d’un système de succès :
“RegionAchievement”. Ajout de “HouseEntity” également, qui sera probablement complétée d’une
dernière entité après le rendu de ce rapport : « catchableEntity ».
Cette entité permettrait aux utilisateurs « développeurs » d’éparpiller les briques de la maison dans le
monde virtuel afin que le joueur le parcoure pour reconstruire sa maison.
Mémoire | BBWoE 2010
93