{"id":3364,"date":"2025-10-06T16:11:06","date_gmt":"2025-10-06T14:11:06","guid":{"rendered":"https:\/\/tecnologia.euroinnova.com\/introduccion-a-godot-el-motor-de-videojuegos-gratuito-y-facil-de-usar\/"},"modified":"2025-10-14T11:01:49","modified_gmt":"2025-10-14T09:01:49","slug":"desarrollo-videojuegos-2d-godot-engine","status":"publish","type":"post","link":"https:\/\/tecnologia.euroinnova.com\/en\/desarrollo-videojuegos-2d-godot-engine","title":{"rendered":"Introduction to Godot: the free and easy-to-use video game engine"},"content":{"rendered":"<p><strong>Godot<\/strong> es un motor de desarrollo de videojuegos gratuito, de c\u00f3digo abierto y con una comunidad muy activa que impulsa su evoluci\u00f3n constante. A diferencia de otras plataformas m\u00e1s conocidas, como Unity o Unreal Engine, Godot destaca por su ligereza, rapidez de aprendizaje y enfoque modular basado en nodos. Esto lo convierte en una excelente opci\u00f3n para quienes buscan iniciarse en el desarrollo de videojuegos sin complicaciones innecesarias.<\/p>\n<p>Adem\u00e1s de su arquitectura accesible, Godot permite trabajar de forma totalmente visual en la creaci\u00f3n de escenas y animaciones, sin renunciar al control del c\u00f3digo gracias a su lenguaje <strong>GDScript<\/strong>, inspirado en Python. Esto facilita la experimentaci\u00f3n, el aprendizaje progresivo y el desarrollo de prototipos funcionales desde el primer d\u00eda. Tanto si vienes del mundo del dise\u00f1o, como si est\u00e1s aprendiendo a programar o simplemente quieres dar vida a una idea, Godot te ofrece el entorno ideal para empezar.<\/p>\n<h2 id=\"paso-1-instalacion-y-configuracion-inicial-de-godot\"><strong>Paso 1: Instalaci\u00f3n y configuraci\u00f3n inicial de Godot<\/strong><\/h2>\n<p>Antes de empezar a desarrollar tu videojuego 2D, es fundamental instalar correctamente Godot y preparar el entorno de trabajo. Este paso asegura que tengas todo lo necesario para crear, ejecutar y organizar tus proyectos sin complicaciones.<\/p>\n<h3 id=\"descargar-godot-engine\"><strong>Descargar Godot Engine<\/strong><\/h3>\n<p>Godot no requiere instalaci\u00f3n tradicional. Puedes descargar el ejecutable directamente desde su sitio oficial <a href=\"https:\/\/godotengine.org\/download\/windows\/\" target=\"_blank\" rel=\"noopener\">https:\/\/godotengine.org\/download<\/a> seg\u00fan tu sistema operativo (Windows, macOS o Linux). Basta con descomprimir el archivo ZIP y ejecutar el fichero correspondiente. Para facilitar el acceso, puedes mover el ejecutable a una carpeta accesible o anclarlo a tu barra de tareas.<\/p>\n<h3 id=\"crear-un-nuevo-proyecto\"><strong>Crear un nuevo proyecto<\/strong><\/h3>\n<p>Al iniciar Godot por primera vez, acceder\u00e1s al <strong>Project Manager<\/strong>, desde donde podr\u00e1s gestionar tus proyectos. Para empezar uno nuevo:<\/p>\n<ul>\n<li>Click on <strong>\u00abNew Project\u00bb<\/strong>.<\/li>\n<li>Asigna un nombre a tu juego y elige la carpeta donde se guardar\u00e1n los archivos.<\/li>\n<li>Selecciona <strong>\u00abCreate Folder\u00bb<\/strong> y despu\u00e9s pulsa <strong>\u00abCreate &amp; Edit\u00bb<\/strong>.<\/li>\n<\/ul>\n<p>Se abrir\u00e1 el editor principal de Godot, donde ya puedes comenzar a trabajar. La interfaz se divide en varias pesta\u00f1as (2D, 3D, Script, AssetLib&#8230;) y paneles que organizan jerarqu\u00edas de nodos, propiedades, escenas y archivos. No te preocupes si parece abrumador al principio: a medida que avances, te familiarizar\u00e1s r\u00e1pidamente con cada secci\u00f3n.<\/p>\n<h2 id=\"paso-2-estructura-basica-de-un-juego-en-godot\"><strong>Paso 2: Estructura b\u00e1sica de un juego en Godot<\/strong><\/h2>\n<p>Comprender c\u00f3mo se organiza un proyecto en Godot es esencial para desarrollar de forma eficiente. Godot se basa en un sistema de nodos y escenas que ofrece flexibilidad y modularidad a la hora de construir videojuegos.<\/p>\n<h3 id=\"escenas-y-nodos-los-bloques-fundamentales\"><strong>Escenas y nodos: los bloques fundamentales<\/strong><\/h3>\n<p>En Godot, todo se construye a partir de <strong>nodos<\/strong>. Un nodo representa un elemento funcional: un sprite, un sonido, una animaci\u00f3n, una c\u00e1mara, etc. Estos nodos se agrupan en <strong>escenas<\/strong>, que funcionan como unidades reutilizables de contenido (pueden representar personajes, men\u00fas, niveles o el juego completo).<\/p>\n<p>Cada escena tiene un nodo ra\u00edz, y puede contener una jerarqu\u00eda de nodos hijos. Puedes guardar escenas como plantillas y combinarlas entre s\u00ed, lo que permite una estructura clara y escalable para juegos complejos.<\/p>\n<h3 id=\"tipos-de-nodos-mas-comunes-en-juegos-2d\"><strong>Tipos de nodos m\u00e1s comunes en juegos 2D<\/strong><\/h3>\n<p>Para juegos 2D, los nodos m\u00e1s utilizados suelen ser:<\/p>\n<ul>\n<li>Node2D: base para objetos posicionables en 2D (como sprites o UI).<\/li>\n<li>Sprite2D: muestra una imagen en pantalla.<\/li>\n<li>AnimatedSprite2D: permite usar animaciones cuadro a cuadro.<\/li>\n<li>CollisionShape2D: define formas f\u00edsicas para detectar colisiones.<\/li>\n<li>Area2D: gestiona eventos como colisiones o entradas del jugador.<\/li>\n<li>Camera2D: controla la vista del jugador en escenas m\u00e1s grandes que la pantalla.<\/li>\n<\/ul>\n<p>Usar correctamente esta jerarqu\u00eda te permitir\u00e1 organizar las mec\u00e1nicas de forma modular y mantener tu proyecto limpio y entendible.<\/p>\n<h2 id=\"paso-3-creacion-de-una-escena-principal\"><strong>Paso 3: Creaci\u00f3n de una escena principal<\/strong><\/h2>\n<p>El primer paso pr\u00e1ctico en tu proyecto es construir una escena principal, que actuar\u00e1 como punto de partida del juego. En Godot, esta escena puede contener el entorno, los elementos de interfaz y los nodos que gestionan la l\u00f3gica general.<\/p>\n<h3 id=\"crear-y-guardar-la-escena-principal\"><strong>Crear y guardar la escena principal<\/strong><\/h3>\n<p>Comienza por crear una nueva escena desde el men\u00fa superior (Scene &gt; New Scene). A\u00f1ade un nodo ra\u00edz del tipo Node2D y n\u00f3mbralo Main. Este nodo servir\u00e1 como base sobre la cual se colocar\u00e1n los dem\u00e1s elementos.<\/p>\n<p>Guarda la escena (Scene &gt; Save Scene As\u2026) con el nombre Main.tscn, dentro de una carpeta llamada scenes, para mantener tu proyecto organizado.<\/p>\n<h3 id=\"establecer-la-escena-principal-por-defecto\"><strong>Establecer la escena principal por defecto<\/strong><\/h3>\n<p>Para que Godot ejecute esta escena al iniciar el juego, ve al men\u00fa Project &gt; Project Settings, y dentro de la pesta\u00f1a Application, selecciona la propiedad Main Scene. Pulsa el icono de carpeta y elige Main.tscn.<\/p>\n<p>Esto garantiza que al pulsar el bot\u00f3n de \u00abPlay\u00bb, Godot cargue tu escena principal como punto de entrada del juego.<\/p>\n<h2 id=\"paso-4-agregar-un-personaje-jugable\"><strong>Paso 4: Agregar un personaje jugable<\/strong><\/h2>\n<p>El jugador necesita un personaje que pueda controlar en pantalla. Para ello, crear\u00e1s una nueva escena con un sprite y un componente de colisi\u00f3n, y la convertir\u00e1s en un personaje funcional mediante c\u00f3digo.<\/p>\n<h3 id=\"crear-la-escena-del-personaje\"><strong>Crear la escena del personaje<\/strong><\/h3>\n<p>Crea una nueva escena (Scene &gt; New Scene) y selecciona como nodo ra\u00edz CharacterBody2D. C\u00e1mbiale el nombre a Player.<\/p>\n<p>Dentro de Player, a\u00f1ade los siguientes nodos hijos:<\/p>\n<ul>\n<li>Sprite2D: para mostrar la imagen del personaje.<\/li>\n<li>CollisionShape2D: para definir el \u00e1rea de colisi\u00f3n (elige una forma adecuada como RectangleShape2D o CapsuleShape2D).<\/li>\n<\/ul>\n<p>Asigna una textura al Sprite2D arrastrando una imagen desde el panel FileSystem. Ajusta tambi\u00e9n el tama\u00f1o de la colisi\u00f3n para que coincida con el sprite.<\/p>\n<p>Guarda la escena como Player.tscn en la carpeta scenes.<\/p>\n<h3 id=\"instanciar-el-personaje-en-la-escena-principal\"><strong>Instanciar el personaje en la escena principal<\/strong><\/h3>\n<p>Abre la escena Main.tscn. Desde el panel FileSystem, arrastra la escena Player.tscn dentro del nodo ra\u00edz Main para instanciar al personaje.<\/p>\n<p>Coloca el nodo Player en la posici\u00f3n inicial deseada en la pantalla. De esta forma, al iniciar el juego, el personaje ya estar\u00e1 visible y listo para recibir instrucciones de movimiento.<\/p>\n<h2 id=\"paso-5-programar-el-movimiento-del-personaje\"><strong>Paso 5: Programar el movimiento del personaje<\/strong><\/h2>\n<p>Ahora que el personaje est\u00e1 presente en la escena, es momento de dotarlo de movimiento. Esto se logra mediante un script que detecta la entrada del jugador y actualiza su posici\u00f3n.<\/p>\n<h3 id=\"anadir-el-script-de-control\"><strong>A\u00f1adir el script de control<\/strong><\/h3>\n<p>Selecciona el nodo Player en la escena Player.tscn, haz clic en el icono de a\u00f1adir script (Attach Script) y guarda el archivo como Player.gd. El script debe estar escrito en GDScript, el lenguaje propio de Godot.<\/p>\n<p>En este primer enfoque implementaremos movimiento en 2D utilizando las teclas de direcci\u00f3n o WASD, controlando la velocidad mediante un vector.<\/p>\n<p>Player.gd<\/p>\n<p>extends CharacterBody2D<\/p>\n<p>@export var speed := 200<\/p>\n<p>func _physics_process(delta):<\/p>\n<p>var direction := Vector2.ZERO<\/p>\n<p>if Input.is_action_pressed(\u00abui_right\u00bb):<\/p>\n<p>direction.x += 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_left\u00bb):<\/p>\n<p>direction.x -= 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_down\u00bb):<\/p>\n<p>direction.y += 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_up\u00bb):<\/p>\n<p>direction.y -= 1<\/p>\n<p>self.velocity = direction.normalized() * speed<\/p>\n<p>move_and_slide()<\/p>\n<h3 id=\"ajustar-los-parametros-de-movimiento\"><strong>Ajustar los par\u00e1metros de movimiento<\/strong><\/h3>\n<p>Puedes personalizar la velocidad del personaje ajustando la variable correspondiente. Este movimiento ser\u00e1 fluido y adaptado a la velocidad de fotogramas, gracias al m\u00e9todo _physics_process.<\/p>\n<h2 id=\"paso-6-implementar-deteccion-de-colisiones\"><strong>Paso 6: Implementar detecci\u00f3n de colisiones<\/strong><\/h2>\n<p>Para que el movimiento del personaje sea realista y no atraviese otros elementos del escenario, debemos a\u00f1adir detecci\u00f3n de colisiones. Godot permite esto mediante el uso de nodos CollisionShape2D y cuerpos f\u00edsicos como StaticBody2D o TileMap.<\/p>\n<h3 id=\"anadir-colisiones-al-jugador\"><strong>A\u00f1adir colisiones al jugador<\/strong><\/h3>\n<p>En la escena del jugador (Player.tscn), aseg\u00farate de que exista un nodo hijo CollisionShape2D con una forma (por ejemplo, un c\u00edrculo o rect\u00e1ngulo) que se ajuste al tama\u00f1o del personaje. Esto permitir\u00e1 que el motor detecte los l\u00edmites del personaje y act\u00fae en consecuencia cuando haya colisiones.<\/p>\n<p>Ejemplo de estructura en la escena del jugador<\/p>\n<p>Player (CharacterBody2D)<\/p>\n<p>\u251c\u2500\u2500 Sprite2D<\/p>\n<p>\u251c\u2500\u2500 CollisionShape2D (Shape: CapsuleShape2D o RectangleShape2D)<\/p>\n<p>\u2514\u2500\u2500 Script: Player.gd<\/p>\n<h3 id=\"anadir-colisiones-al-entorno\"><strong>A\u00f1adir colisiones al entorno<\/strong><\/h3>\n<p>Los elementos del escenario que no deben ser atravesados (como paredes, suelos u obst\u00e1culos) deben tener tambi\u00e9n nodos CollisionShape2D. Si est\u00e1s usando un TileMap, puedes definir las colisiones desde el editor de tilesets, asignando una forma a cada tile que lo requiera.<\/p>\n<p>Con estos pasos, el personaje ya no podr\u00e1 atravesar otros objetos s\u00f3lidos en el juego. La f\u00edsica y el sistema de colisiones de Godot se encargar\u00e1n de evitar el solapamiento entre cuerpos.<\/p>\n<h2 id=\"paso-7-anadir-animaciones-al-personaje\"><strong>Paso 7: A\u00f1adir animaciones al personaje<\/strong><\/h2>\n<p>Para mejorar la experiencia visual del juego, es fundamental dotar al personaje de animaciones que reflejen sus acciones (caminar, estar quieto, saltar, etc.). Godot facilita esta tarea mediante el nodo AnimatedSprite2D, que permite gestionar distintas animaciones a partir de hojas de sprites.<\/p>\n<h3 id=\"crear-las-animaciones-en-el-editor\"><strong>Crear las animaciones en el editor<\/strong><\/h3>\n<p>Dentro de la escena del jugador, sustituye el nodo Sprite2D por un AnimatedSprite2D. Carga una hoja de sprites (spritesheet) que contenga las diferentes posiciones del personaje y configura las animaciones desde el panel de animaciones del nodo.<\/p>\n<p>Cada animaci\u00f3n debe tener un nombre \u00fanico (por ejemplo, idle, walk, jump) y estar compuesta por las im\u00e1genes correspondientes a cada fase del movimiento.<\/p>\n<p>Cargar y configurar animaciones en el editor (no es c\u00f3digo ejecutable)<\/p>\n<p>AnimatedSprite2D<\/p>\n<p>\u251c\u2500\u2500 Animation: \u00abidle\u00bb \u2192 Frames: sprite_0, sprite_1<\/p>\n<p>\u251c\u2500\u2500 Animation: \u00abwalk\u00bb \u2192 Frames: sprite_2, sprite_3, sprite_4<\/p>\n<h3 id=\"cambiar-animaciones-desde-el-script\"><strong>Cambiar animaciones desde el script<\/strong><\/h3>\n<p>Para que el personaje reaccione a las entradas del jugador y cambie de animaci\u00f3n din\u00e1micamente, modifica el script del jugador para actualizar la animaci\u00f3n seg\u00fan el estado (en movimiento o parado, por ejemplo). Esto se hace con el m\u00e9todo .play(\u00abnombre_animaci\u00f3n\u00bb) de AnimatedSprite2D.<\/p>\n<p>Player.gd (con animaci\u00f3n)<\/p>\n<p>extends CharacterBody2D<\/p>\n<p>@export var speed := 200<\/p>\n<p>func _physics_process(delta):<\/p>\n<p>var direction := Vector2.ZERO<\/p>\n<p>if Input.is_action_pressed(\u00abui_right\u00bb):<\/p>\n<p>direction.x += 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_left\u00bb):<\/p>\n<p>direction.x -= 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_down\u00bb):<\/p>\n<p>direction.y += 1<\/p>\n<p>if Input.is_action_pressed(\u00abui_up\u00bb):<\/p>\n<p>direction.y -= 1<\/p>\n<p>self.velocity = direction.normalized() * speed<\/p>\n<p>move_and_slide()<\/p>\n<p>if direction != Vector2.ZERO:<\/p>\n<p>$AnimatedSprite2D.play(\u00abwalk\u00bb)<\/p>\n<p>else:<\/p>\n<p>$AnimatedSprite2D.play(\u00abidle\u00bb)<\/p>\n<p>El uso de animaciones no solo aporta dinamismo al juego, sino que tambi\u00e9n mejora la claridad visual para el jugador, indicando qu\u00e9 est\u00e1 ocurriendo en cada momento.<\/p>\n<h2 id=\"paso-8-anadir-obstaculos-y-limites-en-el-escenario\"><strong>Paso 8: A\u00f1adir obst\u00e1culos y l\u00edmites en el escenario<\/strong><\/h2>\n<p>Para que el juego comience a tener desaf\u00edo y estructura, es importante a\u00f1adir elementos como obst\u00e1culos que bloqueen el paso del personaje y l\u00edmites que definan el \u00e1rea jugable. En Godot, esto se hace mediante el uso de nodos de colisi\u00f3n y sprites que representan visualmente esos objetos.<\/p>\n<h3 id=\"colocar-obstaculos-con-colision\"><strong>Colocar obst\u00e1culos con colisi\u00f3n<\/strong><\/h3>\n<p>Puedes a\u00f1adir nodos StaticBody2D para representar objetos est\u00e1ticos que el jugador no puede atravesar (por ejemplo, muros, piedras, plataformas). A cada uno de estos nodos se le debe a\u00f1adir un CollisionShape2D y una forma geom\u00e9trica correspondiente (como un rect\u00e1ngulo o c\u00edrculo).<\/p>\n<p>Tambi\u00e9n puedes utilizar nodos TileMap, que permiten pintar escenarios a partir de tiles o baldosas. Los tiles pueden configurarse para incluir colisiones autom\u00e1ticamente, lo que facilita mucho la creaci\u00f3n de niveles completos.<\/p>\n<p>var muro := StaticBody2D.new()<\/p>\n<p>var colision := CollisionShape2D.new()<\/p>\n<p>var forma := RectangleShape2D.new()<\/p>\n<p>forma.size = Vector2(64, 64)<\/p>\n<p>colision.shape = forma<\/p>\n<p>muro.add_child(colision)<\/p>\n<p>add_child(muro)<\/p>\n<h3 id=\"crear-limites-de-pantalla\"><strong>Crear l\u00edmites de pantalla<\/strong><\/h3>\n<p>Para evitar que el jugador se salga del \u00e1rea del juego, puedes colocar l\u00edmites invisibles alrededor del escenario. Estos pueden ser StaticBody2D con colisi\u00f3n o configuraciones dentro de la c\u00e1mara (como los l\u00edmites de desplazamiento de Camera2D).<\/p>\n<p>Tambi\u00e9n es buena pr\u00e1ctica definir un \u00e1rea de \u00abmuerte\u00bb fuera del nivel, de forma que si el jugador cae por error, se reinicie el nivel o pierda una vida.<\/p>\n<p>Reiniciar nivel al salir del \u00e1rea jugable<\/p>\n<p>func _process(delta):<\/p>\n<p>if global_position.y &gt; 1000:<\/p>\n<p>get_tree().reload_current_scene()<\/p>\n<p>Con estas herramientas, puedes estructurar el escenario de manera que gu\u00ede al jugador, introduzca retos y haga que el juego se sienta m\u00e1s completo y funcional.<\/p>\n<h2 id=\"paso-9-anadir-objetos-recolectables-o-puntos\"><strong>Paso 9: A\u00f1adir objetos recolectables o puntos<\/strong><\/h2>\n<p>Un elemento clave en muchos videojuegos 2D es la posibilidad de recolectar objetos, ya sea para aumentar la puntuaci\u00f3n, desbloquear elementos o avanzar de nivel. En Godot, estos objetos se pueden implementar como nodos individuales con colisi\u00f3n y l\u00f3gica de recogida.<\/p>\n<h3 id=\"crear-objetos-recolectables\"><strong>Crear objetos recolectables<\/strong><\/h3>\n<p>Los recolectables pueden representarse con Area2D, que detectan cu\u00e1ndo el jugador entra en contacto con ellos. A cada Area2D se le puede a\u00f1adir un sprite visual (Sprite2D) y una forma de colisi\u00f3n (CollisionShape2D). Al detectar la colisi\u00f3n, puedes ejecutar una funci\u00f3n para eliminar el objeto y sumar puntos al marcador.<\/p>\n<p>ObjetoRecolectable.gd<\/p>\n<p>extends Area2D<\/p>\n<p>func _on_body_entered(body):<\/p>\n<p>if body.name == \u00abPlayer\u00bb:<\/p>\n<p>queue_free()<\/p>\n<p>get_tree().call_group(\u00abHUD\u00bb, \u00absumar_puntos\u00bb, 10)<\/p>\n<h3 id=\"gestionar-el-sistema-de-puntuacion\"><strong>Gestionar el sistema de puntuaci\u00f3n<\/strong><\/h3>\n<p>Para llevar la cuenta de los puntos, puedes usar una variable global o una se\u00f1al que actualice una etiqueta (Label) en pantalla. Si est\u00e1s utilizando un sistema de escenas m\u00faltiples, puede ser \u00fatil crear un nodo autoload (singleton) para almacenar la puntuaci\u00f3n entre niveles.<\/p>\n<p>Adem\u00e1s, puedes usar se\u00f1ales para comunicar el evento de recogida al HUD y actualizar la puntuaci\u00f3n en tiempo real.<\/p>\n<p>Ejemplo de HUD que muestra la puntuaci\u00f3n<\/p>\n<p>extends CanvasLayer<\/p>\n<p>var puntos = 0<\/p>\n<p>func sumar_puntos(valor):<\/p>\n<p>puntos += valor<\/p>\n<p>$Label.text = str(puntos)<\/p>\n<p>Este sistema b\u00e1sico de recolectables puede escalarse f\u00e1cilmente para incluir \u00edtems especiales, llaves, monedas u objetos con propiedades \u00fanicas, dependiendo de la mec\u00e1nica de tu juego.<\/p>\n<h2 id=\"paso-10-efectos-visuales-y-sonoros-basicos\"><strong>Paso 10: Efectos visuales y sonoros b\u00e1sicos<\/strong><\/h2>\n<p>Los efectos visuales y sonoros mejoran enormemente la experiencia del jugador y aportan claridad a las acciones que ocurren en pantalla. Aunque Godot permite sistemas avanzados de part\u00edculas y audio, para una primera versi\u00f3n funcional puedes incorporar elementos sencillos pero efectivos.<\/p>\n<h3 id=\"anadir-efectos-visuales-simples\"><strong>A\u00f1adir efectos visuales simples<\/strong><\/h3>\n<p>Puedes usar nodos como Particles2D o AnimatedSprite2D para representar explosiones, destellos o impactos. Estos se activan al producirse eventos importantes (por ejemplo, al recolectar un objeto, saltar o recibir da\u00f1o). Los efectos pueden reproducirse en una posici\u00f3n espec\u00edfica y luego eliminarse autom\u00e1ticamente.<\/p>\n<p>Reproducir una animaci\u00f3n de efecto visual<\/p>\n<p>func mostrar_efecto(posicion):<\/p>\n<p>var efecto = preload(\u00abres:\/\/efectos\/impacto.tscn\u00bb).instantiate()<\/p>\n<p>efecto.position = posicion<\/p>\n<p>get_parent().add_child(efecto)<\/p>\n<h3 id=\"incorporar-sonidos-de-juego\"><strong>Incorporar sonidos de juego<\/strong><\/h3>\n<p>Godot permite reproducir sonidos mediante el nodo AudioStreamPlayer. Puedes tener varios nodos de este tipo en cada escena (por ejemplo, uno para efectos, otro para m\u00fasica). Asocia archivos de audio .wav o .ogg a cada uno y ejec\u00fatalos desde el script correspondiente cuando ocurra una acci\u00f3n.<\/p>\n<p>Reproducir un sonido de recolecci\u00f3n<\/p>\n<p>func _on_recolectado():<\/p>\n<p>$AudioStreamPlayer.play()\u00a0 # Solo si es hijo directo<\/p>\n<p>o bien, ajusta la ruta:<\/p>\n<p>get_node(\u00abRuta\/Al\/AudioStreamPlayer\u00bb).play()<\/p>\n<p>Utilizar audio y efectos visuales con moderaci\u00f3n y buen criterio mejora la retroalimentaci\u00f3n del juego sin sobrecargar la escena ni distraer al jugador.<\/p>\n<h2 id=\"paso-11-pantalla-de-inicio-y-reinicio-del-juego\"><strong>Paso 11: Pantalla de inicio y reinicio del juego<\/strong><\/h2>\n<p>Tener una pantalla de inicio mejora la presentaci\u00f3n del juego y permite al jugador comenzar cuando lo desee. Adem\u00e1s, gestionar correctamente el reinicio tras perder o completar una partida es clave para la experiencia de usuario.<\/p>\n<h3 id=\"crear-una-pantalla-de-inicio-sencilla\"><strong>Crear una pantalla de inicio sencilla<\/strong><\/h3>\n<p>Puedes dise\u00f1ar una escena independiente con un fondo, un t\u00edtulo y un bot\u00f3n que al pulsarse cambie a la escena principal del juego. Esta pantalla puede ser tu main_scene inicial al ejecutar el juego.<\/p>\n<p>Cambio de escena desde la pantalla de inicio<\/p>\n<p>func _on_boton_jugar_pressed():<\/p>\n<p>get_tree().change_scene_to_file(\u00abres:\/\/escenas\/nivel_1.tscn\u00bb)<\/p>\n<h3 id=\"reiniciar-el-juego-tras-perder\"><strong>Reiniciar el juego tras perder<\/strong><\/h3>\n<p>Cuando el jugador pierde, puedes mostrar una pantalla o mensaje que ofrezca la opci\u00f3n de reiniciar. Esto puede hacerse mediante un nuevo bot\u00f3n o detectando una pulsaci\u00f3n de tecla, y cargando nuevamente la escena actual.<\/p>\n<p>Reiniciar juego con bot\u00f3n<\/p>\n<p>func reiniciar_juego():<\/p>\n<p>get_tree().reload_current_scene()<\/p>\n<p>Tener un flujo de juego bien definido (inicio \u2192 partida \u2192 final \u2192 reinicio) facilita la navegaci\u00f3n y mejora la sensaci\u00f3n de cierre o reintento para el jugador.<\/p>\n<h2 id=\"paso-12-exportar-tu-juego-para-compartirlo\"><strong>Paso 12: Exportar tu juego para compartirlo<\/strong><\/h2>\n<p>Una vez que tu juego est\u00e1 terminado y probado, llega el momento de exportarlo para que otras personas puedan jugarlo. Godot facilita este proceso ofreciendo m\u00faltiples opciones de exportaci\u00f3n para distintas plataformas.<\/p>\n<h3 id=\"configurar-la-plantilla-de-exportacion\"><strong>Configurar la plantilla de exportaci\u00f3n<\/strong><\/h3>\n<p>Antes de exportar, aseg\u00farate de tener instaladas las <strong>plantillas de exportaci\u00f3n<\/strong> adecuadas para tu versi\u00f3n de Godot. Estas plantillas permiten compilar el juego para sistemas como Windows, Linux, macOS, HTML5 o Android.<\/p>\n<p>Puedes descargarlas desde el men\u00fa principal:<\/p>\n<h3 id=\"editor-%e2%86%92-administrador-de-plantillas-de-exportacion-%e2%86%92-descargar-e-instalar\"><strong>Editor \u2192 Administrador de plantillas de exportaci\u00f3n \u2192 Descargar e instalar<\/strong><\/h3>\n<p>Una vez instaladas, ya puedes acceder al men\u00fa de exportaci\u00f3n.<\/p>\n<p>Ruta: Editor \u2192 Proyecto \u2192 Exportar<\/p>\n<p>A\u00f1adir una nueva configuraci\u00f3n para la plataforma deseada<\/p>\n<h3 id=\"generar-el-ejecutable-o-archivo-web\"><strong>Generar el ejecutable o archivo web<\/strong><\/h3>\n<p>Desde el men\u00fa de exportaci\u00f3n, elige la plataforma deseada (por ejemplo, Windows Desktop o HTML5) y define las opciones b\u00e1sicas como nombre del archivo, icono del juego y directorio de salida. Luego pulsa <strong>Exportar proyecto<\/strong> y guarda el archivo final que puedes compartir.<\/p>\n<p>Para HTML5, Godot genera una carpeta con archivos .html, .wasm y .pck, que puedes subir f\u00e1cilmente a servicios como <a href=\"http:\/\/Itch.io\" target=\"_blank\" rel=\"noopener\">Itch.io<\/a>, Netlify o GitHub Pages.<\/p>\n<p>Personaliza las opciones de exportaci\u00f3n y guarda el ejecutable final<\/p>\n<p>Para Windows: archivo .exe<\/p>\n<p>Para Web: carpeta con index.html + .wasm + .pck<\/p>\n<p>Exportar correctamente tu proyecto asegura que pueda ser disfrutado por otros sin necesidad de tener Godot instalado.<\/p>\n<h2 id=\"conclusiones\"><strong>Conclusions<\/strong><\/h2>\n<p>Crear videojuegos 2D con Godot Engine es una experiencia enriquecedora tanto para quienes se inician en el desarrollo como para quienes desean explorar una alternativa potente y gratuita. Esta gu\u00eda ha recorrido paso a paso los fundamentos necesarios para dar vida a un proyecto desde cero, destacando las ventajas de un motor open source que pone la creatividad por delante de la complejidad t\u00e9cnica.<\/p>\n<p>Dominar los aspectos b\u00e1sicos \u2014como la interfaz, los nodos, las escenas, los scripts y el sistema de f\u00edsicas\u2014 permite sentar una base s\u00f3lida sobre la que construir proyectos m\u00e1s ambiciosos. Adem\u00e1s, la flexibilidad de Godot y su comunidad activa lo convierten en una herramienta con gran proyecci\u00f3n a futuro, ideal para prototipado, aprendizaje o publicaci\u00f3n de juegos independientes.<\/p>\n<p>El siguiente paso es claro: practicar, experimentar y seguir explorando las muchas posibilidades que ofrece el motor. A medida que ganes confianza, podr\u00e1s integrar nuevos elementos como animaciones complejas, sonido, niveles m\u00faltiples, men\u00fas interactivos o integraci\u00f3n con servicios online. El l\u00edmite lo pone tu imaginaci\u00f3n.<\/p>\n<p>Con esfuerzo constante y curiosidad, esta primera aproximaci\u00f3n puede ser el punto de partida de una carrera creativa en el mundo del desarrollo de videojuegos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Godot es un motor de desarrollo de videojuegos gratuito, de c\u00f3digo abierto y con una comunidad muy activa que impulsa [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1080,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"acf":[],"_links":{"self":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/comments?post=3364"}],"version-history":[{"count":0,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3364\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media\/1080"}],"wp:attachment":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media?parent=3364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/categories?post=3364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/tags?post=3364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}