Aller au menu du forum Aller au contenu du forum Aller à la recherche dans le forum
Logo Khaganat
Menu principal
Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - YannK

18 Avril 2025 à 10:39:03
Cliquez pour afficher le message
Nous avons eu une réunion hier soir afin d'avancer sur ces sujets.

Nous avons discuté de ce sujet, mais aussi de la mise en place des dépôts, qui est donc fusionné avec celui-ci.

tl;dr de la réunion :

Un schéma réalisé sous draw.io a permis d'avoir une vision d'ensemble de ce que nous avions envisagé au fil des années en ce qui concerne les exécutables nécessaires et les données ou bibliothèques à partager. Le but était d'avoir un élément de discussion pour voir le consensus qui en sortirait. Il a été créé en envisageant que chaque dépôt contiendrait un projet Godot, sans que cela soit indicateur de ce que le collectif allait décider.

architecture_generale_2025_04_18.jpg

Le fichier éditable est dans le Kloud : https://kloud.khaganat.net/index.php/f/719742

La partie la plus simple concernait les clients, que ce soit le client de jeu 3D, le client d'administration Polcie ou l'éditeur de jeu Khan. Seule question pour ce dernier : part-on sur un addon de grande ampleur qui permette l'édition avec Godot ou réalise-t-on un exécutable basé sur Godot. Un mode expert permettrait de faciliter la contribution en cachant les options complexes pour les personnes débutant dans ce genre de travail. Tout cela demeure à étudier plus finement.


La majeure partie des échanges a concerné la structure des éléments serveur.

Il a été rappelé que la gestion de tous les accès à l'écosystème serait basé à terme sur du LDAP, donc que le client devrait aller interroger cette base pour savoir quelle serait l'accréditation d'une joueuse lorsqu'elle tenterait de connecter un client.

Toute cette partie de Portail de connexion/ annuaire d'authentification sera développée en Rust pour des raisons de sécurité et de fiabilité, étant donné qu'il s'agit des éléments les plus exposés. L'usage de biscuitsec a été évoquée.

