domingo, 1 de noviembre de 2026

Año 2026 a fecha de 01-11-2026, panorama del desarrollo del videojuego profesional e indie; opinion de la IA;

 EN STRATOS HAY POCAS OFERTAS DE TRABAJO SECTOR DE VIDEOJUEGOS A BAJADO EL TEMA?

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Sí, totalmente. No es una impresión tuya: el sector del desarrollo de videojuegos lleva unos años pasando por una época bastante complicada y de contracción, tanto a nivel internacional como en España, lo que se nota muchísimo en portales especializados de empleo como Stratos.


Hay varios motivos claros detrás de esta situación:

  • La resaca y el ajuste post-pandemia: Durante los años de confinamiento, el consumo de videojuegos se disparó y las grandes empresas invirtieron a lo loco. Cuando el ritmo se normalizó, vino una corrección muy brusca en cadena.

  • La crisis global de contrataciones y despidos: A nivel internacional, gigantes del sector llevan años encadenando recortes de plantilla masivos y cierres de estudios. Eso ha provocado que muchísimos profesionales sénior y equipos enteros se queden en la calle, saturando el mercado y haciendo que las ofertas para puestos nuevos escaseen.

  • El tejido empresarial en España: El sector en España se compone mayoritariamente de microestudios, estudios independientes muy pequeños y autónomos (la gran mayoría de empresas tienen menos de cinco trabajadores). Muchas de estas pequeñas estructuras tiran de colaboraciones puntuales, trabajo remoto o proyectos autogestionados (como los indies que a veces buscan apoyos puntuales en foros como Stratos), pero les cuesta mucho conseguir financiación estable o ayudas externas, lo que frena la contratación fija.

Por eso, ver pocas ofertas en tablones como Stratos refleja esa realidad: hay mucho talento y mucha gente intentando sacar adelante proyectos por su cuenta (lo cual tiene muchísimo mérito), pero el mercado laboral formal para fichar personal sufre bastante.

¿Estás siguiendo algún proyecto propio ahora mismo con el motor o trasteando con algo en paralelo a tus caminatas y otros temas?:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Y PARA MAS INRI.......CENSURAS DE PROCESADORES DE PAGO:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Ese es uno de los mayores quebraderos de cabeza y grandes abusos de poder en la industria del videojuego independiente y la creación digital actual.


Lo que da más rabia es que ni siquiera son los propios gobiernos ni las leyes de los países las que imponen esa censura: son los monopolios de las pasarelas de pago (Visa, Mastercard, PayPal, Stripe) imponiendo sus propias normas morales corporativas a nivel global.

Si a una entidad financiera le da la gana decir que no quiere procesar transacciones de cierto tipo de juegos, o te adaptas a sus normas o te cortan el grifo de los cobros. Como sin pasarela de pago una plataforma no puede cobrar ni pagar a los creadores, no les queda otra que agachar la cabeza.

Las vías por donde esta censura financiera está ahogando a los desarrolladores independientes incluyen:

  1. El tijeretazo en plataformas indie (Itch.io y Steam): A mediados de 2025, plataformas como Itch.io o Steam tuvieron que desindexar o eliminar miles de juegos de golpe porque las pasarelas de pago amenazaron con retirarles el servicio si albergaban contenido maduro, gore extremo, o temáticas que no fueran "para todos los públicos" según sus directrices.

  2. El "efecto arrastre" sobre la creatividad y el terror: Aunque la excusa de los bancos suele ser el contenido adulto o explícito, la realidad es que el filtro es tan destructivo y automatizado que acaba barriendo juegos de terror psicológico, violencia gore, comedia negra o temáticas oscuras de todo tipo. Los desarrolladores se ven obligados a autocensurarse por miedo a que Stripe o PayPal les congelen la cuenta con los ingresos de meses dentro.

  3. Pérdida de cuentas sin derecho a réplica: Si vendes un proyecto o recibes apoyos directos (por ejemplo, en tiendas propias o plataformas de mecenazgo) y la pasarela decide unilateralmente que tu juego "incumple sus términos de riesgo", te cierran la cuenta de cobro al instante, retienen los fondos durante meses y te dejan totalmente indefenso.

Al final, cuatro gigantes financieros actúan como juez, parte y censores del arte y del software, obligando al creador independiente a jugar siempre con miedo o a buscar alternativas fuera del circuito convencional.




sábado, 31 de octubre de 2026

A wolf in the bathroom:

 




miércoles, 28 de octubre de 2026

Un agradecimiento a mi comunidad de visitantes al blog; 28-10-2026;

 



Un agradecimiento a todas las personas que visitan mi blog y prueban los juegos, llevo como 10 años trabajandolo y tiene ya 233.923 visitas totales, hoy5.341 ,Ayer1.201,  Este mes53.321, Último mes13.035.








