Escenas y nodos

Introducción

../../_images/chef.png

Imagina por un segundo que no eres un desarrollador de juegos. En su lugar, eres un chef! Cambia tu atuendo de hipster por un gorro y una chaqueta de botones dobles. Ahora, en lugar de hacer juegos, creas nuevas y deliciosas recetas para tus invitados.

Ahora, ¿Cómo hace un chef una receta? Las recetas se dividen en dos secciones: La primera tiene los ingredientes y la segunda tiene las instrucciones de como prepararla. De esta manera, cualquiera puede seguir la receta y saborear tu magnifica creación.

Hacer juegos en Godot es más o menos de la misma manera. Usar el motor es como estar en una cocina. En esta cocina, los nodos son como un frigorífico lleno de ingredientes frescos para cocinar.

Hay muchos tipos de nodos. Algunos muestran imágenes, otros reproducen sonido, otros nodos muestran modelos en 3D, etc. Hay docenas de ellos.

Nodos

Pero comencemos con lo básico. Los nodos son elementos fundamentales para crear un juego. Como se mencionó anteriormente, un nodo puede realizar una variedad de funciones especializadas. Sin embargo, cualquier nodo utilizado siempre tiene los siguientes atributos:

  • Tiene un nombre.
  • Tiene propiedades editables.
  • Puede recibir una llamada a una función (callback) para procesar cada fotograma.
  • Se puede extender (para tener más funciones).
  • Se puede añadir a otro nodo como un hijo.
../../_images/tree.png

Lo último es importante. Los nodos pueden tener otros como hijos. Cuando se disponen de esta manera, los nodos se convierten en un árbol.

En Godot, la capacidad de organizar nodos de esta manera crea una poderosa herramienta para organizar proyectos. Como los diferentes nodos tienen diferentes funciones, combinarlos permite la creación de funciones más complejas.

No te preocupes si esto aún no te hace clic. Continuaremos explorando esto en las siguientes secciones. El hecho más importante para recordar por ahora es que los nodos existen y se pueden organizar de esta manera.

Escenas

../../_images/scene_tree_example.png

Ahora que se ha definido el concepto de nodos, el siguiente paso lógico es explicar qué es una escena.

Una escena se compone de un grupo de nodos organizados jerárquicamente (en forma de árbol). Además, una escena:

  • siempre tiene un solo nodo raíz.
  • Se puede guardar en disco y cargarse de nuevo.
  • Se puede Instanciar (explicado más adelante).

Ejecutar un juego significa ejecutar una escena. Un proyecto puede contener varias escenas, pero para que comience el juego, se debe seleccionar una de ellas como la escena principal.

Básicamente, el editor de Godot es un editor de escena. Tiene muchas herramientas para editar escenas 2D y 3D, así como también interfaces de usuario, pero el editor se basa en el concepto de edición de una escena y los nodos que la componen.

Editor

Abre el proyecto que creaste en Introducción al editor de Godot, o crea uno nuevo. El editor de Godot se abrirá.

../../_images/empty_editor.png

Como se mencionó anteriormente, hacer juegos en Godot es como estar en una cocina, así que vamos a abrir el refigerador y agregar algunos nodos nuevos al proyecto. Comenzaremos con un mensaje «¡Hola mundo!» que pondremos en la pantalla.

Para hacer esto, necesita añadir un nodo Label. Presiona el botón «Añadir nodo hijo» en la esquina superior izquierda de la ventana «Escenas» (el icono representa un símbolo +). Este botón es el modo principal de añadir nodos a una escena, y siempre agregará el nodo elegido como hijo del nodo seleccionado actualmente (o, en una escena vacía, como el nodo «raíz»).

Nota

En una escena vacía (sin nodo raíz), la ventana «Escenas» muestra varias opciones para agregar rápidamente un nodo raíz a la escena. «Escena 2D» agrega un nodo Node2D, «Escena 3D» agrega un nodo espacial, «Interfaz de usuario» agrega un nodo de Control y «Nodo personalizado» le permite seleccionar cualquier nodo (por lo que es equivalente a presionar el botón + o «Añadir nodo hijo»). También puede presionar el icono en forma de estrella para seleccionar entre sus nodos favoritos.

Tenga en cuenta que estos ajustes preestablecidos están aquí por conveniencia y no son obligatorios para los diferentes tipos de escenas. No todas las escenas 3D necesitan un nodo espacial como nodo raíz, del mismo modo, no todas las escenas GUI o 2D necesitan un nodo de control o Node2D como nodo raíz.

