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.

Creando un nuevo proyecto

Hagamos que estos conceptos abstractos sean más concretos con un ejemplo. Siguiendo una larga tradición en tutoriales, comenzaremos con un proyecto de «Hola mundo». Esto nos introducirá a usar el editor.

Si ejecuta Godot fuera de un proyecto, aparece el Administrador de proyectos. Esto ayuda a los desarrolladores a administrar sus proyectos.

../../_images/project_manager.png

To create a new project, click the «New Project» option. Choose and create a path for the project and specify the project name.

You can also select the rendering backend at this stage (OpenGL ES 3.0 or OpenGL ES 2.0). The advantages and disadvantages of each are listed to help you choose, and you can refer to Diferencias entre GLES2 y GLES3 for more details. Note that you can change the backend from the project settings if you change your mind later on. For this tutorial either backend is fine.

../../_images/create_new_project.png

Editor

Una vez que hayas creado el «Proyecto nuevo», ábrelo. Esto abrirá el editor de Godot:

../../_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.

To do this we need to add a Label node. Press the «Add Child Node» button at the top left of the scene dock (the icon represents a plus symbol). This button is the main way to add new nodes to a scene, and will always add the chosen node as a child of the currently selected node (or, in an empty scene, as the «root» node).

Nota

In an empty scene (without root node), the scene dock shows several options to quickly add a root node to the scene. «2D Scene» adds a Node2D node, «3D Scene» adds a Spatial node, «User Interface» adds a Control node, and «Custom Node» which lets you select any node (so it is equivalent to pressing the «Add Child Node» button). You can also press the star-shaped icon to toggle the display of your favorited nodes.

Note that these presets are here for convenience and are not mandatory for the different types of scenes. Not every 3D scene needs a Spatial node as its root node, likewise not every GUI or 2D scene needs a Control node or Node2D as their root node.

Now, to add a label node to this scene you can click on the Custom Node button or the Add Node button at the top. In scenes that aren’t empty you use the add node button to create every child node.

../../_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.

El nodo aparece en el editor del árbol de escenas (panel situado en la esquina superior derecha), y las propiedades de la Label aparecerán en el Inspector (panel situado en la esquina inferior derecha).

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

../../_images/hw.png

Ok, todo está listo para ejecutar la escena. Presione el botón reproducir escena en el centro de la barra superior derecha (o presione 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

And here’s when something funny happens. The file dialog is a special file dialog, and only allows you to save inside the project. The project root is res:// which means «resource path». This means that files can only be saved inside the project. For the future, when doing file operations in Godot, remember that res:// is the resource path, and no matter the platform or install location, it is the way to locate where resource files are from inside the game.

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…