martes, 27 de octubre de 2026

Maravilloso GDScript para manejar una camara fija en Godot 4.7 ; en 3d;

 extends Camera3D


@export_group("Movimiento y Cámara")

@export var speed: float = 5.0

@export var mouse_sensitivity: float = 0.003


@export_group("Zoom / Enfoque (Rueda del Ratón)")

@export var zoom_speed: float = 3.0

@export var min_fov: float = 10.0   # Enfoque máximo (teleobjetivo)

@export var max_fov: float = 120.0   # Enfoque mínimo (gran angular)


@export_group("Límites de Desplazamiento (Metros)")

@export var limit_forward: float = 10.0    # Máximo W (Adelante)

@export var limit_backward: float = 5.0    # Máximo S (Atrás)

@export var limit_left: float = 8.0        # Máximo A (Izquierda)

@export var limit_right: float = 8.0       # Máximo D (Derecha)


var rotation_x: float = 0.0

var start_position: Vector3


func _ready() -> void:

Input.mouse_mode = Input.MOUSE_MODE_CAPTURED

start_position = global_position


func _unhandled_input(event: InputEvent) -> void:

if event.is_action_pressed("ui_cancel") or (event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE):

get_tree().quit()


# Control de la vista con el movimiento del ratón

if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:

rotate_y(-event.relative.x * mouse_sensitivity)

rotation_x -= event.relative.y * mouse_sensitivity

rotation_x = clamp(rotation_x, deg_to_rad(-89.0), deg_to_rad(89.0))

rotation.x = rotation_x


# Control del zoom / enfoque con la rueda del ratón

if event is InputEventMouseButton and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:

if event.pressed:

if event.button_index == MOUSE_BUTTON_WHEEL_UP:

fov = clamp(fov - zoom_speed, min_fov, max_fov)

elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:

fov = clamp(fov + zoom_speed, min_fov, max_fov)


func _process(delta: float) -> void:

var input_dir := Vector3.ZERO


if Input.is_key_pressed(KEY_W):

input_dir.z -= 1  # W: Adelante

if Input.is_key_pressed(KEY_S):

input_dir.z += 1  # S: Atrás

if Input.is_key_pressed(KEY_A):

input_dir.x -= 1  # A: Izquierda

if Input.is_key_pressed(KEY_D):

input_dir.x += 1  # D: Derecha


if input_dir != Vector3.ZERO:

input_dir = input_dir.normalized()


# Movemos en el plano horizontal para no volar al mirar arriba/abajo

var forward := -global_transform.basis.z

forward.y = 0

forward = forward.normalized()


var right := global_transform.basis.x

right.y = 0

right = right.normalized()


# Calculamos el intento de movimiento

var movement := (right * input_dir.x + forward * -input_dir.z) * speed * delta

var target_position := global_position + movement


# Medimos la distancia acumulada desde el origen

var offset := target_position - start_position


# Aplicamos los 4 límites independientes (W, S, A, D)

offset.x = clamp(offset.x, -limit_left, limit_right)

offset.z = clamp(offset.z, -limit_forward, limit_backward)


# Asignamos la posición corregida manteniendo la altura fija (Y)

global_position = Vector3(start_position.x + offset.x, start_position.y, start_position.z + offset.z)



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

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

Explicacion, caracteristicas: Enfoque  desde rueda del mouse, giros de 360 grador en eje -y- limitaciones de avance por escenario , con teclas -w-a-s-d-.....todo calibrado desde el inspector.




martes, 20 de octubre de 2026

GDScript para Godot 3d 4.7; abre una puerta y emite su sonido;

 extends Area3D


@export var velocidad: float = 2.0

@export var distancia_x: float = 22222.5


# Rutas exactas basadas en tu árbol de nodos

@onready var mesh_instance: MeshInstance3D = $CollisionShape3D/MeshInstance3D

@onready var audio_player: AudioStreamPlayer3D = $CollisionShape3D/MeshInstance3D/AudioStreamPlayer3D


var posicion_inicial_x: float = 0.0

var moviendo: bool = false


func _ready() -> void:

if mesh_instance:

posicion_inicial_x = mesh_instance.position.x

area_entered.connect(_on_area_entered)


func _process(delta: float) -> void:

if not mesh_instance:

return

var objetivo_x = posicion_inicial_x + distancia_x if moviendo else posicion_inicial_x

mesh_instance.position.x = move_toward(mesh_instance.position.x, objetivo_x, velocidad * delta)


func _on_area_entered(area: Area3D) -> void:

if not moviendo:

moviendo = true

# Reproducimos el sonido 3D de forma segura

if audio_player and audio_player.stream and not audio_player.playing:

audio_player.play()