(1) 2 3 4 5 »


système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1869
Bonjour tout le monde,

Je souhaiterais connaître le secret du tour du monde. C'est-à-dire que dans les jeux ancien, on avait la possibilité de déplacer la caméra et de retrouver l'autre extrémité de la carte. Je suis sûr qu'il est possible de faire ça aussi dans le BGE.

Du coup, comment ça marche ?

Ensuite dans les jeux Sid Meier je suppose qu'il n'y a pas de navmesh donc je me demande comment le jeu parvient à créer un chemin à travers les cases et indiquer le nombre de tours ?

Merci pour les éclaircissements que vous pourrez m'apporter.

Contribution le : 23/02/2020 11:27
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
OverdOzed
Inscrit:
08/10/2003 09:20
De Annecy
Post(s): 3036
Salut Redstar,
Tu veux dire quoi par "retrouver l'autre extrémité de la carte"?
Il n'y avait peut etre pas de "navmesh" a proprement parler, mais un système similaire de pathfinding a forcément du être mis en place (algorithm A*, ce genre de chose...) Je ne suis pas hyper calé sur le sujet mais tu devrais trouver pas mal d'info sur le net, peut etre que l'algo est trouvable quelque part pour le BGE, sinon tu vas devoir t'y coller ;) J'avais tenté plus jeune d'en faire un sur le BGE... sans aucune expérience je n'ai jamais réussi à le terminer :)

Contribution le : 23/02/2020 17:59
_________________
lucky
www.lucky3d.fr
Auto-Rig Pro Addon: Blender Market - GumRoad
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1869
Citation :

Tu veux dire quoi par "retrouver l'autre extrémité de la carte"?


Je veux dire ceci.

Pour ma seconde question, j'ai une théorie: en faisant un détecteur entre en collision avec un autre détecteur des cases et la collision génèrera un point de passage. Ça pourrai marcher mais c'est à tester.

Contribution le : 24/02/2020 10:37
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
Fou Furieux du Clan
Inscrit:
26/07/2008 22:53
Post(s): 208
Salut !

Pour ton problème de tour du monde, j'ai vu les premières vidéos de cette playlist. C'est un mec qui créé les bases d'un jeu à la civilization. Il explique très bien le tour du monde assez tôt dans la playlist (je sais plus dans quelle vidéo).

C'est en anglais, mais il explique bien ce qu'il fait, comment et pourquoi. Après c'est du C# sous Unity, ça te donnera le principe, mais il faudra l'adapter, si toutefois c'est possible.

Contribution le : 24/02/2020 12:19
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1869
Merci pour ton partage ! La méthode est claire (partie 2) maintenant, je sais ce que je dois faire comme tests.

Contribution le : 24/02/2020 13:56
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1869
Bonjour,

Je suis en train de réaliser un générateur de carte comme dans les jeux "Sid Meyer".

J'avance bien dans mon ébauche mais je bloque sur un problème: j'ai un bateau qui apparait sur une case d'eau. Si je clique sur une autre case, un cube apparait et le bateau dois arriver à celui-ci tuile par tuile, en cherchant le chemin le plus court. Le problème, c'est que je n'arrive pas à faire déterminer la case suivant ou dois se déplacer le bateau (ou plutôt faire apparaitre un point de passage).

from bge import logic as gl

scene = gl.getCurrentScene()
obj = gl.getCurrentController().owner
list_dist = []
dist_min = None

for case in scene.objects:
    if 'type' in case:
        # on regarde les cases avoisinante sauf celle sur laquelle on est
        if obj.getDistanceTo(case) < 1 and obj.getDistanceTo(case) > 0.5:
            # on indique dans une liste chaque distances par rapport aux cases concernées
            list_dist.append(case.getDistanceTo('pt_unit'))
        
for test in scene.objects:
    if 'type' in test:
        # on cherche la case ayant la plus petite distance correspondant à la valeur la plus petite dans la liste
        if test.getDistanceTo('pt_unit') == min(list_dist):
            scene.addObject('pt_unit', test, 0)


J'ai un résultat, mais pas celui attendu visuellement.

Deuxième chose: comme c'est une carte générée aléatoirement, je constate tout de même que la répartition est parfois bizzare. Quelle fonction me permettrai d'avoir quelque chose de plus... uniforme ?

Contribution le : 07/04/2020 15:56
Créer un fichier PDF de la contribution Imprimer


Re: Tour du monde et pathfiding
OverdOzed
Inscrit:
19/07/2011 20:39
De Corsica !
Post(s): 1263
Pour le chemin le plus court, tu peux tenter une implémentation d'un algorithme de chemins (pathfinding).
Le A* est très utilisé pour les jeux (c'est ce que j'utilise d'ailleurs), un exemple pour le mettre en place:
https://medium.com/@nicholas.w.swift/easy-a-star-pathfinding-7e6689c7f7b2

++

Contribution le : 07/04/2020 16:13
Créer un fichier PDF de la contribution Imprimer


Re: système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3072
+1 pour A* (qui est si populaire qu'il en existe de nombreuses variations).

Pour la génération aléatoire, tu peux plus décrire ce que tu veux améliorer ? C'est la génération des tuiles, du genre "terre" et "mer" ? Ou ça concerne un autre aspect de la génération ?

Si tu parles bien de la map et des tuiles, as-tu penser à générer un diagramme de Voronoï ? C'est très utilisé pour la génération de cartes.
Je parle de ce type de map mais tu peux adapter ensuite pour avoir plusieurs continents.
https://www.youtube.com/watch?v=WoBA42n4xO8

Contribution le : 07/04/2020 20:55
Créer un fichier PDF de la contribution Imprimer


Re: système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1869
C'est donc ainsi que ça se dit ? D'accord.

Je vais regarder ça. Bibi09, Je ne sais pas comment générer un diagramme de Voronoï, je n'y ai même pas pensé.

Mais actuellement, j'ai 3 type de tuiles, terre, eau et montagne mais en théorie, il y aurai d'autres types de tuiles comme le sable, les rivières, les marécages...

Effectivement, l'agencement des tuiles est chaotique actuellement, je retrouve parfois mon navire piégé sur une case d'eau sans pouvoir sortir. Normalement, le navire devrai être généré sur la gauche ou sur la droite, l'idée étant que ce navire arrive de l'Europe et trouve le Nouveau monde pour l'explorer et la coloniser.

Mais je sais pas si j'airai plus loin, là, je veux juste faire une ébauche opérationnelle.

Et je viens de penser à trois choses: la répartition des tuiles se fait par "zone", je ne vois pas du tout comment programmer ça. Ensuite, il y à l'apparence des tuiles en fonction des tuiles avoisinantes, j’aurai aimé que ce ne soit pas trop cubiques, c'est à dire que si j'ai une tuile entourée d'eau et d'une seule case de terre, il faut que la "jonction" soie harmonieuse (replace mesh ok mais comment identifier le bon mesh selon la disposition et le sens de la tuile ?).

La dernière chose, c'est le territoire: comment parvient-on à agrandir le territoire, en voyant uniquement les hexagones colorés de la nation montrant les limites et non pas l'intérieur des terres ?

Contribution le : 08/04/2020 08:22
Créer un fichier PDF de la contribution Imprimer


Re: système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3072
Le diagramme de Voronoï te permet justement de résoudre ce problème de case isolée.
Chaque cellule du diagramme représente un biome comme dans Minecraft.
Chaque cellule peut être elle-même découpée en tuiles. Toutes les tuiles du même biome ont les mêmes propriétés (terre, eau, sable, montagne, ...). Ca c'est pour rester simple dans un premier temps. Ensuite c'est possible de l'améliorer (relief, ...).

Je sais pas si tu peux inclure des bibliothèques Python dans le BGE mais que ce soit Voronoï ou autre (Perlin, etc), ça se trouve facilement.

Commence déjà par ça. Pour les soucis graphiques, ça sera dans un second temps. Je pense qu'il ne faudrait pas voir une case comme un tout. En fait, je découperais la case au moins en 4 mais probablement plus pour gérer les coins.
Exemple pour la transition entre du sable et de l'herbe (il faudrait faire pareil pour les autres côtés et les coins...).


Donc, au niveau de la structure de la map on aurait :
- Voronoï pour les biomes ;
- Cellule pour les cases ;
- Divisions de cellule pour les transitions.

Contribution le : 08/04/2020 09:27
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 3 4 5 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 97 17428 Hier 17:59:57
blend74 
Questions & Réponses [résolu] Os et FBX 3 223 Hier 16:15:38
zeromeetsinfinity 
Questions & Réponses Pousser le pc au max 2 57 Hier 13:20:28
Bibi09 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 170632 Hier 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 88 Hier 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 27 Hier 09:09:22
Melodicpinpon 
Questions & Réponses MeasureIt et dpi 4 900 Hier 09:02:36
jcnouveau 
Questions & Réponses De Maya vers Blender concordance de axes. 9 112 19/10 17:04:59
Bibi09 
Questions & Réponses Armature en IK sur squelette complexe 0 37 19/10 16:40:33
Melodicpinpon 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 214 21184 19/10 10:54:10
moonboots 
Questions & Réponses [résolu] Enlever "snapping" dans la timeline ? 6 112 19/10 09:47:12
CBY 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 29 1154 18/10 19:14:29
moonboots 
Questions & Réponses Débutant Blender, temps de travail pour un rendu ? 2 91 18/10 11:37:55
Jalis 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5730 17/10 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 9117 17/10 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 199 16/10 08:09:13
Laorz 
Questions & Réponses [terminé] Supprimer le lien d'un objet entre 2 scènes 4 145 15/10 12:52:21
Horemheb 
Questions & Réponses Blender kit : barre d'assets 0 94 15/10 09:26:52
Sphere3d 
Questions & Réponses MeasureIt et dpi 3 139 15/10 08:39:25
Cdric 
Questions & Réponses Comment faire la symétrie d’une multitude d’éléments.    [1][2] 13 73694 14/10 23:35:18
meltingman 

Qui est en ligne
180 utilisateur(s) en ligne (dont 86 sur Forums)

Membre(s): 5
Invité(s): 175


PardoKatherine, SusanneTut, TaniaHuond, LutherEleanore, CondeBerenice, plus...
Nouveaux membres
HesterScj 20/10/2021
ModestaMyl 20/10/2021
DarlaFulle 20/10/2021
ImogenRefs 20/10/2021
NoreenHark 20/10/2021
Ahmed43F28 20/10/2021
CharlaZer 20/10/2021
GusU005893 20/10/2021
Dick09X379 20/10/2021
WillianA04 20/10/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
plus 247 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445