Aller au contenu

[Jeu Multi] Boat Craft


Recommended Posts

58ud9yy.png


Présentation : 

Boat craft, est un jeu multijoueur en vue de dessus sur Mobile, qui s'inspire de la vague des jeux .io.
Vous prenez le contrôle d'un bateau armé d'un canon que vous pourrez faire évoluer au long de la partie.

recordEvolve-iloveimg-resized-300.gif recordEvolve2-iloveimg-resized-300.gif recordEvolve3-iloveimg-resized-300.gif

Objectif / Motivation : 

Faire un jeu massivement multijoueur était une idée qui me tenais à cœurs depuis longtemps.
C'est donc un projet prototype pour approfondir mes compétences dans ce domaine et c'est également l'occasion de découvrir de nouvelles librairies/technos.
Mon objectif premier était de réaliser un jeu multijoueur stable, apprendre les concepts de la prédiction, réconciliation, load balancing. Mais également faire face au problème de lag, throttle, packet drop élevé...
Et ensuite, éventuellement essayer de faire quelque chose de sympa à jouer icon_wink.gif Mais je dois avouer que cette partie (améliorer le Gameplay) est assez compliquée et demandera de nombreuses itérations avant d'avoir d'obtenir un jeu marrant et équilibré ! C'est un projet que j’estimais faire en 2 semaines, et au final j'en ai consacré plus du double pour en arriver à cette premiere version de production.

Aspect technique : 

J'utilise la librairie bas niveau Enet, dont l'un des points majeurs est de pouvoir bénéficier des avantages du protocole udp (rapidité), tout en garantissant la reception des donnés(reliability), en respectant l'ordre d'envoie/reception, le séquencement/rassemblement des packets, et ainsi que de nombreux autres avantages...
Je compresse/décompresse les packets avec Zlib (ce qui me donne ~30% de réduction de bande passantes).
Le client mobile iOS/Android utilise C++/Opengl ES 2.0 ainsi Firebase pour le coté analytique (mesurer l'acquisition, les cohortes démographiques, le temps d'utilisation du jeu, les crashs...).
Et pour ce qui est du back end, j'ai un masterServer et N gameServer, développés en C++ avec Enet et Sqlite3 (pour stocker les données persistantes comme les scores, noms...).
Pour la GUI j'utilise une "immediate mode gui" : Nuklear (dans le même genre que Imgui ).
L' "immediate mode gui" donne l'avantage de pouvoir réaliser des interfaces graphiques très rapidement, au coup de performances en comparaisons des "Retained mode"

Pour ce qui est de la location ma configuration est la suivante :
-Le masterServer : 1 Vps chez OVH
-Les gameServers : 2 serveurs dédiés chez Kimsufi localisés 1 en Canada et l'autre en France. Et 1 instance chez Amazon EC2

Le gameServer n'est pas coûteux en performances (en partie car il est actuellement configuré à 10 tick, soit 10 rafraîchissement par seconde, ce qui semble être suffisant pour un jeu mobile)
Je peux aisément héberger 10 gameServers (de 50 place chacun) par serveur dédié.
 

Disponibilité


288179_GooglePlayBadge.png

 

Prochaine mise à jour : 
-Ajouter un tchat
-Régler un problème d'interpolation coté client (jitter)
-Ajouter plus de Canons/skins
-Équilibrer les armes et autres stats
-Prendre en compte le ping de l'utilisateur pour le Load balancing (Actuellement 2 serveurs, un au Canada et un France)

Tous retours/questions/avis sur le jeu sont les bienvenus !

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...