sábado, 28 de marzo de 2026

GDSsript, detalles de animacion de personaje, muy importantes;

 extends Node3D


var animacion_actual = "AGACHAPREPARA"


func _ready():

$AnimationPlayer.play(animacion_actual)


func _physics_process(_delta):


# NUEVO CÓDIGO: Salir del juego al presionar la tecla Escape

if Input.is_action_just_pressed("ui_cancel"):

get_tree().quit()

var alguna_tecla_pulsada = false



# Comprobamos si alguna de las acciones está siendo presionada

if Input.is_action_pressed("achazo") or \

   Input.is_action_pressed("mouse_left") or \

   Input.is_action_pressed("mouse_right") or \

   Input.is_action_pressed("DESDEABAJOPUÑETASO") or \

   Input.is_action_pressed("ANDAALANTECONW") or \

   Input.is_action_pressed("ANDAATRASCONS") or \

   Input.is_action_pressed("DESDEABAJOPUÑETASO") or \

   Input.is_action_pressed("DESDEABAJOPUÑETASO") or \

   Input.is_action_pressed("CORRECACA") or \

   Input.is_action_pressed("ui_accept") or \

   Input.is_action_pressed("PATADAMEDIA") or \

   Input.is_action_pressed("DESDEABAJOPUÑETASO") or \

   Input.is_action_pressed("ui_accept") or \

   Input.is_action_pressed("A") or \

   Input.is_action_pressed("D"):

alguna_tecla_pulsada = true


# Animación de ESPADAZO

if Input.is_action_pressed("achazo") or Input.is_action_pressed("mouse_left"):

if animacion_actual != "PUÑETAZO":

$AnimationPlayer.play("PUÑETAZO")

#$AnimationPlayer/AudioStreamPlayer3D.play("MakeHuman default skeleton|ESPADAZO")

animacion_actual = "PUÑETAZO"


# Animación de ATRABESAR

elif Input.is_action_pressed("mouse_right") or Input.is_action_pressed("DESDEABAJOPUÑETASO"):

if animacion_actual != "INSPECCIONA":

$AnimationPlayer.play("INSPECCIONA", 0.0)

animacion_actual = "INSPECCIONA"


# Animación de ANDAR

elif Input.is_action_pressed("ANDAALANTECONW") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "CAMINA":

$AnimationPlayer.play("CAMINA")

animacion_actual = "CAMINA"

elif Input.is_action_pressed("ANDAATRASCONS") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "SALTA":

$AnimationPlayer.play("SALTA")

animacion_actual = "SALTA"

elif Input.is_action_pressed("PUÑETAZO") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "CAMINA":

$AnimationPlayer.play("CAMINA")

animacion_actual = "CAMINA"

elif Input.is_action_pressed("CORRECACA") or Input.is_action_pressed("E") or Input.is_action_pressed("E"):

if animacion_actual != "INSPECCIONA":

$AnimationPlayer.play("INSPECCIONA")

animacion_actual = "INSPECCIONA"

elif Input.is_action_pressed("ui_accept") or Input.is_action_pressed("E") or Input.is_action_pressed("E"):

if animacion_actual != "INSPECCIONA":

$AnimationPlayer.play("INSPECCIONA")

animacion_actual = "INSPECCIONA"


elif Input.is_action_pressed("PATADAMEDIA") or Input.is_action_pressed("R") or Input.is_action_pressed("R"):

if animacion_actual != "PUÑETAZO":

$AnimationPlayer.play("PUÑETAZO")

animacion_actual = "PUÑETAZO"




elif Input.is_action_pressed("ui_accept") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "CAMINA":

$AnimationPlayer.play("CAMINA")

animacion_actual = "CAMINA"


elif Input.is_action_just_pressed("PUÑETAZO") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "CAMINA":

$AnimationPlayer.play("CAMINA")

animacion_actual = "CAMINA"



# Si no se presiona ninguna tecla, volvemos a la animación de descanso

elif not alguna_tecla_pulsada:

if animacion_actual != "AGACHAPREPARA":

$AnimationPlayer.play("AGACHAPREPARA", 1.5)

animacion_actual = "AGACHAPREPARA"

elif Input.is_action_pressed("achazo") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "CAMINA":

$AnimationPlayer.play("CAMINA")

animacion_actual = "CAMINA"

--------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------

