This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this tutorial in English
En este proyecto de ejemplo, que puedes abrir desde el editor o descargar desde GitHub, mostramos un método para crear mapas RPG muy grandes en Defold. El diseño se basa en las siguientes suposiciones:
Primero, ejecuta el ejemplo y camina por el gran mundo de pantallas 3x3 para familiarizarte con la configuración del ejemplo. Controlas el personaje con las teclas de flecha.
Abre “/main/main.collection” para ver la colección bootstrap de este ejemplo.

La colección principal contiene el objeto de juego del personaje del jugador, controlado en 8 direcciones con los botones de flecha, y un segundo objeto de juego llamado “game” que controla el flujo del juego. El objeto “game” consta de un script y una collection factory para cada pantalla del juego. Las factories se nombran según el esquema de nombres de la cuadrícula de pantallas.
El script “/main/game.script” rastrea en qué pantalla se encuentra actualmente el jugador. El script también reacciona a un mensaje personalizado llamado “load_screen”. Este mensaje carga una nueva pantalla y la intercambia con la pantalla actual en la dirección en que se mueve el héroe. Inicialmente, una pantalla se carga en el centro de la pantalla y no hay otra pantalla con la que intercambiar lugar.
El héroe está controlado por el script “/main/hero.script”. El script comprueba si el objeto de juego del héroe se mueve más allá de una línea superior, inferior, izquierda o derecha cerca del borde de la pantalla:

factory.create() en el componente collectionfactory correcto. El contenido de la colección se posiciona fuera de la pantalla.Todo esto ocurre dentro de un segundo, así que la transición es suave y no disruptiva.
Cada pantalla en el mundo del juego se construye dentro de una colección separada que contiene el tilemap, el objeto colisionador y otros objetos de juego que son únicos de la pantalla. Para facilitar la gestión y carga de las pantallas, las colecciones de pantalla se nombran según un esquema sencillo:

Cada colección de pantalla se nombra según su posición en la cuadrícula del mundo. El primer número es la posición X de la cuadrícula y el segundo es la posición Y de la cuadrícula.
En la vista Assets, navega hasta la colección “/main/screens/0-0.collection” y ábrela; describe la pantalla en la esquina inferior izquierda del mapa:

Observa que hay un objeto de juego llamado “root” que es el padre de todo el contenido de la pantalla. Esta es otra convención usada en el ejemplo y sirve para un propósito muy importante: cuando una pantalla se trae a la vista, solo hay que mover el objeto de juego “root”. Todos los objetos hijos se mueven automáticamente junto con el padre raíz. Si hay objetos de juego especiales en una pantalla, también pueden animarse libremente, ya que su movimiento es relativo al padre raíz. Cuando la pantalla se desplaza hacia dentro o hacia fuera, estos hijos se mueven con la pantalla. Solo se necesita código especial si un objeto debe moverse entre pantallas.
Las abejas en la pantalla 0-1 son demostraciones simples de esta idea:

Cada pantalla tiene su propio tilemap que se puede editar en el editor de tilemap integrado. Sin embargo, el principal inconveniente de editar cada pantalla de forma aislada es que no es posible ver fácilmente cómo se conecta con sus pantallas adyacentes, que es un aspecto importante para crear continuidad a través del mundo del juego.
Por esta razón, se creó una colección especial. Abre “/main/map/test_layout.collection” para ver esta colección de layout de prueba del mundo:

El único propósito de esta colección es usarse como herramienta de edición durante el desarrollo. Editar una pantalla específica lado a lado con la colección de layout de prueba te da contexto para la pantalla en la que estás trabajando actualmente y hace que el proceso de edición sea mucho más agradable:

Cualquier edición en el tilemap de la pantalla (aquí en el panel derecho) se refleja inmediatamente en la colección de prueba (en el panel izquierdo). Ten en cuenta también que la colección de layout de prueba no se agrega a la jerarquía estática, por lo que se excluye automáticamente de todas las builds.
Como has visto, este ejemplo está construido según restricciones específicas respecto al mundo del juego y cómo el héroe del juego lo atraviesa. Si tu juego tiene requisitos diferentes, probablemente necesites encontrar una solución distinta. Por ejemplo, si tu juego exige que la cámara se mueva de forma continua sobre el mapa del mundo, necesitas una manera diferente de dividir tu contenido, un mecanismo de carga diferente y también herramientas diferentes que te ayuden a crear tu mundo de juego.
Esto concluye el recorrido del ejemplo de mapa RPG. Como siempre, eres libre de usar el contenido del ejemplo de cualquier forma que consideres adecuada. Para aprender más sobre Defold, revisa nuestras páginas de documentación para más ejemplos, tutoriales, manuales y documentación de la API.
Si tienes problemas o preguntas, visita nuestro foro.
¡Feliz Defolding!