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

XMPP en jeu... Et au delà ?

Zatalyz

Une conversation par rapport au chat ingame est revenu sur XMPP tout à l'heure, et pour le moment je ne trouve pas l'historique (probablement dans les logs IRC...).

L'une des motivations à prendre XMPP vient de sa multitude de clients. En remplaçant le chat en jeu par le protocole XMPP, cela ouvre la possibilité de papoter avec les gens même sans être connecté au jeu, et c'est une option que les joueurs de MMORPG apprécient (du moins, ceux qui sont sur un jeu où le chat est pas trop foireux, ce qui est rare).

Il y a cependant des contraintes, peut-être complexe pour XMPP, comme la gestion du canal "alentours" : celui-ci n'est pas accessible en dehors du jeu, puisqu'il ne permet d'entendre que ce qui est dans les 25m du personnage (et j'ai aucune idée si XMPP peut gérer ça). Un détail parmi d'autres : implémenter XMPP en remplacement ne sera peut-être pas simple. Mais c'est pas ça qui m'occupe, là.

Il y aura par ailleurs pas mal de canaux "de kom", c'est à dire accessible par les ra depuis un outil, et donc, être hors-jeu tout en papotant RP aura du sens (sans briser l'immersion pour les gens en jeu).

Lors du passage à XMPP, je n'ai pas pensé à demander à ce qu'on puisse se créer des comptes en @khaganat.net pour plusieurs raisons, l'une d'elle étant que cette option est "réservée" pour faire les comptes en jeu. Ainsi, dans le futur lointain où on aura un vrai client sera connecté à un vrai serveur de jeu, lorsque je me créerais un compte sur Khaganat, cela me donnera automatiquement un compte xmpp (du type zatalyz@khaganat.net ; ou zatalyz@chat.khaganat.net si on veut gérer du mail à côté). Ce compte sera aussi mon identifiant de joueuse (même si je ne vais rentrer que "zatalyz" dans le champ "pseudo", le reste étant sous-entendu). Ensuite, lors de la création de mon premier perso, disons Marcel, XMPP lui liera une sous-identité, qui me permettra de causer en jeu comme "Marcel" (ou "Georgette" pour mon second perso). Et de jouer Georgette et Marcel ensemble si mon ordi est assez puissant pour faire tourner deux clients de jeu et ma tête capable de suivre deux personnages¹.

À une lointaine époque (avant même XMPP), quand on a compris qu'on pouvait sortir le chat/l'identifiant du jeu, nous avions eu une grande discussion² sur les impacts que ça pourrait avoir, et nous avions conclu que si nous pouvions avoir une seule identité par joueur (et des sous-identités pour ses persos), il valait mieux circonscrire ça à la galaxie de Khaganat. Bref, fermer les portes du protocole au reste du monde.

Depuis, le Fediverse est devenu une réalité plus concrète, et je regrette de constater que nos méfiances d'alors se sont vu concrétisées, et en pire. Il y a des choses funs, mais cela rajoute de la complexité sur d'autres aspects et en particulier sur la modération.

Il faut imaginer World Of Warcraft et Facebook interopérables. Ça voudrait dire que Facebook serait spammé de messages "vends de l'or pour pas cher et des persos tout frais", et que le chat de WoW serait engorgé de pub pour rejoindre Farmville et de blaireaux appelant à la haine contre un groupe ou l'autre de l'humanité. Bon, même sans être interopérable, c'est déjà un peu ce qu'on a sur ces monstres. Mais ça pourrait se retrouver démultiplié. Quand je vois le bazar sur Mastodon et Diaspora, alors même que ces deux réseaux n'ont pas tant de monde que ça, je ne sais pas si j'ai très envie de me connecter au reste du monde...

L'intérêt d'être dans une communauté "fermée" est que la modération s'arrête aux limites de cette communauté. S'il y a un enquiquineur qui débarque sur Khaganat, une fois qu'on aura banni son IP, on aura un peu de paix (ça suffit dans pas mal de cas, bien que ça ne soit pas incontournable). Si on a une vague de harcèlement en cours, on bloque les inscriptions et on fait le ménage. Le harcèlement peu prendre des formes variées, dans certains cas, quelques personnes (pas forcément si nombreuses) vont créer des tas de comptes (souvent aidés de logiciel bot) pour poster des messages de haine et donner l'impression d'être des milliers. Et parfois, il y a effectivement des centaines de personnes qui font ça, ce qui démultiplie l'effet. La fermeture des frontières est une façon de gérer ça en attendant d'avoir des réponses plus adaptées, cela permet de protéger les membres légitimes de la communauté.

Tant qu'on est une petite communauté de potes, ces phénomènes ont peu de risque de se produire. Mais ici, le but est tout de même de créer un MMORPG, donc un lieu où il y aura du monde, des drama, de la triche, des vengeances stupides. Peu importe à quel point notre gamedesign tente de hacker les consciences, on aura forcément à un moment ou un autre des haters qui auront envie de mettre le boxon. Ou des spammeurs.

Ouvrir les frontières risque de complexifier leur gestion. En même temps, il y a aussi un côté pratique à pouvoir utiliser son compte en @movim.eu ou @jabber.fr pour se connecter à Khaganat.

Il y a aussi le fait que Khaganat tente de favoriser une immersion RP avant tout. Avoir un compte XMPP où on n'a accès qu'à des canaux "de jeu" incite probablement à rester dans le thème. Ou pas. Je ne sais pas trop...

