See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Multijoueur -> Module Copilotage  (Read 102356 times)

0 Members and 1 Guest are viewing this topic.

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
22 June 2010, 12:56:58
Bonjour à tous,

C'est un projet qui va prendre du temps, mais je me suis lancé dans un module logiciel externe qui permettra le multijoueur (2 dans un premier temps). Les essais des premières routines sont en cours, mais les eccueils sont nombreux. J'avais tenté de le faire à l'intérieur d'un MFD, mais la fonction recv est bloquante lorsqu'elle attend des données. Donc ce sera un programme externe qui récuperera les données d'Orbiter...

Je vous tiens au courant pour la suite...et l'évolution des choses....


Yves



Message modifié ( 14-08-2010 15:53 )


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #1 - 22 June 2010, 13:01:11
wahoooo, mais y'a déjà un projet en cours sur le site anglophone. mais je ne sais pas s'il est bon


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #2 - 22 June 2010, 16:08:39
Super pilote334. Tu entres en force sur le fofo :beer:. Laisse-nous des messages sur tes avancements dans ce projet :)


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline Fox-Terrier

  • League of
  • Legend
  • ******
  • Posts: 1426
  • Country: Switzerland ch
  • Karma: 28
  • :D
Reply #3 - 22 June 2010, 18:15:43
et tu vas faire comment pour appliquer les mêmes univers à tout le monde ? dès que quelqu'un créé un vaisseau ou l'enlève, il devra apparaître chez tout le monde ou disparaitre
orbiter ne retient pas la valeur des mdf pour chaque vaisseau, il affiche toujours les mêmes, même quand on change de vaisseau
ça va être chiant, mais si tu réussi à finir ce projet de multi-joueur, bravo !
et bienvenue :beer:



Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #4 - 22 June 2010, 19:35:13
En fait la situation de départ devra être commune aux joueurs qui veulent se connecter ensemble (comme dans fs9 ou FSX). L'ajout du vaisseau sur Orbiter n'est pas un problème (scenario editor fait ça très bien), mais comme dans FS9 ou FSX, pour que tout le monde voie le vaisseau d'un joueur, tout le monde doit posséder ce vaisseau. Non, le problème, effectivement c'est la configuration de l'univers et la synchronisation temporelle. Lors de l'initialisation de la session multijoueur, une situation temporelle est choisie (ex. le 1ier juin 2025 à 10:53:22). En fait le joueur qui propose la session sert de référence, c'est lui qui décide donc de la situation. Les autres joueurs en se connectant subissent cette situation et se synchronisent à elle. La position de chaque vaisseau sera celle au moment de la connexion. Voilà pourquoi il va falloir faire attention à la situation de départ (comme dans FS).

Voilà les grandes lignes...les difficultés tiennent, pour le moment plus au protocole de com, que je souhaite rapide et fluide comme sur le réseau DAFSIM, par exemple...(voir www.dafsim.com) que j'utilise régulièrement dans ma compagnie aérienne virtuelle (www.atlantic-sky.fr).


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #5 - 22 June 2010, 22:13:44
pour la synchronisation d'univers je peux te filer un bon coup de main, mon manager d'add-on sert à ca et le multi-joueur était une des cible de cet outil.
il permet de configurer automatiquement une série d'add-on et donc de démarrer tous dans les mêmes conditions, pour la suite, là c'est assez chaud mais largement faisable, faut juste une bonne dose d'acharnement.

tu epux me contacter en MP si tu veux des détails et des ptits coups de pouces

bon courage


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #6 - 22 June 2010, 22:20:01
Merci tofitouf....

J'en suis pas là pour le moment, mais....je te promets de me mettre en relation avec toi quand il sera temps...


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #7 - 22 June 2010, 22:33:56
commence en utilisant juste l'install d'orbiter par défaut y'a déjà de quoi faire.