Le schéma proposait ensuite que les échanges passent par un Accès frontal, il a été retenu de le penser plutôt comme un bus de brokers (également en Rust, pour des raisons d'efficacité) qui permettrait d'adresser ensuite les échanges avec les différents micro-services (la dernière ligne des systèmes serveurs dans le schéma).

Cette dernière ligne propose un ensemble d'exécutables qui pourront chacun être placés sur une machine différente en cas de montée en charge. Les penser comme des projets distincts au sein de la Forge permettra de s'assurer un découplage optimal, même si certaines bibliothèques/modules devront être partagés pour partager les protocoles de discussion et d'accès aux données. En outre, même si il sera très certainement nécessaire de les développer en Rust, le fait de les penser dans des dépôts séparés permettra le cas échéant de les prototyper dans Godot, afin de faciliter la contribution. Il pourrait être nécessaire d'intégrer un module intermédiaire en Rust pour accéder au broker de façon sécurisée, mais cela reste à définir plus précisément.

Le service EGS pourrait être ne se voir affecté qu'une partie d'un monde, plusieurs services EGS devant alors échanger pour se synchroniser. C'est valable pour d'autres services comme AIS ou GPS, donc à garder en tête lors du développement.

Cette ligne concernant un monde accessible pour les joueuses, il faut également penser que l'accès à l'un ou l'autre devra être géré, ainsi que les accréditations relatives à chacun de ces mondes, lors de l'adressage vers les brokers.

Les échanges sont pensés avec protobuf afin de permettre la présentation d'une API simple et documentée qui permette l'enrichissement de l'écosystème de façon souple et modulaire.

Il a été évoqué le recours ou non à un super service du type Administrator qui superviserait tous les services au sein d'un monde, sans que son périmètre d'usage ou sa réelle nécessité n'aient été envisagés.

En ce qui concerne les backups, certains éléments nécessiteront une sauvegarde quasiment en temps réel (la création de compte par exemple) tandis que d'autres pourraient être moins critiques, en fonction du temps de jeu que l'on estimerait acceptable de perdre en cas d'incident. Le transfert vers ces espaces de backup doit se faire de la façon la plus simple possible, du genre fichier texte plat.

Par ailleurs, penser aux éléments relevant du RGPD dès le début du développement, en suivant la proposition de Marien Fressinaud a été retenue : https://marienfressinaud.fr/gdpr-txt.html

Enfin, la dernière ligne de ces micro services permettant de gérer un monde devrait trouver un nom pour en faciliter la désignation. Nous sommes quasiment sur le même périmètre que ce que désignait un « shard » dans l'écosystème Ryzom. Proposition : appeler cet ensemble un « khanat »


Il serait également intéressant d'avoir, à terme, la possibilité pour les joueuses d'instancier un mini-khanat, appelé « rêve ». Ce serait un monde réduit, où la joueuse aurait créé le leveldesign de façon similaire au Ring de Ryzom. Il demeure à voir où cette instance serait hébergée, comment elle serait créée, quels seraient les possibilités d'échanges entre un Khanat et ces mondes etc.
Cliquez pour afficher le message
Nous avons intégré ce sujet dans la discussion sur l'architecture des services. La discussion continuera là-bas.
Cliquez pour afficher le message
Ce sujet est clos, depuis la migration vers Forgejo, la forge a changé dans la façon dont elle fonctionne.
14 Mars 2025 à 12:20:08
Cliquez pour afficher le message
Citation de: YannK le 14 Mars 2025 à 10:52:07- avez-vous des idées de niveau d'avantage/coût/budget pour des niveaux de brique ? Il n'y a aucun urgence sur ce point, mais cela fera partie des nécessités d'équilibrage du gameplay.

Pour vous donner une idée, pour mon test, j'ai prévu de faire payer la baisse du cooldown 2 points, la hauteur améliorée 2 points aussi et le niveau de Saut 1 donne une brique qui permet d'avoir -3 sur son total (en échange de dépense d'endurance, à déterminer). Ce qui veut dire qu'à ce niveau, pas possible d'avoir la hauteur améliorée ET le cooldown amélioré, il faut choisir...
14 Mars 2025 à 10:52:07
Cliquez pour afficher le message
Salut à toutes,
je commence à regarder comment implémenter un premier jet de compétences pour le prototype et je m'inspire de celui de Ryzom comme prévu.

Je bosse sur le saut comme sujet de test. L'idée est donc de fabriquer une compétence de «Saut». Celle-ci aura un niveau, en fonction duquel on aura accès à des briques constitutives de plus en plus efficaces (il faudra «acheter» ces briques, hein, comme dans Ryzom, mais ce n'est pas la question là).
Le but est d'ensuite équilibrer les briques qui donnent la capacité (hauteur et cooldown dans notre cas) avec un budget déterminé d'un trait possédé par l'utilisatrice. Ce pourrait être l'endurance dans notre cas (ce qui veut dire qu'on aurait une gestion de ce trait pour les créatures).


Je résume donc, pour le saut on pourrait avoir comme briques qui apportent un effet de compétence :
  • la hauteur qu'on peut sauter
  • le cooldown après un saut

Et l'avantage octroyé par ces deux briques serait déterminé par un budget défini par une autre brique :
  • l'endurance consommée par le saut

Dans Ryzom, l'assemblage est toujours assez délicat et l'équilibrage demande toujours des arbitrages, ce que je trouve assez sympa pour la joueuse.

Donc mes questions :
- êtes vous ok pour que je parte sur cette base ?
- avez-vous des idées de niveau d'avantage/coût/budget pour des niveaux de brique ? Il n'y a aucun urgence sur ce point, mais cela fera partie des nécessités d'équilibrage du gameplay.
Cliquez pour afficher le message
Personnellement je serais pour:
  • les infos minimum nécessaires pour mettre en place les outils (donc ce que tu as listé comme obligatoire). Si jamais le reste s'avérait utile à l'avenir, ça pourra être ajouté. Pas la peine de s'ouvrir une porte inutile et d'ajouter du taf genre RGPD en plus si ce n'est pas utile.
  • pour les groupes au sein de khaganat, je verrais assez bien de décliner en fonction des accès aux outils, par exemple :

    • membre du collège associatif
    • membre de l'association
    • contributrice simple : accès sans privilèges à tous les outils (ou les plus bas accordés à chaque fois)
    • contributrice développeuse : accès avec privilèges DEV sur la forge
    • contributrice mainteneuse : accès avec privilèges Maintainer sur la forge
    • contributrice éditrice : accès avec privilèges avancés sur les wikis
    • contributrice adminsys : accès avec privilèges avancés sur les wikis adminsys
    • contributrice modératrice : accès avec privilèges avancés sur le forum

J'ai certainement raté des outils/niveaux d'accès, mais vous voyez l'idée : créer une hiérarchie par outil et créer un rôle distinct pour chacun de ces rôles au sein de Khaganat. Ça va demander qu'on liste les outils et les différents niveaux, mais l'alternative serait qu'il y ait juste des échelons globaux et que le fait de grimper en responsabilité sur un outil donne accès à un autre où n'est pas forcément intéressées/compétente, et ça me semble bancal comme solution.
Cliquez pour afficher le message
Je pense qu'on peut penser en terme de cohérence pour les organisations : une organisation « MMORPG Khanat », une autre pour ce qui touche au web « Khaganat web », en gros créer une organisation pour chacun des sous-groupes de Khaganat sur le Gitlab :https://git.khaganat.net/khaganat
24 Septembre 2023 à 14:56:49
Cliquez pour afficher le message
Bon, on va s'y (re)mettre, qu'en dites-vous ? Mais il faut trouver un nom pour le dépôt avant tout, et je commence à sécher après en avoir recréé plusieurs à la suite. Je vais archiver Khanat client et je me disais qu'on devrait lui donner un nom comprenant « 3D »  pour spécifier que ce sera celui du client 3D. Ça ferait « Client 3D Khanat ». Mais je trouve ça un peu... plat.

Ça vous irait ? Vous avez d'autres idées/suggestions ?
Cliquez pour afficher le message
Vous avez trois voix chacune, merci d'indiquer vos trois directions possibles préférées.
23 Juillet 2023 à 11:42:31
Cliquez pour afficher le message
Waterways

Système de génération de cours d'eau basé sur des courbes de bézier.

Dépôt : https://github.com/Arnklit/Waterways

Présentation vidéo : https://www.youtube.com/watch?v=cQX50j8fCa8
23 Juillet 2023 à 11:39:42
Cliquez pour afficher le message
Proton Scatter

Dépôt : Système d'automatisation pour le placement procédural d'une grande quantité d'assets. Compatible avec Terrain 3D.

Dépôt : https://github.com/HungryProton/scatter

Présentation vidéo (par Game From Scratch) : https://www.youtube.com/watch?v=MB3Vz6JFAOA
23 Juillet 2023 à 11:36:04
Cliquez pour afficher le message
Terrain 3D

Système de terrain 3D en C++

Dépôt : https://github.com/outobugi/Terrain3D

Présentation vidéo : https://www.youtube.com/watch?v=Aj9vWIEaFXg
23 Juillet 2023 à 11:34:00
Cliquez pour afficher le message
Je propose qu'on se note ici les plugins qui pourraient être intéressants à utiliser pour Godot. Selon leur maturité et adéquation au projet lorsque le besoin s'en fera sentir, on verra à les ajouter. Entre-temps, que les testeuses n'hésitent pas à faire des retours.
12 Juillet 2023 à 11:40:49
Cliquez pour afficher le message
Super boulot, Alea, merci beaucoup d'avoir entrepris de mettre tout ça au clair. Je suis trop nul en UML pour avoir osé m'y lancer.

J'adhère globalement à ta proposition, qui est similaire à ce que Nevrax avait fait pour OpenNeL et la résilience de ce modèle n'est plus à prouver je pense.

Est-ce que tu pourrais détailler ce que tu mets dans « Donnée actions » ? Je ne suis pas certain d'en voir les contours : on est ok que c'est le serveur qui valide une action et donc ses répercussions sur le monde/les autres joueuses, mais est-ce que tu y mets plus que ça ? Je ne vois pas la raison qui te pousse à y mettre de la persistance, même si elle n'est pas aussi longue que pour les « Données décor ». Du log me semble intéressant, pour monitorer, est-ce que c'est ça que tu ferais persistant ?

Je sépare la question API de celle des bots :
  • avoir une API claire me semble intéressant pour permettre des clients différents de celui 3D que nous proposerons par défaut. Il faudrait y intégrer une validation quelconque (token individuel par modèle de client ?) pour permettre d'échanger avec le serveur en toute sécurité. Ce serait valable pour notre client, afin de se garantir contre des modifs dans le code qui permettrait des exploits. Et on pourrait en effet se servir de ça pour faire des tests lors du développement (simulation d'actions en masse, etc.), je trouve ça vraiment super comme idée.
  • Sur les bots, Zatalyz a proposé déjà pas mal de chose sur le wikhan : https://khaganat.net/wikhan/fr:reroll et on peut en parler plus longuement sur le sujet qu'elle a initié là : Multicompte, bot et compagnie (oui oui, ce sujet a plus de dix ans ^^ )

À partir de tout ça, il y a pour moi quelques questions stratégiques à définir avant qu'on puisse effectivement se mettre au boulot :
  • est-ce qu'on fait un proxy  de connexion avec agrégation (c'est le choix d'OpenNeL) ?, ce qui implique une plus grande latence, comme tu dis, ainsi qu'une sérialisation des données afin d'optimiser les échanges. Donc plus de complexité de transfert des infos. J'avoue que je préfère cette approche (y compris par rapport à du multicast) car on réduit la surface d'attaque des serveurs, ce qui semble devenir un souci de plus en plus grand avec le temps.
  • la question de la persistance des données longues, qui seront streamées depuis et vers le disque dur, qui sera un goulot d'étranglement selon le volume qu'on décide de valider régulièrement (oui, Star Citizen je pense à toi ;) ). On n'est pas au tick comme sur le déplacement, mais il y a là encore une décision stratégique à prendre. Y prévoir de la souplesse de paramétrage (sur plusieurs variables : délai, façon de streamer les données, distance aux objets InGame qui détermine la densité des infos à récupérer etc.) depuis le backend serveur afin de se garder de quoi faire des stress tests serait pertinent je pense. Il faudra d'ailleurs y inclure l'envoi des données de « Gestion de position » à la déconnexion de la joueuse et, de façon plus globale, des logs sur les différents services, afin qu'on ait de quoi monitorer/modérer depuis le backend.
  • la partie « Discussion » devra être pensée de façon plus fine, mais ce n'est pas urgent. on a dit qu'on allait se baser sur XMPP, mais il s'y greffe la question de la modération, de l'accès aux messages privés et de l'archivage, qui sont des questions délicates. Il faut donc y intégrer un point de persistance.
  • Enfin, comme on est en France, il serait bon de se mettre quelque part les questions RGPD afin qu'on ne galère pas par la suite. Je me disais qu'on pourrait l'aborder de la même façon que Marien, de Framasoft, qui propose une solution qui pourrait s'implémenter au fur et à mesure : https://marienfressinaud.fr/gdpr-txt.html

Je pense qu'on pourra compléter au fur et à mesure la détermination des différents points mais on a là une belle base pour entamer le boulot serveur, merci beaucoup Alea :)
Licences Mentions légales Accueil du site Contact Inclusion