Notes
¹ En vrai, pour l'avoir déjà fait, je gère jusqu'à 4 personnages en simultané et sans logiciel annexe, tout dépend ensuite de leurs activités. En RP actif, 2 dans la même zone, c'est mon max, mais ça n'empêche pas un 3e d'aller taper des trucs ailleurs... Et pour ceux qui n'ont pas l'habitude de ça, c'est comme ça qu'on s'amuse à monter des histoires alambiquées quand on manque d'autres acteurs dans la zone, et qui transforme le roleplay en sport de l'extrême.

² Conversation que j'aimerais retrouver...


pep

Petite ébauche de réponse. J'imagine que Link Mauve a déjà fournit pas mal d'éléments mais ça permettra d'avoir ça posé quelque part.
Je traîne en permanence dans des cercles techniques, donc n'hésitez pas à demander des précisions si nécessaire.
Il y a certainement encore pleins de trous à combler ! Les questions sont les bienvenues !

# Autoriser ou non la communication avec l'extérieur (non khanat)

La plupart des serveurs incluent une façon de gérer la communication « s2s » (server-to-server), et il est généralement facilement possible de l'activer ou la désactiver.

Il est aussi possible de configurer le serveur de façon à ce que juste une partie du monde extérieur puisse contacter le khanat.


# Plusieurs « identités » (personnages)

Dans XMPP, un client est généralement décrit comme « ressource », qui équivaut plus ou moins à une connexion au serveur. Il est possible de connecter plusieurs ressources à la fois avec les mêmes identifiants (le même compte).

Il est possible pour un compte de connecter plusieurs ressources à un MUC (« Multi-User-Chat », un salon) sous différents pseudonymes. Il est aussi possible pour un compte de connecter plusieurs ressources sous le même pseudonyme. Ici le premier cas nous intéresse.

Est-il question d'autoriser les joueuses à avoir des conversations privées, une à une ?

Si oui je pense que les MUC-PMs devraient être suffisant.

Veut-on s'assurer coté client que les joueuses soient les mêmes après avoir changé de pseudonymes ? Est-ce possible en jeu de renommer un personnage ? Par exemple Georgette fait « le nécessaire administratif » pour s'appeler Marie, veut-on s'assurer que les nouvelles discussions avec Marie auront lieues à la suite de celles avec Georgette ? Ou alors doivent-elles être dissociées ?

Si c'est le cas alors il nous faudra associer un identifiant unique par personnage à diffuser dans la présence et dans les messages (?). Peut-être aussi utile pour d'autres choses ?


# Canal « Alentours »

(J'avais préparé un pad avant de répondre ici et quelqu'un sans pseudo a déjà laissé une question !)

Citationest-ce que l'"alentours" fonctionne vraiment avec une distance, ou bien est-ce que un découpage de l'univers en "zones" (avec éventuellement envoi de messages vers plusieurs zones voisines) serait suffisant?

Quid des archives de chat (en jeu) ? Y en a-t-il ? Doit-on penser à faire que le serveur les diffuse quand un client se connecte ? Sont-elles gardées en local ?

## Idée d'implémentation 1. - Une seule zone pour tout l'univers

Tout le monde rejoint un MUC « alentours ». Chaque client envoie sa position au MUC, et les messages sont diffusés (broadcast) uniquement aux clients aux alentours.

L'information de position sera certainement envoyée dans la présence. Le pseudonyme, ainsi que d'autres informations relative au personnage sera aussi contenu dans la présence (ou du moins des pointeurs vers où trouver ces informations). Quelle genre d'info aurait-on besoin de diffuser ?

A-t-on besoin de diffuser les présences à tous les autres clients ? À une partie des clients ? (ceux à proximité ?)

En fonction du nombre de joueuses il risque d'y avoir pas mal d'information à traiter pour le MUC à chaque message ? Notamment « qui est dans les alentours ? », quoi que ça puisse aussi être traité quand un client met à jour sa position. Il est possible qu'un client mettra à jour sa position plus souvent qu'une joueuse enverra un message par contre.

## Idée d'implémentation 2. - Plein de petites zones

À première vue ça peut paraître plus simple niveau architecture, en associant une zone à un MUC, mais je n'en suis pas si sûr.

Il serait toujours question d'envoyer des messages en fonction de la proximité ?
D'un moyen ou un autre le MUC sera au courant de la position et il saura à qui (ne pas) envoyer. Par contre ça signifie qu'il faudrait qu'un message soit envoyé sur différents MUCs (à la limite de zones par exemple), et je me demande à quoi ça sert donc de séparer par zone.

## Idée d'implémentation 3. - Multicast

MUC est un gros morceau de XMPP qui est bien pratique parce qu'il est implémenté un peu partout et donc ça évite de tout refaire à chaque fois, mais je me demande si ça ne serait pas intéressant de réfléchir à d'autres solutions aussi.

Vu que le serveur est déjà au courant de la position des personnages, je me demande si il ne serait pas intéressant d'avoir soit un groupe PubSub -- ou dans le roster -- qui serait généré par le serveur et évidemment différent pour chaque personnage (moyennement des optimisations pour ceux qui se trouveraient à une distance négligeable par exemple).

Les clients pourraient ensuite prendre cette liste de personnages et diffuser leurs messages directement en multicast, sans passer par MUC donc.

Les différentes identités peuvent aussi être gérées directement par le serveur en incluant un pseudo (et/ou cet identifiant unique dont je parle plus haut) dans la liste de personnage aux alentours.

# Autres canaux de communication ?

Y en a-t-il ?

deed

Une réponse rapide de tête :
  - il faut un salon alentour accessible à X mètre en parler et 2X mètre en crier .
  - il faut des salons quand lier à une guilde, alliance, fame  .... qui doit changer si on change de guilde, alliance, fame ....
  - il faut des salons temporaires lier à la formation d'une équipe, regroupement de d'équipes ......



pep

