(1) 2 3 4 5 »


système Sid Meyer like (Civilization)
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1653
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): 2825
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): 1653
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): 1653
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): 1653
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): 1225
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
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
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): 2649
+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
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
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): 1653
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): 2649
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
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
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 [terminé] Scène de Pti dej à la Française - EVEE a donf - 2.9 Blender    [1][2][3] 24 245 Aujourd'hui 07:43:18
Crocodile_13 
[WIP] et travaux terminés image couteau dans caillou qui saigne 2 24 Aujourd'hui 07:03:37
Crocodile_13 
Questions & Réponses [WIP] Problème Rétopo 5 39 Hier 22:37:06
Laorz 
Questions & Réponses Placer sa camera sur un HDRI    [1][2] 10 300 Hier 21:32:01
meltingman 
[WIP] et travaux terminés [terminé] Chaussures Très Réalistes (.bend disponible) 5 128 Hier 21:23:47
Crocodile_13 
Le coin des geeks gain de fluidité viewport entre ryzen 3900X et 3950X    [1][2][3] 28 1341 Hier 15:45:54
papillon 
Questions & Réponses hdri en mode ombrage 2 110 Hier 10:27:06
kimlicrea 
Questions & Réponses Modifier les attribue de plusieurs objet en même temps (lumière) 3 66 Hier 10:21:47
kimlicrea 
[WIP] et travaux terminés [terminé] Moderno 404    [1][2] 13 491 23/10 20:26:41
moonboots 
Questions & Réponses Lissage de face 4 81 23/10 19:43:53
Maxence34 
Mes premières images sous Blender (débutants) Première réalisation    [1][2] 15 8987 23/10 02:13:26
Talason 
The Blender Clan 'tchat Addon convertisseur d'images en courbes 2 76 22/10 20:29:31
Rimpotche 
The Blender Clan 'tchat Pour les arboriculteurs 3D 1 77 22/10 18:05:18
moonboots 
Hors Sujet !! Faire parler son personnage en 5 minutes - tutoriel Francais - Blender 2.9 4 142 22/10 13:03:28
meltingman 
GIMP Faire un drégradé selon la forme sous gimp 9 108 22/10 12:49:57
Thewada 
Questions & Réponses [résolu] Perte des Vertex lors d'un Separate 7 108 21/10 21:45:05
debutant 
[WIP] et travaux terminés [terminé] Pantin articulé    [1][2] 12 6778 21/10 18:53:51
meltingman 
Hors Sujet !! Une citrouille en 13 clics - Tutoriel - Blender 2.9 2 167 19/10 23:40:15
meltingman 
Hors Sujet !! un banc de dauphin - tutoriel - workflow sculpte > bake - 2.9    [1][2] 12 471 19/10 23:36:41
meltingman 
Questions & Réponses [résolu] Particule réaliste pour un sprite    [1][2] 12 695 19/10 13:39:34
Redstar 

Qui est en ligne
135 utilisateur(s) en ligne (dont 74 sur Forums)

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


plus...
Nouveaux membres
DorisFogar 25/10/2020
Irma22156 25/10/2020
KristyMcki 25/10/2020
SonMulliga 25/10/2020
PhillipPic 25/10/2020
BritneyJ40 25/10/2020
MartinMcQu 25/10/2020
JonathanDu 25/10/2020
WFOCelsa65 25/10/2020
Charlene58 25/10/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 9
BUG de Lyon
plus 264 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