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 102963 times)

0 Members and 1 Guest are viewing this topic.

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #325 - 07 September 2010, 00:40:58
Quote
DagoO a écrit:
J'ai une question moi (il en faut bien..)

En commençant le projet, tu t'attendais à 100% à le finir, même si un gros problème se serais présenté (réparable de toute façon) ou il y aurait eu des chances qu'orbiter ne puisse pas boire ton idée et donc impossibilité de faire l'add-on?

Autrement dit : peut-on tout faire en programmant pour orbiter?


Moi je dirais que non, car on est limité à Orbiter. Si tu parles de la programmation en générale (sans API), oui, tout est possible mais l'explication de pilote334 vient se confirmer.

Déjà une bêta ! J'en ai manqué pendant ma mini-absence... :applause: pilote334.


Émile

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

- Luc Plamondon

Offline Vergil

  • Full Member
  • ***
  • Posts: 150
  • Karma: 0
Reply #326 - 07 September 2010, 20:17:59
Un bon gros merci !

Je vais essayer sa de suite !

_______________
Récit d'aventure, Futuriste ou historique, fait avec Orbiter sur :
http://orbiterlog.forumprod.com/

Merci d’apporter votre soutient pour le faire vivre si l'idée vous plait ( :

Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #327 - 08 September 2010, 05:55:45
Quote
Bibi Uncle a écrit:
Quote
DagoO a écrit:
J'ai une question moi (il en faut bien..)

En commençant le projet, tu t'attendais à 100% à le finir, même si un gros problème se serais présenté (réparable de toute façon) ou il y aurait eu des chances qu'orbiter ne puisse pas boire ton idée et donc impossibilité de faire l'add-on?

Autrement dit : peut-on tout faire en programmant pour orbiter?