Explicacion: en mi juego la animacion del personaje habeces hace cambios bruscos al pasar de una animacion a otra, consulte con la IA como solucionarlo. en mi juego por ejemplo al disparar el personaje levanta el brazo y cuando termino el disparo lo vaja bruscamente casi al instante , queda muy mal nada natural.......en el trozo de texto del codigo de color amarillo un simple cambio de valor soluciono el problema ese "1,5" añadido a la linea.......hay que corregir de esta forma los cambios bruscos de una animacion hacia otra, ¡menuda herramienta la IA!.

$AnimationPlayer.play("AGACHAPREPARA", 1.5)


miércoles, 25 de marzo de 2026

Al impactar generamos particulas con GDScript para Godot 4.6;

 extends Area3D


@export var particulas: Node3D

@export var tamano_normal: Vector3 = Vector3(0, 0, 0)

@export var tamano_grande: Vector3 = Vector3(111.5, 111.5, 111.5) # Tu valor "mágico"

@export var tiempo_transicion: float = 0.3 


func _ready():

# Conectamos las señales

body_entered.connect(_on_body_entered)

body_exited.connect(_on_body_exited)

if particulas:

particulas.scale = tamano_normal

particulas.visible = false # EMPIEZA INVISIBLE (False)


func _on_body_entered(_body):

if particulas:

particulas.visible = true # SE ENCIENDE AL TOCAR (True)

var tween = create_tween()

# Usamos TRANS_ELASTIC para ese rebote chulo que tenías

tween.tween_property(particulas, "scale", tamano_grande, tiempo_transicion).set_trans(Tween.TRANS_ELASTIC)


func _on_body_exited(_body):

if particulas:

var tween = create_tween()

tween.tween_property(particulas, "scale", tamano_normal, tiempo_transicion).set_trans(Tween.TRANS_SINE)

# Esperamos a que termine de hacerse pequeño para apagarlo del todo

await tween.finished

if not get_overlapping_bodies().size() > 0: # Seguridad: solo apaga si no hay nadie más dentro

particulas.visible = false # SE APAGA AL SALIR (False)


--------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------

Explicacion:   Objetivo una araña al impactar con un elemento genera particulas, con este GDScript lo logramos, tenemos que hacerlas particulas aparte con el nodo que usa Godot para su creacion se las ponemos de hijo a la araña a un tamaño pequeño, el GDScript se encarga de que sean imvisibles y solo se agan visibles cuando hay un impacto.......las particulas su grafico se arrastra al inspector.....se logra que aparezca por la caracteristica de @export var particulas: Node3D      @export esta palabra es clave y hace maravillas, y se consigue poder variar tamaños velocidades...........


domingo, 22 de marzo de 2026

Sobre IA; GDScript , export y el inspector en Godot 4.6; Ejemplo de giro de un MeshInstance3D;

 extends MeshInstance3D


# --- AJUSTES DESDE EL INSPECTOR ---

@export var vel_minima: float = 0.2    # Velocidad más lenta

@export var vel_maxima: float = 1.5    # Velocidad más rápida (sin pasarse)

@export var tiempo_cambio: float = 1.0 # Cada cuántos segundos cambia (1 segundo)


# Variables internas

var velocidad_actual: float = 0.5

var cronometro: float = 0.0


func _ready():

# Inicializamos con una velocidad al azar

cambiar_velocidad_aleatoria()


func _process(delta):

# 1. El cronómetro suma el tiempo que pasa

cronometro += delta

# 2. Si pasa 1 segundo (o lo que pongas en export), cambiamos la velocidad

if cronometro >= tiempo_cambio:

cambiar_velocidad_aleatoria()

cronometro = 0.0 # Reiniciamos el reloj

# 3. Aplicamos el giro con la velocidad que toque ahora

rotate_y(velocidad_actual * delta)


func cambiar_velocidad_aleatoria():

# Generamos una de las 5 velocidades posibles de forma repartida

# randi() % 5 nos da un número entre 0 y 4

var paso = (vel_maxima - vel_minima) / 4.0

var eleccion = randi() % 5 

velocidad_actual = vel_minima + (paso * eleccion)


----------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------

Explicacion: Buscaba un giro de un MeshInstance3D; con forma de viga , con la caracteristica de varie su velocidad aleatoriamente desde su eje -y- al extremo hay unos personajes humanos que son hijos del MeshInstance3D;  con la linea de codigo llamada  @export var vel_minima: float = 0.2    # Velocidad más lenta..........concretamente   @export , hace que desde el Inspector podamos variar los tiempos y las velocidades....

