Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu/Navigateur - Questions techniques

Map / architecture BDD / technologies full-stack

    29 juin 2020 à 23:05:28

    Bonjour à tous,

    Je suis étudiant en informatique, je débute un Master en IA l'année prochaine. Mon parcours m'a permis d'avoir des connaissances dans tous les domaines de la programmation (notamment en web) mais je me heurte aujourd'hui à certaines problématiques pour lesquelles je ne trouve pas de documentation.

    Je vais tenter de rester bref, les mécaniques de jeu particulières à mon projet ne devraient pas être importantes pour la suite de mes question donc je ne vais pas m'attarder dessus; si j'ai tort, n'hésitez pas à les solliciter.

    Présentation du projet

    Mon projet est un jeu multijoueur de stratégie par navigateur (même style que Travian, Guerre Tribale...). Le joueur gère son/ses village(s), ses ressources, son armée, noue des alliances et fait la guerre avec les autres joueurs. Le but étant de d'être le joueur le plus puissant du monde/serveur ou de faire partie de l'alliance dominante (par le contrôle de la majorité des villages).

    Bien que j'ai pour but de mener ce projet à bout (au moins de le rendre jouable et disponible en ligne), il a aussi et surtout un but pédagogique pour moi : d'approfondir ma maîtrise de différents langages et la gestion d'un projet en full-stack.

    Stack (Front-end / Back-end)

    Mon premier questionnement est par rapport aux technologies à employer. N'ayant qu'une très maigre expérience avec les Framework orientés web (je ne connais que Vue.js et ai une petite expérience avec Node.js) je ne connais pas bien les avantages et les inconvénients de chaque Framework du moment. De plus, de par mon manque d'expérience, j'ai du mal à m'informer de manière pertinente sur chaque technologie, savoir quoi choisir pour quelle raison. J'ai bien conscience qu'il y a autant d'avis qu'il n'y a de développeurs mais en me tournant vers vous j'espère aussi connaître les tendances actuelles dans les milieux professionnels.

    Les technologies qui m'intéressent :

    - Vue.js       || Front-end

    - Angular     || Front-end

    - Node.js     || Back-end

    - ASP.NET     || Back-end

    Comme vous pouvez le remarquer je suis déjà très orienté sur du Javascript ou du C# (des langages que je veux approfondir) mais je suis très indécis sur quels choix faire, quel raisonnement avoir pour le choix de la technologie. Pour être complètement honnête je ne suis pas sûr de voir de grosse différence au niveau fonctionnel pour chacune des solutions listées au dessus, ou même des différentes solutions que j'ai pu voir lors de mes recherches.

    La base de donnée sera en SQL, il n'y a pas de raison logique à ce niveau là, c'est simplement ce avec quoi j'ai travaillé pendant mes études. Je ne suis pas fermé aux différentes idées, je ne connais absolument pas le NoSQL et ne vois donc peut-être pas l'avantage que cela pourrait m'amener.

    Tant que je suis sur la question du front-end / back-end, j'aimerai en profiter pour demander quelles sont les pratiques courantes pour la communication entre les deux?

    Les seuls projets que j'ai pu réaliser étaient des API mais je ne suis pas sûr que cette méthode se prête à un jeu, avec les mises à jour qui doivent se réaliser en temps réels etc. J'ai beaucoup vu les WebSockets durant mes recherches mais n'ai aucune expérience avec. Est-ce une sorte de complément à une API? Faut-il faire toute la communication avec des websockets? Existe-t-il d'autres méthodes de communication?

    Carte du monde

    Le problème principal auquel je me confronte aujourd'hui est la conception de la carte. Effectivement, l'aspect principal de mon jeu se situerai sur la carte du monde (la gestion des ressources, l'attaque d'autres villages etc...), il me faut donc une carte interactive à la manière de Travian ou Guerre Tribale. Ma carte serait constituée de tuiles en forme d’hexagones, chaque tuile serait cliquable, on explorerait la carte en traînant la souris (drag) et on pourrait zoomer et dézoomer à l'aide de la molette. Un peu comme sur Google Maps au final.

    Exemple de carte (Travian) - récupérée sur le wiki du jeu Travian Kingdoms

    Exemple de carte (Travian) - récupérée sur le wiki du jeu Travian Kingdoms

    Pour faire simple, je n'ai absolument aucune idée de comment m'attaquer à une telle tâche. Je n'ai jamais eu à réaliser un tel outil et je ne trouve aucune documentation en ce qui concerne la conception de cartes pour un jeu par navigateur. Je suis en recherche de toute piste, idée ou solution.

    Architecture de la base de données

    Je ne suis malheureusement pas en position de vous donner le schéma UML de ma bdd car c'est un brouillon sans queue ni tête mais son gros problème c'est l'isolation des mondes.

    Aujourd'hui tout se place dans une base de données, tous les joueurs, toutes les cartes, tous les mondes/serveurs.

    Le hic c'est qu'en lisant le mot "serveur" je me suis rendu compte que si jamais, pour une raison ou une autre, le serveur de la bdd cessait de fonctionner, tous les mondes deviendraient inaccessibles. Je me demande donc comment s'organisent les grands du jeux-vidéo pour avoir des serveurs pour chaque monde? Ma reflexion m'a menée à avoir une base de données par monde mais est-ce une pratique courante? N'est-ce pas à éviter? Si j'opte pour ce choix, comment lié les données d'un compte (sur une bdd) aux différents mondes (sur différentes bdd)?

    Voilà aujourd'hui les problématiques que je rencontre sur mon jeu,

    Merci d'avoir pris le temps de lire et éventuellement de répondre,

    Bonne journée.

    - Havelable

    ps: Si le sujet ne se trouve pas dans la bonne catégorie ou qu'il y a d'autres catégories / sites / forums plus pertinents pour mon sujet, merci de m'en informer ! :)

    edit: Corrections fautes de frappe

    -
    Edité par Havelable 29 juin 2020 à 23:22:42

    • Partager sur Facebook
    • Partager sur Twitter

    Jeu/Navigateur - Questions techniques

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown