Archive:MultiPass For Freedom

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

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

Mpff 02.png 10players.png

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.

Sources sur GitHub