Soufiane KHIAT //TODO


Travaux

Dans cette séction je vous présenterai mes travaux du plus récent au plus ancien.




Walk The Line : Jeu de parcours Kinect 3D (2011)

Unity3D, C#, C++, Kinect, 3D Stéréoscopique, nVidia 3DVision, Filtering

Context :

Dans le cadre des projets de fin d'année ENJMIN (Ecole Nationale des Jeux et des Médias Interactifs Numériques), j'ai voulu utiliser ce nouveau contrôleur qu’est Kinect et voir ce qu'il pouvait apporter au monde du jeu vidéo. C'est pourquoi j'ai réussi à réunir une équipe de 6 personnes autour de ce projet : un game designer, un sound designer, deux graphistes, ainsi qu'un autre programmeur. Le but était à la base de concentrer un maximum de technologie (Head Tracking, 3D, Son 5.1, Kinect) ; puis, avec le game designer, de trouver un gameplay fun. Donc Walk The Line est un jeu à la première personne, où le personnage est un homme devant fuir les abords d'une ville qui s'effondre. Via Kinect, il devra sauter, aller de gauche à droite, esquiver les obstacles et marcher sur les murs. C'est donc un rail game à la première personne.

Rôle(s) :

Dans l'équipe j'avais pour rôle la gestion de projet ainsi que la programmation en collaboration avec un autre programmeur. J'avais à ma charge la résolution des problèmes résultant de l'utilisation de Kinect : filtrage du signal trop bruité, détection des sauts, ... Le défi était surtout de répondre aux demandes du game designer, puisque de simples mots pouvaient se transformer en casse-tête d'un point de vue technique. Surtout avec Walk The Line et son nouveau contrôleur Kinect qui était une première et n’avait pas d’antécédents vidéoludiques sur lesquels on pouvait s’appuyer comme référents. En effet lors du développement, Kinect venait tout juste de sortir avec party game...

Résultat(s) :

Après 3 mois de développement nous avons deux niveaux mis en contact dont le premier est dans les ruelles où le joueur est dans un dynamisme quasi constant. Il doit esquiver les voitures abandonnées, les bennes à ordures, sauter au-dessus des trous, marcher sur les murs si ce trou est trop grand. Le jeu est jouable en Steréo mais pour vivre complètement le jeu il est conseillé d'avoir grand écran 120Hz (pour la 3D Stéréoscopique) ainsi qu'un système 5.1.

Presse

Anglais
GameSetWatch
Joystiq
N4G
123Kinect
...Ology
Français
XBox-Mag
XBoxGen
Italien
Multiplayer

Vidéo(s) :

Haut


Space Loop : Puzzle Game 2D avec un Pirate !!! (2011)

Unity3D, C#, Physique

Context :

Dans le cadre du concours Hit PlayTime organisé par le journal LeMonde, nous nous sommes réunis (un game designer, un sound designer, un graphiste et enfin deux programmeurs) dans le but de participer au concours. Les contraintes du concours était simplement : "Faire un jeu jouable sur navigateur". Après avoir été présélectionnés avec notre pitch nous sommes passés à la mise en oeuvre... Space Loop est un puzzle game jouant avec la gravité. En partant d'une planète nous devons en atteindre une autre en un minimum de coups et en récupérant le maximum de "Crab Coin". Petit à petit, différents types de planètes et d'ennemis viennent corser les situations.

Rôle(s) :

Dans ce projet nous avons une feature importante pour le GamePlay sur laquelle nous voulions garder le contrôle : la gestion de l'attraction gravitationnelle. J'avais pour rôle en autre la mise en place du moteur physique ("from scratch") et faire en sorte que la gestion de la physique soit une feature ludique et non la meilleure approximation possible de la réalité. En effet, la mise en orbite par exemple dépend de trop de paramètres pour que l'on puisse demander au joueur de les analyser...

Résultat(s) :

Nous avons réussi à avoir trois mondes avec trois ambiances et chacun une dizaine de niveaux. En ce qui concerne le concours nous n'avons malheureusement pas été victorieux, néanmoins SpaceLoop continue.

Vidéo(s) :

Site Web :

Français
Kongregate : Spaceloop
Blog : LeMonde
GameSideStory : Interview

Image(s) :

Haut


ECHO : Jeu Shoot em'up + Tower Defense (2010)

Game Maker, C++, WWise, PS3 SixAxis

Context :

