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: Orbiter Challenges - plan du site  (Read 12671 times)

0 Members and 1 Guest are viewing this topic.

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #50 - 20 October 2010, 22:36:32

 
Quote
Il recoit apr contre des données à un format plus "cfg orbiter" car pour l'instant je les édite à la main. le xml ne me sert que quand je discute entre deux modules et que j'ai aps à traiter des trucs à al main.

Tu aurais une liste de ces données plus "cfg orbiter" ? Structurées comment ?
A+


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 #51 - 21 October 2010, 01:41:16
je mettrais une description complète sur le wiki demain je pense en attendant voici toujours le script du premier challenge de nulentout :

[code]// j'ai ajouté tout plein de commentaire pour rendre le fichier compréhensible

// j'ai ajouté tout plein de commentaire pour rendre le fichier compréhensible

// la description principale. Affiché en haut à droite
Title = Sauvez la famille RetibrO

// paramètre optionnel
// si ce paramètre est mis, on affiche le fuel de ce vaisseau et on vérifie qu'on ne tombe pas à zero
FuelVessel=GL-01

// paramètre optionnel
// exprimé en seconde (3600 = 1h, 86400 = 1 jour, 2592000 = 1 mois
// c'est le temps max pour accomplir la mission
// ici 4 jours
Chrono = 345600

// les obejctifs se nottent entre [ ] en début de ligne
[ Checkpoint // premier objectif un checkpoint, c'est à dire un test de distance
   
   // le titre principal
   Title = Approche de la lune.
   // description plus complète
   Desc = Entrer dans la sphere d'influence de la lune
   
   // le type de la cible en language orbiter
   // Body = planète ou lune
   // Vessel = vaisseau
   // Base
   // Pad
   // Dock
   Type=Body
   
   // le nom de la cible (comme on le trouve dans les fichers scn ou dans les config d'orbiter)
   Target=Moon
   
   // le nom de du vaisseau qui doit acomplir l'objectif
   // comme on peux imaginer des scénarios qui demandent d'utiliser plusieur véhicule
   // je le note ici. Si ce n'est aps présé c'est toujorus le vaisseau en cours.
   Vessel=GL-01
   
   // la distance de l'objet pour résir l'objectif
   // quelques mots clefs peuvent remplacer une valeur chifrée
   // InfuenceSphere : pour la sphère d'influence, ca ne marche bien évidemment que pour les planètes.
   // NearVessel : 10x la taille d'un vaisseau.
   // sinon on peux noter un chiffre en metres
   Distance=InfuenceSphere
]

[ Orbit // second objectif une détection d'orbite, ici on détecte des valeur orbitales

   Type=Body
   
   Title = Se mettre en orbite autour de la lune
   // description plus complète
   Desc = Approchez les point du Perigee et de l'Apogee proche de la surface lunaire (2000 Km)
   
   // toujours la lune comme cible et conc référence de l'orbite
   Type=Body
   Target=Moon
   
   // toujours le nom de du vaisseau qui doit acomplir l'objectif
   Vessel=GL-01
   
   // les paramètre à détecter
   // ici on détecte les valeurs de PeA et ApA
   // voici la liste des trucs détectables Ecc Pea Per Apa Par avec à chque fois une valeur max et min
   PeA-Min=1000
   PeA-Max=2000000
   Apa-Min=1000
   Apa-Max=2000000
]

[ Orbit // Circulariser l'orbite

   Type=Body
   
   Title = Rendre l'orbite circulaire
   // description plus complète
   Desc = Amener Ecc le plus proche de zero
   
   // toujours la lune comme cible et conc référence de l'orbite
   Type=Body
   Target=Moon
   
   // toujours le nom de du vaisseau qui doit acomplir l'objectif
   Vessel=GL-01
   
   // les paramètre à détecter
   // ici on détecte les valeurs de PeA et ApA
   // voici la liste des trucs détectables Ecc Pea Per Apa Par avec à chque fois une valeur max et min
   Ecc-Max=0.001
]

[ Checkpoint // approche de la base
   Title = Approchez de la zone de crash
   Desc = Voir visuellement le point d'impact (distance < 10Km)
   
   // on pointe ici sur une base
   Type=Base
   Body=Moon
   Target=Zone de crash
   
   Vessel=GL-01
   
   Distance = 10000 // 10km de la base
]

