Proposer des courses

De VlmWiki

Cette page a besoin d'être complétée à partir des renseignements du forum

Qui peut proposer une course ? Quelles sont les conditions ?

Tout le monde peut proposer une course. Le forum peut vous aider si vous avez des difficultés techniques.

Il faut être conscient :

  • que proposer une course va beaucoup plus vite que de la courir ! Ce ne sont donc pas les stocks de course qui manquent, et il est possible que votre course mette du temps à arriver en ligne (suivant les autres courses déjà programmées).
  • que le comité de course de Vlm essaye de gérer un équilibre entre le nombre de course, la compétition, la diversité, etc... (d'ou le point précédent).
  • que le comité de course de Vlm peut être amené à refuser une course ou vous proposer des améliorations. De même, comme il n'est jamais trop tard pour reconnaitre son erreur, le comité de course de Vlm peut être amené a faire des modifications dans les Wp que vous avez proposé afin que la course reste "jouable". Il ne s'agit pas d'une remise en cause de votre idée, simplement d'un compromis entre créativité et jouabilité.

Il y a une page sur le wiki qui pourrait recenser les Idées de courses

Les informations nécessaires pour créer une course

  • Choix Course en ligne ou course permanente (record)
  • Donner un nom
  • Durée du Stop&Go
  • Date d'ouverture de la ligne de départ
  • Date de fermeture de la ligne de départ
  • Fermeture de la ligne d'arrivée
  • Type de bateau voir Polaires
  • Qualification (lien vers la course de qualification)
  • L'image (la carte) qui résume la course
  • la fréquence de mise à jour (1min ou 5min)
  • les instructions de courses particulières (blackout,etc..)

Recommandations

  • Utiliser le blackout avec parcimonie
  • Pensez que le type de porte "sens de passage" et "pas de demi tour" sont complémentaires (Voir plus bas les options sur les portes)

A quel format ?

D'après le post Phille Comment créer une course, ... et à qui envoyer les info. et le post de sterwenn PUBLICATION DE COURSES, Voici ce qu'il me faut...


Informations nécessaires:

  • Fichier image en PNG de 720x480 pixels de dimension et nommé xxxxx.png (xxxxx=N° de la course idraces, voir plus loin) qui servira pour la vignette d'annonce. C'est une photo ou un schéma résumant le parcours.
  • Un fichier texte (xxxxx.txt où xxxxx est idraces, voir plus loin):
    • Coordonnées décimales du départ, des WP et de l'arrivée.
    • Nom de la regate (choix libre)
    • Type de bateau qui a une polaire dans VLM : http://wiki.virtual-loup-de-mer.org/index.php/Les_bateaux
    • Penalité pour échouement en minutes (Le fameux stop and go)
    • Date et heure du départ
    • Fermeture ligne de départ
    • Fermeture de la course en % du temps du gagnant
    • Durée entre vac (1 ou 5 minutes) selon type de parcours (si il y a des passages entre les cailloux = 1 minutes)
    • Le fichier texte doit être encodé en UTF-8. Utilisez un outil comme PSPAD pour vous en assurer.(ou Notepad++)


Exemple de fichier xxxxx.txt

# LA COURSE  Route de Fantaisie. 
delete from races where idraces = 20090228; insert into races (idraces, racename, started, deptime, closetime, startlat, startlong, racetype, boattype, firstpcttime, qualifying_races, coastpenalty, bobegin, boend, vacfreq) values (20090228, "Route de Fantaisie", 0, 1235826000, 1235826000+3600, 22105, 114088, 0, "boat_C5v2", 200, "", 3600, 1235826000, 1235826000+4*3600, 5);
# Les WAYPOINTS
delete from waypoints where idwaypoint = 2009022801; delete from waypoints where idwaypoint = 2009022802; delete from waypoints where idwaypoint = 2009022803; delete from waypoints where idwaypoint = 2009022804; delete from waypoints where idwaypoint = 2009022805; delete from waypoints where idwaypoint = 2009022806; delete from waypoints where idwaypoint = 2009022807;
insert into waypoints (idwaypoint, libelle, latitude1, longitude1,latitude2,longitude2, maparea) values (2009022801, "WP1", 22031, 114014, 21984, 114120, 12), (2009022802, "Sonde", -5891, 105789, -5931, 105984, 12), (2009022803, "Sud Afrique", -34823, 20000, -34823, 20000, 10), (2009022804, "Archipel Bijagos", 11286, -16472, 11286, -16472, 8), (2009022805, "Manche", 49960, -5201, 48571, -4706, 8), (2009022806, "Mer du Nord", 51110, 1328, 50869, 1581, 8), (2009022807, "Finish", 51445, 747, 51520, 783, 12);
# Les liens COURSE/WAYPOINTS
delete from races_waypoints where idraces = 20090228;
insert into races_waypoints ( idraces, wporder, idwaypoint, wpformat, laisser_au, wptype) values (20090228,1,2009022801,0,999,"Classement"), (20090228,2,2009022802,0,999,"Classement"), (20090228,3,2009022803,1,0,"Classement"), (20090228,4,2009022804,1537,80,"Classement"), (20090228,5,2009022805,0,999,"Classement"), (20090228,6,2009022806,0,999,"Classement"), (20090228,7,2009022807,0,999,"Finish");
delete from races_instructions where idraces=20090713;
insert into races_instructions ( idraces, instructions, flag) values (20090713, "http://www.virtual-winds.com/forum/index.php?showtopic=6093", 13);
  • EXPLICATIONS:


  • LA COURSE 20090228 Route de Fantaisie.


idraces: N° de la course = date de départ année-mois-jour (sans les - )ici 28 fev 2009
racename : nom de la course (entre guillemets)
started : 0 ou 1 … 0 = pas encore partie ... toujours mettre 0 car sinon certains fichiers ne seront pas initialisés.
deptime : date et heure du départ en Unix Epoch time = nombres de secondes depuis le 1er Janvier 1970 … http://www.epochconverter.com/
closetime : date de fermeture de la ligne de départ
startlat : latitude du point de départ
startlong : longitude du point de départ
coordonnées en degrés décimaux avec 3 décimales … valeurs positives pour Nord et Est et valeur négatives pour Sud et Ouest (par exemple : 45°30min N soit 45.5 on met donc 45500)
racetype : 0 = course en ligne, 1 = course permanente
boattype : type de bateau (voir liste : http://virtual-loup-de-mer.org/Polaires/ )
firstpcttime : durée max de la course en % du temps du vainqueur en général 50 pour une course en ligne et 200 = 3 fois le temps du vainqueur pour une course permanente
qualifying_races : en cas que cette course soit une qualif pour une course future
coast_penalty : temps de Stop & Go en cas d’échouement en secondes, 3600 = 1 heure
bobegin et boend : début et fin du BlackOut en Epoch Time
vacfreq : fréquence des vac 1 ou 5 minutes

PS: si pas de BlackOut, ne pas mentionner bobegin et boend ni leurs valeurs.

  • Les WAYPOINTS


chaque valeur est terminée par une virgule "," et un ordre par un point/virgule ";"
Les « delete from …. » servent à effacer tout WP qui aurait le même N° dans la BD de VLM
idwaypoint : N° du waypoint >>> N° de la course + 01, 02, …
libelle : nom du WP
latitude1longitude2 : lat et long des 2 points du WP (pour les portes) et pour un WP à point unique les lat et long doivent être identiques
maparea : le facteur zoom pour visualiser le WP à partir du tableau de bord (les N°en haut à droite du tableau de bord, cartes 800 x 600 pix)
séparer chaque WP par une virgule et à la fin un point/virgule


  • Les liens COURSE/WAYPOINTS


Le delete from sert à effacer un tableau existant (du même nom)
Les valeurs : (N° de la course, ordre de passage du WP, laisser_au, type).La valeur laisser_au(relevé)sera de 999 = pour WP avec 2 points ou de 0 à 360 pour laisser WP à point unique au cap xxx (relevé (laisser_au)) c'est à dire que pour passer au nord d'un Way-Point il faut le relever (le voir) au sud 180°sur le compas du bateau
type : Classement, IceGate ou Finish (entre guillemets)
La valeur pour wpformat est calculée en faisant la somme de ses composants:
"WP_TWO_BUOYS", 0
"WP_ONE_BUOY", 1

"WP_ICE_GATE_N", 16
"WP_ICE_GATE_S", 32
"WP_ICE_GATE_E", 64
"WP_ICE_GATE_W", 128

"WP_CROSS_CLOCKWISE", 256
"WP_CROSS_ANTI_CLOCKWISE", 512
"WP_CROSS_ONCE", 1024

Donc pour anti-clockwise + cross-once + one-buoy : 512 + 1024 + 1 = 1537

WP_Two_Buoys = porte (2 bouées)
WP_One Buoy = bouée unique (avec relevé)
Ice_gate= Porte des glaces "N" = faut être vu au moins une fois dans son Sud, "S" = faut être vu au moins une fois dans son Nord (les "E" et "W" ne sont pas encore utilisés)
Clockwise = sens des aiguilles
Anti_Clockwise = contre-sens des aiguilles
Cross_Once = passage unique

Le sens ou contre-sens des aiguilles est par rapport à la 1ère bouée de la porte = "latitude1, longitude1" !
insert into waypoints (idwaypoint, libelle, latitude1, longitude1,latitude2,longitude2, maparea)

races_instructions : lien vers les IC de la course sur le forum de la Taverne. (à crée par un admin ou un mod de la Taverne)

Les outils pour aider à la création de course

Carte de base : http://flatplanet.sourceforge.net/maps/natural.html

EPOC Converter : http://www.epochconverter.com/

(A compléter, Cf. Forum)

Ou / A qui envoyer cette proposition ?

Discutez en par courriel à vlm (arobase) virtual-winds.com et via le forum pour bénéficier de l'expertise et des idées de tous.

Annexe

Détail

  • Créer une course :
    1. ajouter une ligne dans "races"
      Description de la course
      idraces int(11) racename varchar(255) started int(11) deptime bigint(14) startlong int(11) startlat int(11) boattype varchar(255) closetime bigint(20) racetype int(11) firstpcttime bigint(20) depend_on int(11) qualifying_races text idchallenge text coastpenalty int(11) bobegin bigint(20) boend bigint(20) maxboats int(11) theme varchar(30) vacfreq tinyint(4)
      20091103 YYYYMMDD du depart
      laisser vide
      La Moqueca de Peixe 2 0 1254560401 (le 3/11/09 à 11:00 UTC) -1352 46036 Mono650 1254733216 (fermeture du départ le 5/11/09 à 11:00 UTC) 0 = course en ligne
      1 = course permanente
      200
      ex. 200% max du temps du vainqueur (course en ligne = 50, course qualif = 25, permanente = 200)
      laisser vide
      ne pas utiliser
      20090913
      La Moqueca de Peixe
      Challenge mini 650 2010 1200
      20 minutes
      1254733216
      début du blackout
      1254819639
      début du blackout de 24h
      200 flashy 1
      coordonnées : à multiplier par 1000, ex. 46036 = 46.036 N
      qualifying race : Liste des course qualificatives à une course (une seule suffit si plusieurs sont précisées). Ex. 20071021 20071022 20071023 20071024 20071025 (multikawa 2007) ou une seule (ex. TRANSQUAD2 avait TRANSQUAD1 en qualif). Il suffit en fait de faire un chainage et que le qualifying_races de l'une mentionne uniquement la course précédente. Ainsi, pas besoin du depend_on, qui devrait quitter la base de données.

      depend_on : liste des courses qu'il faut obligatoirement avoir terminée (toutes) pour prendre part à une autre. ==> non implémenté pour l'instant, le code n'est pas complêt et est en commentaire dans lib/phpcommon/functions.php. Ne pas utiliser.

      idchallenge : pour classements au temps cumulé. (pas nécessaire, Droopy fait très bien ce travail).
      maxboats : c'est pour faire des courses limitées en nombre d'inscrits (ex :le postlogue de Cap Istambul (80906), qui avait d'ailleurs la 80905 en qualifying_races)
      Le theme : c'est pour forcer un theme pour tous les joueurs d'une course. Pour la 956, on a forcé l'utilisation du theme "oceanexpress_newyork_lorient". ==> Le Theme, c'est le nom d'une feuille de style pour looker l'interface
      bobegin et boend, ce sont des dates, exprimées comme deptime et closetime à la façon "secondes depuis Epoch": elle introduisent le début d'un blackout et la fin de celui-ci.
      On peut par exemple imaginer qu'une course se déroulant autour du meridien 0 soit automatiquement mise en blackout entre 20UTC et 6UTC tous les jours, ça ferait un peu "il fait nuit donc on ne voit pas les concurents". La table "races" peut en mémoriser à la foi.

      Il y a maintenant : "vacfreq", qui indique la durée des vacations en minutes. (alors que le getinfo retourne l'info en secondes)
    2. les ICs sont facultatives
      Instructions de courses
      idraces int(11) instructions
      text
      flag int(11)
      20091103
      laisser vide
      6173
      num topic Taverne
      laisser vide
      13


    3. ajouter N lignes de waypoints
      waypoints
      idwaypoint
      int(20)
      latitude1
      double
      longitude1
      double
      latitude2
      double
      longitude2
      double
      libelle
      double
      maparea
      double
      2009110301 -3876 -38397 -3876 -38397 Noronha 8
      2009110302 -13050 -32300 -13200 -32300 Salvador de Bahia - Sud 12
      coordonnées : à multiplier par 1000, ex. -3876 = 3.876 S
    4. Ordonnancer les N waypoints sur la course (administrateur)
      enchainement des waypoints
      idraces
      int(11)
      wporder
      int(11)
      idwaypoint
      int(20)
      laisser_au
      int(11)
      wptype
      varchar(32)
      20091103
      ou laisser vide
      1 2009110301 270
      passer Norohna à l'ouest
      classement
      20091103
      ou laisser vide
      2 2009110302 999 finish line
      laisser_au : si dans table waypoints : latitude1 = latitude2 ET longitude1 = longitude2 alors le wp est de type laisser_au
      wptype : peut prendre les valeurs Classement ou Finish. Icegate et nosail zonesont des "règles de controle" mises en oeuvre "en dehors/parallèle du moteur VLM", mais ne figurent pas dans le script de création d'une course en base de données.

Schema extrait de http://dev.virtual-loup-de-mer.org/vlm/browser/trunk/base/schemas/races_tables.sql RACES, WAYPOINTS, RACES_WAYPOINTS, races_instructions

  • Créer une course,
    • ajouter une ligne dans "races"
    • ajounter N lignes dans "waypoints" (une par waypoint)
    • faire la relation 1,N (intégrant l'ordonnancement des WP) dans races_waypoint
    • la table races_instructions est facultative
tables valorisées par l'admin lors de la création d'une course
TABLE INFORMATIONS COMMENTAIRES
`races`
 `idraces` int(11) NOT NULL auto_increment,
 `racename` varchar(255) NOT NULL default ,
 `started` int(11) NOT NULL default '0',
 `deptime` bigint(14) default NULL,
 `startlong` int(11) NOT NULL default '0',
 `startlat` int(11) NOT NULL default '0',
 `boattype` varchar(255) default NULL,
 `closetime` bigint(20) default NULL,
 `racetype` int(11) default NULL,
 `firstpcttime` bigint(20) default NULL,
 `depend_on` int(11) default NULL,
 `qualifying_races` text,
 `idchallenge` text,
 `coastpenalty` int(11) default '0',
 `bobegin` bigint(20) default '0',
 `boend` bigint(20) default '0',
 `maxboats` int(11) default '0',
 `theme` varchar(30) default NULL,
 'vacfreq' tinyint(4) default 5,
 PRIMARY KEY  (`idraces`)
`races_instructions`
 `idraces` int(11) default NULL,
 `instructions` text,
 `flag` int(11),
 KEY (`idraces`)
`waypoints`
 `idwaypoint` int(20) NOT NULL default '0',
 `latitude1` double default NULL,
 `longitude1` double default NULL,
 `latitude2` double default NULL,
 `longitude2` double default NULL,
 `libelle` varchar(255) default NULL,
 `maparea` int(11) default '10',
  PRIMARY KEY  (`idwaypoint`)
`races_waypoints`
 `idraces` int(11) NOT NULL default '0',
 `wporder` int(11) NOT NULL default '0',
 `idwaypoint` int(20) default NULL,
 `laisser_au` int(11) default NULL, 
 `wptype` varchar(32) default NULL,
 PRIMARY KEY  (`idraces`,`wporder`)

si dans table waypoints :

latitude1 = latitude2 ET longitude1 = longitude2

alors le wp est de type laisser_au


Un extrait des tables :
+----------+---------------------------------------------------------------------------------+---------+------------+-----------+----------+----------------+------------+----------+--------------+-----------+------------------+-------------+--------------+---------+-------+----------+-------+---------+
| idraces | racename | started | deptime | startlong | startlat | boattype | closetime | racetype | firstpcttime | depend_on | qualifying_races | idchallenge | coastpenalty | bobegin | boend | maxboats | theme | vacfreq |
+----------+---------------------------------------------------------------------------------+---------+------------+-----------+----------+----------------+------------+----------+--------------+-----------+------------------+-------------+--------------+---------+-------+----------+-------+---------+
| 20081102 | Belfast - Man - Ouessant - Les Sables d'Olonne **QUALIF Vent des Globes** | -1 | 1225530000 | -5867 | 54658 | boat_Imoca2008 | 1225533600 | 0 | 10 | NULL | | NULL | 1800 | 0 | 0 | 0 | NULL | 5 |
| 20081103 | Lisboa - Ouessant<->Aber Ildut - Les Sables d'Olonne **QUALIF Vent des Globes** | -1 | 1225738800 | -9134 | 38704 | boat_Imoca2008 | 1225742400 | 0 | 150 | NULL | | NULL | 900 | 0 | 0 | 0 | NULL | 5 |
| 20081109 | Le Vent Des Globes | -1 | 1226232120 | -1790 | 46473 | boat_Imoca2008 | 1226836800 | 0 | 50 | 0 | | NULL | 10800 | 0 | 0 | 0 | NULL | 5 |
| 20090913 | La Moqueca de Peixe | -1 | 1252843200 | -1352 | 46036 | boat_Mono650 | 1252886400 | 0 | 50 | NULL | | NULL | 1800 | 0 | 0 | 0 | NULL | 5 |
| 20091003 | La Moqueca de Peixe 2 | 0 | 1254567600 | -16940 | 32610 | boat_Mono650 | 1254610800 | 0 | 50 | NULL | | NULL | 1800 | 0 | 0 | 0 | NULL | 5 |
+----------+---------------------------------------------------------------------------------+---------+------------+-----------+----------+----------------+------------+----------+--------------+-----------+------------------+-------------+--------------+---------+-------+----------+-------+---------+

+----------+---------+------------+------------+-------------------------+
| idraces | wporder | idwaypoint | laisser_au | wptype |
+----------+---------+------------+------------+-------------------------+
| 20081102 | 1 | 2008110201 | 999 | classement |
| 20081102 | 2 | 2008110202 | 999 | classement |
| 20081102 | 3 | 2008110203 | 999 | classement |
| 20081102 | 4 | 2008110204 | 999 | Finish |
| 20081103 | 1 | 2008110301 | 999 | classement |
| 20081103 | 2 | 2008110302 | 999 | classement |
| 20081103 | 3 | 2008110303 | 999 | Finish |
| 20081109 | 1 | 2008110911 | 999 | Atlantic IceGate |
| 20081109 | 2 | 2008110901 | 999 | Cape of Good Hope |
| 20081109 | 3 | 2008110912 | 999 | Kergelen IceGate |
| 20081109 | 4 | 2008110902 | 999 | Heard Island |
| 20081109 | 5 | 2008110913 | 999 | West Australian IceGate |
| 20081109 | 6 | 2008110903 | 999 | Cape Leuwin |
| 20081109 | 7 | 2008110914 | 999 | East Australian IceGate |
| 20081109 | 8 | 2008110915 | 999 | New-Zealand IceGate |
| 20081109 | 9 | 2008110916 | 999 | West Pacific IceGate |
| 20081109 | 10 | 2008110917 | 999 | East Pacific IceGate |
| 20081109 | 11 | 2008110904 | 999 | Cape Horn |
| 20081109 | 12 | 2008110905 | 999 | Finish |
| 20090913 | 1 | 2009091301 | 999 | Finish |
| 20091003 | 1 | 2009100301 | 999 | Finish |
+----------+---------+------------+------------+-------------------------+



  • les utilisateurs renseignent actuellement directement en SQL et transmettent à Phille, libellé de l'IC, n°topic créé par Phille.

[~]$ mysql -e "desc races"
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| idraces | int(11) | NO | PRI | NULL | auto_increment |
| racename | varchar(255) | NO | | | |
| started | int(11) | NO | | 0 | |
| deptime | bigint(14) | YES | | NULL | |
| startlong | int(11) | NO | | 0 | |
| startlat | int(11) | NO | | 0 | |
| boattype | varchar(255) | YES | | NULL | |
| closetime | bigint(20) | YES | | NULL | |
| racetype | int(11) | YES | | NULL | |
| firstpcttime | bigint(20) | YES | | NULL | |
| depend_on | int(11) | YES | | NULL | |
| qualifying_races | text | YES | | NULL | |
| idchallenge | text | YES | | NULL | |
| coastpenalty | int(11) | YES | | 0 | |
| bobegin | bigint(20) | YES | | 0 | |
| boend | bigint(20) | YES | | 0 | |
| maxboats | int(11) | YES | | 0 | |
| theme | varchar(30) | YES | | NULL | |
| vacfreq | tinyint(4) | YES | | 5 | |
+------------------+--------------+------+-----+---------+----------------+

Améliorer les performances : on devrait supprimer la colonne depend_on (on l'utilisera sans doute jamais, en fait) et la colonne idchallenge un jour. Ne pas prendre la peine de les valoriser, donc.