/Gamedev/ Nueva taberna, ahora con un 200% de devlogs abandonados


puntocom

#15328 Sí que he leído a más personas tener problemas con el tema de la camera main, no sé exactamente porque ocurre pero he leído cosas similares a lo que comentas. Supongo que la solución más sencilla será eso acceder desde otra referencia.

1 respuesta
totespare

#15330 not yet

everedx

#15331 Supuestamente coge la primera camara que tiene el tag MainCamera. Pensaba si habian varias con el mismo tag, elegia aquella con mayor prioridad, pero por lo que parece esto no siempre es asi...Ni idea de por que.

He terminado quitando el tag a todas aquellas que no son la principal y parece que ya cuando compilo ya no se equivoca de camara.

1
totespare

No uséis Camera.main, primer aviso

1 2 respuestas
puntocom

#15334 Ese parece ser el consenso actual

everedx

#15334 A la que me vea animado me hago un Singleton, lo prometo por el niño jesus

1
neZbo

Os enseño algo de la jam de halloween:

La protagonista:

Otro monstruo aparte del fantasmito ese:

Y el main theme que tengo que desarrollar mucho aún:

4 2 respuestas
carra

#15337 Me gusta lo que veo y oigo. Pero por Dios ponle ojos a esa chica jajaja

1 1 respuesta
totespare

#15337 esa musiquilla mola, el triangulo le da un puntaco muy creepy oldschool, mola!

1 1 respuesta
neZbo

#15338 Tener ojos está sobrevalorado!

#15339 El triángulo lo "visualicé" fuera del pc tarareando la melodía jaja

1
AikonCWD

Estoy intentado programar un algoritmo de generación de laberintos. Pero de momento estoy bloqueado con la recursividad. En teoría una vez que el cuadro rojo se queda atrapado, debería volver por el tunel ya creado y buscar paths alternativos.

Veré si después de cenar me despejo la cabeza y consigo sacarlo

3 3 respuestas
carra
#15341AikonCWD:

Veré si después de cenar me despejo la cabeza y consigo sacarlo

Pégate un buen lingotazo, y te sale seguro!

Geck0

#15341 hace tiempo creé algo d esto con JS por aburrimiento, en realidad en vez de crear un laberinto resolvía uno existente

Básicamente, por si te sirve, suponiendo que el tablero es un array de 0s y 1s, por ejemplo, (vacío y camino), sería añadir un valor más para el camino sin salida (2). Tu algoritmo ahora mismo supongo q será tipo: buscar celdas vacías alrededor y la siguiente posición es un aleatorio de las celdas encontradas.

Pseudocodigo cutre
rvaquero

#15341 Es lo mejor que puedes hacer. Yo he terminado de programar y me he ido a la cama y a los 5-10 min de acostarme me ha venido la solución a la cabeza xDDD

AikonCWD

Pues estoy atascadísimo y eso que me estoy basando en un artículo donde te viene el ejemplo en Ruby. El problema es que el código está condensado a más no poder y me cuesta entenderlo/traducirlo a python. De todas formas no quiero copiar el código y traducirlo, me gustaría sacar el código a partir de la explicación del algoritmo, para practicar un poco y sacarme el óxido. Pero en fin. Que no sale xd

https://www.jamisbuck.org/mazes/

Estoy intentando hacer el primero, recursive backtracking.
ggwp cuando quiera hacer los otros que son todavía más complejos xd

1 respuesta
n3krO

#15345 Uhmmm, estas trackeando los bordes de los cuadros para poder tener trozos de laberinto contiguos?

No parece complicado viendo la animacion. La parte de avanzar aleatoriamente ya la tienes, la parte de retroceder, es seguir el path por el que viniste hasta llegar a una celda en la que una de las 4 celdas contiguas no esta ocupada aun, y ahi vuelves a avanzar de forma aleatoria.

Para no retroceder a un camino que ya hiciste marcas que celdas ya hiciste backtrack.

1 respuesta
AikonCWD

#15346 Estoy siguiendo tal cual se explica en el artículo, pero evidentemente no estoy sabiendo traducir a código algunas partes.
De momento no es que me salga mal, es sencillamente que no sé continuar. Lo que tengo hecho es correcto y funciona, ahora solo me salta saber volver por el camino y buscar paths alternativos.

1 respuesta
n3krO

#15347 Sabes volver por el camino pero no sabes cuando parar seguir por un path alternativo?

1 respuesta
AikonCWD

#15348 No sé volver por el camino.