// enfin l'atterissage
[ Land

   Title = Atterissez vite !
   Desc = Atterissez à moins de 100 m du point d'impact. Depechez vous, ils commencent à manquer d'air mais pas d'imprudence ...

   // toujours la lune,
   Type=Base
   Body=Moon
   Target=Zone de crash
   Vessel=GL-01
   
   // il faut s'approcher à moins de 100 m de la base
   Distance=100
]

[code]

Je pense que ta curiosité sera satisfaite. L'avantage pour moi du format cfg c'est que mon manager sais en modifier els paramètres à la volée, cela simplifie l'échange de départ.

Ensuite une socket est crée et les echanges se font en xml comme montré plus haut.

le manager vérifie que c'est valide (N° de partie etc...) et renvoie à son grand frère le serveur qui enregistre la progression. Cette dernière phase est justement ce que je paufine.


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

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #52 - 21 October 2010, 01:56:33

Super !
Ma curiosité est comblée ...
Au moins , quand tu parleras de tes problèmes de code , je pourrais comprendre ce que tu dis !
Merci tof' , je vais étudier çà .

J'etudie de mon coté la possibilité qu'offre lua au sein du code C++ .
J'aimerais par exemple associer des scripts à des vessels en des temps bien définis .
Extrait de l'aide d'orbiter.pdf
Quote
Execute a Lua command or script from a module using the Orbiter API.
This is useful for implementing autopilots and control systems.
For script examples and a list of available functions, see the “Orbiter Scripting User Manual” section in the Orbiter online help (available from the “Help” button on the Launchpad window, or with from within the simulation. From a terminal (console window or terminal MFD) you can access the script manual by typing: help(api).
A+


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 #53 - 21 October 2010, 08:58:04
c'est clair que cette nouveautée de 2010 est pleine de promesse. lua est un super langage de script. et cela peux simplifier pas mal de choses pour ce que tu veux faire pour le mode carrière


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

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #54 - 21 October 2010, 12:39:10

Quote
lua est un super langage de script. et cela peux simplifier pas mal de choses pour ce que tu veux faire pour le mode carrière

Oui .
Ne sachant pas si tu as eu le temps de voir le répertoire challenges dans Orbiter2010 , je te montre le fichier "Challenge1.lua" :

Tu verras que le code peut être facilement adapté aux besoins d'orbiterChallenge , sans même passer par du c++ puisque un script peut démarrer en auto s'il est déclaré dans un fichier scénario .
Le code :

Code: [Select]
-- read high score list from file
function hscore_read (file,n)
    local slist={}
    local f = io.open(file,"r")
    if f ~= nil then
        for i=1,n do
            local t = f:read()
            if t == nil then break end
            local name,fuel
            _,_,name,fuel = string.find (t, "(.-):(.+)")
            slist[i]={name,tonumber(fuel)}
        end
        f:close()
    end
    return slist
end

-- write high score list to file
function hscore_write (file,hscore)
    local f = io.open(file,"w")
    for i=1,#hscore do
        f:write(hscore[i][1]..':'..hscore[i][2]..'\n')
    end
    f:close()
end

-- convert high score list to a string
function hscore2str (hscore,mark)
    local str
    if #hscore > 0 then
        str = 'High score list:\n\n'..string.format('%s   %s', 'Fuel used', 'Name')..'\n----------------------------------'
        for i=1,#hscore do
str = str..'\n'..string.format('%08.2f    %s', hscore[i][2], hscore[i][1])
            if mark==i then str = str..'   <====' end
        end
    else
        str = 'No high scores yet!'
    end
    return str
end


data_path = 'Script/Challenges/Challenge1.dat' -- high score file
max_score = 10 -- max high score entries

intro = 'Flight challenge:\n\
Launch the Delta-glider into orbit and dock\
with the International Space Station.\
Use as little fuel as possible.\n'

term.out (intro)

-- read highscore list
slist = hscore_read (data_path, max_score)

-- sanity checks
v = vessel.get_interface('GL-01')
if v == nil then
    term.out ('Could not find GL-01. Aborting')
    return
elseif v:get_classname() ~= 'DeltaGlider' then
    term.out ('Wrong vessel class. Aborting')
    return
end

hd = v:get_dockhandle (0)
hp0 = v:get_propellanthandle (0)  -- main tank
hp1 = v:get_propellanthandle (1)  -- RCS tank
m0 = 13500
m1 = v:get_propellantmass (hp0) + v:get_propellantmass (hp1)
if m0 == m1 then
    ptext = string.format ("Initial propellant mass: %.2f kg\n", m0)
else
    ptext = string.format ("Initial propellant mass: %.2f kg\nUsed so far: %.2f kg\n", m0, m0-m1)
end
htext = hscore2str(slist)
term.out(ptext..'\n'..htext..'\n')

note = oapi.create_annotation()
note:set_pos (0.3,0.05,0.9,0.95)
note:set_colour ({r=1,g=0.6,b=0.2})
note:set_text (intro..'\n'..ptext..'\n'..htext)

-- wait for engines
while v:get_propellantmass (hp0) + v:get_propellantmass(hp1) == m1 do
    proc.skip()
    if m1 < m0 and oapi.get_simtime() > 10 then
        break
    end
end

note:set_pos (0.05,0.2,0.5,0.5)
note:set_size (1.2)

-- wait for docking event
mate = v:get_dockstatus (hd)
while mate==nil do
    dm = m0 - (v:get_propellantmass (hp0) + v:get_propellantmass(hp1))
    note:set_text (string.format("Fuel used: %.2f kg", dm))
    proc.skip()
    mate = v:get_dockstatus (hd)
    if mate ~= nil then -- make sure we are docked to ISS
        v2 = vessel.get_interface(mate)
        if v2:get_name()~='ISS' then mate = nil end
    end
end

-- write out the results
dm = m0 - (v:get_propellantmass (hp0) + v:get_propellantmass(hp1))
ptext = "Challenge completed successfully!\n"
ptext = ptext..string.format ("Total fuel expenditure: %.2f kg", dm)
note:set_pos (0.3,0.15,0.9,0.95)
note:set_size (1)
note:set_text (ptext)

-- enter high score list!
if #slist<max_score or dm < slist[#slist][2] then
ptext = ptext.."\n\nYou made it into the high score!"
note:set_text (ptext)
    name = proc.wait_input ('High score: Enter your name:')
    idx = #slist+1
    for i = 1,#slist do
        if slist[i][2] > dm then idx=i; break end
    end
    table.insert(slist,idx,{name,dm})
    if #slist > max_score then table.remove(slist) end
    hscore_write (data_path, slist)
end

ptext = ptext..'\n\n'..hscore2str(slist,idx)
note:set_text (ptext)
proc.wait_sysdt(20)
oapi.del_annotation (note)


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 #55 - 21 October 2010, 14:24:38
non je n'avais pas vu ce truc.

Lua ouvre vraiment plein de possibilité. Comme j'ai déjà vraiment bien avancé de ce coté je vais me contenter de mon existant mais pour le mode carrière que proposait solarLiner ca va surement simplifier beaucoup de choses.

excellent !


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

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

Offline nulentout

  • Legend
  • ******
  • Posts: 3356
  • Country: France fr
  • Karma: 242
Reply #56 - 21 October 2010, 19:25:42
Bonjour les copains,
Suite à une mise entre parenthèse pendant trois semaines de ma vie ludique sur Internet, j'ai décroché pendant beaucoup de temps.  Conséquence de problèmes personnels. (Décès accidentel d’un Ami, puis de la Maman de mon épouse, sans compter Internet qui n’a plus fonctionné durant une semaine quand j’ai voulu m’y remettre)
Je suis revenu, et je vois que ça bouillonne !
Il est temps que Tofitoufouquifaitout et ma pomme on rétablisse le contact.
Pour ce qui concerne les menus, j'aurais une forte préférence pour du Français intégral ... mais c'est personnel. En particulier le titre : "SCORES / PILOTES" ou quelque chose du genre me semblerait plus couleur locale que Hall of fame.
Pour ce qui concerne la documentation, au lieu de la placer en un lieu de type WIKItruc, je suis persuadé qu'un onglet spécifique sur la page d'accueil serait préférable. Bien naturellement, collaborant étroitement avec notre Amis tofitouf je veux bien me charger de la mettre en forme.
J'ai vu que les idées explosent, et que Touf est tenté de foncer un peu dans toutes les directions. Mais rappelle-toi cher copain ce que nous avions convenu : Mettre en place un noyau "simple" qui permet de faire fonctionner le MINIMAL, puis ensuite y greffer des perfectionnements dans la mesure de ton temps de libre toujours insuffisant.
Je pense que le moment est venu de placer en ligne sur ton « DEFIEUR » tous les défis déjà écrits.
Je me demande au passage si les tutoriels qui les accompagnent ne devraient pas être regroupés dans l'onglet des documents. Du reste cette page spécifique pourrait être organisée en "groupements". Il y aurait les tutoriels relatifs aux défis, les tutoriels relatifs à ceux qui désirent créer et enfin la documentation relative aux divers volets de fonctionnement du site.
Bon, pour l'instant je suis à court d'idées mais totalement à la disposition de tofitouf.
Je t'ai envoyé un courrier électronique, mais tu ne m'as pas répondu, je me demande si tu l’as bien reçu.
Amitiés pour tous : Nulentout.


La sagesse est un trésor ... tellement bien caché.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #57 - 21 October 2010, 20:20:26
Salut Michel, toutes mes condoléances ainsi qu'aux proches, en pensée avec toi.
La mère de mon épouse ne va pas bien du tout aussi, c'est une épreuve que
malheureusement nous traverserons tous.

Sinon content de te voir de retour... :friend:

A++

Dan



Message modifié ( 21-10-2010 23:29 )


Offline Fast_toche

  • Legend
  • ******
  • Posts: 1329
  • Country: France fr
  • Karma: 34
  • Time is nothing...
Reply #58 - 21 October 2010, 22:15:12
Toutes mes condoléances également...
Ca fait plaisir d'avoir des nouvelles ;) même malheureusement mauvaises des fois...



Offline nulentout

  • Legend
  • ******
  • Posts: 3356
  • Country: France fr
  • Karma: 242
Reply #59 - 22 October 2010, 08:59:27
Merci les copains.
Je totalise un certain âge, nos Parents ont forcément "davantage" et il devient "dans l'ordre des choses que quitter ce bas monde" en principe avant les enfants. L'ordre est parfois lourd à supporter ...
Ceci dit, j'ai dépassé les 62 Noëls, c'est un privilège qui n'est pas accordé à tous et j'en suis bien conscient. Aussi, bien que l'on ne peut pas traverser une aussi longue période "indemn", regarder vers le futur et vivre intensément le présent est à mon sens une bonne formule.
Alors ... Orbiter me voici.
Au passage, j'ai terminé depuis deux mois les livrets de pilotage des vaisseaux XR2 et XR5. Dès que notre Ami Tofitouf sera disponible, on les mettra en ligne.
Va falloir respecter les procédures ou gare à vous !!! :fou:


« Last Edit: 22 October 2010, 09:11:49 by nulentout »
La sagesse est un trésor ... tellement bien caché.

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #60 - 22 October 2010, 09:11:49
vraiment désolé pour les décès qui t'entoure Michel, ca fend le cœur. mais ton retour parmi nous nous fait du bien ! :beer:

....

pour en revenir à tes recommandation,
Oui il est temps de mettre en ligne tous tes jolis défis. tu peux dès à présent demander quelques béta test de ceux qui ne l'ont pas déjà été.

Pour l'aide, la facilité justement de l'écriture du wiki fait que je le préfère vraiment pour l'instant. donc le lien sera disponible directement depuis le menu. mais pas d'onglet pour l'instant. une fois que l'écriture sera bien posée je pourrait bien l'intégrer dans un onglet à part.

det tu as raison j'ai failli me disperser :). je reviens à des choses plus simples et plus efficace dans un premier temps.

pour le présence de tes tutos directement depuis le site, c'est déjà un peu le cas. Quand tu lance la mission au moment de l'introduction j'ai ajouté un lien pour directement lire ton tutorial. On pourra par la suite faire un dossier à part.  Je le note aussi. si j'ai le temps je le ferai volontier.

Et pour l'anglais, Yes you're right. tout en francais pour cette version donc hall of fame deviendra.... "Meilleurs pilotes" ou "Mur de la gloire", si vous avez d'autres proposition je suis preneur.


« Last Edit: 22 October 2010, 09:11:49 by tofitouf »
---------------------------------------------

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