Read this FAQ in English

Preguntas Frecuentes

Preguntas generales

Q: ¿Es Defold realmente gratuito?

A: Sí, el motor y editor Defold con toda su funcionalidad es completamente libre de cargos. No hay costos, cuotas o regalías escondidas. Solo gratis.

Q: ¿Por qué la Defold Foundation regalaría Defold?

A: Uno de los objetivos de Defold Foundation es asegurarse que el software Defold esté disponible a desarrolladores globalmente y que el código fuente esté disponible libre de cargos.

Q: ¿Por cuánto tiempo soportarán Defold?

A: Estamos comprometidos profundamente con Defold. La Defold Foundation ha sido establecida de una forma que esté garantizada su existencia como responsable de Defold por muchos años próximos. No se va a ir a ningún lado.

Q: ¿Puedo confiar en Defold para desarrollo profesional?

A: Absolutamente. Defold es usado por un creciente número de desarrolladores de videojuegos profesionales y estudios de videojuegos. Revisa el games showcase para ejemplos de videojuegos desarrollados usando Defold.

Q: ¿Qué tipo de seguimiento de usuario utilizan?

A: Registramos datos de uso de manera anónima de nuestros sitios y el editor Defold para mejorar nuestros servicios y producto. No hay seguimiento de usuario en los juegos que desarrollas (al menos que añadas un servicio de analytics por tu cuenta). Lee más en nuestra Política de privacidad.

Q: ¿Quién hizo Defold?

A: Defold fue creado por Ragnar Svensson y Christian Murray. Empezaron trabajando en el motor, editor y servidores in 2009. King y Defold empezaron una asociación en 2013 y King adquirió Defold en 2014. Lee la historia completa aquí.

Q: ¿Puedo hacer juegos 3D en Defold?

A: ¡Absolutamente! El motor es un motor 3D completo. Sin embargo, las herramientas fueron creadas para el 2D así que tendrás que hacer un montón de trabajo pesado. Un mejor soporte 3D está en planeación.

Q: ¿Qué lenguaje de programación utilizo en Defold?

A: La lógica del juego en tu proyecto Defold está escrita principalmente en el lenguaje Lua (específicamente Lua 5.1/LuaJIT, refiere al manual Lua para más detalles). Lua es un lenguaje dinámico ligero que es rápido y poderoso. También puedes usar lenguaje nativo (C/C++, Objective-C, Java and JavaScript dependiendo de la plataforma) para extender el motor Defold con nuevas funcionalidades. Cuando crees materiales personalizados, se utiliza OpenGL ES SL shader language para escribir vértices y fragmentos shaders.

Preguntas de Plataforma

Q: ¿En qué plataformas corre Defold?

A: Las siguientes plataformas tienen soporte para el editor/herramientas y el runtime del motor:

Sistema Soporte
macOS 10.7 Lion Editor y runtime
Windows Vista Editor y runtime
Ubuntu 18.04 (64 bit)(1) Editor
Linux (64 bit)(2) Runtime
iOS 8.0 Runtime
Android 4.1 (API level 16) Runtime
HTML5 Runtime

(1 El editor fue creado y probad para 64-bit Ubuntu 18.04. Debe funcionar en otras distribuciones pero no damos garantía de ello.)

(2 El engine runtime debe correr en la mayoría de distribuciones 64-bit de Linux mientras los drivers de gráficos estén actualizados y soporten OpenGL ES 2.0.)

Q: ¿Para qué plataformas objetivo puedo desarrollar con Defold?

A: Con un click puedes publicar en Nintendo Switch, iOS, Android y HTML5 así como macOS, Windows y Linux. Es realmente un código base con múltiples plataformas soportadas.

Q: ¿De cuál API de rendering depende Defold?

A: Defold utiliza WebGL en builds HTML5, Metal en iOS y macOS y Vulkan o OpenGL ES 2.0 en las otras plataformas. Como desarrollador solo tienes que preocuparte por un render API utilizando un rendering pipeline completamente codificable.