Moi je dirais que non.
Tout, c'est une vaste notion. Mais la prog permet de bidouiller de manière assez vaste pour n'être limiter plus que par l'aspect technique, et non par les limitations d'Orbiter.
On trouve pas mal de projet naze mais mettant en place des choses "non prévues" par Orbiter. Un MFD IRC (lecture de page internet dans Orbiter), un jeu Astéroïde (pas vraiment dans le concept de base d'Orbiter) et d'autres trucs dans le genre que j'ai pas actuellement en tête. On a aussi l'exemple de la galaxie proposée sur le forum. Il me semble que des solutions avait étées avancées pour passer outre la limitation à un seul système solaire. Un dernier exemple : on a pas un module multijoueur en développement?
Je pense qu'au final, on est surtout limité par l'aspect graphique de la chose (moteur graphique pas vraiment performant), mais est-ce vraiment un problème? Un bon addon, c'est surtout des fonctionnalités pratique et interressante, pas des ajouts d'HDR ou des modèles 3D de milliards de polygones.
Bon, il est tôt, j'ai un train à prendre. Désoler de ne pouvoir développer plus. que ça. Puissiez-vous passer une bonne journée. A plus, les copains.
Nico



Offline Vladimir2000

  • Hero Member
  • *****
  • Posts: 755
  • Karma: 2
Reply #328 - 08 September 2010, 17:16:06
Dsl si je m'éloigne un peu du sujet mais j'ai une idée:

Pour nos vols en réseaux, on devrai créer Huston.
Quoi de plus réaliste? Créons une base avec un VC 3D qui resemblerait a une base de contrôle avec pleins de MFD, comme ca il y'aurait un opérateur dans la base qui suiverait le vol et chercherait les solutions de tir les plus économiques et guiderait le vaisseaux spatial dans sa mission... Vous en pensez quoi???



Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #329 - 08 September 2010, 22:07:41
on y pense....



Offline Vladimir2000

  • Hero Member
  • *****
  • Posts: 755
  • Karma: 2
Reply #330 - 09 September 2010, 18:04:03
Si tu arrive a ce qu'on puisse voler en réseaux avec plusieur vessels différant ca serait une réussit et la realisation de la base ne devrait pas etre trop difficille...

dsl pour lortograf, j'ai écri sous les chapeaux de rou



Offline Thrawn

  • Sr. Member
  • ****
  • Posts: 264
  • Country: France fr
  • Karma: 12
Reply #331 - 09 September 2010, 21:25:52
Sur les chapo de roux on dit :applause:



Message modifié ( 11-09-2010 14:29 )

------------------------------------------------------------------------------------------------
Ex Astris Scientia

Offline Vladimir2000

  • Hero Member
  • *****
  • Posts: 755
  • Karma: 2
Reply #332 - 11 September 2010, 12:07:05
Ouais et si tu veux que ton smiley fonctionne, il faut l'écrire correctement:

Toi: ": applause:"

Et en réalité: ":applause:"



Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #333 - 11 September 2010, 12:26:32
Alors pour le multijoueurs à plusieurs vaisseaux, pour le moment c'est non car comme dit plus haut :

Quote
vous affolez pas, je suis tombé sur un os qui va être difficile à résoudre. J'ai intégré hier l'actualisation et la synchronisation des autres vaisseaux du scénario. J'ai pris comme à mon habitude les éléments orbitaux comme référence.

Hélas, ils ne sont pas assez précis pour permettre un docking. Pour exemple j'ai tenté un rendez-vous avec l'ISS. L'erreur de précision de la position de notre vaisseau ajouté à l'erreur de l'ISS permet tout juste de faire une approche à une quarantaine de kilomètres.

Et je n'ai pas la solution...si quelqu'un la trouve.....je suis preneur !

Yves



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #334 - 11 September 2010, 13:31:47
Ok ... Je m'en rapproche ... via la classe oapi MODULE que j'ai réussi à utiliser en même temps que la classe MFD .
Cette fonction de la classe MODULE devrait t'interresser :

Quote
virtual void oapi::Module::clbkVesselJump  ( OBJHANDLE  hVessel   )

Discontinuous vessel repositioning notification.

Sent to modules after a vessel position has been set explicitly (rather than via continuous state propagation. This callback can be used to force a refresh of parameters that depend on vessel position.

Voici comment j'utilise la classe MODULE :

Dans mon fichier .h je déclare la classe :



Code: [Select]

using namespace oapi; // ne pas oublier sinon le compilateur ne la verra pas

( FXMODULE est le nom que j'ai choisi , tu le remplaces par celui que tu préfères ...)

class FXMODULE: public Module
{
public:

         FXMODULE (HINSTANCE hDLL); //mon constructeur
~FXMODULE();                           //mon desstructeur


void clbkSimulationEnd();// surcharge des méthodes
void clbkSimulationStart (RenderMode mode);// surcharge des méthodes
//tu pourrais déclarer :
//     void  clbkVesselJump  ( OBJHANDLE  hVessel   )  

//dessous c'est mon code qui n'est pas utile autrement que comme démonstration pour toi
         char* GetDate();
bool CreerFichier();
bool DossExist(char* filepath);
bool chargefichier(char *filepath);//ouverture du fichier
void writeLine(FILE* file,char* line);
void writeLog(char* line);
bool simEnd;
CITYDESIGNERFILE baseFile;
PROXBASE BaseLaPlusProche;
FILE* logFile;
bool fileIsOpen();//informe de l'état du fichier

};

// qui cohabite avec le MFD

class MFDMeshPoser: public MFD {
public:

double Altitude ;//ajout de spock
VESSEL *MeshBuilder;//le nom du vaisseau
MFDMeshPoser (DWORD w, DWORD h, VESSEL *vessel);
~MFDMeshPoser ();

Ensuite , dans un .cpp qui contient le .h correspondant , tu définis tes fonctions :

/

Code: [Select]
/ là c'est mon constructeur

FXMODULE::FXMODULE(HINSTANCE hDLL):Module(hDLL)
{
//initialisation
memset(&baseFile,0,sizeof(CITYDESIGNERFILE));
baseFile.filename="vide";
}

// et là la fonction qui t'interressera je crois

FXMODULE::clbkVesselJump( OBJHANDLE  hVessel   )
{

// tu sauras quoi faire je pense avec les OBJHANDLE  .
}



Une fois toutes tes fonctions définies , tu utilises ta classe ainsi :

Code: [Select]
...
#define STRICT
#define ORBITER_MODULE
#include "multiplay.h"
#include "windows.h"
#include "orbitersdk.h"
#include "orbiterapi.h"
#include "MFDTemplate.h" // c'est là qu'est ma déclaration de FXMODULE
#include "resource.h"

FXMODULE * moduleFx=NULL ; //déclaration portée globale


DLLCLBK void opcDLLInit (HINSTANCE hDLL)
{  

        hSpockDLL=hDLL;
static char *name = "City Designer";   // MFD mode name
MFDMODESPEC spec;

spec.name = name;
spec.key = OAPI_KEY_T;                // MFD mode selection key
spec.msgproc = MFDMeshPoser::MsgProc;  // MFD mode callback function

// Register the new MFD mode with Orbiter
g_MFDmode = oapiRegisterMFDMode(spec);

       moduleFx=new FXMODULE(hSpockDLL); // LA CONSTRUCTION
oapiRegisterModule(moduleFx) ;

}

Maintenant , à chaque fois qu'un vaisseau est déplacé d'une manière explicite , ton code s'execute .
MODULE  fournit d'autres fonctions qui te permettent de controler chaque frame , telle que :

[quote]virtual void oapi::Module::clbkPreStep  ( double  simt,  
  double  simdt,  
  double  mjd  
 )   [virtual]

Time step notification before state update.

Called at each time step of the simulation, before the state is updated to the current simulation time. This function is only called when the "physical" state of the simulation is propagated in time. clbkPreStep is not called while the simulation is paused, even if the user moves the camera. [/quote]

J'espère que tu trouveras ici de l'aide .
A+

:music:



Message modifié ( 11-09-2010 15:11 )

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

Offline Vladimir2000

  • Hero Member
  • *****
  • Posts: 755
  • Karma: 2
Reply #335 - 11 September 2010, 17:26:23
moi aussi ;)



Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #336 - 11 September 2010, 19:28:24
Non, je crois que vous ne m'avez pas compris, ou je me suis mal exprimé : la mise à jour d'un vaisseau quelconque dans sa position, j'y arrive, "setElements" m'y aide bien. Mais c'est la précision qui me fait défaut. Là est mon problème dans la mesure où on a une fonction pour lire la position, mais pas pour l'écrire ! c'est là mon souci, les éléments orbitaux n'étant pas assez précis pour faire de la synchro. Mais je vais voir ton idée, elle peut-être intéressante...

Yves



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #337 - 11 September 2010, 20:18:03
Quote
Mais c'est la précision qui me fait défaut.


Ben en fait , c'est la solution , si tu regardes de plus près . ( AutoUpdate dés replacement avec setElement par exemple ,
je ne vois pas mieux ! )
Mais surement que ton code est articulé autour de la fonction update du MFD (faible taux de rafraichissement), si c'est le cas cela explique la perte de temps et de précision . J'ai choisi de faire le pas vers MODULE, la transition m'a couté 24 h de prog , mais les performances sont là .
 Maintenant , c'est difficile de t'aider sans savoir autrement qu'en imaginant comment tu as codé ton affaire ...
Bonne chance en tout cas !
A+

PS : L'apprentissage de MODULE est important toutefois car il représente le lien entre OrbiterNG(serveur non graphique) et
la solution graphique nouvelle à développer . Autant dire que c'est l'avenir .



Message modifié ( 11-09-2010 20:21 )

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 #338 - 12 September 2010, 00:26:23
ok, bien vu. Non en fait la routine d'actualisation est indépendante du MFD mais de "callbackOPCPreStep", voilà pour l'info...

Yves



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #339 - 12 September 2010, 06:07:08
Salut !
Pour finir bien ...

Code: [Select]
[b]DLLCLBK void opcPreStep[/b]  ( double  simt,  
  double  simdt,  
  double  mjd  
 )    

Time step notification before state update.

Called at each time step of the simulation, before the state is updated to the current simulation time. This function is only called when the "physical" state of the simulation is propagated in time. opcPreStep is not called while the simulation is paused, even if the user moves the camera.

[b]Deprecated[/b]:

This function has been[color=red] replaced by [b]oapi::Module::clbkPreStep. [/b][/color]
Parameters:
 simt  simulation time after the currently processed step [s]  
 simdt  length of the currently processed step [s]  
 mjd  simulation time afte the currently processed step in Modified Julian Date format [days]  

Note:
Plugins should no longer implement this function. Instead they should create an instance of a class derived from oapi::Module during InitModule that overloads the oapi::Module::clbkPreStep method, and register it with oapiRegisterModule.
opcPreStep is called by Orbiter only if no instance of oapi::Module is created and registered during InitModule, or if a registered module does not overload the oapi::Module::clbkPreStep method

Donc :
 
Quote
Mais je vais voir ton idée, elle peut-être intéressante...
:ptdr: :ptdr: :ptdr:
A+



Message modifié ( 12-09-2010 06:11 )

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 #340 - 12 September 2010, 16:07:21
Quote
oapi::Module::clbkPreStep.


C'est bien celle dont je me sers...

Yves



Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #341 - 12 September 2010, 16:10:37
Va falloir vraiment que je me plonge dans cette histoire de classes....

Pffff !!! J'aimais bien travailler avec les fonctions moi....

Yves



Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #342 - 12 September 2010, 19:09:38
Et oui! Mais tu vas voir : une fois le principe des classes à peu prés compris on peut plus s'en passer. Aprés, ça dépend des gens. J'étais sceptique au départ mais j'adore ce truc. La POO, je peux plus m'en passer.



Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #343 - 14 September 2010, 09:38:22
Je confirme les dires du pingouin, ca m'avais fait peur aussi au début habitué au pascal et au C.
Je n'y voyais pas l'intérêt, ayant peur de ne pas savoir comment organiser tout cela. et au final, je suis incapable maintenant de revenir aux simples fonctions.
Le langage objet structure naturellement ton code.  c'est une simple manière de regrouper dans un même fichier une idée, un concept. En gros tu reunis des variables et des fonctions qui permettent de les manipuler.

rendre els variable privées permet de garantir très simplement que tu ne peux pas les modifier de n'importe où et donc de centraliser les appels, pour débuigger apr la suite cela simplifie tout. si par exemple tu n'as qu'une seule fonction pour changer une valeur d'un classe, il suffit d'y mettre un point d'arrêt pour intercepter toute les modifications. C'est trsè efficace quand ton code commence à grossir.


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

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

Offline pilote334

  • Sr. Member
  • ****
  • Posts: 300
  • Karma: 5
Reply #344 - 15 September 2010, 00:06:53
Bon ben ça y est je fous le nez dedans...

Yves



Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #345 - 15 September 2010, 01:51:57
Quote
pilote334 a écrit:
Bon ben ça y est je fous le nez dedans...

Yves


N'oublies pas les Tylenol, tu en auras besoin.

Je suis avec tofitouf et le pingouin. Au début, ça l'air con mais dès que tu assimiles vraiment le principe, le C est oublié pour toi (mais pas tout à fait car le C++ est très semblable :badsmile: )

:wor:Vive Bjarne Stroustrup !:wor:
C'est pas moi sur la photo. C'est Stroustrup !



Message modifié ( 15-09-2010 01:56 )

Émile

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

- Luc Plamondon

Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #346 - 15 September 2010, 05:44:02
A ce propos, Mr Stroustrup a écrit un bon bouquin sur le C++ dont la simplicité du titre contraste avec le nom à coucher dehors* dont l'ont affublé ses parents (bien que ça doit paraître plutôt classique pour les Danois) : The C++ Programming Langage. Un livre de référence à avoir absolument.
C'est vrai que le prix peut faire peur : http://www.amazon.fr/Programmation-Applications-avec-Bjarne-Stroustrup/dp/274407442X/ref=sr_1_1?ie=UTF8&s=books&qid=1284522024&sr=8-1
Mais en fouillant, on peu le trouver pour une quinzaine d'euros (frais de port compris). Evidament, c'est de l'occasion à ce prix-là, mais c'est vraiment une super référence à avoir à portée de main lorsqu'on programme.

*Tellement original comme nom, dans un domaine où les anglophones dominent le marché, qu'il a enregistré ça :
http://www.research.att.com/~bs/pronounciation.wav



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #347 - 15 September 2010, 08:20:34
Super le renfort des programmeurs qui ont la classe !
:applause:
C'est bien , yves , que tu aies décidé de gravir cette montagne , le plus dur c'est le premier pas .
:top:
Ce n'est pas une perte de temps , au contraire , au fur et à mesure de ta progression , tu vas prendre de l'altitude , et
ta vision périphérique va s'élargir ! :badsmile:
N'hésite pas à demander de l'aide , puisque nous sommes plusieurs à être capables de t'aider dans ce passage de transition vers la programmation orientée objet !
 A+ , bonnes découvertes !


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

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #348 - 15 September 2010, 23:20:14
Comme c'est étrange. En regardant ton lien Nico, j'ai tout de suite cherché la version anglaise qui est, pour la plupart du temps, beaucoup moins cher... mais pas ici. 62 $ ! http://www.amazon.ca/Programming-Principles-Practice-Using-C/dp/0321543726/ref=sr_1_2?s=books&ie=UTF8&qid=1284585850&sr=1-2

C'est la référence... mais qui coûte cher. :arg:



Message modifié ( 15-09-2010 23:24 )

Émile

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

- Luc Plamondon

Offline NLS le pingouin

  • Legend
  • ******
  • Posts: 826
  • Karma: 1
Reply #349 - 16 September 2010, 00:41:56
C'est tellement la référence qu'on peut le trouver en français à des prix trés abordables. Evidament, on a pas la dernière révision à chaque fois, mais c'est pas trop trop grave au final.