[Devlog] - Cursed Gem

AikonCWD

#1140 El movimiento de los shurikens los hago dentro del update() / process().
No he comprobado si se desincroniza. En mi PC funciona bien siempre, incluso he dejado el juego 1 hora encendido mientras he ido a cenar y todo estaba perfecto.

Mi duda viene en si se podría joder en otro PC/hardware... hasta que no abra la beta para que la gente testee... lo doy por ok


Más progresos, otra habitación con un mini-puzzle sencillo de resolver (montar el puente de cajas) y un poco de skill/timing para hacer los saltos.

Sobre cada caja/pinchos pondré gemas. Ya que quien quiera ir en modo speedrunning, podrá tirarse desde el tercer agujero y hacer bypass a las guillotinas. Pero quien quiera coger el 100% de gemas y ver el true-ending, tendrá que hacer el camino completo :)

4 2 respuestas
totespare

#1141 busca si el update del motor es framedependiente o no. Si lo es, tendrás que usar el deltaTime para calcular el movimiento y que no se te desincronicen. No se si puedes limitar los FPS del juego en godot de alguna manera, pero es una buena idea probar a ponerlo a 5fps por ejemplo y ver si se te desincroniza

2 respuestas
AikonCWD

#1142 La función process() tiene como argumento el deltaTime, que si mi teoría no está equivocada, indica los milisegundos entre frame y frame, no? Multiplicando el desplazamiento del shuriken por ese deltaTime debería bastar para que no se desincronice nunca.

Lo digo bien?

1 respuesta
totespare

#1143 eeeso es, tal cual

1 respuesta
AikonCWD

#1144 Pues en teoría lo tengo bien... Luego ya me imagino el percal en day1 de la release, con varios usuarios reportando bugs rarísimos que no he llegado a reproducir jamás.

Y parcheando como un loco para evitar refunds xdddd, ayy dios la que me espera.

EDIT: Dejo tutorial por si alguien más necesita info sobre el deltaTime: https://kidscancode.org/godot_recipes/basics/understanding_delta/

1 respuesta
xlive

#1145 Si tienes que abrir la beta varias veces hazlo, así te ahorras todo después. Puedes abrirla por niveles o solo a una parte del juego.

1
B

#1141

Mi duda viene en si se podría joder en otro PC/hardware... hasta que no abra la beta para que la gente testee... lo doy por ok .

Alguna prueba con underclocking a lo mejor te sirve, limitando el estado máximo del procesador al 30% o así a ver si varía?

1
AikonCWD

#1142 y #1140 Gracias por este recordatorio. Estoy revisando todo el código/nodos y he visto que tenía muchos mal implementados al no utilizar el delta.
He hecho force_fps = 10 para simular lag y vaya tela XD. Animaciones y movimientos que deberían tardar X segundos ahora tardan 6 veces más.
Lo mismo ocurre si quito el vsync y dejo que el juego vaya a 1200fps... algunas animaciones van MUY rápido.

Estoy re-escribiendo todo lo que veo mal, aplicando el delta. Bonita tarde/noche de programación asquerosa me toca hoy xd

edit: 2 bugs que he encontrado es el movimiento de la camera. Bajo 10fps es muy lenta. Otro bubg estaba en la pantalla de "fase completada", el player no se movía aplicando el delta... en fin, menudo desastre soy

6 1 respuesta
r2d2rigo

#1148 me alegro que lo hayas podido pillar a estas alturas, estas mierdas son faciles de pasarlas por alto en un descuido y luego te joden vivo en corner cases muy poco comunes👌

Otro consejo: aparte de usar deltatime en todos lados, clampea el minimo/maximo (aunque creo que el engine deberia hacerterlo, al menos Unity es asi) para evitar que si va a 1fps o 1000fps te de tambien problemas.

1 respuesta
AikonCWD

#1149 De momento solo he encontrado esos 2 nodos que se me pasó aplicar el delta. El resto está bien.

Lo de meter clamp... es necesario? Si va a 1200fps, el deltatime será de un valor muy bajo, ejemplo 0.00001, y al multiplicar por ese factor, se reducirá mucho el desplazamiento. No debería ser necesario clampear, no?

1 respuesta
r2d2rigo

#1150 ten en cuenta que si el deltatime se almacena en float, este tiene una precision decimal bastante baja y puede dar lugar a inconsistencias. Y si va demasiado lento, salvo que tengas CCD pueden darse casos de atravesar paredes con las fisicas, etc.

1
AikonCWD

Vamos complicando un poco las cosas...

9 1 respuesta
AikonCWD

Nivel 6 prácticamente terminado!
Hoy me he puesto a arreglar algunos bugs visuales, por ejemplo las puertas.