Citation de: deed le 05 Juin 2020 à 17:45:41
  - il faut des salons quand lier à une guilde, alliance, fame  .... qui doit changer si on change de guilde, alliance, fame ....
  - il faut des salons temporaires lier à la formation d'une équipe, regroupement de d'équipes ......

Pour ces types de salons on peut utiliser du MUC probablement sans modification.

Le plus intéressant va en effet être cette notion d'« alentours ».

Zatalyz

Alentours
Alentours est vraiment un truc particulier. Le serveur de jeu reçoit et renvoie régulièrement la présence des diverses personnes connectées, il sait où chaque personnage se situe sur la carte du monde. À mon avis, c'est lui qui envoie l'info "tu peux entendre tels personnes, elles sont dans ton périmètre". Il y a deux modes en alentours : quand on parle, on est entendu à 25m, et si on crie, cela s'entend jusqu'à 50m (de mémoire, on préfixe son message par /sh pour shout ?). Il n'y a pas de doute que le serveur envoie les infos, la difficulté sera d'arriver à les trouver et ensuite d'en faire quelque chose avec XMPP. Là où ça devient compliqué, c'est avec plusieurs personnes dont le périmètre des 25m se chevauchent. Voici un petit schéma à durée limitée (un an :P) montrant les cercles où les gens entendent :


Ici, on a A et B qui papotent ensemble, ainsi que D, E, G,F. A et B n'entendent pas  D, E, G,F et vice versa (tant que personne ne crie), ils sont trop loin les uns des autres. Par contre, C, qui est au milieu, entend à la fois A et B, mais aussi D (il aura donc un bout tronqué de la conversation que tient D avec E, G et F.

Ça me semble un bon challenge. Mais le client de Ryzom arrive à le faire, donc c'est possible :D

Pour des raisons pratiques, le serveur est quand même découpé en Régions. Une région peut être assez grande (quelques kilomètres "en jeu"), et on a là un des trucs assez puissant du serveur : ces régions peuvent être gérées par des serveurs physiques différents. En fait, le serveur de jeu est extrêmement modulable : chaque service ou presque peut être sur une machine physique différente, et certains de ces services sont par régions (si je ne dis pas de bêtise), permettant encore une plus grande granulosité. C'est ce qui permet d'envisager des milliers de joueurs connecté au même monde (ou "shard").

C'est d'ailleurs aussi un truc à garder impérativement à l'esprit dans les choix techniques : Ryzom Core est un vrai moteur de MMORPG, il permet une montée en charge démentielle. Elle est en partie possible grâce à l'échange réseau extrêmement faible entre un client et le serveur. Pour donner un ordre d'idée, j'ai joué à Ryzom quelques mois en ayant juste une clé 3G dans une zone mal couverte. Non seulement j'étais rarement déconnectée, mais ma consommation était de l'ordre de quelques Mo chaque soir (moins de 10 Mo pour plusieurs heures de jeu, c'est sûr, mais je ne me souviens plus des chiffres exactes... en tout cas ça m'avait bluffé). Il vaut mieux, car le serveur de son côté multiplie les chiffres à chaque client connecté. Certes, aujourd'hui il y a la fibre dans les data center, mais garder une empreinte réseau aussi basse que possible reste un objectif, en partie pour limiter la fracture numérique (qu'on puisse jouer même au fin fond d'un trou en Edge, ou au centre de Parisun soir de week-end), en partie pour éviter de devoir payer trop cher en bande passante côté serveurs ^^ Et il faut vraiment avoir en tête le côté Massif du mot MMORPG : le but est de permettre des milliers de communications simultanées.

Mais on aura pas des milliers en alentours, de mémoire ça doit se limiter à 256 entités ?

CitationVeut-on s'assurer coté client que les joueuses soient les mêmes après avoir changé de pseudonymes ? Est-ce possible en jeu de renommer un personnage ? Par exemple Georgette fait « le nécessaire administratif » pour s'appeler Marie, veut-on s'assurer que les nouvelles discussions avec Marie auront lieues à la suite de celles avec Georgette ? Ou alors doivent-elles être dissociées ?
Je n'avais pas pensé à ça. Alors, oui, dans l'absolu, le changement de nom est possible. Mais nous aimerions aussi implémenter en jeu un truc appelé cognomen (voir aussi ce sujet bilan sur le forum, qui pose pas mal de choses Re: Bilan sur les cognomens. Vous sentez venir les complexités amusantes ? :D

Je note aussi que la notion de contact ("amis") reste présente dans notre conception du jeu. C'est sympa d'avoir des gens avec qui causer en direct :). Seulement, sur Xmpp pour être en contact avec quelqu'un il faut forcément le JID, non ? Dans ce cas, chaque perso doit avoir son propre JID, car être ami avec Jiro ne veut pas dire qu'on sera ami avec Junon, même si ce sont deux persos joués par Janus.

Dans le genre "à lire", il y a Gameplay : Kom (et les onglets associés, Développement et Général, peuvent apporter des précisions utiles).

CitationEst-il question d'autoriser les joueuses à avoir des conversations privées, une à une ?
Oui :) même entre personne qui ne se connaissent pas. Mais il faut aussi des outils de gestion des contacts : pouvoir ajouter cette inconnu à sa liste de contact, et pouvoir aussi blacklister une personne afin de ne plus l'entendre.

CitationQuid des archives de chat (en jeu) ? Y en a-t-il ? Doit-on penser à faire que le serveur les diffuse quand un client se connecte ? Sont-elles gardées en local ?
Alors, actuellement il y a des logs de tout ce qui se dit, même les trucs privés. En clair. Faut être sysadmin pour y avoir accès, mais cela ne nous semble pas du tout acceptable. Il y a eu des abus à ce propos sur le serveur de Ryzom, et il nous semblerais plus simple de ne pas garder ce genre de chose. D'un autre côté, il y a peut-être une obligation au regard de la loi. Mais pour moi, les conversations privées (même en petit groupe) concernent uniquement les personnes présentes. Que ces dernières gardent les logs, OK. Mais que des inconnus sysadmin (ou crackers) puissent les lire, c'est malsain.

Le but n'est pas d'avoir les derniers messages quand on se connecte, aussi. C'est du temps réel : si tu n'étais pas là, trouve quelqu'un qui te raconte l'histoire (ou te partage ses logs) ;)

Citation# Autres canaux de communication ?
Historiquement, on a d'autres canaux, oui. Ils sont listés dans l'article du kom (plutôt dans la partie Général). Je pense cependant qu'ils sont assez simples si le reste est traité : il s'agit de salons classiques.
- "Maintenance" est un peu à part, c'est vraiment un canal système, il n'y a pas de raison de pouvoir écrire dessus.
- "Monde" réunit toutes les personnes connectées au MMORPG (avec pseudos des personnages), mais on pourra aussi s'y connecter avec un client "sans jeu" pour papoter avec les gens.
- les "Canaux régionaux" seront accessibles à partir du moment où le personnage est présent physiquement dans la région en question (il y a donc besoin de lier ça à sa position).
- Support, rien à dire, un MUC absolument classique, si ce n'est qu'il faut s'y co avec son pseudo-joueur et non son pseudo-personnage... mais ça se discute ;)
- Equipe : ce sont des MUC temporaires, qui disparaissent quand la dernière personne dessus se déconnecte. Pas de reconnexion automatique et on ne peux les rejoindre qu'en étant invité par un autre membre de l'équipe. À noter qu'au niveau jeu, être en "équipe" avait un impact gameplay, puisque l'xp était calculée en fonction des membres du groupe. Mais on vire l'xp dans Khaganat, donc ça sera pas un souci. Il y a aussi la possibilité de valider des quêtes à plusieurs, à condition de les avoir pris individuellement... faudra voir comment on lie ça, ou même si on le garde comme ça, ça peut vraiment évoluer.
- Organisation : c'est l'équivalent des Guildes, sachant qu'on peut faire partie de plusieurs Organisations. Ce sont des salons privés et permanents.

CitationIl faut des salons quand lier à une guilde, alliance, fame  .... qui doit changer si on change de guilde, alliance, fame ....
Il n'y a que le mécanisme des Organisations sur Khanat, qui est plus complexe que les guildes de Ryzom vu qu'on peut cumuler. Les réputations ne donnent pas d'accès à des canaux particuliers, elles vont être bien plus variées que dans Ryzom (enfin... une bonne réputation auprès d'un groupe peut permettre de rejoindre l'Organisation auquel il appartient, mais on est donc dans le cas de base). Par contre, en effet, si on se fait virer ou qu'on quitte une Organisation, on doit automatiquement perdre l'accès aux salons privés de cette organisation.

Zatalyz

Un premier lot de la suite discutée sur XMPP.

Spoiler for Hiden:

