Sign in to follow this  
smartties

[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 !

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this