Godot, scripts para Godot estudios y aprendizajes, Creacion de videojuegos. Creacion y publicacion de videojuegos en internet. Como hacer videojuegos. C# unity. Animaciones unity blender. Personajes videojuegos graficos dibujos. Diseño grafico. Comic. Animaciones gif. Dibujo de retratos. Realidad virtual. Cine y realidad virtual.
miércoles, 13 de mayo de 2026
Mi amiga la IA y yo el desarrollador indie, manteniendo una charla de trabajo;
domingo, 10 de mayo de 2026
GDScript para enlazar varias animaciones para Godot 4.6.2;
extends Node3D
# @export para ajustar qué tan "fuerte" afecta el slider desde el Inspector
@export var multiplicador_suavidad: float = 1.0
var lista_animaciones = [
"Game_engineHOMBRE|Game_engineHOMBREAction",
"Game_engineHOMBRE|Game_engineMUJERAction",
"Game_engineMUJER|Game_engineHOMBREAction",
"Game_engineMUJER|Game_engineMUJERAction"
]
var indice = 0
func _ready() -> void:
# 1. Conectamos señales
$AnimationPlayer.animation_finished.connect(_al_terminar_animacion)
$Node/CanvasLayer/HSlider.value_changed.connect(_on_slider_speed_changed)
# 2. Ajuste inicial de velocidad y sonido
var valor_inicial = $Node/CanvasLayer/HSlider.value * multiplicador_suavidad
$AnimationPlayer.speed_scale = valor_inicial
# Si el sonido está en esta ruta, lo ajustamos al arrancar
if has_node("Node/CanvasLayer/AudioStreamPlayer3D"):
$Node/CanvasLayer/AudioStreamPlayer3D.pitch_scale = valor_inicial
$Node/CanvasLayer/AudioStreamPlayer3D.play()
reproducir_siguiente()
func reproducir_siguiente():
if indice < lista_animaciones.size():
$AnimationPlayer.play(lista_animaciones[indice])
indice += 1
else:
indice = 0
reproducir_siguiente()
func _al_terminar_animacion(nombre_anim):
reproducir_siguiente()
func _on_slider_speed_changed(valor: float):
var nueva_velocidad = valor * multiplicador_suavidad
# Cambia la velocidad de la animación
$AnimationPlayer.speed_scale = nueva_velocidad
# Cambia el tono/velocidad del sonido
if has_node("Node/CanvasLayer/AudioStreamPlayer3D"):
$AudioStreamPlayer3D.pitch_scale = nueva_velocidad
func _input(event):
if event.is_action_pressed("ui_cancel"):
get_tree().quit()
viernes, 8 de mayo de 2026
devlog dia 08-05-2026;
https://perico415.itch.io/stealing-from-the-history-museum/devlog/1518068/outlining-the-final-level
¡Hola! Soy perico415. Soy desarrollador de videojuegos indie con Godot, dibujante de cómics y creador de contenido. Aquí comparto mis avances en programación, mis dibujos y mis efectos de sonido. Si te gusta lo que hago en mi blog o en YouTube, ¡puedes apoyarme invitándome a un café! ¡Gracias!
Te gusta mi contenido, apoyame, pagando un cafe, gracias¡¡¡
If you like my content, support me by buying me a coffee, thank you!
martes, 28 de abril de 2026
Magnifico GDScript para instanciar murcielagos desde un Area3d y calibrar desde el inspector;
Te gusta mi blog, invitame a un cafe aqui:
extends Area3D
# --- CONFIGURACIÓN DESDE EL INSPECTOR ---
@export_group("Recursos")
## Arrastra aquí tu archivo .tscn (el murciélago o cualquier otro)
@export var escena_a_instanciar : PackedScene
@export_group("Tiempos de Spawner")
## Cada cuántos segundos aparece uno nuevo
@export var tiempo_entre_instancias : float = 2.0
@export_group("Movimiento Aleatorio")
## Velocidad mínima y máxima en cada eje (X, Y, Z)
@export var velocidad_x : Vector2 = Vector2(-2.0, 2.0)
@export var velocidad_y : Vector2 = Vector2(-0.5, 1.5)
@export var velocidad_z : Vector2 = Vector2(-2.0, 2.0)
@export_group("Limpieza y Optimización")
## Segundos que vivirá el objeto antes de borrarse (0 = infinito)
@export var tiempo_de_vida : float = 10.0
## Distancia máxima desde el spawner antes de borrarse (0 = sin límite)
@export var distancia_maxima : float = 50.0
var timer : float = 0.0
func _process(delta):
timer += delta
if timer >= tiempo_entre_instancias:
instanciar_criatura()
timer = 0.0
func instanciar_criatura():
if escena_a_instanciar == null:
return
# 1. Creamos la instancia
var nueva_instancia = escena_a_instanciar.instantiate()
# 2. La añadimos a la escena
get_tree().current_scene.add_child(nueva_instancia)
# 3. Posición inicial
nueva_instancia.global_position = global_position
# 4. Calculamos su velocidad aleatoria
var vel_random = Vector3(
randf_range(velocidad_x.x, velocidad_x.y),
randf_range(velocidad_y.x, velocidad_y.y),
randf_range(velocidad_z.x, velocidad_z.y)
)
# 5. Inyectamos la lógica de movimiento y auto-destrucción
var mover_script = GDScript.new()
mover_script.set_source_code("""
extends Node3D
var velocidad = Vector3.ZERO
var pos_inicio = Vector3.ZERO
var max_dist = 0.0
var vida_timer = 0.0
var max_vida = 0.0
func _process(delta):
# Movimiento
global_translate(velocidad * delta)
# Control por Tiempo
if max_vida > 0:
vida_timer += delta
if vida_timer >= max_vida:
queue_free()
# Control por Distancia
if max_dist > 0:
if global_position.distance_to(pos_inicio) >= max_dist:
queue_free()
""")
mover_script.reload()
nueva_instancia.set_script(mover_script)
# Pasamos las variables del Inspector a la instancia recién creada
nueva_instancia.velocidad = vel_random
nueva_instancia.pos_inicio = global_position
nueva_instancia.max_dist = distancia_maxima
nueva_instancia.max_vida = tiempo_de_vida
-------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
Explicacion: busco unos murcielagos que salen desde el interior de una calavera, se instancien , se crean con este GDScript desde un Area3d, y con el sistema de @export , se consigue desde el inspector del motor de juegos de Godot 4.6.2 alterar, la velocidad de las instancias, la velocidad de su movimiento por el escenario del juego , el tiempo de vida......magnifica utilizacion de la IA, hay quien dice que asi no se aprende a programar, pero yo no quiero programar, yo quiero desarrollar un videojuego, de todas formas algo si que se aprende, yo desconocia las maravillas del @export, ademas con este GDScript puedes arrastrar al inspector la escena tscn que quieras instanciar sin tocar nada de codigo.
Es un poderoso GDScript.
Te gusta mi blog, invitame a un cafe aqui:domingo, 26 de abril de 2026
devlog, actualizando constantemente dia 26-04-2026;
https://perico415.itch.io/stealing-from-the-history-museum/devlog/1500142/light-and-darkness-dia-26-4-26
Modelando con blender, reduciendo poligonos, animando objetos, trabajando luces.....ademas de juego es un simulador de enfoques de camara y de cantidad de iluminacion......
Te Gustan mis juegos, invitame a un cafe y seguire desarrollando¡¡¡¡
If you like my games, buy me a coffee and I'll keep developing them!
¡Gracias por el apoyo!
Thanks for the support!
miércoles, 22 de abril de 2026
devlog; juego museo dia 22-4-26;
Nuevos avances del juego del robo en el museo, mejoras de iluminación a la carta, juega con la luz que mas te guste, mejoras en la animación del personaje, mejoras en el cambio de niveles, mejoras en disparos, mejoras y mas mejoras¡¡¡¡ a día 22-4 26.
Mira el video y disfruta conmigo de este desarrollo¡¡¡¡¡¡¡¡¡
Te Gustan mis juegos, invitame a un cafe y seguire desarrollando¡¡¡¡
If you like my games, buy me a coffee and I'll keep developing them!
¡Gracias por el apoyo!
Thanks for the support!
martes, 21 de abril de 2026
La importancia de rebajar poligonos en los videojuegos;
Trabajando mi nuevo videojuego estoy aprendiendo a poner los graficos en 3d con el menos peso posible, estoy modelando unas calaveras con blender y hay una opcion para rebajar los poligonos, Es importante porque 5mg no ocupa mucho pero si lo puedes transformar en 24kb, pues mejor, ya que un juego terminado va sumando y sumando todos los elementos y si puede pesar terminado 1gb en lugar de 2 gb pues mas facil de publicar y de descargar en internet.
pongo unas capturas de pantalla de los pasos a seguir, yo lo exporte a formato obj es el que mejor resultado me da, y godot 4.6.2 lo soporta muy bien.
Hay que clicar en la llave azul como se ve en la ilustracion, luego elegir la opcion Diezmar como veis esta el numero a 0.0250 poligonos, una cantidad buenisima que ocupa muy poco espacio, antes de rebajarlo la cantidad de poligonos estaba a 1.0000 , yo blender lo tengo configurado en español, bueno variando el numero el objeto 3d es mas preciso o mas difuminado pierde definicion, cada uno a de encontrar su equilibrio .........cuantos menos poligonos menos peso cuantos mas mas peso.Yo lo exporte a formato .obj lo pase a Godot 4.6.2 y me funciona muy bien.
Te gusta mi contenido, apoyame, pagando un cafe, gracias¡¡¡
If you like my content, support me by buying me a coffee, thank you!
https://ko-fi.com/perico415