Ahora cuando se abren o se cierran, no lo hacen de golpe, si no que la puerta se mueve hacia arriba/abajo y se puede apreciar la animación.
Es una chorrada visual, pero me he fijado que en aquellos mapas en los que hay varias puertas, al tocar un botón escuchabas el sonido de una puerta abriéndose, pero podía ocurrir que no te dieras cuenta de cual. Ahora al tener una animación es más fácil para el ojo humano saber exactamente qué puerta se ha abierto o cerrado en el mapa.

También he mejorado levemente el rendimiento del juego. Añadiendo un nodo que me avisa cuando un objeto está visible en pantalla. Así, los escupidores de fuego o los shurikens que no estén visibles (están en otra habitación más adelante), no se moverán ni escupirán bolas de fuego. Revisaré a ver si puedo poner esta característica en otros nodos, ahorrando tiempo de proceso innecesario.

6
ArticoDelSur

#1152 Si ya me costaba de normal el salto... dep :/

AikonCWD

@lGeaRl Me está ayudando testeando los últimos niveles, y me ha reportado un bug muy gracioso que rompe por completo el juego.
Tentado he estado de dejarlo, para permitir que los speedruners haga uso de este glitch, pero de momento lo he quitado.

El glitch permite jugar con una capa de colisión muy reducida (el player solo colisiona con el mapa), haciendo que seas invencible y puedas atravesar fuego, puertas, etc... muy loco todo.

Para reproducirlo solo hay que morir encima de un totem y pulsar hacia arriba para activarlo cuando todavía estamos muertos:

En ese momento se guarda el "gamestate" con la colisión reducida (el player solo colisiona con el mapa). Esto es correcto porque en ningún caso quiero que un jugador muera en mitad de un salto y su cadáver baje y active cualquier botón, gema, llave, etc...

Al rescatar el gamestate salvado, en ningún caso se comprobaba la capa de colisión, volviéndonos invulnerables, ejemplo:

Ahora el bug ya lo he solucionado, se podía hacer de 2 formas:

  • Comprobar y settear de nuevo la capa de colisión correcta/completa, tras cargar un "gamestate"
  • Evitar que un cadáver pueda accionar un totem

En fin, ahora entiendo por qué hay tantos bugs y glitches curiosos en juegos comerciales... es MUY complicado controlar todas las casuísticas que un jugador pueda provocar.

14 1 respuesta
kesada7

#1155 jajaja buenísimo el bug, me encanta cuando se cuelan estas cosas. La que lias por una "tontería" como olvidar que en estado muerto no deberías de poder activar un checkpoint xD

3
12 días después
AikonCWD

He empezado con el nivel 7, que será del tipo que la pantalla va corriendo sola:

Tengo que ajustar muchas cosas, velocidad, etc... pero al menos está funcionando.
Si por casualidad el jugador corre muy rápido y sin fallar, jamás podrá adelantarse a la pantalla, ya que hay un muro invisible que evitaría que continue.
Aunque quizás ajusto la velocidad de tal manera que vayas igual de rápido que el player, siendo imposible llegar al límite de la derecha...

Ya veré qué hago. Ahora que lo tengo funcionando, es turno de jugar a varios juegos que tengan niveles así, para inspirarme en el diseño.

6 2 respuestas
xlive

#1157 Cuantos niveles piensas ponerle? que duración tiene aprox cada nivel? y tienes pensado cuantas horas de juego tendrá? es decir, desde que lo pruebas hasta terminarlo.

En que juegos del mismo genero te estas basando?

1 respuesta
AikonCWD

#1158 10 niveles + 1 o 2 niveles extras/secretos. Posiblemente un finalboss
La duración es muy subjetiva, depende mucho del skill de cada uno, pero en un primer run... yo creo que 10 minutos por nivel no te los quita nadie. Luego se podrá speedrunear y bajar sobre los 3 o 4 minutos por nivel, supongo.

Horas totales? pues calculo que 120hr. El juego en el que más me he basado es Celeste. No le llego a la suela de los zapatos, pero cualquiera que haya jugado tendrá en algún momento cierto recuerdo a ese juego.

1
totespare
#1157AikonCWD:

Aunque quizás ajusto la velocidad de tal manera que vayas igual de rápido que el player, siendo imposible llegar al límite de la derecha...

si haces esto, en el momento en el que el player se pare un poco, ya no podrá recuperar esa distancia nunca xD. Me gusta el nuevo nivel por cierto, esa sensación de que te pilla la puta pared me ha molado hasta en el gif xDD

1 respuesta
AikonCWD

#1160 Cierto! seguramente haré que la pantalla corra un poco menos que el player, de todas formas ya he implementado lo de que no pueda adelantarlo gracias a la pared invisible.

1 1 respuesta
ESL_Kaiser

#1161 la siguiente que vaya subiendo lava

2
B