Q: ¿Hay alguna forma de saber qué versión estoy corriendo?

A: Si, selecciona la opción “About” en el menú Help. El popup muestra claramente la versión beta de Defold y, más importante, el release específico SHA1. Para la versión de runtime, usa sys.get_engine_info().

La última version beta disponible para descarga desde http://d.defold.com/beta puede revisarse abriendo http://d.defold.com/beta/info.json (el mismo archivo existe para versiones estables: http://d.defold.com/stable/info.json)

Q: ¿Hay alguna forma de saber en que plataforma está corriendo el juego?

A: Sí, checa sys.get_sys_info().

Preguntas del Editor

Q: ¿Cuáles son los requisitos del sistema para el editor?

A: El editor utilizará el 75% de tu memoria disponible en el sistema. Una computadora con 4GB de RAM debe ser suficiente para proyectos menores de Defold. Para proyectos de tamaño medio o grandes es recomendado 6GB de RAM o más.

Q: ¿Las versiones beta de Defold se actualizan automáticamente?

A: Sí. El editor beta de Defold verifica por una actualización al inicio, tal como la versión estable de Defold.

Q: ¿Por qué obtengo un error diciendo “java.awt.AWTError: Assistive Technology not found” cuando lanzo el editor?

A: Este error está relacionado a problemas con Java assistive technology como el NVDA screen reader. Probablemente tienes un archivo .accessibility.properties en tu carpeta home. Remueve el archivo y trata de lanzar el editor de nuevo. (Nota: Si utilizas cualquier tecnología de asistencia y requieres que el archivo esté presente entonces por favor escríbenos a info@defold.se para discutir soluciones alternativas).

Se ha discutido aquí en el foro de Defold.

Q: ¿Por qué el editor no inicia o abre mi proyecto?

A: Verifica si hay espacios en la ruta de la aplicación Defold. Por ejemplo, si pones la carpeta Defold-macosx que contiene la versión macOS del editor en tu carpeta de Applications, entonces debes estar bien. Si renombraste la carpeta a Defold macosx el editor puede que no inicie. En windows, poner Defold bajo C:\Program Files\ puede ocasionar este problema. Esto es debido a un bug conocido en el framework de Eclipse.

Q: ¿Por qué estoy obteniendo un error diciendo “sun.security.validator.ValidatorException: PKIX path building failed” cuando lanzo el editor?

A: Esta excepción ocurre cuando el editor trata de hacer una conexión https pero la cadena de certificado provisto por el servidor no puede ser verificado.

Mira este link para más detalles en este error.

Preguntas de Linux

Q: ¿Por qué el editor Defold es super pequeño cuando ejecuto en un monitor 4k o HiDPI utilizando GNOME?

A: Cambia el factor de escala antes de correr Defold. source

$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold

Q: ¿Por qué los clicks del ratón en Elementary OS atraviesan el editor hacia lo que haya detrás de éste?

A: Empieza el editor así:

$ GTK_CSD=0 ./Defold

Q: El editor Defold crashea cuando abro una colección u objeto de juego y el crash se refiere a “com.jogamp.opengl”

A: En ciertas distribuciones (como Ubuntu 18) existe un error con la versión de jogamp/jogl que usa Defold vs. la versión de Mesa en el sistema. Puedes sobreescribir cuál versión de GL sea reportado cuando llames a glGetString(GL_VERSION) cambiando el valor de MESA_GL_VERSION_OVERRIDE a 2.1 o un valor más alto pero menos o igual que la versión de tu driver. Puedes verificar cual es la versión máxima de OpenGL que soporta tu driver usando glxinfo:

glxinfo | grep version

Ejemplo de salida (busca “OpenGL version string: x.y”):

server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.2.6
OpenGL core profile shading language version string: 4.60
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.2.6
OpenGL shading language version string: 4.60
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,

Usa la versión 2.1 o la versión que iguala tu driver de gráficos:

$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold

Q: ¿Por qué obtengo “com.jogamp.opengl.GLException: Graphics configuration failed” cuando lanzo Defold?

