Page 1 sur 1

[reflexion]faire un bon level-design sur de l'aleatoire

Publié : 10 Juin 2011, 14:46
par harusame
Je sais pas trop où et sous quelle forme poster ça, faudra peut être le déplacer ^^

Je suis en train de voir sur mon temps libre comment programmer un ptit moteur de jeu dont les maps sont générées aléatoirement. (un peu du genre terraria).
J'aimerai bien connaitre des astuces pour faire un level design correcte avec de bonnes idées et faire un monde agréable pour le joueur, mais tout étant généré automatiquement.

Ça pose de nombreuse difficultés. Peut-on faire un bon level design sur des maps générées aléatoirement ? Est-ce que des gens ont essayés, des astuces ?

Il faut aussi penser à ne jamais bloquer le joueur ce qui peut limiter pour les montagnes, falaises... On ne peut pas se permettre une structure très complexe

Je pensais a faire quelques bout de maps sur des coin, faite avec un éditeur et les inclure aléatoirement sur la map (donjon et autre). Pareil pour les plateformes ou des ptits bouts, (coin de village, ptite cachette...).
Ce processus de zones prédéfinies dans de l'aléatoire pourrait marcher non ?

Est-ce que vous pensez aussi a des astuces pour le placement des ennemis, récompenses, taux d'apparition...

Je pense qu'il peut y avoir pas mal de choses a explorer dans ce domaine, j’attends vos idées :)

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 10 Juin 2011, 16:01
par trotter
J'ai testé la chose (et je dois encore avoir le programme qui traine dans un coin). Je sais pas si ma petite expérience te sera utile m'enfin bon.
Le joueur se déplaçait sur des écrans fixes, et changeait de map en changeant d'écran. De mémoire yavait 4 ou 5 types de map : village, forêt, rocailleux, vide... Ca ressemble un peu à ton principe de zones prédéfinies.

J'ai eu plusieurs soucis qui se sont posés :
Le premier c'était "comment sauvegarder ce que le joueur vient de voir ?". Comment se souvenir que telle map était une forêt ?

Je me suis servi des cordonnées comme graine aléatoire. La première map était la map 1,1. Si on allait au sud, la map du sud était la 1,2. Si à partir de cette map on allait encore au sud : 1,3. Et qu'on allait à l'est : 2,3.

Et génie comme je suis, j'ai construit mes graines comme ça : X*Y

Donc la map 6,3 était générée à partir de la graine 18. Cette graine 18 me donnait un nombre aléatoire entre 1 et 5, toujours le même, par exemple 2. Chaque fois que le joueur allait en 6,3, il était donc certain de voir une forêt. Ca marchait. Mais j'observais une symétrie bizarre entre les cartes. Comme un crétin j'ai pas pensé que la map 3,6 ferait aussi 18...

Donc au final je me suis quand même servi des coordonnées comme graines pour les maps, mais de la façon suivante : X était la graine, et on générait Y nombres aléatoires à partir de cette graine. Après dans les villages on pouvait demander aux habitants "quelle est la ville la plus proche ?", ils faisaient le calcul vite fait et te disaient "elle est au nord".

J'ai piqué l'idée à un roguelike dont j'ai perdu le nom. Tu devrais peut être t'inspirer des rogueslikes d'ailleurs. Certains génèrent des labyrinthes, d'autres juste des villes, d'autres des mondes entier (dwarf fortress). ivan.sourceforge.net/ est le plus facile d'accès si tu veux tester.
Le level design lui-même, ça dépend de ton gameplay évidemment.

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 10 Juin 2011, 16:49
par harusame
En fait, j'ai pas vraiment de problème au niveau codage ^^ Je gerbe tout en une seule map géante pour l'instant que je génère au début, après je récupère des blocs un peu plus grand que l'affichage et je fais un scrolling dessus, dès une certaine distance je change re-récupère un nouveau bloc... ça ressemble un peu a minecraft sur le principe des blocs de 256*256 et 16*16 qui sont chargés au fur et a mesure de l'avancement ;)
Les autre maps, les intérieurs seront aussi faite sur ce principe (donjon, maison...).

Ce que je me demande c'est surtout comment faire pour rendre ces maps agréable a jouer ^^ Je pars sur l'idée d'une vue de type plateforme, on peut pas faire comme dans un mario par exemple, faire une avancée logique/progressive, ce serait plus du genre minecraft, on est largué dans un monde généré ou c'est différent a chaque fois, partant de ça comment donner envie au joueur de progresser, ne pas le bloquer direct, faire une évolution... On peut pas équilibrer facilement exploration - village - donjon.