‎Zatalyz‎: et hop un pavé pour pep. ! avec du pavé imbriqué dedans, muhahaha
‎Zatalyz‎: C'est en principe après ça que tu vas fuir en essayant de ne pas te faire remarquer :P
‎* pep. se cache déjà
‎Zatalyz‎: On n'est pas du tout ambitieuses ^^"
‎Zatalyz‎: "nan mais un client xmpp c'est trop facile, y'a qu'à voir tous ceux qui existent déjà et qui sont parfaits... on va rajouter un peu de challenge"
‎pep.‎: J'aime bien l'image :)
‎pep.‎: C'est exactement ce que j'avais en tête oui
‎Zatalyz‎: ^^
‎Zatalyz‎: en vrai, y'a l'objectif final, et comment y aller... en douceur.
‎Zatalyz‎: Au départ si on a juste un salon "monde" quand on se co au client, où on apparait avec son pseudo joueur, ça ira bien, hein :P
‎Zatalyz‎: (donc du xmpp super classique)
‎pep.‎: Boarf, si le client est pas encore dispo ça veut dire qu'on a du temps non ? :P
‎Zatalyz‎: par contre les détails cocasses vont demander de sacrément bien réfléchir à l'architecture...
‎Zatalyz‎: Yep, y'a le temps
‎Zatalyz‎: au piiiire y'a déjà un chat auquel se brancher, hein ;)
‎Zatalyz‎: Mais même du xmpp basique permet déjà de mettre certaines choses en place. Comme le cognomen : c'est en réalité plus simple avec xmpp qu'avec la plupart des systèmes de chat.
‎Zatalyz‎: je peux déjà donner le nom que je veux à mes contacts :D
‎pep.‎: « Mais on aura pas des milliers en alentours, de mémoire ça doit se limiter à 256 entités ? » ça veut dire quoi ça ?
‎Zatalyz‎: Qu'il y a un mécanisme qui fait qu'on a max 256 entités en "co-visibilité"
‎Zatalyz‎: je ne suis pas sûre du nombre (ping YannK )
‎YannK‎: Oui, c'est 256 entités dynamiques par zone par client
‎pep.‎: Ça veut dire que genre si y'a un évènement sur la place publique, ils pourront pas tous s'entendre ?
‎Zatalyz‎: mais quand on dépasse ce nombre de joueur dans la zone des 25m, ça devient très bizarre ^^
‎YannK‎: Ton client n'affiche que 256 entités dynamiques de la zone actuellement
‎Zatalyz‎: après faire entre 256 personnes sur 25m de diamètres, ça fait une bonne densité, hein. Je ne l'ai pas vu souvent
‎YannK‎: Je ne sais pas au nievau chat, mais au niveau graphique, c'est le cas
‎pep.‎: Niveau MMO j'ai joué uniquement à WoW. Y'avait pas de collisions entre personnages dont 256+ sur 25m c'est faisable :p
‎pep.‎: (Ou alors j'ai perdu la mémoire ?)
‎Zatalyz‎: Là j'espère bien qu'on aura la collision :D
‎YannK‎: OpenNeL a des collisions de personnages
‎Zatalyz‎: sur Ryzom tu as des glitchs qui te permettent de rentrer dans un personnage, mais ils sont chauds à chopper
‎Zatalyz‎: donc généralement on ne se chevauche pas
‎pep.‎: Ok
‎YannK‎: Ou alors entre adultes consentantes :p
‎Zatalyz‎: Voilàààà
‎Zatalyz‎: c'était pour se tenir la main !
‎Zatalyz‎: ^^
‎pep.‎: Bah après on est pas obligé de fixer cette limite arbitraire au niveau du chat. On peut juste adapter les critères en fonction de ça
‎pep.‎: Mais autoriser plus en sachant que ça arrivera certainement pas souvent
‎Zatalyz‎: Oui, cette limite n'a pas de sens en chat, mais tout ça pour dire que ça restera quand même limité en alentours
‎pep.‎: Ok
‎YannK‎: Il faudra juste voir si le serveur envoie les infos au client qui ensuite limite à 256 l'affichage ou si le serveur n'envoie que 256 entités
‎YannK‎: Je pense qu'il faudra le demander à Aleajactaest, ça
‎pep.‎: J'imagine donc que le serveur XMPP sera amené à correspondre avec le serveur de jeu directement, plutôt que le client (XMPP, intégré au jeu) uniquement
‎pep.‎: ou plutôt, *en plus du client
‎pep.‎: Ok, je ferai attention d'utiliser les termes décrits dans l'article sur les cognomens :p
‎Zatalyz‎: bah, je ne pense pas que grand monde maitrise ça ici. Mais ça peut aider
‎pep.‎: Là déjà j'utilise joueuse, personnage, client
‎Zatalyz‎: vi, différencier joueuse et personnage est le grand point important
‎pep.‎: « Il peut partager l'animation de certains personnages avec des amis, aussi. Ça aussi, ça ne sera pas le plus commun, mais la possibilité existe. », dans le truc sur les cognomens, ça marche comment ça ? L'ami se loggerait sur le même compte donc ? Ou alors y'a moyen de partager ça de manière un peu plus intégrée au jeu ?
‎Zatalyz‎: attends, je vais te retrouver le détail
‎Zatalyz‎: https://khaganat.net/wikhan/fr:gamedesign:khanat:identity
‎pep.‎: Zatalyz, d'accord, donc le partage de personnage est intégré au jeu :)
‎Zatalyz‎: oui :)
‎Zatalyz‎: Dans la pratique, on  a pu constater que le partage de compte est habituel, avec tous les soucis que ça pose coté sécurité et potentiel de drama
‎pep.‎: Dans ce cas si on associe un identifiant unique ça serait bien par personnage (càd non-lié au compte)
‎Zatalyz‎: on s'est dit qu'il valait mieux prévoir un mécanisme pour ça, afin de limiter les effets négatifs
‎Zatalyz‎: yep, je me disais ça aussi en relisant les divers éléments (un JID par personnage)
‎pep.‎: J'imagine que y'en a déjà un pour le jeu de toute façon d'identifiant unique
‎Zatalyz‎: pour le moment, ce qui est décrit est l'ambition
‎pep.‎: Peut-être pas un jid nan, si ? Y'a des gens qui veulent parler à Janus directement ? C'est possible ?
‎pep.‎: (reprenant l'example de fil sur les cognomens)
‎Zatalyz‎: dans les faits tu as un compte et le droit à 5 personnages liés à ce compte, pour le moment ^^"
‎Zatalyz‎: Hum, non, je pense que le joueur peut se passer d'un JID (par contre son identifant de compte doit débloquer les JID des persos qu'il gère)
‎Zatalyz‎: ou est-ce que j'ai mal compris ce qu'étais le JID ?
‎pep.‎: Non je pense que tu as compris. C'est ton identité sur XMPP auprès du serveur, ou de tes contacts. Par contre ton identité dans un MUC est différente parce que les gens voient pas spécialement ton JID
‎Zatalyz‎: oui
‎pep.‎: hmmm, je lis à propos des identités multiples là..
‎Zatalyz‎: là, vu ce qu'on propose, on va probablement avoir un mécanisme d'authentification pour le joueur (ldap ou que sais-je), qui va associer son compte aux JID de ses personnages. Chaque personnage a un JID parce que ça permettra plus facilement plein de trucs de ce qu'on a dit. Son JID est son matricule du Khanat ; son pseudo par défaut est la description de sa voix ; et le cognomen c'est quand, en tant que contact, on dit "ce gars, il s'appelle Georges, en tout cas moi je vais l'appeler comme ça"
‎pep.‎: Plusieurs JIDs pour le même personnage ? :x
‎Zatalyz‎: noooon
‎Zatalyz‎: Un JID par personnage :P
‎Zatalyz‎: joueur != personnage :P
‎pep.‎: Bah oui mais comment on gère les identités multiples ? (Jiro et Orij dans l'exemple)
‎pep.‎: Oui
‎Zatalyz‎: Facile, dans le cas de Jiro et Orij
‎Zatalyz‎: c'est le même jid... disons J145@khaganat.net ; sur les canaux alentours, le pseudo par défaut est "Ucikara des plaines" (et "voix d'ucikara des plaines dans le canal monde par exemple). Si quelqu'un devient ami, il pourra baptiser J145 "Jiro" dans sa liste de contact
‎Zatalyz‎: tandis qu'un autre associera J145 à Orij. Mais c'est bien le même.
‎Zatalyz‎: Et c'est là que ça devient fun, car si ces deux connaissances recoupent leurs infos, elles comprendront que Jiro et Orij sont en fait la même personne : J145
‎pep.‎: Donc quelqu'un qui l'aura nommé Jiro dans sa liste et qui un jour le voit en train de jouer le rôle de Orij va systématiquement savoir ?
‎Zatalyz‎: oui
‎pep.‎: Même je Orij met une cagoule ? :P
‎Zatalyz‎: ben, ça, c'est la phase suivante du développement :P
‎pep.‎: Ouais mais là ça me casse le truc du Jid moi :p
‎Zatalyz‎: l'idée serait de permettre des objets qui cachent l'identité ; c'est à dire que même les personnes qui ont identifié "J145" ne le verront plus
‎pep.‎: Enfin je veux bien entendre la phase suivante pour essayer de piger
‎Zatalyz‎: maiiiis je sais pas si c'est possible
‎Zatalyz‎: enfin, avec xmpp
‎Zatalyz‎: avec IRC ça s'appelle une cape :P
‎Zatalyz‎: Ha j'ai une idée
‎pep.‎: Ouais sur IRC y'a juste pas d'autentification dans le protocole..
‎pep.‎: (enfin y'avait pas jusqu'à pas très longtemps)
‎Zatalyz‎: le fait de mettre un objet donne une identité "anonyme". Voir, y'a un JID associé à l'objet ^^
‎Zatalyz‎: donc côté authentification, ça va dire "bascule sur l'usage du JID "cagoule" dans cette situation"
‎Zatalyz‎: je sais pas si je suis claire ^^"
‎pep.‎: Les Jid seraient créés comment ? générés ?
‎Zatalyz‎: oui
‎pep.‎: à partir de l'identifiant de login ?
‎Zatalyz‎: à partir de la règle qu'on veut :P
‎Zatalyz‎: c'est le serveur (xmpp ? ou de jeu ?) qui créera les jid dans cette utilisation
‎pep.‎: Par ça je me demande si y'aurait pas un moyen de savoir quand justement y'a une cape
‎Zatalyz‎: ben au niveau de l'authentification, ça sera clair que Janus = Jiro = Cagoule de 10h à 12h
‎pep.‎: Ouais au niveau du serveur ok :P
‎pep.‎: Mais des autres personnages ?
‎Zatalyz‎: mais ça sera géré par les mécanismes d'authentification qui font le liens entre le joueur et ses divers personnages, c'est donc probablement indépendant du mécanisme d'xmpp lui-même
‎Zatalyz‎: au niveau des autres personnages, Jiro va apparaitre "absent" et "Cagoule" apparaitre. Potentiellement.
‎Zatalyz‎: Encore, que...
‎pep.‎: Ok je vais réfléchir aussi un peu à tout ça
‎Zatalyz‎: On pourrait faire que Jiro reste connecté sur les canaux monde, etc ; et que c'est juste en alentours que Jiro disparait, tandis que Cagoule est présent
‎Zatalyz‎: (cette discussion est surréaliste)
‎pep.‎: Jiro est magique
‎pep.‎: Ça veut aussi dire que quelqu'un pourrait voir que Cagoule est pas présent sur le monde ?
‎pep.‎: Et donc qu'il faut se méfier peut-être
‎Zatalyz‎: Oui :D
‎Zatalyz‎: en même temps s'il a une cagoule en jeu, j'espère que les gens vont de toute façon se poser des questions ^^
‎pep.‎: Ouais.. ok.
‎pep.‎: M'enfin peut-être que c'est pas une cagoule c'est du maquillage
‎Zatalyz‎: Oui, mais côté code, ça sera pas différent : on a un "objet" qui a sa propre identité, finalement
‎pep.‎: À partir du moment où le joueur décide ?
‎Zatalyz‎: Je pense que ça sera lié à des "objets" particuliers
‎pep.‎: Genre.. à quel point dans le jeu il a une nouvelle identité
‎pep.‎: hmm
‎pep.‎: Et si il se fait une nouvelle coupe de cheveux ?
‎Zatalyz‎: Par exemple l'ensemble "déguisement" peut avoir ce fonctionnement
‎Zatalyz‎: mais non, juste une coupe classique ne fera rien
‎pep.‎: Ok
‎Zatalyz‎: à la limite, si le barbier lui fait la coupe "barbouze", avec moustache et chapeau melon... dans ce cas, cette coupe barbouze sera repérée comme donnant un compte anon ^^
‎pep.‎: Ok ok. Plein de trucs marrants à gérer je vois
‎Zatalyz‎: (la coupe elle-même est donc ici un objet identifié comme ayant ce comportement, donc)
‎Zatalyz‎: (enfin certaines coupes, pas toutes :P )
‎Zatalyz‎: Côté xmpp, il faut surtout qu'on puisse appeler le déclencheur "création/connexion d'un compte pour un objet"
‎pep.‎: Bon attends je continue de lire ton poste sur XMPP, j'en étais qu'à la première question 
‎Zatalyz‎: ^^
‎pep.‎: Y'a aussi un truc comme ça pour les identités : https://xmpp.org/extensions/xep-0383.html je sais pas si c'est intéressant. < Link Mauve (une fois que t'auras lu tout au dessus)
‎Zatalyz‎: ha pas mal
‎pep.‎: Y'a pas l'air de pouvoir demander un Jid particulier par contre. cad que je sais pas si Cagoule pourra rester la même cagoule à chaque fois
‎pep.‎: Mais après si y'a un intérêt à ce qu'on change / améliore le protocole, pourquoi pas
‎* Pendorid ramène Re : XMPP en jeu... Et au delà ? de Forum Khaganat
‎Zatalyz‎: Mais tu peux avoir deux mécanismes
‎pep.‎: Oui aussi
‎Zatalyz‎: des objets qui demandent juste un compte anon (donc détruit à chaque fois) et d'autres qui créent un JID persistant, ce JID étant alors lié à l'objet
‎Zatalyz‎: genre, si on a un déguisement de Zorro, c'est logique que le JID soit "zorro" :P
‎Zatalyz‎: mais une moustache et un chapeau ? Tout le monde peut l'avoir, c'est juste "un type bizarre" ^^
‎pep.‎: Comment ça tu trouves ma moustache et mon chapeau bizarre ?
‎Zatalyz‎: ^^
‎Zatalyz‎: accessoirement, ces "objets" pour devenir anonyme/changer d'identité ne seront pas d'un accès facile
‎Zatalyz‎: c'est le genre de chose qui sera réservé aux joueuses avec une bonne réputation ^^ (pleins de points RP !)
‎pep.‎: Ok
‎pep.‎: Un truc à quoi je viens de penser, c'est qu'il sera potentiellement possible pour une joueuse de se connecter avec un client custom aux services XMPP
‎pep.‎: Je pense pas que ce soit la première chose dont on doit se soucier, mais ça risque d'être possible
‎pep.‎: Enfin comme n'importe qui peut réécrire un client khaghanat et parler au serveur j'imagine
‎Zatalyz‎: oui
‎Zatalyz‎: après faudra voir les mécanismes d'authentification, aussi
‎Zatalyz‎: mais, bon, je ne pense pas que ce soit le problème premier
‎pep.‎: Oui, fin si le client officiel y a accès, une personne saura retrouver ça :)
‎Zatalyz‎: oui ^^
‎pep.‎: Il faudra quand même prévoir par exemple le fait que quelqu'un peut n'avoir de position dans aucune zone, non ? Enfin au niveau du chat :p
‎pep.‎: Si j'écris mon client custom
‎Zatalyz‎: oui. S'il n'a pas de position, il ne peux pas apparaitre sur les conversations Alentours et Région
‎Zatalyz‎: mais il aura accès aux autres salons :)
‎pep.‎: Les zones ça marcherait plus ou moins comme WoW ? Tout relié
‎Zatalyz‎: je ne connais pas assez wow, là
‎Zatalyz‎: Il s'agit de zones géographiques, donc certaines se touchent
‎pep.‎: Dans wow c'était possible de faire du nord au sud sur Azeroth ou Kalimdor sans un seul écran de chargement, à pied. Y'avait aussi un « alentour » juste pas décrit en tant que tel, on pouvait parler ou crier indépendamment de la zone où on se trouvait
‎pep.‎: Donc j'imagine que ça va se ressembler
‎Zatalyz‎: Oui, c'est assez proche
‎pep.‎: Y'avait aussi des canaux par zone, région, un canal commerce, etc.
‎Zatalyz‎: Je ne sais pas à quel point le serveur supporterais qu'on fasse des zones sans chargement. Il y en a sur Ryzom entre les pays, mais de ce dont je me souviens, c'est lié au client (chargement des textures) 
‎pep.‎: Ouais y'en avait entre les continents aussi, mais sur le même continent c'était un tout (au moins vu du joueur)
‎Zatalyz‎: en gros sur ryzom tu as des pays, divisés en régions ; tu as des chargements entre pays, mais pas d'une région à l'autre d'un même pays
‎Zatalyz‎: (idem, en vrai il y a du chargement des zones adjacentes en arrière plan, mais le joueur ne le voit pas ^^ )
‎pep.‎: Ok. Donc peut-être qu'on peut faire que les alentours se limitent à ces pays aussi (je sais pas si il y a un intérêt)
‎Zatalyz‎: Alentours = 25m, c'est tout :P
‎pep.‎: Oui oui, mais un pays désigne pas spécialement un continent si ?
‎pep.‎: Y'a des pays limitrophes ?
‎Zatalyz‎: j'ai corrigé, parce que vu la taille "continent" fait trop grand et leur vrai nom c'est des pays :P
‎pep.‎: Bon toute façon si y'a une zone de chargement claire, j'imagine qu'il serait pas possible de parler à quelqu'un pas dans le même pays tout court

Edit : et j'ai mis la fin de la soirée ;)
Dernière édition: 06 Juin 2020 à 00:34:33 par Zatalyz

pep

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
Alentours
Alentours est vraiment un truc particulier. Le serveur de jeu reçoit et renvoie régulièrement la présence des diverses personnes connectées, il sait où chaque personnage se situe sur la carte du monde. À mon avis, c'est lui qui envoie l'info "tu peux entendre tels personnes, elles sont dans ton périmètre". Il y a deux modes en alentours : quand on parle, on est entendu à 25m, et si on crie, cela s'entend jusqu'à 50m (de mémoire, on préfixe son message par /sh pour shout ?). Il n'y a pas de doute que le serveur envoie les infos, la difficulté sera d'arriver à les trouver et ensuite d'en faire quelque chose avec XMPP. Là où ça devient compliqué, c'est avec plusieurs personnes dont le périmètre des 25m se chevauchent. [..]

Ici, on a A et B qui papotent ensemble, ainsi que D, E, G,F. A et B n'entendent pas  D, E, G,F et vice versa (tant que personne ne crie), ils sont trop loin les uns des autres. Par contre, C, qui est au milieu, entend à la fois A et B, mais aussi D (il aura donc un bout tronqué de la conversation que tient D avec E, G et F.