Además aquí tengo un handicap que en principio pensé que sería una tontería, pero me está jodiendo más de lo que pensaba. Mi laberinto son todo bloques y en el ejemplo las paredes son líneas. Así que en el ejemplo, cuando avanza una casilla, en realidad está avanzando 2 casillas, ya que las líneas en mi caso son bloques.

Este handicap me obliga a volver por el camino de 2 en 2 bloques. Y es lo que me confunde.

Y eso me está destrozando el cerebro.

1 respuesta
n3krO

#15349 Yo asi a simples vista, los bloques contiguos cuando avanzas los convertiria en pared, asi cuando avanzas puedes mirar solo los bloques contiguos. A ver si me explito, tu empiezas en una posicion y en el caso de tu gif lo primero que haces es moverte a la derecha, pues en ese momento, en el cuadro en el que estabas, todos los demas caminos los marcaba como pared:

En azul la pared despues de pasar al cuadro blanco de la derecha. Para avanzar asi solo tienes que buscar en los 4 cuadros contiguos si hay alguno que no sea pared o camino.

Para volver para atras tienes que ir volviendo a los cuadros camino hasta que te encuentras con un cuadro camino que tiene un cuadro contiguo libre (que no sea pared o camino)

Yo lo haria asi en tu caso.

pd: solo pinté las paredes del primer salto porque paso de pintarte el mapita entero xD

pd2: no funciona asi de simples XD

AikonCWD

Bueno, ya lo tengo, aunque el código que he terminado escribiendo es una puta basura y creo que se debería poder reducir mucho:

Las celdas negras son paredes
Las celdas rojas son celdas visitadas
Las celdas blancas son agujeros (o espacios abiertos).

El algoritmo va visitando celdas (en rojo) y en el momento que no puede visitar más, empieza a ir hacia atrás dejando los huecos en blanco, hasta que regresa a una celda visitada (roja) con paths alternativos.

Voy a limpiar un poco el código y ha meter un autotile porque eso de ver las paredes como bloques (en lugar de líneas) me está volviendo loco.

3
AikonCWD

El objetivo de querer hacer esta mierda es porque quiero hacer un algoritmo de generación de mazmorras molonas. Tal que así:

  • Primero se añaden habitaciones random, sin overlap
  • Se rellenan los huecos con un laberinto (de ahí mi interés en aprender a generarlos)
  • Conectar cada habitación con el laberinto
  • Cavar y hacer los huecos
  • Simplificar laberinto

A ver si soy capaz de terminarlo y abro hilo para compartir el source.

3 3 respuestas
thenanox

#15352 backtracking a saco?

1
puntocom

#15352 Hay varias librerías para roguelikes que hacen generación de mazmorras de ese estilo, lo digo porque supongo que revisar el código que usen te ayudará, no sé si has mirado algo de eso.

1 respuesta
carra

#15352 Me puedo quedar embobado rato mirando la animación jaja

1 respuesta
AikonCWD

#15354 Sí, hoy en día hay algoritmos para casi cualquier cosa, o directamente sources que puedes copiar.
Pero quería hacerlo con mis manitas. Para practicar, para coger soltura escribiendo algoritmos y funciones recursivas, etc... Básicamente para pasar el rato y entretenerme como hobby

#15355 Sí? Pues mira esta xd

Mismo algoritmo, pero con tamaño de una super mazmorra.

1 1 respuesta
n3krO

#15356 me parece brujeria el como limpia el laberinto al final y se queda con algo decente :psyduck:

1 respuesta
Geck0

al final me picó el gusanillo y lo hice en js para recordar viejos tiempos, esta vez creandolo en vez de resolviéndolo

(código de mierda, q lo hice en un rato mientras curraba xd)

https://jsfiddle.net/oz6c8jvy/

1 respuesta
AikonCWD

#15357 Pues es la parte más fácil del algoritmo.

Buscas casillas que sean espacios abiertos y estén rodeadas de 7 paredes (esto es un pasillo sin salida) y lo pintas de pared. Repites en bucle X numero de veces. A mayor número, más limpio queda el laberinto.

#15358 Te ha quedado genial!! Aunque al final no retrocedes y te queda un pasillo por limpiar. Pero creo que lo has sacado más rápido que yo xd

1 respuesta
Geck0

#15359 Sí, puse que si no quedaban celdas vacías que terminara pq ya estaría listo, pero ahora q lo dices da la impresión de que está por acabar, lo edité para que siga hasta el final xD

1
Tema cerrado