Jeu en réseau avec OSC: MultiPass For Freedom

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

Ce jeu utilise le Multicast et le module python txosc.

Le Multicast permet de diffuser et collecter des données entre tous les connectés.

  • Jeu en réseau Massivement multi-joueurs en OSC, en local (MMO), j’exagère un peu, on est en local, le "massivement" sera 10 joueurs.
  • Serveur avec script en python 2.7 UDP MultiCast
  • Jeu dans Blender 2.62 (python3.2)

Exemple avec 3 joueurs: Mpff 02.png Exemple avec 10 joueurs: 10players.png

Ressources

Lancer un script en python 3

Pour lancer un script en python3, le shebang #! /usr/bin/python3 ne suffit pas, il faut lancer en console

python3 votre_script.py

Geany

sudo apt-get install geany geany-plugins

Un éditeur plus évolué que gedit : Geany. Il permet d'avoir la liste des Symboles, le plier/déplier, et de lancer le script directement.

Il faut installer geany et geany-plugins. Pour définir la version de python utilisée en cliquant sur "Exécuter", aller à Construire, Définir les commandes de construction, Case Excécuter: python/%e ou python3/%e

Il est possible de le configurer pour avoir la doc python intégrée, des sauvegardes automatiques, de débugger, d'envoyer les fichiers sur git ou svn.

Get instant documentation in Python

Eclipse

Ultime niveau du programmeur.

OSC.py pour python3.2

twisted et txosc n'ont pas encore été porté en python3. OSC.py de pyOSC a tout ce qu'il faut pour créer un client/serveur. Il sera utilisé dans Blender en python 3.2

Un peu de doc, sinon tout est dans les commentaires du script ( Extrait et résumé)

Routage

Liens Ressources vers Wikipedia:

Mpff 01.png

Le routage est le mécanisme par lequel des chemins sont sélectionnés dans un réseau pour acheminer les données d'un expéditeur jusqu'à un ou plusieurs destinataires.

Le serveur de jeu doit envoyer des données à tous les joueurs: c'est du routage ! Image Wikipedia:

Unicast

Broadcast

Multicast

twisted

twistedmatrix.com

sudo apt-get install python-twisted

txosc un module python qui utilise twisted

txosc our envoyer recevoir en OSC:

Developpé par

Ce module est inclus dans mes fichiers, sinon pour l'installer:

sudo apt-get install python-txosc

Multicast

En résumé, le Multicast permet à des clients et des serveurs de se connecter sur tous la même adresse (ip, port):
La plupart des routeurs ( celui qui vous donne votre adresse ip avec le dhcp et vous connecte à internet ) supporte le Multicast. En IPV4, les adresses entre 224.0.0.9 et 224.0.0.255 sont réservées au Multicast.

Plus de détails sur le Multicast

Principe du jeu

Toutes les datas sont toujours dans des bundles, pour que les transferts et traitements soient très rapides, et ne pas ralentir le jeu. L'IP du serveur est envoyée toutes les secondes sur le Multicast, ce qui permet au client de connaître cette adresse pour envoyer sur le serveur.

Shéma de principe
Game Server Réseau Routeur Réseau Joueur Lambda
Serveur :
  • Python 2.7
  • Txosc qui utilise Twisted
  • Reception des datas des clients en Unicast en UDP
  • Traite les datas
  • Envoie les datas utiles pour le jeu en Multicast UDP toutes les 0,015 s, dans un gros bundle
eth Routeur du réseau local eth

Joueur :

  • Blender 2.62
  • Python 3.2
  • OSC.py en python 3
  • socket
  • Tourne à 60 fps ( période de 0,015 s )

Client / Serveur

  • Serveur:
    • Sur le réseau du routeur
    • Peut être utilisé pour lancer un joueur
    • Reçoit en Unicast en UDP
  • Joueur Client:
    • Sur le réseau du routeur
    • Reception en Multicast en UDP
    • Envoi en Unicast en UDP

Mpff 03.png

Blender 2.62 avec python 3.2

  • Les versions 2.5x et 2.6x utilisent obligatoirement python 3
  • twisted et txosc n'existent pas en python3. La version de twisted python3 est en cours en 2013.
  • Les versions avant 2.62 ont un bug dans le blenderplayer
  • La réception des messages OSC est fait avec le module socket et decodeOSC de OSC.py. Le script Multicast dans Blender 2.6.
  • L'envoi des messages OSC est fait avec OSCClient de OSC.py

Fichiers

Le python est plus propre: merci à Gérard Swinnen.

  • Rendre exécutable MultiPassForFreedom_Server, puis clic pour lancer le server
  • Rendre exécutable MultiPassForFreedom_Client, puis clic pour lancer un joueur, un seul joueur par PC.

Le fichier pour xubuntu 12.04

Les mises à jour sont sur sourceforge

Juin 2013 : Toujours des bugs mais tous les niveaux sont jouables

  • Blender 2.62 ou plus, twisted doivent être installés. Les versions avant 2.62 ont des bugs dans le blenderplayer.

Blender 2.6x ne tourne qu'avec python 3. Problème Python 3 :

  • Les recherches sur internet en python 3 donnent très peu de réponses.
  • Beaucoup de modules n'ont pas été portés, et s'ils le sont, la doc est très limitée.

Utilisation dans d'autres projets

Exemple de soft qui envoient ou recoivent OSC

  • Ardour, Blender with python script, EyesWeb, liblo, a C library for Unix, Max/MSP, OSCulator, Processing, Pure Data, Quartz Composer, Reaktor, SuperCollider, TouchOSC, Traktor DJ Studio, Veejay, VirtualDJ, vvvv.