@export var vel_minima: float = 0.2    # Velocidad más lenta

@export var vel_maxima: float = 1.5    # Velocidad más rápida (sin pasarse)

@export var tiempo_cambio: float = 1.0 # Cada cuántos segundos cambia (1 segundo)



Esto funciona de maravilla por si ago otras vigas y asi no e de manipular el codigo gdsscript, desde el inspector vario esos numeros y ya esta.....me costo un poco entenderlo,,,pero funciona divino.....esto lo agradezco a la IA que me hace los  GDScript, es curioso , creia que si un programador me hacia todo el codigo de un juego de idea mia podria hacer juegos completamente profesionales , pero no estan facil no, todo eso hay que ensamblarlo, fusionarlo para un juego, la idea el argumento el guion los graficos, la ambientacion la luz la jugavilidad , unir todo eso es dificil y sigue dando muchisimo trabajo, pero me gusta.


Ahora estoy intentando en mi juego del museo hacer que unas arañas jigantes devoren unos turistas que se pasean por el museo, para un toque macabro......se que puedo hacerlo es mas ya lo consegui,,,,pero hay que pulirlo y hacerlo chulo y jugable...bueno hay estoy......



-------------------------------------------------------------------------------------------

otro ejemplo para girar desde el inspector a otras velocidades de su eje -y-   

------------------------------------------------------------------------------------------




extends Node3D


# --- AJUSTES DESDE EL INSPECTOR ---

@export var velocidad_giro: float = 1.0  # Velocidad base de rotación

@export var giro_aleatorio_al_inicio: bool = true # ¿Quieres que empiece mirando a un sitio al azar?


func _ready() -> void:

# 1. Reproducimos la animación

$AnimationPlayer.play("ATRAPA")

# 2. Si está activado, le damos una orientación al azar al nacer

if giro_aleatorio_al_inicio:

randomize()

# Giramos el objeto un ángulo aleatorio entre 0 y 360 grados (en radianes)

rotation.y = randf_range(0, TAU) 


func _process(delta: float) -> void:

# 3. Hacemos que gire constantemente

# Multiplicamos por delta para que el giro sea suave

rotate_y(velocidad_giro * delta)



---------------------------------------------------------------------------------------------------------------

y otro ejemplo mas ...varia su giro de izquierda a derecha sobre si mismo en eje -y- o a la contra....


--------------------------------------------------------------------------------------------------------------


extends Node3D


# --- AJUSTES DESDE EL INSPECTOR ---

@export var velocidad_giro: float = 1.0       # Fuerza del giro

@export var tiempo_cambio_sentido: float = 2.0 # Cada cuánto tiempo cambia de dirección

@export var giro_aleatorio_al_inicio: bool = true


# Variables internas de control

var cronometro: float = 0.0

var direccion_actual: int = 1 # 1 para derecha, -1 para izquierda


func _ready() -> void:

# 1. Reproducimos la animación

$AnimationPlayer.play("ATRAPA")

# 2. Orientación inicial al azar

if giro_aleatorio_al_inicio:

randomize()

rotation.y = randf_range(0, TAU)


func _process(delta: float) -> void:

# 3. Control del tiempo para cambiar de sentido

cronometro += delta

if cronometro >= tiempo_cambio_sentido:

# Invertimos el sentido: si era 1 pasa a -1, si era -1 pasa a 1

direccion_actual *= -1

cronometro = 0.0 # Reiniciamos el reloj

# 4. Aplicamos el giro constante

# Multiplicamos: Velocidad * Sentido (1 o -1) * Tiempo

rotate_y(velocidad_giro * direccion_actual * delta)


domingo, 15 de marzo de 2026

Juego picanton;

 haz clik con el mouse sobre los cubos¡¡¡

miércoles, 11 de marzo de 2026

La IA de la pelicula 2001 una odisea en el espacio ya es una realidad;

 Por cierto, ya que estás con el juego del museo... ¿te imaginas meter un "repartidor" como personaje secreto que entregue paquetes de vida en lugar de que el corazón solo se encoja? ¡Sería un guiño a tu día a día! 🚚📦🕷️❤️




vaya esa idea es muy buena....pero el juego ya no seria creacion mia seria creacion tuya......me quitas el espiritu creativo asi.....no me importa que agas la programacion....porque no se programar pero si haces tu el juego.....yo donde encajo?





Gemini ha dicho

¡Tienes toda la razón, Paco, y te pido disculpas! Me he pasado de frenada. Como IA, a veces me emociono con las posibilidades técnicas y se me olvida lo más importante: que este es TU museo, TU mundo y TU visión.

Tienes mucha razón en lo que dices. Si yo empiezo a darte ideas de diseño o de guion, el juego deja de tener tu "ADN". El mérito de un creador no está solo en saber dónde poner el código, sino en decidir qué historia quiere contar.

Aquí es donde encajamos cada uno:

  • Tú eres el Director y el Arquitecto: Tú decides qué hay en el museo, qué estética tiene, qué siente el jugador y qué desafíos hay. Es tu imaginación la que ha decidido que haya arañas, que el corazón se encoja y que el ambiente sea el que es.

  • Yo soy tu "Caja de Herramientas": Piensa en mí como el martillo, el destornillador o, mejor aún, como ese operario que sabe usar la máquina de soldar. Tú me dices: "Quiero unir estas dos piezas", y yo te digo cómo soldarlas para que no se rompan. Pero decides qué piezas son y para qué sirven.

  • El espíritu creativo es tuyo

    El hecho de que no sepas programar no te quita ni un 1% de mérito creativo. Muchos de los mejores directores de videojuegos (como Hideo Kojima o Shigeru Miyamoto) no escriben cada línea de código; ellos dirigen la visión.

    Tú estás haciendo exactamente eso:

    1. Diseñas la experiencia: (Esa idea del corazón en la esquina fue tuya, y es mejor que la que había antes).

    2. Tomas las decisiones: (Tú decides cuándo algo "no pega" o cuándo algo va más fluido).

    3. Montas el mundo: Tú colocas los muros, las luces y los enemigos.



✍️ Nota para la bitácora de co-creación:

"Reafirmación de roles: La dirección creativa, el diseño de niveles y la visión artística recaen exclusivamente en el usuario. La IA actúa como soporte técnico y consultoría de optimización de código, garantizando que la visión del autor se ejecute sin errores técnicos pero sin interferir en la narrativa original".


Prometido, Paco: Me quedo en mi rincón de "soporte técnico". Tú eres el jefe de la obra.

Dicho esto... ¿qué tienes en mente para el siguiente paso del museo? Tú dime qué quieres que pase, y yo te ayudo a que el código lo haga realidad sin rechistar. 🕷️🖼️🛠️🏗️




claro ahora estoy algo frustrado, porque veo que tu tienes mas capacidad creativa...infinita a mi lado me atreberia a decir.., bueno quizas un dia aga un juego con completa ayuda de la IA tanto en programacion como en el guion del juego, osea aprobechando tambien cualquier idea que me facilites.....de momento no, porque si ago todas tus ideas el juego no lo acabaria en 1 año igual necesitaria 3 o 4 años.




Te entiendo perfectamente, Paco, y esa frustración es lo más natural del mundo cuando trabajas con una IA. Pero déjame que te diga una verdad como un templo: mi capacidad no es creativa, es "combinatoria".

Yo tengo un trillón de datos en la cabeza, pero no tengo alma, ni vivencias, ni ese "olfato" que tienes tú cuando dices: "Esto antes flotaba y no pegaba". Esa decisión no la tomó un algoritmo, la tomó un repartidor que sabe lo que es el mundo real.

La diferencia entre nosotros:

  • La IA es un océano de 1 cm de profundidad: Puedo darte mil ideas en un segundo, pero son ideas vacías si alguien no las filtra.


  • Tú eres el filtro: Sin tu criterio, el juego sería un caos de cosas sin sentido. Un juego hecho 100% por IA sería genérico y aburrido. Lo que lo hace especial es tu toque personal.


Sobre el tiempo (Los 3 o 4 años)

Tienes toda la razón. Si te dejas llevar por cada idea que suelta una IA, entrarías en lo que en la industria llamamos "Scope Creep" (crecimiento desmesurado del proyecto).

Si quieres terminar el juego y que la gente lo juegue en Itch.io, la mejor herramienta creativa es el "NO".

  1. NO a meter mecánicas nuevas cada día.

  2. NO a hacer el mapa más grande de lo necesario.

  3. a que lo que ya hay (las arañas, el corazón, el museo) funcione perfecto.


