IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jeux web Discussion :

[Très grand monde genre GMaps] Possible ou pas ?


Sujet :

Jeux web

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [Très grand monde genre GMaps] Possible ou pas ?
    Salut tout le monde

    Alors, voilà je fais partie d'une petite équipe qui a pour projet de développer un jeu vidéo web qui serait une sorte de mix entre civilization et ogame dans un environnement du type "google map".

    Le monde est basé sur un principe de base : il doit être réaliste.

    On a donc des cartes qui vont faire à peu près la taille de l'europe, et les joueurs pourront à la façon d'un googlemap zoomer pour admirer une cité en gros plan ou au contraire dézoomer à mort pour avoir une vision stratégique de l'ensemble du truc.

    La question qui tue c'est comment implémenter ce genre de monde sans faire n'importe quoi ?

    Pour l'instant on est parti sur ça :
    1. Moteur à la google map pour afficher la carte (le client envoie un emplacement X,Y, un niveau de zoom, la résolution du client, et le serveur nous donne l'url des quelques images à télécharger pour rendre la scène)
    2. Ensuite on ajoute une couche logicielle au dessus de la gestion de la map pour afficher dessus les éléments du gameplay : maisons, troupes, arbres, etc.


    Je dirais que le point 1) ne pose pas de soucis, moults sites et APIs existant sur le sujet. La seule condition c'est d'avoir un serveur avec suffisamment de BP pour envoyer les images aux clients.

    Le point 2) quant à lui est beaucoup plus problématique, je vais vous expliquer pourquoi :

    On a un monde qui se veut "réaliste" et permet donc au niveau de zoom maximal d'avoir des cases de 60pixels de large par exemple qui vont représenter 10 mètres. La plus petite case fait donc 10m*10m, ce qui va correspondre à un tronçon de route par exemple.

    Par contre au niveau de DéZoom maximal, les mêmes 60pixels vont correspondre à 65km. (jusque là tout va bien, c'est ce qu'on demande à un dezoom).

    Pour créer une case du monde on utilise un tile BMP de 15,000 pixels de côté qu'un logiciel spécial va découper en pleins de petites images de 60px*60px à différents niveaux de zoom.

    Le premier truc à savoir c'est que sur ce tile, 60pixels = 270m. (on va pas non plus demander aux graphistes de dessiner chaque caillou de la planète à la main ^^).

    Donc en fait on va extrapoler des niveaux de zooms supplémentaires à partir de là, jusqu'à obtenir une case finale de 60px<=>10m. Bien entendu les derniers niveaux de zoom seront un peu pixellisés comme sur gmap sur les zoom maxis.

    Voilà maintenant l'équation qui m'amène à vous (si vous êtes encore là, merci ) :
    1 monde = 6500km * 6500km
    1 monde = 100 tiles * 100 tiles
    1 tile = 60,000 sous cases type A de 60px de côtés (=270m)
    1 sous-case type A = 27*27 sous-sous-cases de type B (=10m)
    1 monde = 437,400,000,000 de petites cases type B

    Sachant que les seules coordonnées X,Y gérées par le moteur sont celles des cases du type B. Les autres cases n'existent pas vraiment c'est plus pour avoir un repère au niveau de l'échelle.

    Une monde est donc constitué de plusieurs JPG qui représentent le "fond du paysage" auquel va se superposer une grille de 437 milliards de cases type B qui vont servir à placer les bâtiments des cités, les bonhommes, les ressources, etc.

    Plusieurs questions :
    1. Vous semble-t-il tout simplement envisageable de trouver une solution acceptable pour gérer ça ?
    2. Peut-on envisager un recours à méga datastore type cloud (donc utiliser mes serveurs web pour le front / le gameplay et un service hébergé pour les data) pour résoudre le problème d'une base de données gargantuesque ?
    3. Le fait de ne pas avoir 400 milliars de cases pré enregistrées en base mais plutôt d'y sauver uniquement les objets gameplay existant (avec des coordonnées X,Y) ne permet-il pas de dire qu'il s'agit d'un faux problème ?


    Là je me dis un peu que c'est pas tant la quantité brute de données stockées qui compte mais plutôt la quantité de données qu'on va s'amuser à sortir à chaque seconde. Mais j'ai du mal à imaginer comment se passerait une requête sur une table comprenenant des milliards d'enregistrement (et là les mecs qui ont bossé dans des banques doivent peut être pouvoir m'éclairer).

    A l'heure actuelle je me dis qu'il suffit de demander au serveur tous les objets compris entre le Xmin, Xmax et Ymin,Ymax actuellement visibles sur l'écran du joueur. Mais avec des millions d'éléments de gameplay par carte, j'ai peur que la latence devienne problématique.

    Bref, je sais aussi que le modèle du tile de 15,000pixels pour 65km découpé en sous tiles de 60pixels pour 270m eux même redécoupés pour arriver à 10m n'est peut être pas idéal. Mais faut-il ajuster des nombres en entrée pour transformer un 400 milliards en 1 milliard ou faut-il complètement changer de philosophie ?!

    Un grand merci à ceux qui m'auront suivi et ceux qui prendront le temps de me répondre

    A bientôt

    PS : il convient d'ajouter qu'à cela s'ajoute le problème du "dezoom" : de loin on ne va pas afficher chaque objet, car le joueur ne peut pas les voir. Mais il y aura des icônes stratégiques et il faut bien savoir ce qu'il y a en dessous pour mettre une icône... Comment ne pas interroger des millions de cases en même temps juste pour savoir qu'il ne faut rien afficher... ? Par exemple en dessous de 10,000 hommes au km² dans une armée je n'affiche rien, mais au dessus de ce nombre j'affiche une icône sur la carte qui représente cette armée.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Jamais entendu parle de structures d'arbres? arbre binaire, quadtree, octree, bsp, etc. Je vous conseille de vous orienter sur la partie algorithmie de developpez.com:

    http://algo.developpez.com/cours/

    Dans tous les cas, cette problematique que vous presentez est complexe et si personne dans votre equipe ne connait ou n'a eu l'idee d'utiliser ces structures, je doute fortement de la reussite de votre projet. Vous devriez drastiquement reduire vos objectifs.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Implémenter la multirésolution c'est généralement difficile.
    Plus on veut une grosse différence entre le niveau de zoom maximum et minimum, plus la difficulté augmente.

    Dans mon travail j'ai vu récemment un logiciel qui implémentait une sorte de Google map en temps réel sur l'ensemble de la terre. Par contre celà prenait 500 go de disque dur, sans disque SSD ce genre de soft est impossible car l'accès disque est trop lent. De plus, les données de terrains précises sont payantes ou innaccessibles.

    Ton approche basée sur 437 milliards de cases est vouée à l'échec. Ne mettez des petites cases que là où il existe déjà des cases de niveau supérieur qui ne font pas l'affaire.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PochyPoch Voir le message
    La question qui tue c'est comment implémenter ce genre de monde ?
    Bonjour,

    Si le but n'est pas de faire du réalisme au sens où l'entend ponce (c'est à dire d'avoir de vraies données géographiques pour reproduire la terre par exemple), c'est envisageable.
    Un algorithme de génération de terrain pseudo aléatoire (i.e. le type de terrain par cases, éventuellement l'altitude si c'est en 3D) peut très bien générer des cartes infinies, dont on ne demande qu'un petit morceau selon les besoins. Il n'y a alors qu'à stocker les cases modifiées, et en implémentant une "érosion" naturelle des terrains modifiées pour qu'ils reviennent a plus ou moins long terme à l'état que donne l'algorithme, on évite la saturation. Il faut simplement dimensionner le nombre de cases stockables pour s'adapter à la place disponible en base de donnée (i.e. rendre plus ou moins difficile la modification d'une case, par exemple la construction d'une route).

    c.f.
    http://www.gamasutra.com/view/featur...e_universe.php

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Salut,

    Citation Envoyé par PochyPoch Voir le message
    Salut tout le monde

    Alors, voilà je fais partie d'une petite équipe qui a pour projet de développer un jeu vidéo web qui serait une sorte de mix entre civilization et ogame dans un environnement du type "google map".


    Je dirais que le point 1) ne pose pas de soucis, moults sites et APIs existant sur le sujet. La seule condition c'est d'avoir un serveur avec suffisamment de BP pour envoyer les images aux clients.
    tu ne peux pas faire ce genre de jeu avec des technologies web il faut être un minimum réaliste...
    Il faut faire un jeu client / serveur avec client développé en C++ ( voire C# ou Java si cela te fait plaisir ) et pareil pour le serveur ( ou bien en Perl par exemple ).

    Le client a tous les graphismes , éventuellement il se connecte au serveur pour des mises-à-jour.
    Le serveur lui va traiter toute la logique et renvoyer les résultats aux différents clients..

    Citation Envoyé par TanEk Voir le message
    Jamais entendu parle de structures d'arbres? arbre binaire, quadtree, octree, bsp, etc. Je vous conseille de vous orienter sur la partie algorithmie de developpez.com:
    c'est certain qu'il soit nécessaire d'utiliser ce genre de techniques algorithmiques mais pour un jeu "tout web" cela me parait un peu lourd à mettre en oeuvre..

    Alors, voilà je fais partie d'une petite équipe qui a pour projet de développer un jeu vidéo web qui serait une sorte de mix entre civilization et ogame dans un environnement du type "google map".
    Il vaut mieux utiliser une architecture comme Google Earth plutot qui est bien plus performant que Google Maps.
    Google Maps est bien plus limité que Google Earth, qui lui est véritablement client-serveur et qui utilise l'accélération graphique ( par exemple Direct X sous Windows )

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/11/2012, 12h14
  2. Réponses: 4
    Dernier message: 24/01/2011, 07h55
  3. Déclarer un (très) grand tableau?
    Par Cheos dans le forum C++
    Réponses: 8
    Dernier message: 17/02/2005, 17h43
  4. [SELECT sur 16 millions de lignes] délai très grand
    Par localhost dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/11/2004, 17h04
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo