Raydium 3D Game Engine

Official forum for everything about Raydium, ManiaDrive, MeMak, ...
It is currently Thu Mar 28, 2024 8:07 pm

All times are UTC




Post new topic Reply to topic  [ 4 posts ] 
Author Message
PostPosted: Fri Jul 18, 2003 4:48 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Bien, il me semble qu'il est temps pour moi de parler un peu de MeMak.
Depuis la réunion MeMak d'il y'a qq mois ou nous avions commençé a poser les bases du "jeu-exploitant-raydium", pas mal de choses ont évolué, et en voici un bref rappel:
- Blender: Le fait que nous ayons maintenant à disposition un script d'export pour Blender laisse la possibilité à qui le souhaite de générer des objets (terrains, éléments dans le jeu, ...) relativement simplement, et en restant dans la légalité :)
- La physique: L'introduction d'ODE dans la projet ouvre des perspectives assez folles quand aux capacités finales du jeu.. je vais m'expliquer plus en détail sur ce point plus bas.
- Le réseau: Depuis peu de temps, nous sommes capables de faire tourner un serveur avec 3 joueurs sur une ligne ADSL de bâââse, avec des flux UDP très simples, et en distribuant la physique du coté client.. Les principales conséquences de cette facon de faire sont:
1) Le serveur n'est rien d'autre qu'un répeteur avec une logique tres minimaliste (les calculs et la logique [les regles, si vous préférez] du jeu sont du coté des clients), et donc des besoins très faibles quand au capacités nécessaires sur le serveur (on lui demande de la bande passante, et c'est tout)
2) La détection de la triche quasi impossible ! Eh oui.. tout est calculé sur le client, et donc tt personne modifiant son logiciel (ce qui est d'autant plus simple que le produit est libre) possède les capacités de tricher (tout simplement, par exemple, en doublant la vitesse max de sa voiture)... il est possible de prévoir un système de surveillance "globale" sur le serveur, comme certains jeux commerciaux le font déjà ("tient, ce joueur possède une voiture de type X, mais roule à la vitesse Y depuis Z temps, ca n'est théoriquement pas possible") mais il n'en reste pas moins qu'il faudra avant tout mettre en place un réseau de joueurs de confiance :) ... MeMak étant un projet libre, je ne pense pas que cela soit un probleme important.

Je reparle rapidement de la physique (d'ODE, donc): une nouvelle version d'ODE est sortie il y'a peu de temps, et offre la possiblité d'avoir une gestion des collisions entre les triangles (qui représentent notre sol, en particulier) et TOUTES (et non seulement les spheres comme avant) les primitives d'ODE (cylindres, boites, rayons, ...). Et voilà ce que ça change:
- La voiture ne traverse plus le sol comme actuellement lorsqu'elle se retourne, et de manière générales, les collisions sont plus logique: quand on rentre dans un mur à fond les gamelles pour l'instant, le choc est absorbé par les roues uniquement (pas le corps de la voiture, qui est une boite et donc ne génère pas de collision avec le mur) qui sont reliées à des suspensions et donc amortissent largement le choc avec le mur, qui devrait être plus violent.. et beaucoup d'autres choses dans ce genre là.
- La possibilité de "poser" des choses sur le sol. Imaginez qu'a l'heure actuelle, si nous souhaitons poser, par exemple, un bonus sur le sol, nous sommes obligés de le présenter à ODE sous forme de sphère (les autres primitives, comme la boite par exemple, vont passer au travers du sol).. et les sphères, ça roule ! .. d'autant que si cet objet est une caisse, le fait qu'une caisse roule doucement sur le décors va sembler assez étrange :)
- Un QuadTree: ce terme cache en fait une manière de gérer rapidement une masse importante d'objets (ici, des triangles). Pour l'heure, dans les versions actuelles de Raydium, nous sommes obligés de trier en permanence le décors pour n'envoyer à ODE que les triangles qui sont effectivement "proches" de la voiture. Ce proccessus (à effectuer autant de fois qu'il y'a d'objets dans la scene) est relativement lent, et surtout irrégulier: si la voiture est sur une grande étendue plate, on ne va envoyer à ODE qu'une 10aine de triangles, alors que si elle est située dans une zone très dense (avec beaucoup de détails), il risque d'y avoir plusieurs 100aines de triangles "proches" (et la simulation sera d'autant plus lente)... Le quadtree regle simplement ces problemes en ne prenant en compte que les triangles qui rentrent potentiellement en collision avec les primitives d'ODE (en bref, toujours très peu).

Seulement voilà: pour intégrer cette merveille dans ODE, Russ Smith (iniateur et leader d'ODE) a intégré un autre logiciel: OPCODE, écrit par Pierre Terdiman, qui est une librairie dont le seul role est de détecter les collisions entre 2 objets (il ne fait que ca, mais le fait tres vite :) ).
Pour intégrer OPCODE dans ODE, une interface ("TriMesh") a été écrite par Erwin de Vries, offrant au programmeur utilisant ODE un ensemble de fonctions qui "cachent" OPCODE et génère, à partir des collisions détectée par OPCODE, des points de contact que va utiliser ODE pour calculer le comportement qui va être appliqué à ces deux objets pour qu'ils semblent réagir à cette collision.
Et à l'utilisation, il y'a un probleme !
En effet, à la sortie d'ODE 0.039, je me suis rué sur les sources et j'ai essayé TriMesh que j'attendais déjà depuis qq temps.. et la simulation explose !
La voiture, des qu'elle touche le sol est prise de mouvement tres violents qui finissent par planter le tout.
Apres qq tests et pas mal d'heures, j'en suis arrivé à la conclusion que TriMesh n'était capable que de travailler que sur une seule face des triangles ! Exemple: un objet qui rentre dans un mur de face va réagir correctement, alors que si ce même objet rentre dans la partie arrière de ce mur, il va être projeté au travers dans une direction illogique.. Après qq mails sur la mailing list d'ODE, il est en fait établit que OPCODE réagit correctement, alors que le code d'Erwin (TriMesh) ne sait générer des contacts corrects que pour une seule face de ce triangle (les raisons restent très logiques ceci dit, mathématiquement parlant.. Erwin n'est pas franchement un rigolo [et ça se sent dans le ton de ses mails.... :/ ] et semble très bien savoir ce qu'il fait ;) )
Et la situation est "bloquée" là.. tant que TriMesh ne proposera pas des collisions "double-sided", il restera inutilisable pour Raydium !
Mais restons confiants, je pense que ce probleme va géner d'autres gens et que tout ça va évoluer ;)

J'arrive à la partie intéressante de ce post (pour ceux qui se font ch*** à lire tout ça): Ce a quoi risque de ressembler MeMak avec nos connaissances actuelles !)

Il est possible d'imaginer une plaine, relativement desertique, avec au loin des reliefs et, parsemés dans cette plaine, des pièces... Des roues, des volants, des briques (de différents matériaux), ...
Vous vous approchez d'une de ces pièces (une planche en bois), un icone vous propose de ramasser, ou de trainer cette pièce (selon sa masse et vos capacités physiques).. Vous trainez cette brique jusqu'a une roue, qui traine plus loin, et l'interface vous propose de relier ces deux objets entre eux, au moyen de différentes liaisons: une rotule, un pivot, une soudure, et même avec une suspension, récupérée qq jours auparavant.. Après qq heures de recherche, vous avez récupéré suffisamment de roues et de suspensions pour monter le chassis d'un véhicule: l'interface vous propose tout un choix de configurations sur votre montage, en particulier la possibilité de bloquer les roues arrières de votre "voiture" dans le sens de la marche et au contraire d'associer les roues avants à un systeme de direction (que vous ne possédez pas encore). Vous commencez à tracter votre véhicule à la recherche d'un moteur, mais son poid vous ralentit trop. Vous décidez de laisser l'engin sur place et de continuer à chercher sans lui.. Après qq minutes de marche, vous tombez sur un autre joueur, et à force d'échanges (pkoi ne pas introduire la notion de monnaie dans le jeu ?) vous repartez avec un moteur (tres faible) et un bloc de direction (volant). Vous reprenez le chemin à l'envers en direction de votre chassis en esperant que personne ne se soit servit en piece en vous piquant une roue, une suspension ou la totale ! Arrivant sur place, vous constatez que votre début de véhicule est intact, et vous associez le moteur aux 2 roues arrières après avoir posé le volant sur le chassis.. Vous montez sur la voiture, et la miracle, elle roule :)
Certe, le déplacement est lent, la conduite difficile et la consomation relativement élevée, mais vous avez déjà franchis un échelon social du monde de MeMak: vous possédez un moyen de transport ! (Attention tout de même à ne pas rouler trop vite, au risque de perdre une suspension ou une roue, ou à vous faire attaquer par une bande de pillards armés)
QQ jours plus tard:
Grace à votre véhicule, vous avez exploré une grande partie du monde dans lequel vous êtes (associé à un serveur, donc) et avez récolté un nombre important de briques d'argile, principalement regroupées près d'une fosse, à l'est du monde.
Vous assemblez ces briques pour vous forger un garage, aussi simple que trois murs et une planche en bois pour le toit, le tout relié par des "soudures".
Peut être dans qq mois aurrez vous assez de brique pour ériger, vous aussi, un chateau sur les haut reliefs du monde, accessibles uniquement avec des machines volantes (la légende raconte qu'il existe un chemin siniueux pour y monter à pied avec un groupe de marcheurs entrainés), pour rejoindre ces clans armés qui habitent et se battent là bas...


'fin bon, ca n'est que ma vision de ce qu'est capable de devenir ce projet ;)


Last edited by Xfennec on Mon Jul 21, 2003 12:54 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 18, 2003 8:07 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:33 am
Posts: 69
Location: loiratlantik
ça laisse le champ libre à pas mal d'idées :).

concernant la modélisation d'un personnage, comment pourrait-on gérer ses déplacements ? son intégration phisyque ?

_________________
Willou.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jul 20, 2003 12:43 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
willou, ces questions sont pertinentes, je vais ouvrir un thread à ce propos dès que j'en aurais le temps ;)


Top
 Profile  
 
 Post subject:
PostPosted: Fri Aug 01, 2003 12:41 pm 
Offline

Joined: Sun Mar 16, 2003 3:53 pm
Posts: 89
Location: dans ton cul
j'aurais pas osé revé d'autant d'interactivité :]
on a plu qu'a (comme ya 6 mois) plancher une arborescence :)

_________________
bouffe la rouille et mort aux cons


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group