Kapla© virtuel Valeur C-CAM Conception d’applications multimédia Année 2003-2004 Brigitte Guillon - Jonathan Tanant Tuteur : Pierre Cubaud Bonsoir nous allons vous présenter le projet qui consistait à développer un kapla© virtuel
Kapla Jeu de constructions créé par Mr Tom van der Bruggen Matériel plateau de jeu : table, sol ,etc buchettes rectangulaires identiques en pin maritime (3 épaisseurs = 1 largeur et 5 largeurs = 1 longeur) Se joue seul ou à plusieurs Tout âge But : faire de belles construction de plus en plus complexes, sur des modèles réels : tour eiffel, temple maya , animaux .... Le kapla est un jeu de constructions récent dont les pièces de jeu sont des buchettes de même taille ( 11,8 par 2,3 par 0,8 ) en bois lèger que l'on peut jouer un peu près n'importe où à partir de 3 ans. Le but est d'obtenir une belle construction représentant ( mais pas forcèment ) un momument existant , une architecture particulière voir un animal . Le but étant surement aussi de vérifier les bonnes vieilles lois physiques qui régissent l'univers . On améliore sa dextérité et on y éprouve sa patience
objectifs initiaux, problématiques et solutions retenues Objectif principal : faire un Jeu vidéo autour des kaplas en 3D Questions initiales Plate-forme ? Java3d ? Application Windows DirectX ou OpenGL ? Online (virtools / blender) / offline ? Physique : faire un petit moteur de zéro ? Partir d’une solution gratuite et libre (ode) ou payante (karma) ? Modes de jeu / ergonomie / visualisation : Mode construction / Mode navigation Free camera / caméra orbitale Solutions retenues Squelette applicatif : application Windows 32 bits mode fenêtré Comportement physique réaliste des kaplas : moteur ode (open Dynamics Engine) Affichage en 3d : openGL « Features » Chargement / Sauvegarde jeu en cours : format « .kap »
Kapla© virtuel : lois physiques Le kapla est un objet consistant Le kapla est un solide soumis aux forces de l’attraction terrestre de poussée poids des autres kaplas de frottements mais aussi force centrifuge, poussée d'archimède,etc Les kaplas : chocs élastiques entre eux Pas de déformations Vitesse et direction modifiées Nombreuses lois physiques qui régissent le monde Difficulté à programmer l'ensemble Un moteur physique prend en charge la simulation des lois physiques des corps au sein d'un univers virtuel : intérêt pour le programmeur de jeu. Consistant = on ne peut le traverser . = non pénétration par un autre objet Il faut donc détecter les collisions Attraction terrestre = force à distance vers le bas poussée : plateau de jeu qui l'empèche de tomber par terre vers le haut le ou les kaplas qui sont en dessous vers le bas Frottement , frictions : qui retiennent une pièce dans une certaine position parfois ou qui entraine dans une chute vers le haut ou vers le bas Les autres forces n'interviennent pas ( pas de kapla sur l'eau ni sous le vent :) Les kaplas ont des chocs élastiques ( diff de chocs inelastiques ) pas de déformations mais changement de trajectoire et de vitesse ...
Ce que fait un moteur physique Simule l'attraction terrestre mais aussi lunaire (paramètres de gravité) Détecte les collisions des objets Génére les effets de ces collisions : déformations ou chocs élastiques Gére des objets articulés : voitures mais aussi les corps humains Prend en charge les forces de frottements ( frictions des roues sur une route) Gére les fractures des objets Tout ce que fait le moteur physique Differentes types d’articulations : pistons , gonds , L’avenir du moteur physique : Active Character Technology : simule les reflexes humains (met les mains en avant quand il tombe en avant , se protege ) ... Beaucoup que la poupée de chiffons qui tombe sans réflexes Karma dynamique des voitures et des corps détection rapide des collisions steel voitures et ragdoll (poupée de chiffon) granite : gestions des fractures physique des corps humains virtuels gestion avancée du squelette et contrainte musculaire Physique des corps rigides Détection des collisions avec frictions physique des véhicules
Fonctionnement Ode (traduit de la documentation) Création du Dynamics World. Création de corps rigides et ajouts dans le World. Réglage de l’état initial de chaque corps rigide. Création de joints et ajouts dans le World. Association des joints avec les corps rigides. Réglages des paramètres de chaque joint. Création d’un Collision World et de géométries (collision geometry objects) si nécessaire. Création d’un groupe de joints pour contenir tous les joints de contact. Boucle de simulation: Application des forces aux corps rigides. Ajustement des paramètres des joints. Call collision detection. Création d’un contact joint pour chaque point de contact, et ajout dans le groupe de joints. Take a simulation step. Destruction de tous les joints du groupe de contact joints. Destruction du Dynamics World et du Collision World. Tout ce que fait le moteur physique Differentes types d’articulations : pistons , gonds , L’avenir du moteur physique : Active Character Technology : simule les reflexes humains (met les mains en avant quand il tombe en avant , se protege ) ... Beaucoup que la poupée de chiffons qui tombe sans réflexes
http://jonathan.free.fr/kapla Mode d’emploi : faire des constructions Demo Kapla virtuel http://jonathan.free.fr/kapla Mode d’emploi : faire des constructions
Demo Kapla virtuel : touches Souris : déplacement kapla en cours (avec clic gauche ou droit pour les rotations) Menu : chargement/sauvegarde plateau, simulation on/off Clavier: Quick load Quicksave figure1 figure2 Toggle mode d’intégration Détruire tout Choix de la caméra (6 préselections) Vitesse de simulation 6 rotations préselectionnées pour le kapla en cours Faire tomber le kapla en « chute douce » Créer / faire tomber kapla
Kapla virtuel : difficultés rencontrées Ergonomie : Déplacement des pièces de kapla : 6 degrés de liberté. Avec une souris 2D, seulement 2 axes. Réglage et instabilité du moteur physique: Beaucoup des comportements émergents prennent place aux limites, où les valeurs flottantes utilisées pour les calculs perdent de la précision En découlent des erreurs et des imprécisions qui peuvent aboutir à une instabilité du système Méthode d’intégration et de résolution des contraintes itérative : performante mais moins précise Implémentation Programmation graphique Intégration de la Physique
développements futurs Ajouter du son, éventuellement synthétisé en fonction des chocs ves les pièces Jeu en réseau : jouer à plusieurs sur le même plateau en réseau local ou via internet Stabilité et réglage de la physique Ergonomie : travail sur la manipulation des pièces et la vue (caméra) Modes de jeu plus évolués : construction en temps limité / navigation dans une construction existante… Travail avec des périphériques d’entrée plus adaptés à la manipulation 3d : joystick 3D / souris 3D / gant haptique à retour d’effort…
Liens / bibliographie Notre site : http://jonathan.free.fr/kapla/ Site d’un étudiant http://users.skynet.be/piersonlaurent/tfe/ Démos en ligne Ragdoll : http://oldsite.havok.com/xtra/demos/demo-ragdoll2.html Démos à télécharger : Demo philoblock Moteurs physiques payants http://oldsite.havok.com/xtra/ http://www.novodex.com/ Moteurs physiques gratuits http://ode.org/users.html http://www.physicsengine.com/ Tutoriaux et articles OpenGL de Nehe http://nehe.gamedev.net/