A: En ciertas distribuciones (por ejemplo Ubuntu 20.04) existe un error con el nuevo driver de Mesa (Iris) cuando ejecutas Defold. Puedes intentar usar una versión anterior del driver cuando ejecutes Defold:

$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold

Q: El editor Defold crashea cuando abro una colección u objeto de juego y el cras refiere a libffi.so

A: La versión libffi de tu distribución y la requerida por Defold (version 6 or 7) no son iguales. Asegúrate que libffi.so.6 o libffi.so.7 estén instalados bajo /usr/lib/x86_64-linux-gnu. Puedes descargar libffi.so.7 de la siguiente forma:

$ wget http://ftp.br.debian.org/debian/pool/main/libf/libffi/libffi7_3.3-5_amd64.deb
$ sudo dpkg -i libffi7_3.3-5_amd64.deb

Luego especifica la ruta de esta versión en la variable del ambiente LD_PRELOAD cuando ejecutes Defold:

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold

Q: Mis drivers de OpenGL están desactualizados. ¿Puedo seguir utilizando Defold?

A: Si, puede ser posible usar Defold si habilitas el renderizado por software. Puedes habilitar el renderizado por software cambiando la variable de ambiente LIBGL_ALWAYS_SOFTWARE a 1:

$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold

Q: ¿Por qué mi juego Defold no inicia cuando lo intento ejecutar en Linux?

A: Verifica la salida de consola (console output) en el editor. Si obtienes el siguiente mensaje:

dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory

Entonces necesitas instalar libopenal1. El nombre del paquete varía entre distribuciones, y en algunos casos también necesitarás instalar los paquetes openal y openal-dev o openal-devel.

$ apt-get install libopenal-dev

Preguntas de Android

Q: ¿Es posible esconder la barra de navegación y estado en Android?

A: Si, activa la opción immersive_mode en la sección de Android de tu archivo game.project. Esto deja a tu aplicación tomar la pantalla completa y capturar todos los eventos touch de la pantalla.

Q: ¿Por qué obtengo “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]” cuando instalo un archivo de juego Defold en mi dispositivo?

A: Android detecta que hayas tratado de instalar la aplicación con un nuevo certificado. Cuando creas builds de depuración, cada build será firmada con un certificado temporal. Desinstala la aplicación anterior antes de instalar la nueva versión:

$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
      pkg: /data/local/tmp/Defold examples.apk
Success

Preguntas de HTML5

Q: ¿Por qué mi aplicación HTML5 se congela en la pantalla splash en Chrome?

A: En algunos casos no es posible correr un juego en el navegador de manera local desde el sistema de archivos. Correr desde el editor sirve el juego desde un servidor web local. Puedes, por ejemplo, utilizar SimpleHTTPServer en Python:

$ python -m SimpleHTTPServer [port]

Q: ¿Por qué mi juego crashea con el error “Unexpected data size” mientras carga?

A: Esto usualmente pasa cuando estás usando Windows y creas una build y lo cometes en Git. Si tienes la configuración line-ending equivocada en Git puede cambiar tus finales de líneas y por lo tanto el tamaño de la data. Sigue estas instrucciones para resolver el problema: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings

Preguntas de IOS

Q: Soy incapaz de instalar mi juego Defold utilizando una cuenta gratuita de Apple Developer.

A: Asegúrate de que utilizas el mismo identificador de bundle en tu proyecto Defold así como el que usaste en el proyecto Xcode cuando generaste el perfil provisional del móvil.

Q: ¿cómo puedo verificar los derechos de una aplicación empaquetada??

A: Desde Inspect the entitlements of a built app:

$ codesign -d –ent :- /path/to/the.app

Q: ¿Cómo puedo verificar los derechos de un perfil provisional?

A: Desde Inspecting a profile’s entitlements:

$ security cms -D -i /path/to/iOSTeamProfile.mobileprovision

Preguntas de Windows

Q: ¿Por qué los GUI box nodes sin textura son transparentes en el editor pero aparecen como se esperaba al momento de crear y correr?

