Bonsoir,
Je conçois une application Android. Elle à de nombreux buts dont un qui est de pouvoir jouer à plusieurs jeux en multijoueur, jeux développés en java.
Le multijoueur fonctionnera par internet, l'application est le client et le serveur le moyen de les interconnecter et d'actualiser l'état du jeu.
Mes questions se posent au niveau serveur pour :
- faire tourner ces jeux.
- être en adéquation avec "l'espèce" d'architecture
que j'ai déjà en place:
-Avant tout, je tenais à vous citer quelques exemples de ce que j’entends par "différents types" jeux :
Jeu d'échec
- tour par tour
Jeu 2D où des personnages combattent
- temps réel (les joueurs jouent en même temps)
- un nombre devra être réduit à 0 (l’interaction pour y arriver est d'appuyer sur un bouton. A chaque appuie le nombre se réduira de -1 par exemple)
- les persos en 2D changent de position si leur adversaire est plus proche de 0.
Jeu de reconnaissance de forme (cliquer sur un cercle parmi toutes les formes affichées, par ex)
- les joueurs jouent en même temps
- le plus rapide gagne
# Maintenant ce que je sais :
-Le besoin d'un protocole commun et adéquate au échange de paquets entre client et serveur.
--> J'ai bien conscience de l'avantage d'UDP par rapport au TCP, qui est nettement moins lourd (pas de contrôle de flux, déconnecté, etc...).
-Le besoin d'un protocole et format d'échange de données commun entre client et serveur.
--> Dans mon application, je récupère de mon serveur des données propres à l'utilisateur en cours avec HTTP+PHP+JSON.
-Une légère base sur le protocole IP et les sockets réseaux: IP+Port en écoute sur le serveur et établissement d'une connexion sur cette IP+Port par le client gràçe au protocole IP (TCP/UDP donc)
# Maintenant ce que je ne sais pas :
-UDP est il adapté pour ces types de jeux ? Comment le déterminer ?
-Ne faudrait il pas creusé plus loin et déterminer (dans les échanges client serveur) quel actions/données seront échangées avec UDP et celle avec TCP ?
bah oui je me dis çà en pensant à d'une part à la connexion de 2 joueurs au serveur hébergeant la partie du jeu en cours et d'autre part l'échange des données du jeu en elle même.
Donc comment arriver à trancher çà ?
- Le fait de ne pas avoir réfléchi à cette aspect avant de développer mon application peut elle avoir des répercussions: comme le changement du format d'échange de données utilisée dans mon application (exemple http+JSON) ou la base de données employée(MySQL) ?
Je me pose cette question car je vois que je m'apprête à utilisé un peu de tout (je lis d'autre chose aussi comme la synchronisation automatique des données entre le client et le serveur avec certains technos) et je n'arrive pas à recentrer les techniques à employées pour mon cas et les protocoles à utilisées pour tel cas, sans nul doute dû à un manque de connaissance, de compétence et de pratique.
- Dernières questions, toujours par rapport à l'utilisation de beaucoup de technologies:
Est ce préférable d'avoir un serveur qui restreint les différentes technologies ou au contraire il n'y a pas réellement de souci tant que le hardware suit ? Ou encore est ce juste une meilleur optique pour la maintenance ?
A l'heure actuelle, mon application devrait employé un serveur avec plusieurs ... serveursinstallés dessus :
-un serveur web pour le site web de l'application (un LAMP donc apache+PHP)
-2 base de données mySQL (compris dans le LAMP donc mySQL)
-un serveur web (ou le même :o) pour les échanges des données de l'application (pour l'instant c'est le même).
-un serveur java pour exécuter des applications java(les jeux et les autres traitements de l'application sur des données qui n'ont pas rapport directement avec les jeux, même si ces derniers en utilisent parfois certains et pourront les modifier).
Désolé pour ce pavé mais je ne pouvais plus de garder toutes ces questions pour moi, fallait que çà sorte et puis pour des questions comme çà... il n'y a que sur developpez où j'ai l'occasion de m'adresser à des expérimentés, je n'en connais pas sinon.
Merci![]()
Partager