dès que tu veux ajouter un nouveau vaisseau pour une partie je t'aide. mon manager télécharge l'addon manquant et l'installe de manière transparente (sans opération pour l'utilisateur)

may the schwartz be with you


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #8 - 23 June 2010, 03:06:25
Ok, je vous tiens au courant donc :

Le module serveur fonctionne avec un client, il reçoit les données d'Orbiteur via un stream. Le client est inclus dans un MFD qui retrace les infos de connexion et affiche certains messages du serveur. Pour le moment, je ne travaille qu'avec deux données d'orbiter : le GetFocusObject() et le CountVessel(), mais c'est surtout les liaisons client1<->serveur<->client2 qui m'intéressent pour le moment, c'est la partie la plus tendue...

C'est un début.....mais loin d'être la fin !


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #9 - 23 June 2010, 08:51:08
ambitieux en tout cas, bon courage


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Fox-Terrier

  • League of
  • Legend
  • ******
  • Posts: 1426
  • Country: Switzerland ch
  • Karma: 28
  • :D
Reply #10 - 24 June 2010, 20:59:55
oui, bon courage !



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #11 - 17 July 2010, 05:13:16
Salut à tous !
Nouveau sur le forum et sur orbiter ( je suivais l'affaire par épisode ).
Je cherchais sur divers forums des propositions de mode multijoueur sur Orbiter, et j'ai le bonheur de l'avoir trouvée ici .
Je programme en c++ , ( borlandC++Builder5 de préférence) , et j'aimerais participer à l'élaboration de ce projet ambitieux.
J'ai déjà étudié les principes de fonctionnement de protocoles UDP et TCP , et la mécanique de traitement des données .
Ma plus grosse expérience dans le traitement de données concerne surtout le son ( bibliothèque fmod) et les signaux videos ( SDK win32 Multimédia ) .Egalement musicien et compositeur amateur , graphiste 3d etc ... niveau "amateur éclairé" . Pour finir avec légèreté , j'ai aussi les oreilles pointues !:zen:
Donc , si l'idée d'une collaboration te (vous) plait , n'hésitez pas à me déranger !:merci:   

En espérant vous ( te ...) rejoindre dans ce beau projet , bons vols !


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #12 - 17 July 2010, 11:53:40
une nouvelle recrue pour nos labos !!!!

yes bienvenue Mr spock


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #13 - 17 July 2010, 12:40:22
Yes ... Mon petit doigt de vulcain me dit que nous allons bien fusionner ...
Merci pour l'acceuil , j'ai le nez dans le sdk , je regarde ce qui est proposé et j'exposerais mon point de vue plus tard ...
J'ai survolé les tips de Dan , bien efficaces ... respect !

Spock...


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #14 - 17 July 2010, 16:41:55
Oui, Dan, Papyref, Momo et les autres ont fait un super travail de documentation, qui nous est bien utile, à nous qui tentons de développer...avec nos maigres connaissances...


Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #15 - 17 July 2010, 17:47:54
Bon, quelques nouvelles au sujet du multijoueur. Ayant réussi à faire du multiconnect suffisamment rapide (en fait dépendant du taux de rafraichissement des MFDs). J'en suis à l'étape stratégique de la réflexion. En gros, voici les questions auxquelles je suis confronté :

1 - Il est inutile de synchroniser le multijoueur (de créer les vaisseaux) tant qu'ils ne sont pas visibles d'au moins un autre joueur.

2 - Comment gérer la synchro lorqu'un des joueurs utilise l'accélération temporelle d'où la question suivante

3 - est-il utile de synchroniser la date et l'heure (mais dans ce cas, quid des positions des planètes) ?

4 - doit-il y avoir un module "co-pilotage" au sein du multijoueur, si oui, doit-il accepter l'accélération temporelle ?


Quoiqu'ayant quelques éléments de réponse, je n'ai pas la solution complète à ces problèmes, et j'ai n'ai donc, pour le moment, pas de stratégie de travail là-dessus.

Peut-être vos propre réflexion me permettront-elles d'y voir plus clair....

Yves


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #16 - 17 July 2010, 17:55:15
Pour gérer l'accélération temporelle, tu pourrais faire en sorte que lorsque quelqu'un en démarre une, Orbiter demande à chaque joueur d'appuyer sur une touche pour confirmer que tout le monde veut vraiment faire une accélération temporelle.

Reste juste à programmer tout ça :badsmile:


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #17 - 17 July 2010, 18:30:41
Il y a peut-être plus simple : Un joueur ne peut se synchroniser aux autres que si et seulement si il se trouve en orbite d'un corps. Ainsi quelque soit le temps absolu et la position du corps en question, il se trouve à proximité de ce corps. La position du vaisseau est prise relativement (en fait Apa, Pea,  inc, Lon et Lat) quelque soit la date à laquelle il se trouve. Lors de la connexion, les dates sont synchronisées avec le reste de la session, le corps autour duquel il tourne aura bougé (La Terre aura avancé sur son orbite solaire et elle aura tourné sur elle-même) mais le vaisseau aura conservé sa position relative. Le pilote risque juste de se retrouvé en nuit alors qu'il étant en jour avant de se connecter, ou vice versa...

Bon, je réfléchis encore un peu là-dessus avant de commencer à coder comme un malade...

Yves


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #18 - 17 July 2010, 18:50:24
ca a toujours été un sujet difficile cette histoire d'accélération, la proposition de bibi était la même que moi.

de toute facons la multijoueur n'as de sens que lorsqu'on est tout près les uns des autres. donc ton idée d'être dans la même sphère d'influence est assez bonne mais risuqe de nous empécher de faire des courses spatiales en direct.


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #19 - 17 July 2010, 20:10:38
Ben ouais, c'est juste pour les courses spatiales. Après il y a cette possibilité pour ce genre d'épreuve :

Ici, il ne faut plus parler de position mais d'évènement ce qui inclut la prise en compte de la quatrième dimension qu'est le temps, et c'est assez inhabituel pour le commun des mortels de parler d'espace-temps, ça a toujours un parfum de SF. Et pourtant....

Préalable à une course :

- Choisir un même espace-temps (date unique et positions proche ou confondues) de départ.

- L'arrivée de la course doit se situer dans le même espace mais pas forcément dans le même temps.

- Le serveur enregistre la position de vaisseaux à des intervalles réguliers considérant que le temps est invariant sur toute la durée de la course.

- Les vaisseaux ne peuvent se voir mutuellement que si et seulement si ils sont dans des espace-temps proches.

- Si un vaisseau arrive avant l'autre, le premier, lors de la synchro avec le serveur, devra attendre l'arrivée de l'autre.

- Si le vaisseau qui est arrivé le premier se déconnecte avant l'arrivée du deuxième, ce dernier ne verra jamais le premier vaiseau.

Tout cela paraît, après tout assez conventionnel mais en prenant en compte la possibilité d'accélérer le temps dans le simulateur, cela prend toute son importance.


Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #20 - 18 July 2010, 01:42:30
Woaww ... Je ne m'attendais pas à une telle problématique interne à Orbiter !
C'est vrai que les distances parcourues sont extra-Ordinaires ...

Pour ce qui est de :
Quote
- Choisir un même espace-temps (date unique et positions proche ou confondues) de départ.

Ne suffit-il pas de se servir de l'horloge système , en temps Universel ?
Une simple lecture getTimeDate() ? Ah oui mais non ...Car 2 gars connectés en même temps , un en France et un aux
Strates ou à la Réunion etc ... , n'auront pas la même heure .
A PART SI UN TRAVAIL DE CONVERSION EST FAIT EN AMONT : L'heure locale est celle du Serveur Hôte , les autres sont converties .
 Je ne vois pas l'intêret de ma projeter en l'an 3010 , à part bien sûr pour profiter d'un EVENEMENT CELESTE particulier .
C'est d'ailleurs une idée plausible de challenge : Arriver en lieu et en heure à temps pour admirer un phénomène éphémère . C'est plus un challenge genre Trecking ou rallye dans ce cas qu'une course de vitesse .
Dans le simulateur Condor , certaines TASKS demandent à ce que les participants prennent une photo d'un élément du
décor . Ce système me plait , et l'idée de prendre en photo une éclipse ou un alignement de Planètes-Lunes original aussi.

Je commence à y voir plus clair gràce aux anciens posts de dan concernant l'utilisation des dll , et les moments de déclaration des VESSELS (meshs) .

- Trés bon départ de réflexion sur les filtres à appliquer concernant la visibilité des joueurs entre eux ( la distance qui
les sépare - sans parler du temps , je laisse çà à doc ... :prof: ) .
Cela est indispensable au niveau de la fluidité en cas de connections massives ( on ne sait JAMAIS ...) , j'imagine que
des groupes et sous-groupes de connection devront être établis et mis à jour .
Ce que je sais , c'est qu'une telle architecture est possible , c'est décrit dans le SDK socket WIn32 ... Faut que j'y aille
me rafraichir la mémoire .

L'ACCELERATION TEMPORELLE :

Pas trés réaliste , à part en simulation de Vitesse-Lumière et autre ...
Quel controle avons-nous sur l'Acceleration temporelle ? J'ai lu que parmi les callbacks à notre disposition , une concerne le buffer des actions clavier du joueur : Donc possible de limiter delta ( facteur acceleration) suivant nos propres critères -> De là création de types de vaisseaux , ou classes , qui ont droit ( ou non ) à " l'hyper espace' ?
L'idée d'acheter chez papyBar le foutu module de calcul sans lequel je n'atteindrai jamais alpha du centaure avant les
autres ...
Trop noob sur Orbiter , j'imagine quand même qu'il est difficile de se passer de cette accélération alors je pense encore à ceci : LE PIMENT DU COMPTE A REBOURS . ** Accélération imposée **
Du genre , plus que 3 minutes , 2 minutes ,30 secondes , et mes doigts moites qui glissent sur ce fichu clavier de MFD ,
si je n'entre pas mes coordonées vite fait , je vais me retrouver dans le coeur d'uranus ( et non pas dans le c... de pluton :lol:
 Cet aspect là me plait beaucoup aussi , l'aspect URGENCE ( Vous imaginez la sirène des 10 dernières secondes ...)
Et cela donne un aspect STRATEGIQUE certain .
De derniere minute : Un systeme de quota , en secondes d'utilisation de l'accélération ...



Message modifié ( 18-07-2010 08:48 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #21 - 19 July 2010, 06:12:29
Bonjour à tous ( si c'est possible ... )
Bon , une parenthèse pour DanSteph et " le doc " ( il se reconnaitra ) , plus je découvre ce que vous faites ( portail francophone et autres ... ) plus je suis admiratif . Je n'en finis pas :- Tiens , il a réalisé çà aussi ? :trucdeouf:
Chapeau les gars , et aussi les autres , les anciens ... 3 jours que je parcours le forum et les autres , et votre activité
est étonnante ! Bon, c'est fait .

Réalité ?
Ben je me disais que si créer un mode multijoueur était " facile " , DanStef l'aurait déjà fait .
Donc , investigations pour trouver où çà coince , quelles sont les incompatibilités ( propre aux routines d'Orbiter ) ,
comment les contourner ou faire avec .
Et surtout , trouver ces fameux projets que les plus anciens parmi vous ont en mémoire mais qu'un blue byte comme moi
ignore .
Parmi les projets " utilisables " , j'ai trouvé :
_HAMAC ( ptit nom sympa ..)->Hamac
_OrbConnect . ( upgrade de OUIPC , cousin de FSUIPC en sorte ... ).->OrbConnect

Le premier , HAMAC , a une approche intéressante (?...) qui propose de dévier les calculs d'orbite via leur module ,
et d'utiliser ORBITER comme moteur de rendu ( en lui laissant aussi les déplacements des objets dans leur espace de référence ) . Limitation : Pas de mode sol ...
Quote
*********************************************************************************************
What all this means is that Orbits runs on a central server and users of Hamac.dll in Orbiter
connect to it. At present Orbits only works in orbit landing is not supported as Orbiter
would interfere with the central physics server too much. Equally only orbits around The Moon
are simulated. Orbits has the capacity for simulating the solar system, but as a technology
demonstrator, this was not required.
*********************************************************************************************
Les développeurs ont rencontré des difficultés , notamment celles là :
Quote
I can't land! No. This simulates orbiting. Ground multiplayer didn't need testing and Orbiter intervenes in ground actions too strongly.
I can't dock to two buddies - they jump around! This is an Orbiter limitation, once two vessels are docked, you can't update other vessels at the same time. Maximum of two vessels may dock at any time. This is not a Project Hamac bug.
I can't transfer to Solar or Earth orbit! No. Orbits only simulates the Moon at present, as further complexity, whilst planned for, wasn't required.
I can't change time acceleration! You can, but it'll mess things up. Orbits runs at a set accelerated time to make things happen quicker. You have enough dV in a DG that you shouldn't care.
My orbit deteriorates badly after a long spell Orbits is an unmodified RK4 integrator. Any production version will use the Kosmos engine.

Ces deux projets disposent d'executables à tester ainsi que leurs sources , que je vais m'empresser d'éplucher .
Histoire d'au moins connaitre mon sujet ... A+
J'ai ressorti mon vieux apache ...
Spock


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #22 - 19 July 2010, 14:50:39
@ Spock :

Oui, je sais que de tels projets ont existé, mais de façon embryonnaire (notamment pour OrbConnect que j'ai testé...sans réel succès dans le cadre que je souhaitais.). De plus, je voulais quelque chose qui soit proche de ce que je connais déjà un peu sur d'autres logiciels (FS9 et FSX entre autres) avec un mode de fonctionnement similaire.

Un certain nombre de choses qui n'étaient pas possible sur O2006, le deviennent sur O2010 (au vu des SDKs). Il était donc, à mes yeux, intéressant de revoir le concept...

Mais...s'il y a mieux...je suis preneur....

Yves


Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #23 - 19 July 2010, 15:08:21
pilote 334 :

Salut !
Attends ... Je ne remets pas en question ta démarche , qui semble déjà donner quelques résultats !
Non non, c'est juste moi qui ai besoin de renforcer mes connaissances , et m'initier au SDK d'Orbiter .
Je ne veux pas polluer ton post , mais comme il est probable que tous ceux qui aimeraient qu'un multijoueur devienne
stable le liront , j'en profite pour partager avec toi et eux , l' état des lieux en quelque sorte .
 Je suis allé voir le lien que tu proposais en exemple , jusqu'au : " Je sais que tu aimerais que je te donne le code source , comme je sais qu'en 5 minutes tu le détruirais ... ( en gros c'était çà ) .
:lol:
Pas faux ... :badsmile:
 
 Sinon j'ai l'expérience de VATFrance , squawkbox , squawkbox X ....
IBNET aussi , super bien écrit .
Tout çà pour dire que c'est passionnant comme sujet , et ils sont nombreux à s'y être interressé avant nous .
Nous devrions en tirer quelque chose ...
Spock .


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #24 - 19 July 2010, 17:42:01
et ne négligez pas les choses toutes faites coté serveur comme smartfox. je l'utilise pour un de mes projets pro.
toute la partie echange de données est faite et ca tiens des centaines de joueurs simultatnés. y'a plus qu'à lui envoyer ou recevoir des paramètres (position, vitesse etc...)


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus