Durant ces dernières années, les chats se sont de plus en plus développés, leur nombre grandissant en étant la preuve. Ils englobent de plus en plus la majorité des sujets de la vie de tous les jours : certains sont dédiés à l'informatique, d'autres aux fans de Star Trek, etc. Malheureusement, ceux-ci sont assez pauvres en ergonomie et interactivité. Nous sommes d'accord qu'ils permettent à des personnes vivant aux quatre coins du globe de discuter entre eux, mais les communications se limitent à du pauvre texte, du moins pour la plupart. Certains permettent aujourd'hui de voir son interlocuteur à l'aide d'une Webcam, mais dans ce cas là, l'aspect mystère de la personne peut disparaître, d'où le choix par de nombreuses personnes de l'utilisation d'un nick name à la place de leur vrai prénom et de leur vrai nom.
Un système pourtant s'est développé dans cet axe-ci : garder la confidentialité mais interagir dans un monde virtuel et visuellement plus agréable, les mondes en 3D. Ils permettent à n'importe quel utilisateur connecté au monde de se voir représenter par un avatar (personnage virtuel en 3D) et muni de possibilités de mouvements telles ceux de la vie réelle.
Nous avons décidé de nous lancer sur ce projet, parce que d'une part, nous sommes tout les quatre fous de chat. L'idée de communiquer avec des personnes qui peuvent se situer aussi bien à un kilomètre qu'à des milliers est un sujet qui nous passionne et nous fascine réellement. Ceci nous est donc venu presque instantanément. Le problème est que nous ne voulions pas d'un chat ordinaire genre IRC, mais il nous fallait mettre quelque chose de spécial, d'où la création d'un monde 3D.
C'était bien joli de vouloir créer cela, mais le problème (sur le coup), c'est qu'avec ce genre de chat, aucun serveur n'est là pour accueillir notre client Windows, le nombre de ces serveurs dans le monde étant encore très limité. Voulant aussi coder sous Unix, nous avons décidé d'ajouter à notre tache la création d'un serveur sous Unix.
Voilà pour le contour du projet. Si on veut y regarder de plus près, l'idée même de faire un chat uniquement pour ce connecter à notre serveur ne convient pas. L'ajout d'un module laissant la possibilité à une personne connectée sur notre serveur de communiquer avec " l'extérieur " nous a paru comme obligatoire. Grâce à une insertion spéciale de ICQ et de IRC dans notre monde, un utilisateur pourra sans problème " parler " avec d'autres, sans que ceux-ci ne soient dans notre monde.
Ainsi, notre projet consiste en la création d'un monde virtuel, côté client sous Windows 9x et NT et côté serveur sous Unix, notre but étant ici, pourquoi pas, de réalisé un espace portable sur Internet et dont l'extension et le développement ne s'arrêtera pas avec la soutenance finale.
Notre objectif est donc de créer un monde virtuel en 3D. L'ensemble sera composé de deux programmes : un serveur tournant sous Unix (il devra être compatible avec au moins Linux et NetBSD) et un client tournant sous Windows. On peut découper les domaines abordés pour le projet en deux grandes catégories : La gestion du Réseau et Le Moteur 3D. Nous expliquerons donc les possibilités de notre Projet en décrivant d'abord les fonctionnalités relatives au réseau suivi de celles relatives au Moteur 3D. Enfin nous terminerons par les options que nous voulons intégrer pour la configuration des avatars et tout ce qui concerne l’interface.
La communication entre les personnages est le principe même d’un chat. Mais notre projet est bien plus qu’un simple chat puisqu’il s’agit d’un monde virtuel. La partie que nous appelons réseau n’est donc pas simplement le transfert de textes entre des clients et un serveur.
En effet, il sera possible de créer ses propres avatars et même ses propres mondes. Il faudra alors que les clients soient capables d’uploader des fichiers sur le serveur et inversement, le serveur devra renvoyer les définitions des mondes et des personnages. Cela signifie qu’il faudra gérer le transfert de fichiers.
D’autre part, le transfert des fichiers devra pouvoir s’effectuer en même temps que la " navigation " dans le monde et le chat car, par exemple, si une nouvelle personne se connecte avec son avatar personnalisé, celui-ci devra s’afficher pour tous les clients croisant ce personnage.
Il faudra donc gérer intelligemment la façon dont sont downloadés les fichiers afin qu’il soit possible de se promener dans le monde sans avoir de problèmes d’affichages à cause d’un élément non téléchargé, et ce, même avec un modem 56k.
Nous voulons aussi qu’il soit possible de faire de l’IRC et du chat par ICQ à l’intérieur du monde. Il nous faudra donc étudier ces deux protocoles afin de les intégrer.
Enfin, le serveur devra être capable de supporter un maximum de connexions de clients pour qu’il soit possible de se mouvoir dans de vastes espaces et permettre à un nombre élevé d’utilisateurs d’évoluer dans un même monde.
Ce que nous incluons dans le moteur 3D sont : L'affichage du monde virtuel, la gestion des mondes sous forme de fichiers et le moteur Physique.
L'affichage du monde devra utiliser la librairie OpenGL. Nous avons choisi d'utiliser OpenGL plutôt que Direct3D car les membres du groupe qui s'occuperont du Moteur 3D ont déjà quelques connaissances sur cette librairie. De plus, OpenGL est plus adapté au mode fenêtré. L'affichage du monde virtuel se fera dans une fenêtre et non pas en plein écran.
Les mondes virtuels devront être stockés au format VRML. Nous avons choisi ce format plutôt que d'autre comme le 3DS pour plusieurs raisons.
En effet les Sphères, les cubes et les cônes ne sont pas représentés comme une liste de polygones mais par des caractéristiques propres. Par exemple, une sphère sera définie par sa position et son rayon. Avec le format 3DS, la sphère aurait été composée d'un grand nombre de polygones, le fichier généré aurait été beaucoup plus gros. Cette caractéristique du VRML permet également de gérer le niveau de détail. Si la sphère se trouve loin de l'observateur, elle sera affichée avec un nombre limité de polygones, alors que si elle se trouve près de l'observateur, elle sera affichée avec beaucoup plus de précision.
La gestion des fichiers contenant la description des avatars est différente. Le format qui sera adopté est le MDL et/ou MD3. C'est le format utilisé par Quake pour stocker les objets (Personnages, armes...). Ce format pourra contenir les animations des avatars.
Nous allons donc intégrer un moteur physique dans notre monde en trois dimensions pour le rendre plus réel encore.
Ce moteur physique devra donner l'impression au joueur d'être dans un monde qui pour lui est réel. Pour cela nous devons faire un moteur qui imite au mieux la réalité. La première chose qui est donc a faire est de mettre en place les interactions entre les personnages et le monde en lui même. Cette partie comporte principalement la gestion des interactions entre les intervenants, que ce soit les protagonistes en train de discuter entre eux ou un personnage qui se déplace dans notre monde.
Dans le premier cas il ne faut pas que les personnages puissent se traverser entre eux. Dans le deuxième cas notre avatar doit pouvoir interagir avec le monde virtuel de manière tout a fait normale pour un humain (bien qu'il serait possible de se promener avec des " aliens " ou autres créatures elles aussi virtuelles mais cela ne correspondrait pas avec le type de monde que nous voulons créer).
Cette gestion des collisions sera le travail, je pense, le plus important dans ce moteur physique. Le système utilisé dépendra du moteur 3D en lui-même et selon le type de collisions. Pour les personnages nous détermineront des aires de collisions simples qui seront transparentes pour l'utilisateur. Le système qui sera utilisé utilisera soit des sphères, soit des cubes. Ces collisions seront assez faciles, comparées à celles avec le monde. Ces interactions avec le monde virtuel seront en effet imprévisibles et dues aux mouvements aléatoires de l'avatar dans un monde qui peut être de n'importe quelle forme, qui de toutes façons ne nous sera pas connu d'avance puisqu'elle dépendra du monde choisi.
Le principe nous est pour l'instant inconnu car il différera selon la manière dont sera codé le moteur 3D. Après les collisions dans le monde virtuel nous devrons gérer les déplacements des avatars de façon réaliste. C'est à dire que nous devront gérer les vitesses de déplacements, les dénivelés, côtes et descentes, de façon compréhensible pour le joueur. Il serait par exemple irréaliste de pouvoir monter une côte à plus de 45° et inversement pour la descente. Le joueur devra alors être arrêté pour éviter ce genre de désagréments. Les petites montées, par contre, pourront être grippées moyennant un ralentissement du déplacement de l'avatar ; la réaction sera inverse pour les descentes. Pour les déplacements, il sera possible donc d'avancer, reculer, tourner à gauche et à droite, et sauter pour par exemple monter des escaliers. De plus nous devront générer une pseudo-apesanteur pour ces déplacements. Même si cet aspect très poussé de la gestion de la physique n'est pas forcement nécessaire, il contribue fortement à la crédibilité de notre monde virtuel.
La deuxième partie de la physique, influence directement le chat en lui même puisqu'il concerne le son. Nous déterminerons une zone de portée de la voix pour délimiter la zone dans laquelle nous pourront discuter directement avec une personne. La zone d'effet sera simplement un cercle qui délimitera les avatars qui entendront ce que nous dirons. La définition de cette zone est très importante car elle détermine tout le principe du chat et sa future accessibilité.
L'utilisateur pourra modifier son avatar de plusieurs manières. Il pourra utiliser des personnages déjà existants pour en modifier les caractéristiques comme par exemple la couleur des vêtements. Il aura également la possibilité de " plaquer " une photo sur le visage de son avatar. Ici, on part de personnages déjà existants mais il sera possible d'importer d'autres personnages au format MDL et/ou MD3. Cette fonction permettra d'apporter plus d'originalité aux avatars.
Nous n’avons pas encore fixé l’apparence et la forme générale que prendra l’interface utilisateur de notre projet. Malgré tout, nous avons déjà fixé plusieurs points. Le projet se découpera sous la forme de fenêtres volantes pouvant être déplacées et redimensionnées pour certaines. Nous avons choisi le principe des fenêtres volantes pour permettre l’utilisation de notre projet combiné avec d’autres logiciels.
Actuellement, nous pensons diviser l’interface en au moins quatre zones :
Les buts de chacun étant assez différents mais surtout complémentaires, nous présenterons ci-dessous nos intentions vis a vis de ce projet, puis suivra l'intérêt général que nous portons à ce sujet ainsi que le but et l'objectif global que nous souhaitons instaurer.
J’étais le moins motivé des quatre pour ce projet, cependant mes collègues ont su me convaincre. En fait, je souhaitais faire un logiciel " utile " cette année, c’est à dire qui ne soit pas un " petit " projet personnel oublié après la dernière soutenance mais quelque chose de sérieux, qui puisse servir à d’autres. C’est pour cela que j’étais un peu réticent à ce projet, à moins d’y ajouter suffisamment de fonctionnalités. C’est ainsi que nous avons décidé d’y ajouté un module IRC et ICQ et décidé de le faire le plus modulaire possible affin qu’il soit possible de rajouter facilement d’autres fonctionnalités par la suite.
D’autre part, je ne suis pas un " fou de 3D ". Par contre tout ce qui touche au réseau m’intéresse beaucoup. Mon rôle sera donc principalement de m’occuper – avec Richad – de la programmation des connexions réseaux et des modules IRC et ICQ. En particulier je serais responsable du client côté Windows.
Enfin, je suis très curieux de programmer sur des OS différents. En effet, nous avons choisi de faire tourner notre serveur sous Unix, réputé stable et rapide alors que le client sera sous Windows qui est plus accessible pour les utilisateurs et aussi très répandu sur les machines grand public. De plus la programmation 3D aurait été beaucoup trop ardue sous Unix.
Comme le montre le cahier des charges, ce qui m'intéresse le plus dans notre projet est le Moteur 3D. La conception de ce moteur me permettra d'acquérir beaucoup de connaissances sur la 3D temps réel, sur la librairie OpenGL mais surtout sur les problèmes d'optimisation dans le but d'avoir un moteur rapide.
Je m'occuperais également de la création de plusieurs mondes virtuels, cela me permettra de faire quelques graphismes.
Je ne travaillerais pas directement sur la partie réseau bien que cela m’intéresse presque autant que le moteur 3D mais je compte suivre de près le travail de Renan et Richad pour acquérir malgré tout des connaissances réseau.
Ce qui me motive dans ce projet est le fait qu'il soit ambitieux et surtout viable à long terme. Ce système peut être ensuite développé et devenir un nouveau standard comme IRC ou ICQ. De nombreuses tentatives ont été réalisées mais toujours abandonnées avant la fin ou alors non couronnées de succès.
Mes autres motivations sont de l'ordre de la variété des domaines abordés. Nous allons toucher à peu près tout ce qu'il est possible de développer actuellement : beaucoup de réseau avec création de normes, de la 3D, et deux plates-formes de programmation (Windows, Unix). Ce que je recherche particulièrement est tout ce qui concerne les graphismes et particulièrement la 3D que ce soit la modélisation ou le temps réel.
L’intérêt pour moi d'un tel projet est la possibilité de manier le réseau. La partie 3d est aussi importante dans notre projet, mais étant réellement médiocre en ce qui concerne tous ce qui est graphismes en tous genres, je préfère me concentrer sur un sujet qui m’intéresse déjà beaucoup plus qu'est le réseau.
D’après l’échéancier que vous pourrez voir ci-après, je m’occupe uniquement du développement du réseau. J'ai beaucoup insisté sur le fait que, cette année, je ne voulais pas coder sous Windows, et cela pour raisons personnelles que je ne vais donc pas étaler ici. On m'a donc chargé de, premièrement, m'occuper du développement du serveur sous Unix. Partie que je trouve forte intéressante pour savoir enfin comment marche réellement un serveur, comment les machines font pour communiquer entres elles, etc. J’espère ainsi que tous les termes concernant ce qui a trait au réseau n'auront plus de secrets pour moi.
Je ne suis pas non plus un fan pur de réseau prêt à faire SR ou télécom, mais je porte un très grand intérêt à sortir de l'école en ayant acquis le plus de connaissances possibles dans des domaines très différents. Voulant me spécialiser dans l'IA, je ne pense pas avoir souvent l'occasion à l'avenir de développer du réseau, ce projet sera donc ma matière à ce sujet.
Pour finir, je dirai que mon but personnel au sujet du projet de cette année, sera d'enfin comprendre comment marche un réseau et pouvoir mettre en place des machines, pouvoir les faire communiquer, en sachant précisément ce que fait le serveur pour faire en sorte que telle ou telle machine reçoive l’information qui lui est attribuée.
|
Renan CABANNES |
Richad IDRIS |
Alexandre CHOUIPPE |
Laurent CORBES |
||
|
Janvier |
Recherche de documentations sur les réseaux. Essais de connexions entre deux machines. |
MOTEUR 3D Travail sur l’importation des VRML MD3 / MDL | |||
|
Février |
Début de création du client Windows afin de réaliser un chat. |
Début de création du serveur Unix afin de réaliser un chat. | |||
|
Mars |
Début de l’interfaçage avec le moteur 3D Transfert de fichiers entre client et serveur Documentation ICQ et IRC |
MOTEUR 3D Optimisation du Moteur et ajout d’effets graphiques |
MOTEUR PHYSIQUE Début de mise en place des collisions | ||
|
Avril |
Suite de l’interfaçage Réalisation de modules annexes (ICQ et IRC) |
MOTEUR 3D Optimisation du Moteur et ajout d’effets graphiques |
MOTEUR PHYSIQUE Fin de la mise en place des collisions et mise en place de l’apesanteur | ||
|
Mai |
FINALISATION Rédaction de l’aide guides etc. | ||||
|
Intégration de tous les modules |
Configuration des Avatars |
Gestion des zones d’effets sonores | |||
|
Juin |
DEBUGGAGE |
||||
Certaines parties du projet, comme par exemple l’interface, n’apparaissent pas directement dans l’échéancier. En effet, elles seront développées au fur et à mesure de l’avancement du projet. Ces domaines ne nécessitent pas de connaissances particulières.
Ainsi, notre entreprise pour la fin Juin sera de réaliser et de concevoir un monde virtuel en 3D, représentant une alternative au traditionnel chat. Nous aurons dans cet objectif étudiés des sujets qui nous étaient jusqu'alors inconnus tel le réseau.
Comme vous avez pu vous en rendre compte, l'intérêt que nous y portons est assez important et nous comptons bien ne pas nous arrêter à développer ce projet qui nous aura pris autant de temps et demander autant d’énergie après la soutenance finale, mais pourquoi pas, continuer à développer notre espace afin de le ranger à côte des environnements semblables déjà existants.