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

Avatar de l’utilisateur
harusame
Tueur d'un Goomba
Messages : 15
Inscription : 07 Avr 2011, 20:25
Contact :

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

Messagepar harusame » 10 Juin 2011, 14:46

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 :)

Avatar de l’utilisateur
trotter
Maître du château
Messages : 948
Inscription : 06 Avr 2011, 00:18

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

Messagepar trotter » 10 Juin 2011, 16:01

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.

Avatar de l’utilisateur
harusame
Tueur d'un Goomba
Messages : 15
Inscription : 07 Avr 2011, 20:25
Contact :

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

Messagepar harusame » 10 Juin 2011, 16:49

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...

Avatar de l’utilisateur
Zim
Sauveur de princesses
Messages : 1864
Inscription : 18 Mars 2011, 23:47
Localisation : Rennes

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

Messagepar Zim » 10 Juin 2011, 17:42

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.

Avatar de l’utilisateur
harusame
Tueur d'un Goomba
Messages : 15
Inscription : 07 Avr 2011, 20:25
Contact :

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

Messagepar harusame » 10 Juin 2011, 17:53

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 :)

raph535
Newbie
Messages : 2
Inscription : 24 Juin 2012, 18:32

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

Messagepar raph535 » 24 Juin 2012, 18:34

Diablo et Torlight sont pas mal aussi à étudier dans le genre level design procédural.

Avatar de l’utilisateur
Lothindil
A sauté un trou
Messages : 44
Inscription : 13 Sep 2012, 10:28
Contact :

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

Messagepar Lothindil » 13 Sep 2012, 17:03

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...

Avatar de l’utilisateur
Gaetz
Insensible aux Bullet Bills
Messages : 681
Inscription : 03 Avr 2011, 20:33

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

Messagepar Gaetz » 17 Sep 2012, 07:38

Intéressant ça. Quel sens de l'observation d'ailleurs :)

Avatar de l’utilisateur
Lothindil
A sauté un trou
Messages : 44
Inscription : 13 Sep 2012, 10:28
Contact :

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

Messagepar Lothindil » 17 Sep 2012, 18:17

Des heures et des heures à jouer et à noter, tous les éléments pour savoir ce qui changeait ou pas... :fufu:


Revenir vers « Discussion »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron