/gamedev/ Taberna de borrachos, ahora con menos usuarios aun


EVENTO ACTIVO:

https://www.mediavida.com/foro/gamedev/mv-retos-gamedev-gancho-711429

Grupo de Mediavida

https://www.mediavida.com/g/gamedev

Futuro de Gamedev

https://www.mediavida.com/foro/gamedev/mv-gamedev-donde-estamos-donde-vamos-711799
Runig666

#10289 La oveja esta a más o menos 2 memes de la que manda y yo de transformarse en el icono del juego.

EDIT: La oveja estaba a más o menos 2 memes.

AikonCWD

#10287 tu código da error
#10290 tu código da error

y creo que también habéis usando algun LLM porque da errores parecidos. Voy a sacar mi baraja del tarot de la luna y ha ponerme en serio y crear mi propia función que devuelva las fases de da luna. Me gustaría algo como lo hay en: https://alt.org/nethack/

The Moon is Waning Gibbous (57% of Full). New moon in NetHack in 8 days.

1 respuesta
d--b

Chatgpt dice https://onlinephp.io?s=bZLPTttAEMbvSLzDdyiJtzkEhz8pgoCqgnpE6rVC0WKP40XrXbPerRQVHoYH4FBx4-oXY_wnVhS6p7F35vfNtzMXV2Ve7u9lwSReWYMylxUtbbb0OS0La00k8Hd_D3ymU9zeezLkkFGSS6yRWychEx-k7nK-pNKTVwVhgRX55isS593dQLmuXyVS0pD1P7upU2suGcp_j9epXI_vzpv8LkYqwTWmfi_IWa5H2nDIoCchOoTE0emJ2NH7aXXKaSYU9-R6vRX_M6wYbUuSdOM7HCA-E5gg3u37R_2ik6Bt2zuV7LuHtXEDi2N83bAZ8E0w7OiQOQPj-0OoPFW7CJUhijacBWYnGI02oEvEscDTE7buj4epbDUwWQw9P29LVrQKTjo8BoLml1d_VKXqN4OKmvfz1AzRdF1BllolnDzqvTmqgm7NKeNFxKed1aQXFWz4tPEaN17j-Vxgitns08x_kbfOtGPjFjJesj7Uwcguy5EPzgyKI8wZ0hrh-psHKsr26REqXhpeQPu_ZeWSq8sP&v=8.2.20

d--b

Ah, que era GDScript xdddd

1
Runig666

#10292 Igual no tengo ni puta idea de Godot...pero cual es el problema exactamente que tienes?

Quiero decir, los pocos codigos que he visto son una formula matematica

1 respuesta
AikonCWD

#10295 Que por alguna extraña razón me ha entrado un TOC brutal y no consigo encontrar una función que sea precisa.

Lo más cercano que tengo es que en 7 días será luna nueva, pero técnicamente será dentro de 8. Estoy peleándome con ChatGPT para que me proponga diferentes métodos para calcular fases lunares (sí, hay diferentes, más o menos precisos). Y aquí estoy leyendo diferentes algoritmos xD

1 respuesta
Runig666

#10296 Entonces tu problema no es el pasarlo, tu problema es encontrar la formula.

Borra todo el chat que tengas con chatGPT y preguntale SOLO por la formula, que se olvide de programarla.

Vais a aprender la tecnica del extintor.

A las IAs no se les enseña, ni se les pregunta, de poco en poco...al menos no a las IAs tan sumamente grandes como ChatGPT, porque ya van viciadas de por si, y no les va hacer entrar mucho en razón.

Se les muestra un papel, se les pide la respuesta, si no te gusta la respuesta como mucho intentas 1-2 veces...y si no extintor a la cabeza y vuelves a empezar

PD: Todo queda increíblemente más serio con este avatar

2 respuestas
AikonCWD

#10297 sí, cierto, ya he pasado el primer bacho en conseguir traducir el código. Ahora estoy mirando de implementar el algoritmo de Jean Meeus, que según wikipedia es un friki astrónomo que inventó su propio algoritmo preciso para calcular fases lunares teniendo en cuenta un montón de factores, no solo el cíclo metónico.

Estoy cayendo ahora mismo por una madriguera de conejo muy chula y descubriendo cosas que no sirven para nada pero me entretienen. Me lo estoy pasando bien al menos xd

3
AikonCWD

Vale terminado:

const LUNAR_CYCLE_DAYS = 29.53058867  # Ciclo lunar promedio en días
const KNOWN_FULL_MOON = 1729123200  # Epoch para una luna llena conocida (17 de octubre de 2024)
const KNOWN_NEW_MOON = 1727846400   # Epoch para una luna nueva conocida (2 de octubre de 2024)
const EVENT_DURATION = 3  # Duración del evento en días

func days_until_next_event():
	var today_epoch = OS.get_unix_time()

	# Cálculo de días desde una luna llena y luna nueva conocidas
	var days_since_known_full_moon = float(today_epoch - KNOWN_FULL_MOON) / 86400
	var days_since_known_new_moon = float(today_epoch - KNOWN_NEW_MOON) / 86400

	# Días para el próximo evento de luna llena
	var days_to_next_full_moon = ceil(LUNAR_CYCLE_DAYS - fmod(days_since_known_full_moon, LUNAR_CYCLE_DAYS))
	if days_to_next_full_moon == LUNAR_CYCLE_DAYS:
		days_to_next_full_moon = 0  # Hoy es luna llena

	# Días para el próximo evento de luna nueva (aproximadamente en la mitad del ciclo)
	var days_to_next_new_moon = ceil((LUNAR_CYCLE_DAYS / 2) - fmod(days_since_known_new_moon, (LUNAR_CYCLE_DAYS / 2)))
	if days_to_next_new_moon == LUNAR_CYCLE_DAYS / 2:
		days_to_next_new_moon = 0  # Hoy es luna nueva

	# Comprobar si estamos dentro del periodo de 3 días para la luna llena
	if days_to_next_full_moon == 0 or fmod(days_since_known_full_moon, LUNAR_CYCLE_DAYS) < EVENT_DURATION:
		return ["full_moon", 0]

	# Comprobar si estamos dentro del periodo de 3 días para la luna nueva
	if days_to_next_new_moon == 0 or fmod(days_since_known_new_moon, (LUNAR_CYCLE_DAYS / 2)) < EVENT_DURATION:
		return ["new_moon", 0]

	# Comparar los días restantes para los dos eventos y devolver el más próximo
	if days_to_next_full_moon <= days_to_next_new_moon:
		return ["full_moon", int(days_to_next_full_moon)]
	else:
		return ["new_moon", int(days_to_next_new_moon)]

func _ready():
	var next_event = days_until_next_event()
	print("El próximo evento lunar es: %s, en %d días" % [next_event[0], next_event[1]])

Devuelve cuantos días faltan para luna nueva o luna llena (lo que sea que vaya a ocurrir primero). Y devuelve ese evento durante 3 noches seguidas, porque así doy tiempo al jugador a que pueda experimentar el juego bajo diferentes fases lunares.

Todo esto viene porque quiero hacer que el roguelike que estoy haciendo se vea afectado ligeramente si el jugador juega cuando es luna llena o nueva (por ejemplo los hombres lobos tendrán más daño en luna llena pero ganarás más experiencia). Quiero además añadir otros factores externos como por ejemplo recibir más daño si juegas los Lunes, tener menos luck% si es Viernes 13. Monstruos spawnean sleeping si juegas entre las 5am y 8am, etc... chorradas así. Y esas mecánicas esconderlas y explicarlas de forma random o criptico por el juego, en algún libro o pergamino, etc...

1 1 respuesta
Ridote
#10288Runig666:

Acepto ideas

Dropea el proyecto, mejor idea no te van a dar

1 respuesta
Runig666

#10299
Porque no haces return directaamente en vez de cambiar los dias? Pregunto

func days_until_next_event():
	var today_epoch = OS.get_unix_time()

# Cálculo de días desde una luna llena y luna nueva conocidas
var days_since_known_full_moon = float(today_epoch - KNOWN_FULL_MOON) / 86400
var days_since_known_new_moon = float(today_epoch - KNOWN_NEW_MOON) / 86400

# Días para el próximo evento de luna llena
var days_to_next_full_moon = ceil(LUNAR_CYCLE_DAYS - fmod(days_since_known_full_moon, LUNAR_CYCLE_DAYS))
if days_to_next_full_moon == LUNAR_CYCLE_DAYS:
	return ["full_moon", 0]  # Hoy es luna llena

# Días para el próximo evento de luna nueva (aproximadamente en la mitad del ciclo)
var days_to_next_new_moon = ceil((LUNAR_CYCLE_DAYS / 2) - fmod(days_since_known_new_moon, (LUNAR_CYCLE_DAYS / 2)))
if days_to_next_new_moon == LUNAR_CYCLE_DAYS / 2:
	return ["new_moon", 0]  # Hoy es luna nueva

# Comprobar si estamos dentro del periodo de 3 días para la luna llena
if fmod(days_since_known_full_moon, LUNAR_CYCLE_DAYS) < EVENT_DURATION:
	return ["full_moon", 0]

# Comprobar si estamos dentro del periodo de 3 días para la luna nueva
if fmod(days_since_known_new_moon, (LUNAR_CYCLE_DAYS / 2)) < EVENT_DURATION:
	return ["new_moon", 0]

# Comparar los días restantes para los dos eventos y devolver el más próximo
if days_to_next_full_moon <= days_to_next_new_moon:
	return ["full_moon", int(days_to_next_full_moon)]
else:
	return ["new_moon", int(days_to_next_new_moon)]

El resultado es el mismo...creo, para que comprobar si da 0?

#10300 No voy a dropear mi auto regalo de boda.

2
totespare
#10297Runig666:

extintor a la cabeza y vuelves a empezar

me ha hecho gracia imaginarme un extintor volando hacia una cabeza xD

1 respuesta
Runig666

#10302 Da para historia de juego flash.

Freak1337

Yo hoy añadiendo un nuevo monstruo con la mecánica de cadena magnética (inspirado en the butcher de diablo iv y blitzcrank xD)

1 4 respuestas
Jastro

#10304 donde esta tu devlog madrefoca?

te esta quedando muy guapo :D

PD: que pocas ganas de currar, pero tengo que quitarlo to pa frikar mañana tranquilo xD

1 2 respuestas
Yerboth

#10304 querrás decir inspirado en Pudge de Dota que es el que copiaron todos los demás xD

Pero quitando eso está guapa la mecánica

1 respuesta
Ridote

#10304 opino como jastro, ¿y el devlog?

#10305 qué bastardo eres sabes que abrir un devlog significa abandonar el proyecto a los tres días porque es la maldición

1 1 respuesta
Freak1337

#10305 Pero porque me da tanta pereza crearlo??? pero tienes razón, es el deber, si no lo hago como lo voy a abandonar nada mas crearlo?

#10306 Aaanda, no conocía nada de Pudge, ahora lo he visto en la web oficial y si, es totalmente un blitzcrank xD pero este ya estaba en el mod de Warcraft o es del dota 2?

1 1 respuesta
Jastro

#10307 de momento la maldicion se ha ido rompiendo eh? hay mucho devlog con desarrollo activo jajajajaj

2 1 respuesta
Runig666

#10309 Yo solo digo, que desde que hice la oveja, todo esta más animado

1 1 respuesta
Ridote

#10308 estaba en el mod del warcraft

Jastro

#10310 no me extraña jajajajajaja

totespare

#10304 dev log, dev log, DEV LOG, DEV-LOG!!

1
Yerboth

Dame una D!

r2d2rigo

Rider gratis para uso no comercial, ya tardais. De lo mejorcito por detras de VS.

https://blog.jetbrains.com/blog/2024/10/24/webstorm-and-rider-are-now-free-for-non-commercial-use/

1 respuesta
totespare
#10315r2d2rigo:

De lo mejorcito por detras de VS

dime eso en la calle si te atreves!

Gran noticia, tardáis en usar Rider, es la pollaca

Runig666

Sabeis que es mejor que Rider? Efectivamente VS y su licencia de "Haz lo que te salga del rabo"

2 1 respuesta
r2d2rigo

#10317 claro pero VS no tira fuera de Windows, yo uso Rider en el curro porque las demas opciones en Mac son para cortarte las venas.

1 respuesta
Runig666

#10318

1 respuesta
r2d2rigo

#10319 code es la remierda, lo estuve usando en el curro anterior desde que quitaron VS for Mac y para proyectos grandes de c# se hace caquita encima.

1 respuesta