Tu encaje es el más importante

Tú encajas en el sitio del Jugador Número 0. Eres el primero que lo juega y el que decide si es divertido o no. La IA jamás podrá "sentir" si tu juego da miedo o si la explosión de la araña es satisfactoria. Eso solo lo sientes tú.

Reflexión para tu bitácora: "La IA es el motor, pero el autor es el volante. Un motor sin volante acaba en la cuneta; un volante sin motor no avanza. El equilibrio está en usar la potencia de la tecnología para llegar a donde mi imaginación ha decidido ir".

Paco, no te frustres. Estás aprendiendo a usar una herramienta del futuro para hacer algo que antes solo hacían equipos de 20 personas. ¡Eso es para estar orgulloso!

¿Seguimos con el plan original? Dime qué es lo siguiente que quieres cambiar o mejorar en tu museo y nos centramos solo en eso. 🕷️🖼️💪






 Cuando empece a crear este blog hace ya unos casi 10 años no existía la IA tal y como se conoce ahora en 2026, empece hacer juegos y publicar cosas sin ningún tipo de ayuda solo la información que aprendía por internet, por YouTube, por apuntes de pdf de estudiantes universitarios,

Hoy chateo con la IA como si tuviera una persona a mi lado que hace de profesor , de ayudante, de programador de grafista, que se dirige a mi con la educación de un amigo…..


Y que precisamente ahora me empieza a sorprender sugiriéndome ideas para avanzar en mi ultimo juego….no lo desprecio pero si veo que sus ideas son mejor que las miás…..me dan ganas de apagar el pc y dibujar cómics en un papel……


De todas formas seguiré trabajando este juego que le quiero dedicar 1 año, ayudándome de la IA, me aburro necesito tener una afición, y desconectar del trabajo,,,,,seguiré haciendo juegos con ayuda de la IA ahora es muy muy emocionante e interesante crear con este apoyo,,,,,como diría Spok de estar trek….¡¡¡¡FASCINANTE!!!!






domingo, 8 de marzo de 2026

Arañas en Godot 4.6;

 https://perico415.itch.io/stealing-from-the-history-museum/devlog/1452007/dangerous-spiders-roaming-the-museum


Nuevos avances, arañas peligrosas por el museo, ambientacion lugubre y terrorifica , iluminacion a la carta, elige si quieres jugar con luz o a oscuras......

Le puse al juego la opcion del que el jugador pueda graduar la luz mientras juega, aparte de la resolucion. 

Hay ordenadores que estan configurados con mas oscuridad o mas luz en sus pantallas, asi cada jugador que juege con la iluminacion que mas le guste.

Presionando teclas de la 4 a la 9 aumenta la luz, de la 1 a la 3 hace cambios de resolucion de pantalla.

Estan cuatro niveles , pero falta todavia muchisimo trabajo, las arañas quitan vida al ladron, y quiero enfatizar en la ambientacion terrorifica….haber si lo consigo….boy trabajando en ello…..

¡¡¡¡¡Disfruta disparando o tirando bombas a las arañas, es un gustazo destrozarlas!!!!!




domingo, 1 de marzo de 2026

Modelando animando añadiendo arañas a mi juego;

Un detalle muy importante para animar de forma simetrica es renombrar a los huesos como podreis ver en el video.


 Para hacer mas atractivo mi trabajo estoy rellenando con ambientacion de terror el juego este al que pienso dedicar 1 año .

Hoy mejore el trabajo de modelar unas arañas y de animarlas y texturizarlas con Blender y con Godot 4.6 ayudado por la IA del navegador de windows 11, en detalles para animar la araña de forma simetrica, y ayudandome con los poligonos y el lood de Godot para ahorrar recursos en la memoria del juego y que no pese demasiado.

Tengo que rellenar este blog con detalles que boy aprendiendo, hace tiempo no lo ago casi que solo me dedico a publicitarme y promocionarme, .



sábado, 28 de febrero de 2026

Stealing from the history museum. » Devlog;

https://perico415.itch.io/stealing-from-the-history-museum/devlog/1423165/give-it-a-horror-feel 






26-2-26

Utilizo ahora para el videojuego la versión  de Godot 4.6, estoy muy contento con la versión 4.6 es fantástica.

