[Botta&Risposta]Generatore di labirinti

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

[Botta&Risposta]Generatore di labirinti

Messaggio da Homunculus »

Vi posto due generatori di labirinti creati in questi giorni. L'idea é generare in modo efficiente un labirinto, nel primo caso a muro piatto, mentre nel secondo caso con muri spessi. Gli esempi creano labirinti dove ogni zona é raggiungibile tramite una sola e unica strada, dove non ci sono zone non raggiungibili. Per questo motivo non ho messo una partenza o un'arrivo, perché possono essere messi ovunque (nel secondo labirinto, in qualsiasi cella con entrambi i numeri dispari, 1,1 ; 1,3 ... 3,7 ecc...).

Download 1
Esempio:
Spoiler
Immagine
Download 2
Esempio:
Spoiler
Immagine
Ultima modifica di Homunculus il 08/03/2010, 14:26, modificato 3 volte in totale.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: Generatore di labirinti

Messaggio da BaronVsCorsar »

da buon appassionato di roguelike pure io ho creato algoritmi per generazione di labirinti (che poi converto in ambienti 3D... in un progetto che finirò tra 15 anni credo...)

ovviamente il tutto parametrizzabile, ecco un esempio corridoi e stanze di piccola grandezza.
+ porta
#muro
. zona libera
! area non raggiungibile
@ punto di ingresso
> uscita
/ porta segreta
Spoiler

Codice: Seleziona tutto

!!!################!
!!!#.+..@.+...#...#!
!!!#.#...#...+...#!
!!!#.+...#...#...#!
!!!#.#...#...#...#!
!!!#.############+#!
!!!#.#!!!!!#...#.#!
!!!#.#!!!!!#...#.#!
!!!#/#####!#...+.#!
!!!#....########.#!
!!!#..../...#!#.#!
!!!#....#...#!#.#!
!!!#....#...#!###!
!!!#...>.#...#!!!!!
!!!#######...#!!!!!
!!!!!!!!!#...#!!!!!
!!!!!!!!!######!!!!!
!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
l'algoritmo che seguo è ricorsivo: da una stanza creata a caso cero di ottenere un corridoio per ogni lato, se lo spazio per costruirlo c'è ripeto l'operazione cercando di costruire una stanza per ogni lato e così via...
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Generatore di labirinti

Messaggio da Homunculus »

Baron piu che in labirinto in senso stretto il tuo é un dungeon, comunque sembra un buon lavoro. Mi sono reso conto che é piu complesso di quel che pensavo, il sistema utilizzato sopra non é particolarmente difficile, garantisce un'unica via tra un punto e un'altro del labirinto, e tutte le aree sono accessibili in qualche modo (quindi l'entrata e l'uscita possono essere fissate a caso anche a posteriori).

Tuttavia se voglio un labirinto con muri spessi devo tener conto del fatto che l'uscita deve essere accessibile, e che non ogni area sarà raggiungibile. Ci devo ancora studiare dietro un po' insomma...

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da Homunculus »

Ho aggiornato il primo post, devo ringraziare Nightwish per l'aiuto che mi ha fornito nel risolvere alcuni problemi di logica e nel rispolverare concetti quali nodi, alberi, grafi ecc... :mrgreen:

@night: alla fine il labirinto lo genero con un depth-first search.

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da CaMpIoN »

Complimenti homunculus :) sono molto utili.
Giochi da me creati:
Spoiler
Immagine

Avatar utente
nightwish88
GMI Advanced
Messaggi: 1739
Iscritto il: 18/01/2009, 13:41
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da nightwish88 »

bhè si, credo sia equivalente. L'algoritmo di prim ( quello che ti ho proposto io ) non è nient'altro che una ricerca in ampiezza del grafo. Ricerche in ampiezza e in profondità si equivalgono quindi algoritmi simili sono del tutto validi. finita la competizione scriverò qualcosa a riguardo... sono concetti assai utili soprattutto per sviluppare e programmare qualcosa aldilà del solito platform a scorrimento orizzontale
Immagine

Web Site: AFGames

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da maz85 »

Interessante, dovrò studiarmeli... :fapensare:

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da guidox »

Davvero bello homu! :D
Ora cerco di capire come hai fatto (gentile da parte tua dare il gmk). ;)
Immagine

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da Jak »

A parere mio non è conveniente fare solo vicoli ciechi ed una strada possibile. Un labirinto è molto più difficile e complesso se le vie sono intrecciate tra di loro. Anche io avevo fatto una cosa simile tempo fa per un labirinto in 3d ma con una logica più complessa(sia random che a blocchi)e con molta più roba. Ad ogni modo il tuo programma funziona bene! Complimenti!
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da Homunculus »

Jak ha scritto:A parere mio non è conveniente fare solo vicoli ciechi ed una strada possibile. Un labirinto è molto più difficile e complesso se le vie sono intrecciate tra di loro. Anche io avevo fatto una cosa simile tempo fa per un labirinto in 3d ma con una logica più complessa(sia random che a blocchi)e con molta più roba. Ad ogni modo il tuo programma funziona bene! Complimenti!
Si é vero ci sono diverse tipoligie di labirinto, ma alla fine questa é la base. Se vuoi strade che si incrociano puoi sempre elaborare un sistema che a posteriori elimina qualche muro, ma prima devi generare un labirinto come questo per poterlo fare.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da Jak »

Vero! ho provato in qualche modo ma il tuo è il sistema migliore. Comunque sei stato bravissimo ad eliminare i "quadrati" di 4 muri ed a farlo tutto collegato. Non è un semplice random cè una logica ben fatta. Complimenti!
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: [Botta&Risposta]Generatore di labirinti

Messaggio da Homunculus »

Jak ha scritto:Vero! ho provato in qualche modo ma il tuo è il sistema migliore. Comunque sei stato bravissimo ad eliminare i "quadrati" di 4 muri ed a farlo tutto collegato. Non è un semplice random cè una logica ben fatta. Complimenti!
Non é un sistema che ho inventato io, é uno standard per creare labirinti basato su alberi e nodi (http://en.wikipedia.org/wiki/Maze_generation_algorithm), almeno alla base. Poi ovviamente l'implementazione é farina del mio sacco.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti