Jeu en réseau avec OSC: MultiPass For Freedom
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:
Exemple avec 10 joueurs:
Sommaire |
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.
- pydev pour python.
- wiki.blender.org explique comment créer la doc des modules/fonctions Blender.
- BGE-Code-Completion-in-Pydev pour l'installation de l'auto complétion.
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:
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
sudo apt-get install python-twisted
txosc un module python qui utilise twisted
txosc our envoyer recevoir en OSC:
Developpé par
- Arjan Scherpenisse <arjan@scherpenisse.net> scherpenisse.net/
- Alexandre Quessy <alexandre@quessy.net> alexandre.quessy.net
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
Asynchrone
Il faut que je bosse là-dessus !!
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.
| Game Server | Réseau | Routeur | Réseau | Joueur Lambda |
|---|---|---|---|---|
Serveur Multicast :
|
eth | Routeur du réseau local | eth |
|
Client / Serveur
- Serveur:
- Sur le réseau du routeur
- Peut être utilisé pour lancer un joueur
- Joueur Client:
- Lance Joueur
Il n'y a pas à définir quelque part adresse ou port. Tout le monde a les mêmes IP, port : 224.0.0.11, 18888.
Blender 2.62 avec python 3.2
- La dernière version de Blender avec python 2.7 est la 2.49b toujours disponible (elle date de septembre 2009). J'ai décidé de ne plus l'utiliser: il y a quelques trucs qui cassent les pieds, mais aussi beaucoup d'améliorations dans les dernières versions. Le Game Engine a des améliorations très partiques, tel que les listes déroulantes de sélections des propriétés ou des scripts.
- 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 avril 2012.
Blender ne peut pas utiliser txosc. Il utilise pyOSC qui supporte le Multicast en théorie mais je n'ai pas réussi à le faire marcher! D'où le script relay.py en python 2.7 qui communique avec Blender et le Multicast et sert de relais.
- Les versions avant 2.62 ont un bug dans le blenderplayer
Ce script relay.py peut être utiliser avec d'autres logiciels que Blender
Un logiciel qui envoie et/ou reçoit en local en OSC, peut être relayer en Multicast avec ce script.
Fichiers
Le python est plus propre, avec des "class", donc sans "global" à tous les étages. 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
mars 2013 : encore beaucoup de bugs
- 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.
- J'ai réussi à envoyer sur le multicast avec OSC.py, et à recevoir avec socket, mais avec des datas bizarres. Le script relay est finalement une solution simple.
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.
On peut imaginer un autre logiciel que Blender sur le client.
- Le serveur doit pouvoir être utilisable aussi dans un projet Multimédia
- Uniquement sur un réseau local
- Avec un GUI (genre OSCulator)
- voir les datas qui circulent
- set des IP PORT
- enregistrer des scores ...