Forum Khaganat

Khaganat => Hors les Brumes => Programmation => Discussion démarrée par: Zatalyz le 29 Novembre 2013 à 18:37:49

Titre: Comment est organisé le jeu
Posté par: Zatalyz le 29 Novembre 2013 à 18:37:49
Je me permet de copier le log ici, en attendant d'en faire une fiche wiki (si ce n'est déjà fait ? j'ai un doute).
Peut-être à lier avec http://khaganat.ninm.net/wikhan/fr:serv ... un_univers (http://khaganat.ninm.net/wikhan/fr:serveur:concept:creer_un_univers) et  http://khaganat.ninm.net/wikhan/fr:serv ... datasheets (http://khaganat.ninm.net/wikhan/fr:serveur:concept:datasheets)

[09:54:48] <lodnexus> tu sais quel est le langage de programmation de Ryzom Core YannK ?
[09:54:59] <YannK> c++ la plupart
[09:55:11] <lodnexus> euh, ca fait pommes des pommes de terre sautées...
[09:55:34] <lodnexus> oulah, vraiment pas réveillé...
[10:00:22] <liria> c++ et php pour une partie des services via le web
[10:05:27] <lodnexus> ok merci
[10:06:45] <liria> toute l'api ryzom est en php en fait
[10:06:57] <liria> le serveur, le client et les outils sont écrit en c++
[10:07:39] <liria> la base de données mysql est utilisée pour le stockage des données coté api web/web ig
[10:08:05] <liria> toutes les données du jeu sont par contre dans des fichiers directes sans base de données pour le fonctionnement du serveur
[10:14:13] <lodnexus> Est-ce-que tu sais comment sont répartis les données entre le client et le serveur? ex : les assets, j'imagine sont dans les archives .bnp du client, toutes ca je ne sais pas...
[10:15:31] selpa`i_ (~Siah@morla.virt.lxd.bz) joined #khanat.
[10:17:19] <liria> en fait tout les données du jeu
[10:18:08] <liria> son dans le dossier code/ryzom/common/data_leveldesign
[10:18:13] <liria> ce sont des fichiers textes
[10:18:24] <liria> plus exactement des fichiers xml qui décrivent chaque élément du jeu
[10:18:47] <liria> un mobs, la carte, le comportement d'un pnj, etc...
[10:19:11] <liria> ces fichiers textes références les images des assets lorsqu'il s'agit d'indiquer au client quel éléments visuel correspondant à tel décor, armure, mobs, etc...
[10:19:18] <liria> ces donnes du jeu sont appelés datasheets
[10:19:22] <liria> +e
[10:19:40] <liria> et elles sont toutes visibles sur  docuwiki
[10:19:43] <liria> j'ai écrit un script qui génère une version lisible
[10:19:54] <liria> pour le momment on nepeut les éditer par le wiki mais le but à terme
[10:20:21] selpa`i (~Siah@morla.virt.lxd.bz) got netsplit.
[10:20:36] <liria> pour te donner un exemple je vais te pointer un datasheet
[10:21:29] <liria> http://khaganat.ninm.net/dswiki/datashe ... 1.creature (http://khaganat.ninm.net/dswiki/datasheet:khaganat:leveldesign:game_elem:creature:fauna:bestiary:forest:chdfa1.creature)
[10:21:48] <liria> par exemple ce datasheet décrit les yubo allaitants visible autours du point de respawn à silan
[10:21:53] <liria> regarde pa exemples ces lignes
[10:22:15] <liria>    <STRUCT Name="Combat">
[10:22:15] <liria>       <ATOM Name="AggroRadiusNotHungry" Value="15"/>
[10:22:15] <liria>       <ATOM Name="AggroRadiusHungry" Value="15"/>
[10:22:15] <liria>       <ATOM Name="AggroRadiusHunting" Value="15"/>
[10:22:27] <liria> elle te montre que pour les mobs la distance d'agro change en fonction de sa fin
[10:22:33] <liria> qui le savait IG ?
[10:22:51] <liria> ensuite à partir de ces datasheet
[10:22:57] <liria> ils sont compilés dans des versions binaires
[10:23:10] <liria> une sorte de zip pret à l'emploi pour le client et le serveur de jeu
[10:23:22] <liria> ces fichiers ont l'extension ".packed_sheet"
[10:23:33] <liria> tu en trouvera dans le dossier "data" de ton install ryzom
[10:23:56] <liria> les fichiers ".bnp" sont aussi des sortes de zip, mais plutot réservé pour les assets graphiques
[10:24:03] <liria> maintenant comment se répartissent ces données
[10:24:14] <liria> ces data sheet sont divisé en deux
[10:24:29] <liria> une partie sera comilé et copié dans le dossier ryzom/server
[10:24:40] <liria> et sera utilisée par le serveur lors de son exécution
[10:24:57] <liria> l'autre partie sera compilée et copié dans le dossier "data" de l'install du client ryzom
[10:25:17] <liria> tu devine déjà que les assets graphiques vont dans le dossier client
[10:25:29] <liria> le serveur n'a pas besoin de savoir comment dessiner un arbre
[10:25:42] <liria> pour les données autres cela est à prendre au cas par cas
[10:25:48] <liria> par exemple pour le yubo :
[10:25:57] <liria> il y aura deux version de ce datasheet compilé
[10:26:10] <liria> celle coté serveur va conserver les données comme la distance d'agro, etc...
[10:26:23] <liria> car c'est le serveur qui va calculer le comportement du mobs sur le monde
[10:26:51] <liria> coté client on ne vera que ce qu'il fait
[10:26:51] <liria> verra*
[10:26:52] <liria> et coté client le data sheet contiendra plutot les données relatives à son affichage
[10:27:11] <liria> la liste des textures utilisées, le modèle 3D, etc...
[10:28:02] <lodnexus> ce qui explique qu'un mob on peut le voir graphiquement, mais qu'il n'aura aucune interaction avec nous s'il n'a pas d'infos de comportements provenant du serveur
[10:28:10] <liria> oui
[10:28:34] <liria> le client ne recoit que l'info, le mobs est là dessine le dans l'état "en cours d'attaque" de l'animation XX
[10:28:37] <liria> point
[10:28:57] <lodnexus> Mais au moins les variables sont clair : "AggroRadiusNotHungry"
[10:28:57] <lodnexus> clairs*
[10:29:05] <liria> c'ets aussi le serveur qui gère l'info si tu reçois un coup, si tu perds de la vie etc...
[10:29:10] <liria> oui
[10:29:15] <liria> les datasheets sont très lisibles
[10:29:22] <liria> c'est aussi la raison de notre idée
[10:29:32] <liria> de mettre tous ces datasheet dans des pages de docuwiki
[10:29:42] <liria> et à terme de pouvoir les modifier directement
[10:29:55] <liria> mais il faudrait documenter ces variables
[10:30:02] <liria> autant "AggroRadiusNotHungry" est claire
[10:30:16] <liria> ou
[10:30:17] <liria> <STRUCT Name="Protections">
[10:30:20] <liria>       <ATOM Name="PiercingMax" Value="0"/>
[10:30:20] <liria>       <ATOM Name="PiercingFactor" Value="0"/>
[10:30:20] <liria>       <ATOM Name="SlashingMax" Value="0"/>
[10:30:20] <liria>       <ATOM Name="SlashingFactor" Value="0"/>
[10:30:35] <liria> est compréhensible pour un joueur ryzomien
[10:30:55] <liria> autant que je ne comprend pas le sens de
[10:31:00] <liria>      <STRUCT Name="Characteristics">
[10:31:00] selpa`i (~Siah@morla.virt.lxd.bz) got lost in the net-split.
[10:31:00] <liria>         <ATOM Name="DynamicEnergyValue" Value="0.00126"/>
[10:31:00] <liria>       </STRUCT>
[10:31:03] <liria> dans ce même datasheet
[10:31:26] <liria> et les datasheets des mobs sont relativement simple à comprendre
[10:31:44] <liria> regarde aussi  la page d'explication des datasheets sur wikhan
[10:31:54] <liria> Yannk a fait un super travail de vulgarisation
[10:32:07] <lodnexus> yap, je vais lire ca
[10:33:28] <lodnexus> euh vide... je suis peut-être pas au bon endroit :x
[10:33:41] <liria> il faut lire cela lodnexus
[10:33:43] <liria> http://khaganat.ninm.net/wikhan/fr:serv ... datasheets (http://khaganat.ninm.net/wikhan/fr:serveur:concept:datasheets)