A: Este error puede ocurrir en ordenadores usando AMD Radeon GPUs. Asegúrate de actualizar los drivers de gráficos.

Q: ¿Por qué obtengo ‘com.sun.jna.Native.open.class java.lang.Error: Access is denied’ cuando abro un atlas o una vista de escena (scene view)?

A: Intenta correr Defold como administrador. Click derecho en el ejecutable Defold y selecciona “ejecutar como Administrador”.

Preguntas de Nintendo Switch

Q: ¿Por qué el acceso a Nintendo Switc no es gratuito?

A: Uno de los objetivos de Defold Foundation es hacer que el software Defold software esté disponible a desarrolladores globalmente y que el código fuente esté disponible sin cargos. The Defold Foundation nunca comprometerá este objetivo, pero en este caso el acceso al SDK de Nintendo Switch, herramientas y recursos son estrictamente controlados por Nintendo. Esto significa que el código fuente para implementación de la plataforma Nintendo Switch en Defold, incluyendo el editor y las herramientas de línea de comando, no pueden estar disponibles. Esto también significa que Defold Foundation es incapaz de recibir contribuciones comunitarias al código y documentación y es la fundación quien debe proveer todo el soporte y actualizaciones a la plataforma por el tiempo que sea necesario. La cuota de acceso a Nintendo Switch ayuda a asegurar que la fundación tenga los recursos necesarios para dar soporte a la plataforma.

Q: ¿Necesito instalar herramientas adicionales para hacer builds para Nintendo Switch?

A: Tienes permitido crear bundles de aplicación directamente desde Defold edior y las herramientas de líneas de comando. Información acerca de cómo probar en hardware de Nintendo Switch será provisto cuando obtengas acceso a la plataforma Nintendo Switch.

Q: ¿Sigue siendo fácil de usar un solo código base si decido dirigirme también a la plataforma Nintendo Switch?

A: Si, todas las funciones del API estándar de Defold también están disponibles para la plataforma Nintendo Switch. En adición a la funcionalidad estándar también puedes tener acceso a un par de funciones específicas del Nintendo Switch, pero en general el código debe de mantenerse exactamente de la misma forma a través de múltiples plataformas.

Publicando juegos

Q: Estoy tratando de publicar mi videojuego en la Appstore. ¿Cómo debo responder a IDFA?

A: Cuando estés presentando, Apple tiene tres checkboxes para sus tres usos válidos por el IDFA:

  1. Entregar anuncios desde la aplicación
  2. Instalar atribución desde anuncios
  3. Acción de usuario de anuncios

Si seleccionas la opción un, el revisor de la aplicación buscará por anuncios dentro de la app. Si tu juego no muestra anuncios, el juego puede ser rechazado. Defold no usa AD id por sí mismo.

Q: ¿Cómo monetizo mi juego?

A: Defold tiene soporte para compras in-app y varias soluciones de anuncios. Checa la categoría de Monetización en el Asset Portal para una lista actualizada de opciones de monetización disponibles.

Errores usando Defold

Q: No puedo iniciar el juego y no hay error de build. ¿Que pasó?

A: El proceso de build puede fallar al hacer rebuild en raras ocasiones donde ha encontrado previamente errores de build que hayas reparado. Forza un rebuild completo seleccionando Project > Rebuild And Launch desde el menú.

Contenido del juego

Q: ¿Defold soporta prefabs?

A: Si, lo hace. Son llamadas colecciones. Permiten crear jerarquías de objetos complejas y guardarlos como un bloque de construcción separado que puedes instanciaren el editor o durante la ejecución (a través de la aparición de colección). Para nodos GUI existe soporte para plantillas GUI.

Q: No puedo agregar un objeto de juego como hijo de otro objeto de juego, ¿por qué?

A: Probablemente sea que trataste de añadir un hijo en el archivo de objeto de juego y eso no es posible. Para entender por qué, hay que recordar que las jerarquías padre-hijo son estrictamente una jerarquía de transformación del gráfico de la escena (scene-graph). Un objeto de juego que no se haya colocado (o aparecido) en una escena (colección) no es parte del gráfico de la escena y no puede ser parte de la jerarquía de éste.

Q: ¿Por quéno puedo transmitir mensajes a todos los hijos de un objeto de juego?

A: Las relaciones padre-hijo no expresan nada más que las relaciones de transformación scene-graph y no deben ser confundidas por agregados de orientación de objeto. Si intentas enfocarte en los datos de tu juego y como transformarlo de la mejor forma posible, encontrarás menor necesidad de enviar mensajes con datos de estado a demasiados objetos al mismo tiempo. En los casos donde necesites jerarquía de datos, éstos son construidos y mantenidos fácilmente en Lua.

Q: ¿Por qué experimento artefactos visuales alrededor de los bordes de mis sprites?

A: Eso es un artefacto visual llamado “sangrado de borde” (edge bleeding) donde los pixeles del borde de otros pixeles cercanos en un atlas sangran en la imagen asignada a tu sprite. La solución es acomodar los bordes de tus atlas de imágenes con columnas y filas extra de pixeles idénticos. Afortunadamente esto se puede hacer automáticamente en el editor de atlas de Defold. Abre el atlas y cambia el valor de Extrude Borders a 1.

Q: ¿Puedo entintar mis sprites o hacerlos transparente, o tengo que escribir mi propio shader?

A: El shader de sprites integrado que es usado por defecto en todos los sprites tienen un “tinte” constante definido:

  local red = 1
  local green = 0.3
  local blue = 0.55
  local alpha = 1
  go.set("#sprite", "tint", vmath.vector4(red, green, blue, alpha))

Q: Si selecciono la coordenada z de un sprite a 100 no se renderiza. ¿Por qué?

A: La posición Z de un objeto de juego controla el orden del renderizado. Los valores bajos son dibujados antes de los valores más altos. En el script de render por defecto los objetos del juego con una profundidad del rango -1 a 1 son dibujados, cualquier cosa con el número más bajo o alto no serán dibujados. Puedes leer más sobre el script de render en la documentación de Render oficial. En nodos GUI el valor Z es ignorado y no afecta el orden del renderizado. En lugar de eso los nodos son renderizados en el orden que son enlistados y de acuerdo a las jerarquías de los hijos (y por capas). Lee más sobre el renderizado de GUI y optimización de llamadas de dibujo (draw call) utilizando capas en la documentación de GUI oficial.

Q: ¿Cambiar la proyección del rango Z a -100 hasta 100 afectaría el rendimiento?

A: No. El único efecto es precisión. El buffer Z es logarítmico y tiene una resolución muy fina de valores z cercanos a 0 y menos resolución más lejano al 0. Por instancia, con un buffer de 24 bits los valores 10.0 y 10.000005 pueden ser diferenciados mientras 10000 y 10005 no pueden.

Q: No hay consistencia en la representación de los ángulos. ¿Por qué?

A: De hecho, sí hay consistencia. Los ángulos están expresados en grados en todo el editor y el API del juego. Las librerías del videojuego utilizan radianes. Recientemente la convención rompe las físias de la propiedad angular_velocity que son expresadas en radianes/s. Se espera un cambio.

Q: Cuando se crea un nodo caja (box-node) GUI con solo un color (sin textura), ¿cómo será renderizado?

A: Solo es una forma con color de vértice. Ten en cuenta que aún costará un nivel de servicio (fill-rate)

Q: Si cambio assets en el momento, ¿el motor los descargará al momento?

A: Todos los recursos son contados por referencia de manera interna. Tan pronto el contador de referencia llegue a cero, el recurso es liberado.

Q: ¿Es posible reproducir un audio sin el uso de un componente de audio adjuntado a un objeto?

A: Todo está basado por componente. Es posible crear un objeto sin cabeza con múltiples sonidos y reproducir sonidos que envien mensajes al objeto controlador de sonido.

Q: ¿Es posible cambiar el archivo de audio asociado con un componente de audio en ejecución?

A: En general todos los recursos están estadísticamente declarados con el beneficio que obtienes control de recursos de manera libre. Puedes usar las propiedades de recursos para cambiar qué recurso es asignado al componente.

Q: ¿Hay una forma de accesar a las propiedades de la forma de colisión de físicas?

A: No, por el momento no es posible.

Q: ¿Hay alguna forma rápida de renderizar los objetos colisionadores en mi escena? (como Box2D’s debugdraw)

A: Si, utiliza la bandera physics.debug en game.project. (Refiere a la documentación de opciones del proyecto oficial).

Q: ¿Cuáles son los costos de rendimiento por tener muchos contactos/colisiones?

A: Defold utiliza una versión modificada de Box2D en el fondo y el costo de rendimiento debe ser similar. Siempre puedes ver cuánto tiempo el motor tarda en las físicas sacando el profiler. También deberías considerar que tipo de colisiones usas. Objetos estáticos utilizan menos rendimiento, por ejemplo. Refiere a la documentación de Físicas en Defold para más detalles.

Q: ¿Cuál es el impacto en el rendimiento por tener muchos componentes de efectos de partículas?

A: Depende de si están reproduciéndose o no. Un ParticleFx que no esté reproduciendo no tiene costo en el rendimiento. La implicación del rendimiento por reproducir ParticleFx debe ser evaluada usando el profiler pues su impacto depende en cómo está configurado. Como lo es con muchas otras cosas la memoria está asignada en el frente por el número de ParticleFx definido como max_count en game.project.

Q: ¿Cómo recibo input a un objeto del juego dentro de una colección cargada por un proxy de colección?

A: Cada proxy de colección cargado tiene su propio input stack. El Input está enrutado desde el input stack de la colección principal por el componente de proxy a los objetos en la colección. Esto significa que no es suficiente para el objeto del juego cargado en la colección el adquirir enfoque en el input, el objeto que aún mantiene (holds) el componente proxy necesita adquirir el enfoque de input también. Mira la documentación de Input para más detalles.

Q: ¿Puedo usar propiedades de script de tipo string?

A: No. Defold soporta propiedades de tipo hash. Éstas pueen ser usadas para indicar tipos, identificadores de estado o claves de cualquier tipo. Los Hashes también pueden ser usados para guardar id’s de objeto (paths) pero propiedades de url son usualmente prefereidas ya que el editor automáticamente puebla un desplegable con URLs relevantes para ti. Ver la documentación de propiedades de Script para más detalles.

Q: ¿Cómo acceso a las células individuales de una matrix? (creadas usando vmath.matrix4() o similares)?

A: Accesas a las células usando mymatrix.m11, mymatrix.m12, mymatrix.m21 etc

Q: Estoy teniendo Not enough resources to clone the node cuando uso gui.clone() o gui.clone_tree()

A: Incrementa el valor de Max Nodes del componente gui. Encontrarás este valor en el panel Properties cuando selecciones la raíz del componente en el Outline.

El foro

Q: ¿Puedo postear un hilo donde anuncie mi trabajo?

A: ¡Por supuesto! Tenemos una categoría “Work for hire” para eso. Siemprealentamos todo y eso benefica a la comunidad, y ofreciendo tus servicios a la comunidad—por remuneración o no—es un buen ejemplo.

Q: He creado un hilo y añadí mi trabajo-¿puedo añadir más?

A: En orden para reducir el revivir hilos de “Work for hire”, no deberías postear por más de una vez cada 14 días en tu propio hilo (al menos que sea una respuesta directa a un comentario en el hilo, en ese caso puedes responder). Si deseas añadir material adicional de tu trabajo dentro de los 14 días, puedes editar posts existentes con tu contenido añadido.

Q: ¿Puedo usar la categoría Work for Hire para postear ofertas de trabajo?

A: Seguro, ¡dense el gusto! Puede ser usado para ofertas así como pedidos, ej. “Programador buscando 2d pixel artist; soy rico y te pagaré bien”.