Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Temps réel multijoueur : Client lourd, client riche

+3 votes

J'avais imaginé un mini-jeu type pong ou casse-brique pour 2 joueurs , en réseau , pour découvrir l' asynchrone sur Tornado. J'ai vu le tuto pour un tchat avec Tornado mais c'est pas suffisant.

Un programmeur m'avait dit que ce n'est pas possible car il faut un client lourd dans
mon cas.
En cherchant sur le net, j'ai fini par trouvé qu'il existait également des clients riches qui proposent les avantages du client léger et du lourd.

Quel est le moyen le plus simple pour faire un mini-jeu en temps réel en python ?
Quelle bibliothèque me conseillez vous ?
C'est juste pour tester.

demandé 28-Mai-2015 par buffalo974 (2,886 points)

Je te renverrai vers ce post (SO) pour plus d'infos ;)

Oui j'avais prévu pygame pour le jeu en lui-même, c'est pour le côté réseau que je m'inquiète.

1 Réponse

+5 votes
 
Meilleure réponse

Tout dépends.
En général, l'archi d'un client est divisé en 2 principaux processus :
- le premier gère l'affichage, les entrées du joueur.
- le second gère le réseau et modifie les données locales selon ce qu'il reçoit.

Ces deux processus agissent sur une base de données commune, contenant les informations de jeu. L'accès concurrent à cette base est donc une composante importante du programme, et pour implémenter ça, il y a mille façons, dont au moins la moitié de très mauvaises.

Un tuto en français de developpez.com aborde ce sujet de l'architecture, notamment en proposant l'implémentation via le pattern Command dans la seconde partie, qui me semble tout à fait adapté.

Gérard Swinnen propose dans son bouquin un projet de jeu en réseau (chapitre 18) qui est une bonne piste pour commencer, et facile à étendre pour que deux joueurs jouent en même temps.

Les bibliothèques built-in (réseau, multithread) suffisent. Pour de meilleures performances et moins de prises de tête :
- SFML : ça c'est pour faire de l'interface utilisateur, dont les graphiques, et le réseau.
- pyglet : pour l'affichage uniquement.
- python 3.5: pour la gestion built-in de l'asynchrone.

La SFML me semble tout indiquée dans ton cas.

répondu 13-Jun-2015 par lucas (2,332 points)
sélectionné 13-Jun-2015 par buffalo974
...