Aikon, una vez estructuradas todas las mecanicas no deberia llevarte poco tiempo implementar nuevos niveles? Solo el tiempo de creacion de los mismos??? (Si no le metes nuevas mecanicas hablo. Es que tenia una idea en mente pa este verano y soy novatillo pero queria hacer 6 niveles y viendo que tu tienes idea y llevas 7...se me ha desmontado todo)

Gracias

1 respuesta
AikonCWD

#1163 En teoría sí, pero yo tengo muchos handicaps

  • Primera vez que hago un videojuego
  • Primera vez que toco Python (estoy aprendiendo mientras hago el juego)
  • Primera vez que toco el motor Godot (estoy aprendiendo mientras hago el juego)
  • No le estoy dedicando todo el tiempo que me gustaría

Quitando esas cosillas, debería reducir bastante los tiempos, quizás para mi siguiente juego xd

1 1 respuesta
B

#1164 vale...bueno yo tengo todos esos handicaps tambien asique voy a ir reduciendo el proyecto a un solo nivel que funcione. Gracias.

1 respuesta
AikonCWD

#1165 También influye mucho en como has estructurado tu juego... yo he usado tilemaps no solo para el terreno, si no para pintar las decoraciones de plantas y ladrillos. Es un coñazo decorar cada nivel, quizás debí buscar algún generador de fondos dinámicos o yo que sé. Errores de principiante supongo xd

Sokar92

Oye @AikonCWD para subir el juego a Steam, has tenido que hacerte una empresa? O estás haciendo otra cosa? Me interesa un porrón saber que necesitas para subirlo :D

1 respuesta
AikonCWD

#1167 Hola. He seguido esta guia: https://www.mediavida.com/foro/gamedev/game-dev-money-steam-tu-empresa-552943

Básicamente sí. La ley te obliga a pagar impuestos de las ganancias que generas con una venta. Te aconsejo que busques un gestor financiero, a ser posible con alguna experiencia llevando clientes que han publicado cosas en Steam, etc... Otra opción es buscar un editor que quiera publicar vuestro título, ya que normalmente se hace a través de su empresa ya creada (Devolver, Nicalis, etc...)

1
B

Pues ya he probado todos los niveles, aunque ahora después de comer vuelvo a probar el último ya que le di prioridad a un camino y resulta que tendría que habérselo dado al otro y no quería volver hacia atrás el nivel completo jajaja.

Te paso el bug que he visto y ahora cuando vuelva a jugar voy sacando capturas a cosillas sin importancia que son más estéticas que otra cosa y de paso le intento sacar las cosquillas.


No sé exactamente por qué, pero en esta zona tras haber guardado y haber muerto al hacer respawn mi personaje saltaba automáticamente replicando la animación de salir del agua, además de como puedes ver, también se ven las gotas de cuando sales. Una vez he pasado de nivel no he vuelto a entrar a ver si podía replicarlo o si seguía activo, tengo que mirarlo.

Más adelante he probado a ver si pasaba en otro nivel y nada. Como te digo, en esa zona primera donde el bug no hay nada para morir de forma rara.

Además de lo del agua, también se escuchaba al respawnear el sonido de activar un botón, si mal no recuerdo esto lo arreglaste en niveles (del juego) previos. Se mantenía en todos las secciones desde que me pasó y muchas veces el sonido también aparecía justo al morir de manera adicional (antes y después del respawn)


Y así como idea adicional, se me ha ocurrido la opción de que puedas subir "nadando" por las cascadas, de esa forma te quitas las escaleras y creo que también le da juego, aunque no sé si quedaría bien.

Por cierto, en este último nivel he echado fácilmente media hora xD.

1 1 respuesta
AikonCWD

#1169 media hora? Imagino que no has encontrado el corazón ni tampoco has conseguido las 100 gemas, verdad?
Bueno, eso resuelve un poco la duda anterior de @xlive , yo había estimado unos 10 minutos por nivel, pero ya veo que es bastante superior.

Voy a revisar los bugs. Gracias por el feedback.

Sobre el diseño de este nivel, cómo lo ves? Tiene muchos puzzles y he intentado que no se repita ninguno.


Pequeña avanzadilla del nivel 7. Lo tengo muy verde, se puede apreciar que a nivel estético es horrible y faltan MUCHAS cosas. Simplemente os quería enseñar un poco la mecánica de este nivel, y la angustia en algunas zonas.
Quiero añadir gemas y pinchos para obligar al jugador a ir más lento en algunos lugares.

El nivel correspondrá de 4 tramos. Cada tramo, la pantalla se deslizará hacia una dirección. Aquí vemos el inicio que se mueve hacia la derecha. Al terminal la sección la camara se detendrá y podrás tocar un totem, en ese momento aparecerán pinchos por el techo y la cámara irá bajando, forzando un descenso frenético. Así ir repitiendo las 4 direcciones y completar el nivel.

A ver qué os parece :)

5 2 respuestas