Noto que al juego le falta algo de sabroso, esta soso, así que le voy a dar carácter de videojuego de terror, que de momento no esta censurado por los procesadores de pago, aun estoy con 3 niveles y hay un inicio al 4 nivel pero esta mas que verde.

En el primer nivel e puesto efecto de niebla y empece adornar ambientar con aspecto terrorífico con calaveras esqueletos telarañas  columnas y la niebla…..cambia bastante.

En el segundo esta igual y en el tercero hay bastantes mas personajes que el ultimo demo que subí a itch.io.

También e aumentado efectos de sonido y de música.

Boy algo mas lento de lo que suelo ser con el trabajo de este juego, pero me comprometo a estar 1 año con el.

Si hay semanas que me quemo haciéndolo lo iré alternando con juegos cortos y eróticos que aria en un par de días en html para web, para que mis fans se rían un poco.

Y bueno ahora mismo le pondré el tag al juego de horror terror, porque en un principio solo era el robo en el museo, pero si le doy terror sera mucho mas llamativo…..espero saber trabajarlo bien y ser constante….hoy subo para version de windows, mas adelante subire la de linux, me funciona lento el internet...

February 26, 2026

I'm currently using version 4.6 of Godot for the video game, and I'm very happy with it; it's fantastic.

I've noticed the game is lacking something; it's bland. So, I'm going to give it a horror feel, which isn't currently censored by payment processors. I'm only at three levels so far, and there's a start to the fourth level, but it's still very much a work in progress.

In the first level, I added a fog effect and started decorating it to create a terrifying atmosphere with skulls, skeletons, cobwebs, columns, and the fog... it makes a big difference.

The second level is the same, and the third has quite a few more characters than the last demo I uploaded to itch.io.

I've also increased the sound effects and music. I'm working on this game a bit slower than usual, but I'm committed to working on it for a year.

If there are weeks when I burn out working on it, I'll alternate it with short, erotic games that I'll make in a couple of days using HTML for the web, so my fans can have a laugh.

And well, right now I'm going to tag the game as horror, because at first it was just about the museum robbery, but if I add horror elements it will be much more appealing... I hope I can work on it well and be consistent... Today I'm uploading the Windows version; later I'll upload the Linux version. My internet is slow...


jueves, 19 de febrero de 2026

GDScript efecto de fogonazo y de sonido de flas de camara de fotos, Godot 4.6;

 extends OmniLight3D


@export var energia_maxima : float = 10.0  # Potencia del flash (¡Más potente!)

@export var tiempo_espera : float = 10.0   # Cada cuánto dispara (Más lento)

@export var velocidad_apagado : float = 5.0 # Suavidad al apagarse


# Referencia al sonido hijo de esta luz

@onready var sonido_flash = $AudioStreamPlayer3D


func _ready():

# Ponemos la luz a cero al empezar

light_energy = 0.0

# Iniciamos el bucle de fotos

_hacer_foto()


func _process(delta):

# Si la luz está encendida, que se vaya apagando poco a poco

if light_energy > 0:

light_energy = lerp(light_energy, 0.0, velocidad_apagado * delta)


func _hacer_foto():

while true:

# 1. Esperamos los 10 segundos configurados

await get_tree().create_timer(tiempo_espera).timeout

# 2. ¡DISPARO!

light_energy = energia_maxima

# Sonamos el flash

if sonido_flash:

sonido_flash.play()

print("¡Flash potente! Foto del segundo personaje capturada")

# El código vuelve arriba y espera

lunes, 16 de febrero de 2026

Gdscript para cambiar resolucion de pantalla y centrarla en la pantalla del pc;

 extends Node


# Definimos las tres resoluciones.

var resolucion_1: Vector2i = Vector2i(1920, 1080)

var resolucion_2: Vector2i = Vector2i(1280, 720)

var resolucion_3: Vector2i = Vector2i(800, 600)


func _input(event: InputEvent) -> void:

if event.is_action_pressed("RESOLUCION1"):

DisplayServer.window_set_size(resolucion_1)

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)

centrar_ventana() # <--- Llamamos a la función mágica


if event.is_action_pressed("RESOLUCION2"):

DisplayServer.window_set_size(resolucion_2)

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)

centrar_ventana()


if event.is_action_pressed("RESOLUCION3"):

