Il y a plusieurs choses.
Avant tout, et c'est effectivement important de le rappeler, parce que l'info n'est pas passée partout, on ne code pas dans Godot en python ; Godot utilise un langage proche de python et qui permet de faire un peu tout ce qu'on peut imaginer dans le client. Mais ce n'est pas du python, même si ça y ressemble. Le plugin pour utiliser python n'est pas encore au point ; c'est dans les cartons, si j'ai suivi, mais ce n'est peut-être pas pertinent de partir dessus (à voir, en tout cas ça me parait pas forcément pertinent tant que c'est expérimental). Je parle bien de ce qui se fait à l'intérieur de Godot.
Ensuite, il y a le côté "Godot communique avec le reste du net", dont le serveur. Là, on a plusieurs possibilités, mais il me semble pertinent de rester dans la logique des librairies : des petits morceaux, qui font un truc et le font bien. Il est important de bien séparer le client de jeu et ce avec quoi il communique. C'est là qu'il va y avoir un travail de code d'un niveau complexe. Il faut bien être conscient des diverses couches qui sont en relation ; par exemple le compte joueur (login+password) va tout à la fois être appelé dans le serveur de jeu pour autoriser l'utilisation d'un personnage, et sur le serveur web, dans la partie forum par exemple. Et sur la partie chat (xmpp, en principe). Ce login sert donc sur 4 outils (au moins) qui sont physiquement et techniquement très différents. Et bien que j'ai besoin d'envoyer le login au forum, ça ne sert à rien que j'envoie la position de mon personnage aussi (par contre le serveur de jeu en a besoin). Il y a un bon travail d'analyse à faire, donc avant de partir bille en tête pour brancher les trucs, prenez le temps de lister et documenter ce qui est nécessaire.
Dans ce que nous allons coder pour faire ces liens entre les logiciels
existants (et quelques uns à
créer), dans l'absolu n'importe quel langage peut être utilisé : c'est des librairies donc, hein, vous faites ce que vous voulez, tant qu'on sait ce qu'on doit appeler. Maintenant, nous avons fait le choix de favoriser python et il me semble important de rappeler pourquoi :
- c'est un langage facile à apprendre ; et de fait beaucoup de dev même débutants le connaissent, donc ça augmente les possibilités de participation et de maintenance par la suite
- il permet de développer et tester rapidement des hypothèses (pas de compilation, peu de possibilité de faire des vraies erreurs)
D'autres langages ont des arguments similaires... mais là, c'est un fait, ce doit être le langage le plus parlé par nos membres actuels. Encore une fois, si vous voulez faire appel à des librairies en rust ou en C++, pourquoi pas, mais dans ce cas soyez conscients que vous serez probablement la seule personne à pouvoir la maintenir dans le temps. Python a ses propres limites, cependant, et pour des questions de performance entre autre il sera probablement utile, une fois les hypothèses testées, de refactoriser, peut-être dans un autre langage. Ceci dit, la priorité est de tester les hypothèses, de voir et tester comment ça marche, de documenter les processus.
Pour tout ce qui est question de chiffrement, notre expert local, c'est Tycho, et il a plus d'une fois donné la preuve de ses compétences sur le sujet. Si vous voulez jouer avec cette partie du réseau, allez obligatoirement discuter
avant avec Tycho : il vous indiquera les librairies déjà existantes et pertinentes, pointera les faiblesses éventuelles, évitera de perdre du temps sur des voies de garage et des tâtonnements. De façon plus générale, il a une bonne vision des questions de sécurité (pas sur tout, mais probablement plus que tout le monde ici), donc allez lui présenter vos hypothèses avant de travailler. D'autant qu'il n'aime pas du tout quand il voit des erreurs (genre choisir le mauvais protocole) et il se met alors à mordre
Pour la partie réseau plus générique... C'est la partie qui m'effraie le plus. Le serveur de jeu est un sacré bébé. Il accuse son âge et sur les questions de réseau, cela veut aussi dire des problèmes potentiels derrière, MAIS il est aussi extremement performant sur l'aspect réseau. Ce n'est pas du tout trivial, le réseau d'un MMORPG. Je ne suis pas chaude du tout pour qu'on joue avec ça sans savoir ce qu'on fait. Regardez, oui ; documentez ; par contre avant de brancher le serveur et un client Godot... Je ne veux pas qu'on se précipite.
Ce qui m'amène au point principal... La partie multijoueur est (relativement) secondaire à ce stade du projet. C'est un peu bizarre de dire ça pour un MMORPG, mais je le dis
Actuellement, nous avons un souci avec le client Nel : tout ajout de contenu est bloqué, très fortement, par le pipeline graphique (et sonore ; on l'a pas débuggué celui-là, et la doc manque vraiment). L'ajout de mission/quêtes se fait (laborieusement), mais globalement toute participation "de base" (de la part de gens sans gros bagage technique) est impossible à cause d'un coût d'entrée technique et financier absolument aberrant : on ne peux pas dire aux gens d'acheter 3DSMax, quant à leur faire installer le plugin, faut pas rêver.
Godot nous permet de contourner ça. Là, le coût d'entrée est plus bas, la prise en main relativement rapide, et on peut utiliser des objets créés dans n'importe quel logiciel 3D, des sons de divers formats, des textures, etc. Bref, Godot nous permet de construire le visuel et le gamedesign, de l'interface aux lieux où jouer. Il serait possible, au pire, de retranscrire ça dans Nel ensuite ; il est cependant probable qu'on utilise Godot...
Parce que, une fois qu'on aura l'équivalent d'une instance solo dans la zone de départ, une démo jouable et présentable, fun, ça va avoit plusieurs effets positifs :
- ça va nous faire du bien au moral, de pouvoir marcher dans le Khanat, même si c'est tout seul (on peut aussi brancher un serveur multijoueur de godot, pour croiser un copain, mais attention, ça sera pas du "massive" compatible)
- ça va permettre d'avoir un truc "vendeur", et donc d'aller recruter les compétences qui nous manquent
- ça va permettre d'accueillir tous les types de contribution, et c'est important quand on débute de pouvoir rapidement voir ce que donne nos contributions "en jeu"
- ça va potentiellement pouvoir servir d'argumentaire pour un crowfunding/une recherche de financement.
Sur ce dernier point, on ne s'emballe pas trop : la recherche de financement se fera uniquement si nous avons quelqu'un prêt à gérer l'organisation financière, administrative et gestion de com à plein temps. Ce n'est pas le cas pour le moment.
Je m'arrête là, j'ai ptet oublié des trucs mais ça fait déjà un bon pavé.