(1) 2 3 4 5 »


système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1593
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 11:27:53
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): 2819
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 17:59:11
_________________
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): 1593
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 10:37:36
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 12:19:47
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): 1593
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 13:56:44
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): 1593
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 15:56:07
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): 1149
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 16:13:10
_________________
DeadSigns sur Steam
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): 2327
+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 20:55:04
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): 1593
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 08:22:38
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): 2327
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 09:27:55
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 [non résolu] Ecran bleu 2 23 Aujourd'hui 18:35:32
alexmge 
Questions & Réponses [non résolu] va et vient entre sculpt et layout impossible    [1][2] 11 134 Aujourd'hui 09:56:50
manondup 
Le coin des geeks carte graphique Intel(R) HD Graphics et OpenGL    [1][2][3] 24 792 Hier 22:47:15
Bibi09 
Questions & Réponses shader 5 135 Hier 20:23:23
Rimpotche 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[56] 558 92762 Hier 12:34:39
Hook 
[WIP] et travaux terminés Le Tigre 4 201 Hier 11:19:09
lastrodamo 
Questions & Réponses [non résolu] le Rendu de preview et le rendu final ne sonts pas pareils 2 64 03/07 23:18:27
Pinguinax 
Questions & Réponses [non résolu] Particules system dynamique 0 57 03/07 13:27:09
Ramar 
[WIP] et travaux terminés bas sculpture corps    [1][2] 18 316 01/07 18:57:21
prometheusx 
[WIP] et travaux terminés Générateur d'oreille - Beta testeurs bienvenus 8 450 30/06 10:28:08
Rimpotche 
Le coin des geeks Vieilles cartes graphiques : Quadro FX5800 ou Quadro 4000 ? 3 198 30/06 07:48:42
Poutrator 
Questions & Réponses Changement de caméra 2 188 28/06 19:10:40
prometheusx 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[8] 78 8763 28/06 16:44:44
Bibi09 
Questions & Réponses Faire pousser des cheveux 2 176 28/06 16:01:40
Rimpotche 
Questions & Réponses convertir un mesh en hair et le relier 2 130 28/06 11:11:44
prometheusx 
Questions & Réponses feu rapide 2 186 28/06 07:22:23
francerf 
Questions & Réponses collision de tissu 1 130 27/06 23:54:35
prometheusx 
Questions & Réponses blender 282a 2 175 27/06 18:39:51
LALA 
Moteur de jeu GameBlender et alternatives Nouveau fangame de Rayman 5 1431 27/06 11:25:02
lucky 
Questions & Réponses Retrouver un calque 1 132 26/06 18:55:10
Rimpotche 

Qui est en ligne
33 utilisateur(s) en ligne (dont 20 sur Forums)

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


plus...
Nouveaux membres
Dartank 5/7/2020
manondup 3/7/2020
Ramar 3/7/2020
Blendnoob 2/7/2020
blendmus 30/6/2020
Rafalithique2020 29/6/2020
rainbowfruit 27/6/2020
Flamby22 25/6/2020
mitronougna1 25/6/2020

patapote
25/6/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
Aou 7
anniversaire Cem47
plus 269 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445