(1) 2 3 4 5 »


système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1761
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): 2964
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): 1761
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): 1761
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): 1761
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): 1253
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): 2931
+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): 1761
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): 2931
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
Questions & Réponses objet suivant chemin en prenant la courbure du chemin 0 8 Aujourd'hui 01:58:52
neonclignote 
Hors Sujet !! Sappling gen generateur d'arbres - tuto blender 0 7 Aujourd'hui 00:02:16
meltingman 
Moteur de jeu GameBlender et alternatives Mes participations aux gamejam :    [1][2] 10 600 Hier 22:42:31
timeman13 
Questions & Réponses Plusieurs object qui avance sur une ligne trajectoire 7 140 Hier 20:18:06
Warels 
Questions & Réponses [résolu] Mirror ne fonctionne plus bien 8 136 Hier 18:08:35
GFC 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[54] 534 158189 Hier 09:37:14
Redstar 
Questions & Réponses Le linking ne marche pas avec mon n personnage 1 41 Hier 09:32:00
Redstar 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[10] 93 6544 13/05 11:28:17
moonboots 
Questions & Réponses Occlusion ambiante dans 2.80 et plus avec eevee 2 198 12/05 06:40:35
xorturion 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Version alpha disponible + discord    [1][2][3]...[66] 656 133317 10/05 11:44:04
Hook 
Questions & Réponses [résolu] Transparence et Dynamic Paint pour un tag 5 685 10/05 10:51:42
CBY 
Questions & Réponses Text comme screen overlay 5 238 10/05 04:02:53
meltingman 
Questions & Réponses [non résolu] Exécuter un script à l'ouverture 0 60 09/05 21:45:09
Melodicpinpon 
Questions & Réponses Lancer un script par défaut/à l'ouverture 0 47 09/05 19:25:33
Melodicpinpon 
The Blender Clan 'tchat Benchmark EEVEE    [1][2][3]...[5] 41 9081 09/05 17:08:59
Keezty 
Questions & Réponses Garder la lumière allumée en local view, et dans toutes les collections 0 186 09/05 16:58:11
Melodicpinpon 
Python & Plugins ardoise 3D en add-on? 2 185 07/05 14:18:47
neonclignote 
Questions & Réponses [non résolu] Dynamic paint + particle 2 175 06/05 18:39:49
Jeanclaude25 
Questions & Réponses [résolu] Lier visibilité et rendering 4 1078 06/05 10:32:29
Melodicpinpon 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Collapsing - Quandore's Fate"    [1][2][3]...[5] 46 19834 06/05 09:36:54
Redstar 

Qui est en ligne
133 utilisateur(s) en ligne (dont 88 sur Forums)

Membre(s): 0
Invité(s): 133


plus...
Nouveaux membres

Nemo
11/3/2021
qingjie 10/3/2021
Kask909 9/3/2021
marie-antoinette 7/3/2021
Bugs 7/3/2021
lolorogli75 4/3/2021
Flagiel 4/3/2021
thedeathclown 1/3/2021
Littlespoon 28/2/2021
luxperpetua 27/2/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Mai 18
Anniversaire Luneo
Jui 30
Anniv des Jedi :-D
Jui 10
BUG de Lyon
plus 256 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