Ahora, para agregar un nodo de tipo Label a esta escena, puede hacer clic en el botón Nodo personalizado o en el botón Añadir nodo hijo en la parte superior. En las escenas que no están vacías, use el botón Agregar nodo hijo para crear cada nodo secundario.

../../_images/newnode_button.png

Esto abrirá el cuadro de diálogo Crear nuevo nodo, que muestra la larga lista de nodos que se pueden crear:

../../_images/node_classes.png

Desde aquí, primero selecciona el nodo «Label». La forma más rápida es buscandolo:

../../_images/node_search_label.png

Y finalmente, ¡crea el nodo Label! Suceden muchas cosas cuando se pulsa Crear:

../../_images/editor_with_label.png

En primer lugar, la escena cambia al editor 2D (porque Label es un tipo de nodo 2D), y la etiqueta aparece, seleccionada, en la esquina superior izquierda de la ventana de visualización.

The node appears in the scene tree editor in the Scene dock, and the label properties appear in the Inspector dock.

El siguiente paso será cambiar la propiedad «Text» de la etiqueta. Vamos a cambiarlo por «¡Hola Mundo!»:

../../_images/hw.png

Ok, everything’s ready to run the scene! Press the PLAY SCENE Button on the top bar (or hit F6):

../../_images/playscene.png

y….. Ups!.

../../_images/neversaved.png

Las escenas se deben guardar antes de ser ejecutadas, así que guarda la escena con un nombre parecido a Hello.tscn en Scene -> Save:

../../_images/save_scene.png

Y aquí es cuando sucede lo divertido. La ventana de archivo, es una ventana especial que sólo permite escribir dentro del proyecto. La raíz del proyecto es «res://» lo que significa «ruta de recursos». Esto quiere decir que los archivos se podrán guardar solamente dentro del proyecto. Desde ahora, cuando se hagan operaciones con archivos en Godot, recuerde que «res://» es la ruta de recursos y no importa la plataforma o lugar de instalación, es el modo de ubicar dónde están los archivos de recursos dentro del juego.

Después de guardar la escena y presionar reproducir escena de nuevo, la demo «¡Hola Mundo!» se ejecutará finalmente:

../../_images/helloworld.png

¡Éxito!

Nota

Si esto no funciona de inmediato y tiene una pantalla hiDPI en al menos uno de sus monitores, vaya a Project → Project Settings → Display → Window y habilite Allow Hidpi en Dpi.

Configurando el proyecto

Es momento de configurar el proyecto. Ahora, el único modo de ejecutar algo es hacerlo en la escena actual. Sin embargo, los proyectos pueden llegar a tener varias escenas, así que una de ellas se debe asignar como la escena principal. Esta es la escena que se cargará cada vez que se ejecute el proyecto.

Estas configuraciones se guardan en el archivo project.godot, que es un archivo de texto plano en formato win.ini (para editarlo fácilmente). Hay docenas de configuraciones que puedes cambiar en este archivo para modificar cómo se ejecuta el proyecto. Para simplificar este proceso, Godot provee una ventana de diálogo de ajustes de proyecto, la que hace de interfaz para editar el archivo project.godot.

Para acceder al diálogo, seleccione Projecto -> Ajustes del Proyecto. Pruébalo ahora.

Una vez que se abre la ventana, seleccionemos una escena principal. Localice la propiedad «Application/Run/Main Scene» y haga clic en ella para seleccionar «Hola.tscn».

../../_images/main_scene.png

Ahora con éste cambio, puedes presionar el botón normal de reproducir (o F5), esta escena se ejecutará no importando qué escena es la que está siendo editada.

La ventana de diálogo de ajustes de proyecto, provee muchas opciones que se pueden guardar en un archivo project.godot y muestra sus valores por defecto. Si cambias un valor, se añade una marca a la izquierda del nombre. Esto significa que la propiedad se guardará en el archivo project.godot y se recordará .

Como apunte adicional, también es posible añadir opciones de configuración personalizadas y leerlas en tiempo de ejecución usando el singleton ProjectSettings .

Continuará…

Este turorial habla sobre «escenas y nodos», pero hasta ahora hemos tenido solo una escena y un nodo. No te preocupes, el siguiente tutorial ampliará eso…