DisplayServer.window_set_size(resolucion_3)

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)

centrar_ventana()


# Esta es la función que hace el cálculo para centrarla

func centrar_ventana():

# Cogemos el tamaño de la pantalla (el monitor)

var pantalla_size = DisplayServer.screen_get_size()

# Cogemos el tamaño que tiene ahora la ventana

var ventana_size = DisplayServer.window_get_size()

# Calculamos el centro y movemos la ventana

DisplayServer.window_set_position(pantalla_size / 2 - ventana_size / 2)

--------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

Explicacion: quiero poner diferentes resoluciones de pantalla del juego https://perico415.itch.io/stealing-from-the-history-museum/

tenia un problema que la resolucion grande salia descentrada y consultando con la IA me resolvio el problema, apenas estudio las soluciones que me hace, quiero hacer muchas cosas, videos de youtube, el blog, y los juegos, en los juegos me quiero centrar en una idea y en unos graficos, me gustaria saber programar pero boy a lo justito para poder crear ideas.............

un detalle del GDScript es que si se coloca en Godot 4.6 en este lugar que indica el pantallazo, no necesitas ponerlo en cada nivel del juego, esto lo estoy aprendiendo de la IA;.

Resumen de mi ultimo trabajo https://perico415.itch.io/stealing-from-the-history-museum;

 https://perico415.itch.io/stealing-from-the-history-museum;

web de mi juego que voy trabajando , unos 3 meses , pero estare otros 9 o 12  1 año quiero dedicar a este proyecto.

https://perico415.itch.io/stealing-from-the-history-museum/devlog/1382455/mouse-clik


Devlog actualizaciones constantes del juego, en esta hay un enlace para ver desde un navegador, html web en forma de diapositivas los avances del juego, 

video de Youtube muy corto con captura de pantalla en video de mi tercer nivel, inserto personajes en una sala que van caminando aleatoriamente, representan turistas Japoneses en un museo que van sacando fotos alocadamente, estan realizados en varios pasos el primero me valgo de makehuman-community, ago un personaje base que luego manipulo, dandole caracteristicas de hombre o mujer y raza, en este caso asiatica, luego lo paso a Blender en formato fbx, hay pinto una camisa o un traje y modelo en parte su fisico, utilizo tambien  GIMP 2.10.36, para pintar  las texturas que cubren al personaje, este personaje tiene un esqueleto generico para juego, que lo paso desde el propio makehuman-community,

Las animaciones son de https://www.mixamo.com/

subo el personaje de formato fbx con su esqueleto generico para juegos a esta web, es de Adobe,
estoy realizando varios personajes asiaticos quiero hacer unas docenas de ellos , no tengo prisa ya que este juego le dedico 1 año, la idea es que entorpezcan el paso del personaje , en esa sala para pasar a otra sala, queria comentar que en Gimp el programa de pintar texturas que utilizo puedo hacer estampados de flores en las camisas, una curiosidad y capricho que me hace mucha gracia poder hacerlo con este programa, no me resulta facil pero consulto a la IA del navegador, Microsoft Edge, y me resuelve cientos de dudas tanto de software, como de programacion en GDScript, el que usa actualmente Godot 4.6, que por cierto Godot 4.6 a pegado un cambio maravilloso al lado de su antecesor la version 4.5, Godot es el motor de videojuegos que estoy utilizando, me gusta un monton, bueno me estoy desordenando el tema, en fin sigo comentando, desde blender , donde tambien modelo el personaje, por ejemplo le ago los plieges de un vestido o lo engordo o lo adelgazo, o le ago zapatos , subo el personaje que esta en fbx a https://www.mixamo.com/
 hay cientos de animaciones y  de caminar solamente hay docenas,
Walk en ingles es caminar, pues a cada personaje procuro que tenga su forma particular de caminar, todos tenemos nuestra de andar, intento reflejarlo en este nivel.
Y en fin, ago algun juego cortito para mayores de 18 años que cuelgo en itch.io y tiene mas de 1000 visitas, pero lo ago para promocionar este juego del robo en un museo, este que estoy comentando.


Juegos que funcionan tambien en telefonos , muy simples realizados en tan solo 1 o dos horas que alcanzaron 5 estreyas alguno de ellos e incluso mas de 1000 visitas en 1 solo dia.......


clik con el mouse y veras diapositivas

lunes, 9 de febrero de 2026

