Archive:MultiPass For Freedom
Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
Ce jeu en réseau est une évolution de Jeu en réseau avec OSC:MultiPass For Freedom
Ce jeu n'utilise plus OSC qui ne permet pas de de transférer des dictionnaires. Un dictionnaire peut sembler très verbeux, mais il a l'avantage d'être clair dans ces clés. Alors qu'avec une liste de 20 items, bonjour les erreurs si il faut en rajouter une !
La première version a montré que le serveur doit tout gérer, les clients sont des esclaves du serveur. Ces versions utilise labtools et le blend est construit pour ne plus avoir à recharger les scripts modifiés dans un éditeur externe.
Les joueurs sont reconnus par le serveur avec le nom saisi, auquel est ajouté la partie entière de time(). Donc jamais 2 joueurs identiques. Cela permet de lancer plusieurs joueurs sur un même PC, ce qui est absolument nécessaire pour tester et debuguer.
labtools inclus dans les sources est une version améliorée de blenderTools
Sommaire
Deux Versions
Python 3.4 et asyncio
- asyncio fait pertie de la bibliothèque standard (les piles ! de python) Doc asyncio
Sources sur GitHub
Problèmes non résolu
Il est possible de lancer plusieurs jeux sur un même PC, mais ...
10 joueurs envoient à 60 Hz, donc le serveur doit tourner à 600 Hz.
Or il plafonne à 300 Hz ! En pratique, seuls 4 joueurs peuvent jouer.
Python 2.7 et twisted
Cette version reçoit en TCP en asynchrone: un protocol par client.
Asynchronisme sur Wikipedia
La mise en œuvre informatique utilise des files d'attente pour traiter des données qui arrivent de façon asynchrone. Réciproquement pour synchroniser des processus asynchrones on utilise un mécanisme conceptuel appelé sémaphore (informatique) dû à Edsger Dijkstra. Du point de vue du développeur, une méthode est asynchrone si elle est lancée en parallèle de l'exécution du programme. Le programme continue donc à s'exécuter en attendant la réponse de la méthode asynchrone.
Application
Seul TCP, car connecté, crée un protocol par client. Je récupère les datas de chaque protocol à 60 Hz, de façon très certainement pas très réglementaire, mais ça marche, par contre on ne peut plus lancer plusieurs jeux sur un même PC.