Yep c'est exactement ce que j'avais en tête !

D'après les précisions données sur le chat, il semblerait qu'il y ait différentes zones (« pays ») séparées par des temps de chargement, et donc il n'y a peut-être pas beaucoup de sens d'avoir un seul MUC pour tout le monde ici, mis à part peut-être pour des raisons techniques que je ne vois pas encore. Une joueuse ne pourra pas parler à une autre dans un pays différent (même voisin) via ce canal « alentours ».

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
Alors, oui, dans l'absolu, le changement de nom est possible. Mais nous aimerions aussi implémenter en jeu un truc appelé cognomen [..]

Je note aussi que la notion de contact ("amis") reste présente dans notre conception du jeu. C'est sympa d'avoir des gens avec qui causer en direct :). Seulement, sur Xmpp pour être en contact avec quelqu'un il faut forcément le JID, non ? Dans ce cas, chaque perso doit avoir son propre JID, car être ami avec Jiro ne veut pas dire qu'on sera ami avec Junon, même si ce sont deux persos joués par Janus.

D'accord, donc il faut un identifiant unique par personnage (potentiellement un Jid). Il y a aussi des personnages partagés entre joueuses et donc le mieux seraient que ces personnages gardent les mêmes identifiants je pense.
On a aussi parlé d'identité temporaire et de Burner Jid, je sais pas si ça peut être utile.

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
CitationEst-il question d'autoriser les joueuses à avoir des conversations privées, une à une ?
Oui :) même entre personne qui ne se connaissent pas. Mais il faut aussi des outils de gestion des contacts : pouvoir ajouter cette inconnu à sa liste de contact, et pouvoir aussi blacklister une personne afin de ne plus l'entendre.

