Je suis en train de créer un jeu de plateforme qui a une fonctionnalité "coopérative" sur laquelle j'aimerais travailler sur les réseaux / Internet.
Maintenant, j'ai lu sur la programmation de jeux en réseau, y compris des articles comme Ce que chaque programmeur doit savoir sur la mise en réseau de jeux et je comprends donc la différence entre des techniques telles que le verrouillage de pair à pair et les architectures de prédiction serveur-client:
- J'ai conclu que pour tout jeu en temps réel qui va être joué sur Internet, le verrouillage par les pairs n'est tout simplement pas une option.
- Je suis également préoccupé par le fait que même pour un jeu de plateforme, une architecture client-serveur simple (sans une sorte de prédiction client) entraînerait une dégradation du gameplay en raison du délai entre l'action et la réaction causé par un aller-retour vers un serveur. (Cela dit, je veux éliminer le besoin d'un serveur central, et donc seul un des joueurs, le client, connaîtra réellement ce décalage).
Cela laisse la prédiction client, mais même pour un jeu simple comme un jeu de plateforme, cela semble toujours assez complexe.
Comment pourrais-je créer un système prédictif client fonctionnel pour un jeu de plateforme multijoueur?
networking
multiplayer
platformer
Justin
la source
la source
Réponses:
Je ne pense pas que la moitié de votre base de code se transformera en code réseau si vous décidez de mettre en œuvre une telle fonctionnalité.
À mon avis, la façon la plus simple de le faire est de configurer un serveur "central" (même si cela signifie qu'un joueur "héberge" le jeu puis se connecte à son propre serveur) qui accepte toutes les entrées de l'utilisateur le plus rapidement possible et le renvoie à chaque client.
Sur le client, vous ne l'implémentez pas différemment que si vous faisiez un jeu coopératif pour deux joueurs localement, sauf que vous lisez P1 à partir du clavier et P2 à partir du réseau.
Vous aurez besoin que le serveur envoie un état de jeu complet de temps en temps, et les deux clients peuvent soit basculer vers le nouvel état autoratitave à partir du serveur, soit glisser dans le nouvel état (en quelques secondes). À moins que vous n'ayez une horrible perte de paquets ou des tonnes de clients par serveur, cette approche devrait suffire à la situation que vous décrivez.
la source
J'ai un jeu de style mMORPG entièrement fonctionnel avec prédiction client (le jeu est loin d'être terminé mais il fonctionne `` OK '') et j'ai quelque chose sur 40000 lignes de code pour le serveur et le double pour le client (ajoutez le même montant pour les outils, etc. .). La prédiction n'est probablement pas supérieure à quelques centaines de lignes (si même cela) et l'ensemble du réseau se compose de quelques milliers de lignes mais pas plus de 5.000 (cela dépend un peu de l'endroit où vous tracez la ligne).
Question floue réponse floue ;-)
la source
Une proportion importante du code de réseau peut être indépendante du jeu auquel vous jouez. Pour cette raison, et parce que vous êtes nouveau dans le réseautage, la première chose que je vous suggère de faire est de trouver des bibliothèques qui feront ce travail pour vous. RakNet par exemple.
Une chose que vous voudrez dans votre code de jeu est la possibilité de gérer plusieurs états de jeu différents, que vous pouvez utiliser pour l'interpolation et la prédiction. C'est assez simple à concevoir à l'avance, mais cela peut représenter une quantité de travail importante si vous modifiez un jeu solo existant.
Notez également que si vous voulez que des étrangers jouent à un jeu de pair à pair sur Internet, vous aurez probablement besoin d'au moins un serveur quelque part qui gère le lobby / le matchmaking.
la source