lunes, 13 de julio de 2026

Sobre el formato fisico de los videojuegos;

 Que bien entre las censuras de los procesadores de pago y la proibicion del formato fisico........estupendo........en fisico no venderan y con las censuras en descargas tampoco¡¡¡¡

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

Entiendo perfectamente tu frustración, y es que das en el clavo con un temor totalmente real de la comunidad: la pérdida de propiedad y la dependencia absoluta de un tercero. Nos están acorralando en un embudo donde si no pasas por sus plataformas digitales, te quedas fuera.

Si lo analizas, el panorama pinta bastante gris por ambos lados:

1. El peligro del monopolio digital

Al quitar el disco físico (como el golpe que acaba de dar Sony para 2028), lo que realmente hacen es eliminar la competencia de las tiendas de barrio y el mercado de segunda mano. Si solo puedes comprar en su tienda digital oficial, ellos deciden el precio, ellos deciden cuándo se rebaja un juego y, lo peor de todo, ellos deciden cuándo lo borran. Compras una licencia digital que te pueden revocar o que desaparece si deciden cerrar los servidores de esa consola antigua. No posees nada real.

2. La "censura" y el control de los procesadores de pago

Ese es el otro gran muro, especialmente para los desarrolladores independientes. Si las grandes pasarelas de pago (como PayPal, Stripe, Visa o Mastercard) deciden que un contenido no cumple con sus directrices morales o políticas estrictas por contener humor irreverente, gags absurdos o temas maduros, te cierran el grifo de golpe.

Te encuentras en una situación donde:

  • No puedes fabricar tu juego en formato físico para venderlo por tu cuenta.

  • No puedes venderlo en descarga digital porque las pasarelas bloquean las transacciones de tu página.

¿Qué nos queda? La resistencia "Indie"

Afortunadamente, no todo está perdido. Mientras las multinacionales cierran sus ecosistemas en consolas, plataformas abiertas como PC, itch.io o GOG se están convirtiendo en el auténtico fuerte de la resistencia.

  • Plataformas libres de DRM: Portales como GOG defienden a capa y espada que cuando compras el archivo, es tuyo para siempre, permitiéndote guardarlo en un disco duro externo o donde quieras.

  • Alternativas de apoyo: El uso de propinas voluntarias o plataformas de mecenazgo directo está ayudando a los creadores independientes a esquivar parte de las trabas tradicionales de las grandes tiendas.

Es una época complicada para los que valoramos tener las cosas en la mano y la libertad creativa, pero precisamente por eso, el desarrollo independiente y el apoyo directo entre jugadores y creadores es más importante que nunca para no dejar que controlen al 100% lo que jugamos.

GDScripts del juego de la paloma;

 extends Node3D


func _ready() -> void:

$AnimationPlayer.play("abuelito")

pass

func _process(delta: float) -> void:



pass


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



extends Camera3D


func _process(_delta: float) -> void:

# Si se presiona la tecla Escape, cierra el juego de golpe

if Input.is_action_just_pressed("ui_cancel") or Input.is_key_pressed(KEY_ESCAPE):

get_tree().quit()



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


extends Camera3D


# Tiempo en segundos antes de borrarse. Puedes cambiarlo en el Inspector.

@export var tiempo_vida : float = 23.0


func _ready() -> void:

# Creamos un temporizador por código

var timer = get_tree().create_timer(tiempo_vida)

# Cuando el tiempo se agote, llamamos a queue_free() para borrar la cámara

timer.timeout.connect(queue_free)




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



extends CPUParticles3D


# Tiempo en segundos antes de que las partículas se activen.

# Puedes calibrarlo directamente desde el Inspector.

@export var tiempo_espera : float = 5.0


func _ready() -> void:

# Nos aseguramos de que por defecto arranquen apagadas (en false)

emitting = false

# Creamos un temporizador con el tiempo del Inspector

var timer = get_tree().create_timer(tiempo_espera)

# Cuando el tiempo termine, llamamos a la función para encenderlas

timer.timeout.connect(_activar_particulas)


func _activar_particulas() -> void:

# Activamos las partículas poniéndolas en true

emitting = true

print("¡Partículas activadas después de ", tiempo_espera, " segundos!")


func _process(delta: float) -> void:

pass


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


extends Node3D

# Esta variable saldrá en el Inspector. 
# 1.0 es velocidad normal, 2.0 es el doble de rápido, y 0.5 es cámara lenta.
@export var velocidad_animacion : float = 41.0

func _ready() -> void:
# Buscamos el reproductor de animación
var anim = $AnimationPlayer
# Le aplicamos la velocidad que hayas puesto en el Inspector
anim.speed_scale = velocidad_animacion
# Arrancamos la animación del palomo
anim.play("PALOMO")

func _process(delta: float) -> void:
pass
---------------------------------------------------------------------------------------------------------

extends Node3D

# --- Configuración de la Animación ---
@export var velocidad_animacion : float = 41.0

# --- Configuración del Cambio de Escena ---
# Aquí arrastras la escena (.tscn) a la que quieres viajar
@export var proxima_escena : PackedScene

# Tiempo en segundos antes de cambiar de escena (puedes calibrarlo en el Inspector)
@export var tiempo_espera : float = 30.0


func _ready() -> void:
# 1. Configurar y arrancar la animación del palomo
var anim = $AnimationPlayer
if anim:
anim.speed_scale = velocidad_animacion
anim.play("PALOMO")
# 2. Crear el temporizador para cambiar de escena
# Usamos el tiempo que hayas puesto en el Inspector
var timer = get_tree().create_timer(tiempo_espera)
# Cuando termine el tiempo, llamará automáticamente a la función '_al_terminar_tiempo'
timer.timeout.connect(_al_terminar_tiempo)


func _al_terminar_tiempo() -> void:
# Comprobamos si te has acordado de arrastrar una escena al Inspector
if proxima_escena:
# Cambiamos a la nueva escena de forma limpia
get_tree().change_scene_to_packed(proxima_escena)
else:
# Si se te olvidó arrastrar la escena, te avisará en la consola para que no te vuelvas loco
print("¡Aviso! No has arrastrado ninguna escena al Inspector en el hueco 'proxima_escena'.")


func _process(delta: float) -> void:
pass

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

extends Node3D

# Esta variable aparece en el Inspector para cambiar la velocidad cuando quieras
@export var velocidad_giro : float = 31.0

func _process(delta: float) -> void:
# Hace que el nodo gire de forma constante en el eje Y (izquierda a derecha)
# Multiplicamos por delta para que el giro sea suave y no dependa de los FPS
rotate_y(velocidad_giro * delta)
-----------------------------------------------------------------------------------------------------------------
extends Node3D

func _ready() -> void:
$AnimationPlayer.play("CAGANDO")
pass
func _process(delta: float) -> void:


pass