Il faudra toujours avoir accès à l'identifiant du joueur. J'imagine qu'il pourra y avoir une fonctionnalité de mapping pseudo -> identifiant xmpp pour accéder à ça.

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
CitationQuid des archives de chat (en jeu) ? Y en a-t-il ? Doit-on penser à faire que le serveur les diffuse quand un client se connecte ? Sont-elles gardées en local ?
[..]

Le but n'est pas d'avoir les derniers messages quand on se connecte, aussi. C'est du temps réel : si tu n'étais pas là, trouve quelqu'un qui te raconte l'histoire (ou te partage ses logs) ;)

Ok ! Vu d'ici, ne pas stocker de logs ça me facilite la tâche.

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
- "Maintenance" est un peu à part, c'est vraiment un canal système, il n'y a pas de raison de pouvoir écrire dessus.
- "Monde" réunit toutes les personnes connectées au MMORPG (avec pseudos des personnages), mais on pourra aussi s'y connecter avec un client "sans jeu" pour papoter avec les gens.

Il va falloir penser donc à accueillir des gens qui se connecteraient avec des clients normaux et ce que ça implique niveau fonctionnalités (et sécurité).

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
- Support, rien à dire, un MUC absolument classique, si ce n'est qu'il faut s'y co avec son pseudo-joueur et non son pseudo-personnage... mais ça se discute ;)

Niveau modération, serait-il plus facile si il était possible d'associer un personnage à un compte ?
Je ne sais pas si Janus, Jiro et Orij devraient tous avoir leur propre Jid avec peut-être un outil reservé aux modos pour permettre d'associer ces Jid à un compte. Ou alors un compte, des identifiants de connexion (login/passwd), et .. je vais réfléchir.

Citation de: Zatalyz le 05 Juin 2020 à 23:08:06
[..]
- Equipe : ce sont des MUC temporaires, qui disparaissent quand la dernière personne dessus se déconnecte. Pas de reconnexion automatique et on ne peux les rejoindre qu'en étant invité par un autre membre de l'équipe. À noter qu'au niveau jeu, être en "équipe" avait un impact gameplay, puisque l'xp était calculée en fonction des membres du groupe. Mais on vire l'xp dans Khaganat, donc ça sera pas un souci. Il y a aussi la possibilité de valider des quêtes à plusieurs, à condition de les avoir pris individuellement... faudra voir comment on lie ça, ou même si on le garde comme ça, ça peut vraiment évoluer.

[..]

Par contre, en effet, si on se fait virer ou qu'on quitte une Organisation, on doit automatiquement perdre l'accès aux salons privés de cette organisation.

Yep, Il faut une interface entre serveur XMPP et serveur de jeu. Chacun va avoir besoin de demander des infos (présence, position, etc.) / faire des actions (faire perdre l'accès à une organisation) avec l'aide de l'un ou l'autre.

YannK

Juste pour info, le service OpenNeL qui gère le chat s'appelle Input Output Service (IOS) et il s'occupe également de la concaténation des messages et de leur traduction : https://khaganat.net/wikhan/fr:serveur_tour

deed

Je me demande si ça serai pas plus rentable de faire relier ios à xmpp pour salon interne et avoir une possibilité d'avoir les salons/mp en direct pour les externes.

Quittte à changer plus tard le module interne :)

pep

Citation de: YannK le 06 Juin 2020 à 11:22:11
Juste pour info, le service OpenNeL qui gère le chat s'appelle Input Output Service (IOS) et il s'occupe également de la concaténation des messages et de leur traduction : https://khaganat.net/wikhan/fr:serveur_tour

Note pour le dev: comprendre comment ryzom_ios_service marche, comment intéragir avec d'autres services, et voir si y'a pas moyen d'intégrer un autre service à coté.

deed


Licences Mentions légales Accueil du site Contact