| Générateure de Map a la civilization | |
|
+2Sekigo Le Magnifique Bloboto 6 participants |
Auteur | Message |
---|
Bloboto Nouveau
Messages : 8
| Sujet: Générateure de Map a la civilization Sam 26 Fév 2011 - 2:12 | |
| Bonjours, je suis nouveau, et je tente de faire un jeu civ-like.
J'aimerais savoir si quelqu'un a une idée comment générer une map a case.
C'est gros, 240 cases par 180 = 43200 objet !!!
C'est trop, comment on peut réussir a faire une map avec interaction sans utiliser des objets?
Je ne sais pas du tout quoi faire? |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 9:37 | |
| Mmmmmh. Vu que j'étais un gros joueur de Civilization, je vais t'aider un peu. Pour la carte, c'est rien qu'un gigantesque damier. Pour les graphismes de ta carte, utilise les tiles. Bon, pour générer une carte aléatoire, à toi de trouver le bon algorithme. Pour les caractéristiques des cases selon le type de terrain, utilise les ds_grid (ou les tableaux). Ainsi, par exemple : - Code:
-
map[34,21] = "plaine:foret" map[12,45] = "colline:ville"
Ça évitera de remplir la carte de dizaine de millers d'objets. Par contre, avec GM, ce n'est pas évident, mais c'est faisable. Évidemment, cela nécessite de faire un moteur spécifique, avec pas mal de recherches en amont de ta part pour trouver les différents algos. Pour tout ce qui est ville, unités, ressources, etc...., j'utiliserais plutôt des objets. Car les caractéristiques changent, contrairement aux terrains. Donc, il faut plus de flexibilité. Désolé, c'est peut-être trop théorique, mais n'utilisant plus GM, je ne peux pas faire autrement. En tout cas, je pense que c'est une bonne base. |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 11:10 | |
| La carte, ne devrait pas être constituée d'objets ou de tiles... Une bonne technique consiste à avoir plusieurs ds_grid (ou ds_map, selon ce que tu veux), une contenant le terrain (plaine, eau, montagne, etc), une seconde les ressources, une autre les batiments, et une dernière les unités. Avec toutes ces grilles supreposées, ça pèse très peu dans ta RAM, et ça permet de n'afficher que ce que tu vois à l'écran, et de ne calculer tous les objets QUE quand c'est nécessaire.
C'est un peu abstrait comme programmation, mais c'est très efficace par rapport à une myriade d'objets. Et surtout, c'est plus simple de trouver ce qui se trouve à côté, il suffit de chercher dans les grilles, sans faire de test de présence/collision. _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 12:00 | |
| C'est d'ailleurs ce que je voulais dire plus haut.
Si à la position [x,y], la grille A lui indique "ici, il y a des montagnes", hop, il blit une tile de montagne. Si à même la position [x,y], la grille B lui indique "ici, il y a la ville Nude_City", et que le tableau C lui indique "Pour Nude_City, il y a 30 habitants", hop, il crée l'objet "Generic_City" avec pour attribut 30 has.
Et hop, tu as ton système. Bon, par contre, il faut absolument afficher uniquement que ce le joueur voit. |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Faire une grille Sam 26 Fév 2011 - 18:23 | |
| Ouf, je n'ai jamais fait de grille. Pouvez-vous m'indiquer un tuto sur les grilles qui soit assez complet. Avec le manuel, il manque d'information.
Voila ce que je tente;
lito = ds_grid_create(640,480) lito[34,21] = "mer"
"mer" étant un backgrond utiliser en tileset.
Mais cela n'affiche rien...
Merci beaucoup de votre aide |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 18:39 | |
| Déjà utilise ds_grid_add, ds_grid_set et ds_grid_get, y a pas de grid[x,y] ou autre syntaxes. Après tout est très bien expliqué dans la doc, et si t'as des soucis avec l'anglais la doc FR est en post-it dans la section GameMaker Aussi une grid n'est qu'une structure de données, elle ne va rien t'afficher par elle même. |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 19:30 | |
| Merci onilink, mais sans blague, je ne comprend pas comment faire l'index?!? Ca dit (Vous créerez une structure de données à l'aide d'une fonction qui retournera un identificateur sur la structure créée. Vous utiliserez cet id pour effectuer toutes opérations sur la structure de données)J'aimerais seulment avoir un véritable exemple complet genre un gm 6.1 avec de ds_grid fonctionelle a l'intérieur.
Merci beaucoup |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Sam 26 Fév 2011 - 19:37 | |
| Ben
index = ds_grid_create(640,480) ds_grid_set(index, x, y, valeur) [...] |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 13:01 | |
| c'est vrai que c'est super compliqué ces fonctions de tableaux, grilles je n'ai rien compris non plus car il faut utiliser des boucles pour les remplir et les lire!
un petit exemple si ou plait,merci!
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 13:23 | |
| ok, je vais manger et je vous fait un exemple de carte |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 14:05 | |
| |
|
| |
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 14:28 | |
| Le plus dur c'est pas de remplire une map random, c'est de faire un algo qui va faire des montagnes, des rivières, des roussources et sans que ca se superpose, là ca va être amusant _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 14:38 | |
| Bof pas vraiment , y plein de techniques pour ça, mais la déjà faut savoir utiliser les fonction de base |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 15:35 | |
| |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 16:36 | |
| Je ne comprend pas, j'ai fait une map de 8000 par 5000, avec des cases a 50 par 50 et le CPU monte aussi haut qu'avec mon système avec 16 000 objets?!?
Cette technique ne semble pas vraiment plus optimisé. Suis-je dans l'erreur? |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 16:44 | |
| ben 8000x5000,ça nous donne donc 500x312 tiles (pour des tiles de 16x16) et cases dans la grid, chaque case de la grid fait 8 octets, ce qui donne 1218ko rien que pour stocker la grid, ce qui n'est pas énorme. Par contre pour le cpu je vois pas, une grid c'est juste des variables stockées en mémoire, donc normalement ça bouffe pas de cpu. Faudrait que tu fasse voir ton gmk ou que tu nous donne ton bout de code qui s'occupe de tout ça |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 16:57 | |
| Ok, je me suis trompé, c'est beaucoup plus rapide.
Sans vouloir abuser de votre temps. Je n'ai aucune idée comment faire l'algo pour la map... Avec mon systeme a objet, j'avais simplement a utiliser des formes géométrique, j'avais réussi a crée un systeme assez correct pour généré la map. Mais avec une grille, je sais vraiment pas quoi faire.
C'est dans le ds_grid_set ? ds_grid_set(grid, i, j, choose(HERBE, EAU, SABLE, GLACE))
Il faut remplacer choose par l'algo? |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 17:16 | |
| Dejà, un simple random donne des maps vraiment bizarres... si j'étais toi j'essayerai d'adapter l'algo de bruit de perlin, pour avoir un résultat un minimum sympa. Pas pour la hauteur forcément, mais surtout pour placer la flotte. _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 18:02 | |
| J'arrive pas a trouver assez d'info pour les algo. Je vais donc continuer mon système avec mes 16 000 cases objets. J'ai tester avec un map a 43 200 objets et mon ordi étais aissément capable.
Quelque'un sais si c'est possible de faire un room oû l'axe x est infini? Je veut dire que une fois a la limite droite on vois la limite gauche (comme un cylindre) comme a civ original? |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Générateure de Map a la civilization Dim 27 Fév 2011 - 18:06 | |
| lol avec le système de ds_grid ce serait facile :p
Sinon, libre à toi de faire une deuxième vue accolée à la première et visible si l'on est au bout... _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
Bloboto Nouveau
Messages : 8
| Sujet: Re: Générateure de Map a la civilization Lun 28 Fév 2011 - 2:06 | |
| Merci beaucoup. Quelqu'un pourais m'aider a faire une ds_grid pour le broillard. Je ne comprend pas comment placer de l'invisibilité sur une case précice. Quelqu'un peut m'aider? |
|
| |
Contenu sponsorisé
| Sujet: Re: Générateure de Map a la civilization | |
| |
|
| |
| Générateure de Map a la civilization | |
|