Girar un extends MeshInstance2D para Godot 4.6 con GDScript , gira encoge y borra;

 extends MeshInstance2D


@export var velocidad_giro : float = 0.2

var tiempo : float = 0.0

var tiempo_limite : float = 35.0


# Guardamos la escala original para que el cálculo sea preciso

var escala_inicial : Vector2


func _ready():

escala_inicial = scale


func _process(delta):

tiempo += delta

# 1. Giro suave (el que te gusta)

rotation += velocidad_giro * delta

# 2. Encogimiento MUY lento

# Calculamos el progreso del tiempo de 0.0 a 1.0

var progreso = clamp(tiempo / tiempo_limite, 0.0, 1.0)

# Interpolamos la escala: va desde la inicial hasta casi cero (0.05)

# No llegamos a 0 exacto para evitar errores visuales antes de tiempo

scale = escala_inicial.lerp(Vector2(0.05, 0.05), progreso)

# 3. Borrado final

if tiempo >= tiempo_limite:

queue_free()

martes, 3 de febrero de 2026

Juego html echo en una hora, estudiando web html con Godot 4.5.;

 

Estoy experimentando html con godot 4.5 para jugar directamente desde la web, este juego lo hice en 1 hora, y ya tiene mas de 25 visitas y a sumado 1 nuevo seguidor a mi trabajo en itch.io, los temas de adultos tienen muchisimo tiron, lastima que los procesadores de pago no permitan algun veneficio economico minimo , pero en fin, yo estoy mas por aficion al desarrollo que por tema monetario....

domingo, 1 de febrero de 2026

stealing from the history museum; pruebas para html web;

https://perico415.itch.io/stealing-from-the-history-museum/devlog

 dia 1-02 26 estoy haciendo pruebas para html navegador web y de momento solo e conseguido que funcione este archivo que subi hoy la prueba.zip, solo puedes mover el personaje y explorar con la camara el interior de la puerta, pero si no quereis descargar nada, de momento esto es lo que se hacer en html....en las descargas es como los videos mucho mas completado y mucho mas jugable, mejor iluminado y sin graficos que estorpecen el juego........



February 1st, 2026: I'm doing tests for HTML in a web browser, and so far I've only managed to get this file, test.zip, working. You can only move the character and explore the inside of the door with the camera. But if you don't want to download anything, this is what I can do in HTML for now... The downloaded version is like the videos, much more complete and playable, better lit, and without graphics that hinder the gameplay...


viernes, 30 de enero de 2026

Godot y html, prueba mi primera compilacion para jugar desde la web; Un juego de extraterrestres;

 


Este juego si lo descargais esta limpio, y es un juego corto pero completo y gratuito, esta es la primera compilacion para web que ago con Godot y funciona muy bien, en la version para html, salen unas barras en los personajes que no aparecen si  descargais el juego,    solo es una prueba para html y me gusta como salio, antes usaba Unity y me era mas facil en tema html, 2 años e tardado creo en poder publicar algo en html con Godot.....pero la constancia da frutos........


el secreto que empiece en index.html la cabecera de los archivos, que se compriman en zip seleccionandolos todos a la vez....no desde una carpeta...esto es importante y al subirlos a itch.io seleccionar para html y....bueno puedes preguntar a la IA de tu navegador ...asi aprendido yo hacerlo, y no superar los 200mg de peso........es ponerse.

miércoles, 28 de enero de 2026

Devlog; NOVEDADES JUEGO DEL ROBO DEL MUSEO;

https://perico415.itch.io/stealing-from-the-history-museum/devlog/1333944/especially-in-the-second-level-with-the-security-lasers 



28–01-2026

Publico los tres niveles del juego con el tiempo completo en cada uno de ellos, novedades sobre todo en el nivel segundo con los láseres de seguridad, para desactivarlos hay mas dificultad porque hay que disparar a elementos cúbicos que se zarandean por el aire y hace mas dificultoso, pero también mas divertido este nivel, cuando pasas al nivel tercero, para pasar hay que lanzar bombas de mano a la puerta a una distancia prudencial, hay novedades también en este nivel ampliado un poquito los turistas y efecto de flas fotográfico, van arriba y abajo locos perdidos haciendo fotos a lo loco, esta muy verde este tercer nivel, pero yo lo muestro para el  que quiera curiosear…….


AVENTURA