Bonjour tout le monde,

Je suis sur un projet de jeu en ligne pour Android.
J'essaye depuis presque une semaine de trouver des informations sur les bonnes pratiques à suivre sur tout ce qui concerne le développement de jeu en réseau. Cependant, je n'ai pas réellement réussi à trouver de réponses couvrant toutes mes attentes. C'est pourquoi je me tourne vers la communauté de developpez.net

Le contexte:
J'ai développé un duo client/serveur en Java permettant à plusieurs clients de se connecter à un serveur afin de choisir un interlocuteur parmi la liste des joueurs connectés.
Une fois l'interlocuteur sélectionné, les deux joueurs communiquent via l'intermédiaire d'un chat le tout sur une base TCP avec les Sockets Java.
Une fois cette paire formée, les deux joueurs peuvent décider de lancer la partie et c'est là que ça se complique.

Le problème:
En effet, la partie que j'ai détaillé précédemment fonctionne sur un protocole que j'ai crée moi-même côté serveur et qui utilise des Strings plutôt que des tableaux de bytes.
J'aimerai savoir si c'est suicidaire de continuer sur une telle architecture lorsqu'on sait qu'une fois la partie lancée, les clients envoient des informations toutes les 20ms au serveur.
Du style : "/move [int] [int] [int] [int] [int]"
Afin que les clients mettent à jour leur écran.
Si je devais changer toute l'architecture, refaire un protocole serveur, etc.. j'aimerai le faire en suivant de bonnes pratiques. C'est pourquoi je me tourne vers vous.

Est-ce que je dois :
- changer pour de l'UDP ?
- changer pour transmettre des tableaux de bytes plutôt que des Strings
- mettre en place un système de synchronisation par horloge ? (Sûrement, mais comment ? Qu'elle est le meilleur moyen de le mettre en place ?)

Bref, est-ce que quelqu'un s'y connait un peu dans le domaine et pourrait m'éclairer ?

Merci d'avoir pris le temps de me lire


EDIT:
Petite précision, le jeu est en temps réel, pas de tour par tour.