Instanciar (continuación)

Resumen

Instanciar tiene mucha utilidad. A primera vista, con instanciar tienes:

  • La habilidad de dividir escenas y hacerlas más fácil de manejar.
  • Una herramienta para gestionar y editar múltiples instancias de nodo a la vez.
  • Una manera de organizar flujos de juego complejos, incluso para UI (en godot, los elementos UI son nodos también).

Lenguaje de diseño

Uno de los puntos fuertes de la instanciación de escenas, es que funciona como un excelente lenguaje de diseño. Es lo que distingue a Godot de otros motores. Godot se diseñó desde su base en torno a este concepto.

Cuando haces juegos con Godot, el enfoque recomendado es descartar los patrones de diseño comunes, como MVC o diagramas de Entidad-Relación, en su lugar piensa en tus escenas en un modo más natural. Comienza imaginando los elementos visibles de tu juego, los que pueden ser nombrados no sólo por un programador, sino por cualquiera.

Por ejemplo, aquí hay un ejemplo sencillo de cómo puede verse un juego de disparos:

../../_images/shooter_instancing.png

Puedes crear un diagrama como este para casi cualquier tipo de juego. Escribe las partes del juego que puedes visualizar y luego añade flechas para representar la propiedad de un componente por otro.

Cuando tengas un diagrama como este, el proceso recomendado para hacer un juego es crear una escena para cada elemento listado en el diagrama. Usaras instanciación (ya sea por código o directamente en el editor) para las relaciones de propiedad.

Gran parte del tiempo dedicado a programar juegos (o software en general) se destina a diseñar una arquitectura y ajustar componentes del juego a esa arquitectura. Diseñar en base a escenas reemplaza ese enfoque y hace el desarrollo mucho más rápido y directo, permitiéndote concentrarte en la lógica misma del juego. Como la mayoría de los componentes se relacionan directamente con una escena, usar un diseño basado en instanciación de escenas implica muy poco código arquitectural adicional.

Veamos un ejemplo, un poco más complejo, de un juego tipo mundo abierto con muchos recursos y elementos anidados:

../../_images/openworld_instancing.png

Observa el elemento de la habitación (room). Digamos que empezamos allí. Podríamos hacer un par de escenas de habitación diferentes, con diferentes disposiciones de muebles (también escenas) en ellas. Más tarde, podríamos hacer una escena de casa (house), conectando habitaciones para conformar su interior.

Entonces, podríamos crear una escena de ciudadela (citadel), la cual está compuesta por muchas casas instanciadas. Entonces, podríamos empezar a trabajar en el terreno del mapa del mundo, añadiendo la ciudadela a él.

Más adelante, podrímos crear escenas que representasen guardias (y otros NPCs) y también añadirlos a la ciudadela. Como resultado, se añadirían indirectamente al mundo del juego en general.

Con Godot, es fácil iterar en tu juego de esta manera, ya que todo lo que necesitas hacer es crear e instanciar más escenas. Además, la interfaz UI del editor está diseñada para que sea fácil de usar tanto para programadores como para no programadores. Un proceso típico de desarrollo en equipo puede involucrar artistas 2D o 3D, diseñadores de nivel, diseñadores de juegos y animadores, todos trabajando con la interfaz del editor.

¡Sobrecarga de información!

Esto ha sido mucha información de alto nivel que ha caído sobre ti a la vez. Sin embargo, la parte importante de este tutorial fue crear una conciencia de cómo se usan las escenas y la instanciación en proyectos reales.

Todo lo que se aborda aquí se convertirá en algo natural una vez que empieces a crear juegos y a poner en práctica estos conceptos. Por ahora, no te preocupes demasiado ¡y pasa al siguiente tutorial!