Introducción a Defold para crear aplicaciones y juegos móviles
Ha habido varias predicciones sobre el futuro de las aplicaciones, una de ellas fue que todo sería solo HTML5. O que un idioma dominará. Lo que tenemos ahora es de hecho Muchos destinos de aplicaciones a los que puede dirigirse a la mayoría de las plataformas en las que construye según sea necesario. El enfoque se ha alejado de un solo lenguaje o plataforma a los métodos y procesos más comunes utilizados para expresar los requisitos del diseñador y manipular las interfaces gráficas de usuario (GUI).
disminuir es una nueva entrada en el mercado de los creadores de juegos, que promete una creación sencilla a partir de un único IDE de editor/creador: “Defold se creó desde cero como un motor 3D con un enfoque especial en herramientas de primera clase para crear juegos 2D. Cree sus juegos con un sistema basado en componentes para máximas prestaciones y modularidad.
Dos cosas importantes aquí son centrarse en los juegos 2D e ir directamente a un sistema basado en componentes. Entonces, mientras el motor administra los objetos gráficos, el desarrollador escribe el comportamiento. Así es como funcionan todas las principales plataformas de juego, aunque todo el mundo es consciente de la relativa complejidad de soledad o Irreal. Mirar un motor más simple no solo es una buena manera de entrar en ese mundo, sino que también existe la sospecha de que la IA funcionaría más cómodamente en un mundo que podría expresar una intención de usuario ligeramente menor.
Defold se desarrolla y utiliza internamente en rey (el gran estudio de juegos móviles que hace que los dulces se rompan) durante algunos años antes de decidir ponerlo a disposición de los desarrolladores fuera de la empresa.
Mi objetivo en esta publicación es verificar rápidamente si puedo crear un ejemplo y luego puedo agregar fácilmente una interfaz de usuario. Así que mostraremos nuestra comprensión del diseño y los músculos de las tuberías. Fue concebida como una aplicación de creación de juegos, pero la mayoría de los lectores de The New Stack entienden que los juegos ahora son solo aplicaciones que se enfocan en la historia y el escenario. Incluso las aplicaciones corporativas tienen la responsabilidad de “hacer felices a los usuarios” en estos días.
Es rápido de configurar y listo. Instalé la versión para Mac del editor/creador. Un lenguaje de “secuencias de comandos” – para dar comportamiento de objeto – es fiesta luau. Nunca lo he usado, pero ha existido por mucho tiempo. Las lecciones están disponibles desde el editor. De hecho, después de la instalación, puede abrir uno inmediatamente como proyecto. Probaremos nuestra suerte con el tutorial “Colorslide” que incluye una GUI de ejemplo:
El tutorial comienza con un juego existente, que mejoraremos. Como la mayoría de los IDE, el editor admite un entorno de tiempo de ejecución para que podamos verificar si un juego se está ejecutando en cualquier momento.
Es un juego simple que le permite al usuario mover los bloques, tenemos que deslizarlos al mismo color y así:
Funciona como se esperaba. Las reglas del juego en sí están ahí para mirar, pero el tutorial no importa. Tenga en cuenta que el diseño tiene el tutorial Colorslide en una pestaña, una jerarquía de archivos a la izquierda, un inspector a la derecha y una consola en la parte inferior. Así es como se verá después de que hayas terminado de escanear el juego:
El tutorial lo lleva a través de la estructura del proyecto. Vemos el juego dividido en “niveles”, con una configuración inicial. Esto parecerá un poco extraño para aquellos que están acostumbrados a ver solo código de programación en sus proyectos.
Lo mejor es simplemente seguir un tutorial y luego explorar las definiciones desde allí, pero puede ser útil profundizar en esas definiciones. Tarifas centrales En primer lugar.
Los desarrolladores de Unity también usan objetos de juego Y elementos. El objeto del juego se utiliza para asociar algún aspecto gráfico (como un botón o una viñeta) con su comportamiento. Los componentes son propiedades de presentación o comportamiento, como la fuente o la textura. Una colección es una jerarquía de todos los objetos del juego que componen la totalidad o parte de una aplicación. El truco es recordar que Defold quiere administrar los gráficos, pero quiere que tú administres la organización y el comportamiento.
El tutorial lo invita a ver cómo se crea el juego e inmediatamente le presenta al lector la tarea de conectar los niveles a la interfaz gráfica de usuario. El nivel apropiado (cuadrícula de bloques de colores) debe cargarse a través de los botones.
Mientras realiza la primera parte de la edición, si está familiarizado con el desarrollo de código, es posible que se sienta un poco abrumado al agregar elementos y componentes específicos a la jerarquía. ¿Por qué no se representa como un símbolo? No se preocupe, habrá código (o secuencia de comandos) pronto, pero piense en lo que gestiona el motor (gráficos y mensajes), lo que gestiona el usuario (comportamiento) y las partes intermedias. El usuario no tiene control sobre el hilo, porque la respuesta a la GUI no se puede hacer correctamente de forma lineal.
Entonces, en el tutorial “Colorslide” se nos pide que agreguemos un archivo agente de grupoy agregamos un script cargado, lo que significa que creamos un archivo en la jerarquía del lado izquierdo y luego agregamos un componente de script a colección principal. plural.
Aprendemos sobre la primera parte de Lua y algunos comportamientos de paso de mensajes:
function init (self) msg.post (“# proxy_level_1”, “load”) end function on_message(self, message_id, message, sender) if message_id == hash (“proxy_loaded”) then msg.post(sender, “init” ) msg.post(remitente, “habilitado”) fin
trabajo en eso(Ser) mensaje.correo(“#proxy_level_1”Y “carga”) fin trabajo en_mensaje(SerY ID de mensajeY mensajeY remitente) si ID de mensaje == picadillo(“proxy_loaded”) entonces mensaje.correo(remitenteY “en eso”) mensaje.correo(remitenteY “tal vez”) fin fin |
Afortunadamente, esto es bastante básico. Obviamente, hay un mensaje ejecutándose en segundo plano, y funciona seleccionando el objeto de una identificación y luego especificando la función por nombre. Obviamente, hay una precarga de nivel 1 en la llamada de configuración de arranque.
Encontrará que algunos componentes insisten en la configuración; por ejemplo, un componente de texto necesita configurar su fuente.
Probablemente se esté preguntando si puede simplemente “copiar” el widget del observador, pegarlo y luego realizar los cambios apropiados. Puede. Pronto tendrás un grupo de cuatro botones y un título. Pero ahora tenemos que darle al botón de Acciones. Crear un “gui script” fue un poco extraño (¿no es solo un script?) Puedes ver cuando se crea el script todos los mensajes predeterminados que puede recibir. Pero en el tutorial necesitamos agregar comportamiento a unos cuantos.
Pronto obtendrás una buena GUI que puede nivelar el juego:
Elegí pegar el texto de “selección de nivel” en la parte inferior, a diferencia del tutorial.
El tutorial continúa agregando otras cosas para darle al juego un flujo adecuado, pero ahora deberías estar muy por delante del tutorial, solo usándolo para elegir scripts complicados y características de la plataforma.
Antes de continuar, veamos un fragmento de código que permite que la acción del botón llame al nivel de carga:
function on_input(self, action_id, action) si action_id == hash (“touch”) y action.pressed y self.active entonces para n = 1,4 local node = gui.get_node (“level_”.. n) if gui .pick_node(node, action.x, action.y) luego msg.post (“/loader#loader”, “load_level”, {level = n}) msg.post (“#”, “hide_level_select” ) end end end
trabajo en_entrada(SerY id_acciónY un acto) si id_acción == picadillo(“toca”) Y un acto.presión Y Ser.activo entonces a norte = 1Y4 Hacer local nodo = Interfaz gráfica del usuario.obtener_nodo(“nivel_” .. norte) si Interfaz gráfica del usuario.elegir_nodo(nodoY un acto.XY un acto.y) entonces mensaje.correo(“cargador/cargador#”Y “nivel de carga”Y { nivel = norte }) mensaje.correo(“#”Y “esconder_nivel_seleccionar”) fin fin fin fin |
Incluso con un conocimiento mínimo de Lua, podemos concluir que los nodos de la GUI (que contienen los cuatro botones) están iterando. Pero los nodos se seleccionan por nombre, por lo que podemos concluir que la compilación…
… creará una cadena por cadena llamada “level_1”, “level_2”, etc. para pasar al método get_node en el objeto GUI. Luego verificamos que la compresión de entrada haya ocurrido dentro del área del cuadro de botones usando el método pick_node, y si es así, publicamos un mensaje de ‘load_level’ con el número de nivel.
Encontré el tutorial bastante simple, con algunas suposiciones y muy poca serialización (“para hacer esto, primero debe hacer esto”), lo que me dio una buena vista tanto de la sintaxis de Defold como de Lua suficiente para ver que no es demasiado. amenazante Despliegue para crear aplicaciones para iOS y Android, así que adelante y pruébelo.
“Alborotador. Amante de la cerveza. Total aficionado al alcohol. Sutilmente encantador adicto a los zombis. Ninja de twitter de toda la vida”.