Pour mieux se rendre compte un screen de ce que j'ai pour l'instant ^^ (c'est juste des tests y a rien d'avancé ^^)
Image

En gros qu'est ce qui fait que le level design d'un jeu type castelvania, metroid & tout autre jeu utilisant cette vue est bon et comment le modéliser de façon générique ^^ Sachant que là ce serait plutôt pour des environnements naturels même si j'aimerai pouvoir aussi faire des donjons avec pieges/enigmes, labyrinthe...

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 10 Juin 2011, 17:42
par Zim
J'allais te donner le lien d'un jeu que je connaissais depuis des années, que je savais fait par un Suédois, et je découvre à l'instant que c'était Notch qui l'avait développé (le gars de Minecraft, donc :!!:) :

Infinte Mario Bros, qui est un jeu de plateforme vu de côté, généré aléatoirement. Une des spécificités du jeu est qu'il est supposé s'adapter au niveau du joueur, pour proposer toujours un challenge optimal (qu'est-ce qu'un challenge optimal ? C'est compliqué à modéliser, mais la démarche est intéressante). En plus le code source est donné :

http://www.mojang.com/notch/mario/

A l'époque j'avais de la doc technique et théorique, mais je l'ai paumée en changeant d'ordi, et je ne le retrouve pas sur le net. :/

EDIT : euh j'ai trouvé ça mais bon... http://www-personal.umich.edu/~shiwali/ ... cument.pdf

En tout cas il faut garder à l'esprit l'idée d'une courbe d'apprentissage et d'une courbe d'intérêt : les jeux sont structurés de sorte de proposer des challenges de plus en plus ardus, à la hauteur des compétences que le joueur acquiert à mesure qu'il se confronte aux environnements.

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 10 Juin 2011, 17:53
par harusame
Merci je regarde ça, sacré Notch xD
Oui c'est un domaine intéressant, j'ai envie de voir un peu ce qu'on peut faire, les mondes aléatoires ont pas mal d'avantage en terme de gameplay mais c'est dur de les rendre cohérent et de leur donner un level design sympa ^^

Edit : ha cool y a le code source en plus :)

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 24 Juin 2012, 18:34
par raph535
Diablo et Torlight sont pas mal aussi à étudier dans le genre level design procédural.

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 13 Sep 2012, 17:03
par Lothindil
Je pense qu'il y a moyen... A condition que ton aléatoire ne soit pas totalement aléatoire. Je prends 2 exemples de jeux basés sur des labyrinthes aléatoires auxquels j'ai joué pas mal :

- Diablo 2
- Dark Chronicles.

A force d'y jouer et de répéter plusieurs fois les mêmes endroits, j'ai pu m'amuser à repérer des points communs entre les différentes versions d'un même donjon.

Dans Diablo 2 :

Données constantes entre 2 versions d'un même donjon :
- La salle du boss est TOUJOURS la même, à la case près.
- On entre toujours dans la salle du boss par une porte située du même coté.
- Le nombre de portes fermées à l'intérieur d'un étage est constant ou presque (+/- 2 portes en gros)
- Le nombre de coffres est constant.
- Le nombre de monstres aussi et leur répartition globales (X groupes de Y monstres, A monstres de tels types; B monstres de type 2,...)
- la distance minimale entre l'entrée, le portail et la sortie sont globalement constant (+/-10%)

En revanche, est totalement aléatoire (enfin pas totalement en fait):
- la taille des salles
- les décorations
- le fait que les coffres soient verrouillés ou pas

Ce qui fait que pour finir un donjon, tu as en réalité toujours le même niveau de difficulté, même si le cadre change; vu que la distance à parcourir et le nombre de monstres ne sont pas aléatoires.


Dans Dark chronicles, le système est similaire :

Commun :
- Nombres de monstres global et par type
- Nombre de caisses (qu'on peut balancer à la tête des ennemis)
- Nombres de coffres
- S'il y a une zone à ouvrir (nécessitant une clé), le monstre portant la clé de fin de niveau est toujours derrière
- Nombre de "cases" d'eau

Aléatoire :
- répartition des cases et des monstres
- Monstre possédant la clé pour sortie (aléatoire limité s'il y a une zone à ouvrir) -cela fait qu'on se retrouve parfois avec la clé pour finir la zone dès le premier monstre...

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 17 Sep 2012, 07:38
par Gaetz
Intéressant ça. Quel sens de l'observation d'ailleurs :)

Re: [reflexion]faire un bon level-design sur de l'aleatoire

Publié : 17 Sep 2012, 18:17
par Lothindil
Des heures et des heures à jouer et à noter, tous les éléments pour savoir ce qui changeait ou pas... :fufu: