JeuWeb - Crée ton jeu par navigateur
Carte d'influence - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Carte d'influence (/showthread.php?tid=5107)

Pages : 1 2


Carte d'influence - Dragonus - 22-08-2010

Bonjour,

Dans le jeu que je développe il y aura des possibilité de prise de territoire histoire de donne un but au gang ( clan, guilde ). je cherche a représenter ces prise de territoire par une carte d'influence. Jouant a eve online je vous sort donc la carte d'influence de ce jeu que je trouve très bien et je souhaiterais savoir justement comment obtenir l'effet couleur + nom sur le dessus de ma carte.

http://go-dl.eve-files.com/media/corp/verite/influence.png

Dragonus


RE: Carte d'influence - php_addict - 22-08-2010

salut

c'est du flash ou un fichier image ?

peut être du --> SVG ?


RE: Carte d'influence - Dragonus - 22-08-2010

l'extension et .png au final c'est donc une image elle et générer toute les 24h par une tache cron.

Il récupère dans les bases de donnée a qui appartiens telle système ( représenter par un points ) et y attribue la couleur.

Plusieurs système coller qui sont au même propriétaire et la hop une tache apparait.

La méthode qu'il utilise pour obtenir cette carte je n'en n'est aucune idée, j'ai d'abord penser a la librairie GD. mais après je me suis dit si j'obtiens 400 morceaux après découpage de ma carte je vais devoir traiter les 400 morceaux pour savoir a qui il appartienne pour ensuite y mette la couleur par dessus en transparence. Ça ferais je pense trop de charge serveur.

Concernant le SVG je ne connaissez pas du tous.


RE: Carte d'influence - Foxglove - 23-08-2010

(22-08-2010, 10:13 PM)Dragonus a écrit : La méthode qu'il utilise pour obtenir cette carte je n'en n'est aucune idée

Coucou. Je pense qu'ils utilisent des courbes de Bézier (ou peut-être quelque chose de similaire).

Pour en dessiner, il faut tout d'abord définir des points de contrôle. La courbe passera "à l'intérieur" de la région définie par les points de contrôle. Du coup, tu ne peux pas prendre les étoiles comme points de contrôle. Par contre, tu peux prendre les sommets d'un diagramme de Voronoï comme points de contrôle, ça doit donner un effet proche de ce qu'ils ont.

Liens à regarder sur wikipedia :
- courbe de Bézier
- diagramme de Voronoï
- triangulation de Delaunay

Tu fais ton programme dans quel langage ?

Edit : Cela dit, il y a quand même des choses bizarres. Le bas à gauche de la carte m'intrigue par exemple, on y voit deux "IT alliance" en tout petit, alors qu'il semble ne pas y avoir de planète là. Est-ce que c'est normal par rapport au jeu, ou est-ce qu'il s'agit d'une erreur ? En tout cas, en regardant l'image, je viens de voir qu'il faudra aussi que tu isoles les zones d'influence connexes. En résumé, ça peut être un peu pénible à programmer, mais ça doit donner un effet très sympathique.

Re-edit après une nuit de sommeil : Les frontières entre deux zones d'influence ne sont probablement pas faites avec des courbes de Bézier (si c'était le cas, elles ne se toucheraient pas forcément). Il y a peut-être un algorithme pour calculer l'enveloppe complète, et un pour sous-découper et mettre en avant les fronts. Il n'y a qu'en testant que tu trouveras ce qui te convient.


RE: Carte d'influence - Dragonus - 23-08-2010

J'ai bien regardé tes liens ca me parait bien compliqué tous ca je pense me tourneé vers une autre option pour crée cette carte mais je ne sais pas encore laquel.

Concernant le language de prog c'est php / mysql.

Concernant sur la carte les 2 petit IT en bas non il impossible d'y aller car les joueurs peuvent seulement ce déplacer dans les système solaire représenter sur la carte par des points.

Le faite que l'IT apparaisse en bas et normal car plus tu possèdera longtemps un territoire plus ton influence et grosse donc plus la tache grossis. Bien sur quand la tache d'influence va en toucher une autre qui a autent d'influence les taches ne bouge plus.


RE: Carte d'influence - Foxglove - 23-08-2010

(23-08-2010, 01:46 PM)Dragonus a écrit : J'ai bien regardé tes liens ca me parait bien compliqué tous ca je pense me tourneé vers une autre option pour crée cette carte mais je ne sais pas encore laquel.

Tu as plusieurs autres options. Une autre consiste à utiliser l'enveloppe convexe de points (cf wikipedia). Si tu sais calculer l'enveloppe des planètes que tu contrôles, tu peux faire le tour exact du périmètre.

Inconvénient : on ne verra pas les fronts quand deux joueurs sont côte à côte, à moins qu'ils ne partagent la planète (si c'est possible).

Une solution pour ça : tu repars de ton diagramme de Voronoï, et tu dis qu'un sommet du diagramme appartient à un joueur donné si il a une planète dans une zone adjacente au sommet. Tu fais ensuite l'enveloppe convexe sur ce diagramme. Ca devrait te donner des fronts sympathiques (mais rectilignes).

Ce que ça nécessite (dans l'ordre d'implémentation) :
(1) identifier les composantes connexes (les zones d'influence "sans trous"),
(2) calculer les enveloppes (convexes ?),
(3) améliorer avec les diagrammes de Voronoï.

Tu dois pouvoir trouver des algos existants pour faire tout ça. Si tu sais déjà faire (1) et (2), tu es sauvé je pense. Le (3) est une amélioration subjective, tu dois pouvoir faire tout un tas d'autres améliorations différentes. Par contre, si tu ne sais pas où sont les zones d'influence "sans trous" (donc le (1)), je vois mal comment tu vas pouvoir faire quelque chose de sympa. Pareil pour le (2), si tu ne sais pas faire l'enveloppe de la zone d'influence, tu vas avoir des problèmes pour faire un truc sympa.

Dans les solutions plus faciles à implémenter, tu peux calculer aussi pour chaque sommet sa valeur (le temps depuis lequel il est sous contrôle par exemple), et calculer la valeur des sommets adjacents. Ensuite, tu calcules un ratio avec tout ça, et tu dessines un disque centré sur ce point, dont le rayon est égal au ratio. Il ne faut pas que le disque déborde sur le sommet d'à côté, mais il peut presque le toucher. Ensuite, comment faire quand les disques se superposent ? Faut-il donner la priorité aux disques ayant la plus petite valeur (sinon on ne les verrait plus) ? Je pense que ça ferait moins joli, mais ça se teste plus facilement.


RE: Carte d'influence - Dragonus - 25-08-2010

Les thermes

- courbe de Bézier
- diagramme de Voronoï
- triangulation de Delaunay

c'est la 1er fois que j'en entend parler donc je ne maitrise pas du tous ce sujets ce qui risque donc de compliquer les choses pour la suite.


RE: Carte d'influence - Ter Rowan - 25-08-2010

mais je crois que ce que tu demandes se modélise par des choses compliquées...

deux solutions donc, soit chercher une fonctionnalité plus simple (et qui ne ressemblera pas à cela), soit accepter cette complexité pour obtenir le rendu


perso je ne suis pas sûr que j'irai la dedans car effectivement, c'est plutôt dur ^^ , mais après à toi de voir pour l'investissement Smile


RE: Carte d'influence - Dragonus - 25-08-2010

je vais chercher un truc plus simple. ce sera plus sage


RE: Carte d'influence - popayan - 25-08-2010

Faut pas s'arrêter à la formulation mathématique de la chose, à implémenter ca peut être très "marrant" Smile