Dans le cadre d'un "mini"-projet nous devions avec une équipe complète (ergonome, game designer, graphiste, manager, programmeur et sound designer) développer un jeu "fini" en 5 semaines. Le concept du jeu est simple. Nous sommes une entité circulaire dans le vide, et nous sommes attaqués ! Pour survivre, nous avons des "powerup" de différents types qui tombent sur la planète lui permettant de tirer sur les ennemis. Puis, en penchant la manette (PS3 SixAxis) nous pouvons faire tourner l'entité pour orienter les tirs. Lorsque l'entité est touchée par un tir ennemi, elle est creusée et si suite à ces creusements un tir ennemi touche le coeur, la partie est perdue.

Rôle(s) :

Naturellement dans ce projet j'avais un rôle de programmeur. Du fait que nous utilisions l'outil GameMaker étions limités par ses possibilités. Nous avons pu étendre celles-ci via des DLL externes. J'avais pour rôle l'écriture d'une DLL permettant le creusement de l'entité, ainsi que l'intégrateur du moteur son WWise. Par la suite, en collaboration avec les ergonomes et les game designers j'ai mis en place des systèmes facilitant la compréhension du gameplay.

Résultat(s) :

Malgré la contrainte temporelle nous avons pu réaliser la plupart des tâches. Nous avons un jeu jouable avec plusieurs types d'ennemis et plusieurs boss ainsi qu'une trame sonore variable en fonction des impacts... Du fait du game system avec la SixAxis, un portage sur mobile nous a semblé évident. C'est pourquoi une version iPhone, Android et Windows Mobile est en cours de développement.

Site Web :

www.echo-the-game.com

Vidéo(s) :

Image(s) :


Haut


Infinite : Générateur de monde (2009)

C++, 3D, L-Système, Topologie, Graphe, Carte Généralisé, A*, ...

Context :

Suite aux difficultés rencontrées pour avoir des assets pour mes projets, j'ai entrepris de développer un générateur de mondes et de villes. En effet le coût de développement d'un jeu de type SandBox est très important au vu des assets qu'il faut produire. C'est pourquoi j'essaye d'automatiser au maximum ce processus.

Rôle(s) :

J'ai fait en sorte que mon outil soit totalement indépendant du rendu. En gardant à l'esprit qu'un autre utilisateur pourrait avoir en main cet outil, je le développe de telle sorte qu'il soit "Data-Driven" pour avoir une très grande variété de mondes, villes, réseaux routiers, ... sans que l'on ait à reprogrammer quoi que ce soit.

Résultat(s) :

Le projet est toujours en cours de développement. En l'état actuel, j'ai mis en oeuvre un système pour la gestion des réseaux routiers, îlots, terrains à bâtir et systèmes de façade. Je m'attelle au système de génération de volumes pour y plaquer les façades. Par la suite, je continuerai avec la génération des intérieurs. Dans un futur plus lointain j'intégrerai mon outil à différents moteurs pour un rendu temps réel.

Site Web :

devblog.soufiane-khiat.com

Image(s) :

Haut


Robot Hexapode (2006)

LabView, Fer à Souder, Electronique

Context :

Dans le cadre d'un projet à l'IUT, nous devions développer en équipe de trois la marche d'un robot hexapode.

Rôle(s) :

Avec l'outil LabView qui nous a facilité cette tâche nous avons pu tester et mettre en oeuvre trois marches différentes.

Résultat(s) :

Du fait de la topologie du robot (Hexapodie circulaire : chaque patte étant séparée de 60°), la marche n'était pas triviale. Nous ne pouvions pas nous inspirer de la nature puisqu'aucun animal, insecte, ... n'a cette topologie de pattes. Alors, avec un asynchronisme d'une patte sur deux, nous avons pu le faire marcher, bien que les rotations soient restées assez lentes.

Haut


ACFProg : CMS (2005)

PHP, MySQL

Context :

Dans le cadre d'un projet au lycée, nous avons entrepris de développer un CMS en PHP. Le but étant de simplifier au maximum le développement de sites web dynamiques en fournissant avec notre CMS plusieurs tutoriaux. Les cours et le CMS sont faits de telle sorte que nous n'avons besoin d'aucune connaissance en programmation.

Rôle(s) :

Dans l'équipe de développement j'ai eu le rôle de programmeur du CMS. Ainsi que formateur sur les notions de Programmation Objet. Comme toute l'équipe n'avait pas les mêmes connaissances, nous avons dû effectuer une remise à niveau.

Site Web :

acfprog.free.fr

Résultat(s) :

Le CMS est fonctionnel mais, bien sûr, il est loin d'égaler un Joomla ou un SPIP.


Haut


World Dev : RPG (2004)

Unreal 2004, uScript, Maya, PhotoShop, UnrealEd

Context :

Dans le même cadre que VirtueLPI et ACFProg nous avons développé un RPG qui se déroule dans quatre mondes/univers graphiques. Le premier monde était VirtueLPI (le lycée), le second un monde médiéval-fantasy, le troisième un monde futuriste et le dernier un monde oriental. Le tout lié par une trame scénaristique des plus captivantes !

Rôle(s) :

Dans ce projet j'ai continué à me former à 3DSMax, Maya et PhotoShop avec les graphistes de l'équipe. Et je me suis formé encore un peu plus à l'Unreal Script.

Résultat(s) :

Nous avons réussi à avoir notre jeu, avec différentes phases de gameplay : quête "Rôle Play" dans le monde médiéval ou course de voitures volantes dans le monde futuriste. Mais, faute de temps, le monde oriental qui devait dévoiler toutes les phases de l'intrigue a été remplacé par une cinématique expliquant le pourquoi du comment...

Site Web :

www.world-dev.fr.st Lien mort

Image(s) :

Haut


VirtueLPI : Visite Interactive (2003)

Unreal 2003, uScript, Maya, PhotoShop, UnrealEd

Context :

Dans le cadre d'un projet lycée A.C.F. (Activité Complémentaire de Formation, projet inter-lycée tous niveaux), nous avons entrepris le développement d'un "serious game" où le joueur entre dans la peau d'un élève de notre lycée. Ce lycéen doit créer ou trouver une A.C.F.

Rôle(s) :

Dans ce projet j'ai pu me former aux différents métiers des jeux vidéo, ainsi qu'à la programmation en Unreal Script (uScript). J'ai même pu m'essayer aux outils destinés aux graphistes comme Maya ou PhotoShop.

Résultat(s) :

Grâce à une bonne gestion de projet nous avons atteint nos objectifs. Voir où nous perdions du temps, où nous en avons gagné et répartir les ressources sur les tâches qui restaient à accomplir.

Site Web :

virtuelpi.unreal-design.com Lien mort

Image(s) :

Haut


eMotionVision : SDK Solveur d'équations différentielles (2002)

C++, OpenGL

Context :

Après le développement du moteur physique d'Elite Strike j'ai voulu faire quelques expérimentations en programmant quelques systèmes physiques. Mais au vu de l'aspect répétitif des tâches, j'ai essayé de formaliser les différents concepts utiles dans la programmation physique de tous les jours.

Rôle(s) :

J'ai fait en sorte de me simplifier le plus possible la tâche. Sans rentrer dans la technique, résoudre un système à N-Corps prendrait moins de dix lignes de code, résoudre l'attracteur étrange de Lorentz, trois lignes seulement. Pour ne pas avoir à trancher entre plusieurs solveurs numériques, j'en ai implémenté une dizaine. De cette manière, je pouvais les comparer entre eux, aussi bien d'un point de vue performance que d'un point de vue résultat.

Résultat(s) :

Avec mon système, je peux résoudre toutes les équations différentielles ordinaires. Pour résoudre les équations aux dérivées partielles, ce n'est pas automatique puisqu'en général (sauf pour les équations scalaires) la résolution ce type d'équation n'est pas automatisable. D'ailleurs il existe un très grand nombre de publications sur ces sujets (Navier-Stokes, Schrödinger, Klein-Gordon, …)

Haut


EliteStrike : FPS (2001)

C++, DirectX 8, OpenGL, Integration de Verlet, Octree, AABB, SoftBodies

Context :

Il s'agissait d'un projet amateur dont le but était de développer un FPS. La finalité était le jeu, néanmoins nous voulions avoir notre propre moteur. C'est pourquoi il y avait deux équipes de programmeurs moteur : les programmeurs moteur graphique et les programmeurs moteur physique.

Rôle(s) :

Je faisais partie des deux membres de l'équipe des programmeurs moteur. J'avais en charge le développement de la gestion des corps mous (soft bodies) ainsi que des joints entre eux.

Site Web :

www.elitestrike.fr.st Lien mort

Résultat(s) :

J'ai pu développer ces 2 fonctionnalités : soft bodies et joint de type boule-boule. Malheureusement, suite au recrutement du leader du projet par une société de jeux vidéo, l'équipe s'est peu à peu séparée. De ce fait nous n'avons pas pu commencer le développement du jeu.


Haut