Godot4_Documento Aprendizaje 2_Acerca de Godot_FAQ

Directorio de artículos


Prefacio

Este artículo es la segunda parte del capítulo sobre Godot (Acerca de) .
Esta sección se compone de preguntas frecuentes hechas por desarrolladores/recién llegados que están listos para unirse al juego. Se presenta en forma de preguntas y respuestas. Puedes elegir las que te interesen y leerlas, o simplemente explorarlas brevemente.


Pregunta frecuente Preguntas frecuentes

¿Qué puedes hacer con Godot? ¿Cuánto va a costar? ¿Cuáles son los términos de la licencia?

Godot es un software gratuito y de código abierto bajo la licencia MIT aprobada por OSI . Esto significa que es gratis.

en breve:

  • Puedes descargar Godot gratis y utilizarlo para cualquier propósito: personal, sin fines de lucro, comercial o de otro tipo.
  • También eres libre de modificar, distribuir y remezclar Godot para adaptarlo a tus necesidades, ya sea por motivos comerciales o no comerciales.

Todo el contenido de este documento está publicado bajo la Licencia Creative Commons 3.0 (CC BY 3.0), atribuida a "Juan Linietsky, Ariel Manzur y la Comunidad Godot Engine".

Los logotipos e iconos también suelen estar bajo la misma licencia Creative Commons. Tenga en cuenta que algunas bibliotecas de terceros incluidas en el código fuente de Godot pueden tener licencias diferentes.

Para obtener más detalles, consulte los archivos COPYRIGHT.txt, LICENSE.txt y LOGO_LICENSE.txt en el repositorio de Godot.

¿Qué plataformas soporta Godot?

El soporte del editor incluye:

  • ventanas
  • Mac OS
  • Linux*BSD
  • Android (experimental)
  • Web (experimental)

Soporte de juegos exportados:

  • Windows (y UWP)
  • Mac OS
  • Linux*BSD
  • Androide
  • iOS
  • Web

Se admiten tanto 32 como 64 bits, el valor predeterminado es 64 bits. La versión oficial de macOS es compatible con Apple Silicon y x86_64.

Algunos usuarios también han informado de éxito al crear y utilizar Godot en Linux basado en ARM, como Raspberry Pi.

Debido a los términos de licencia impuestos por los fabricantes de consolas, el equipo de Godot no puede ofrecer exportaciones de consolas de código abierto. No importa qué motor utilices, lanzar un juego en consola siempre supone mucho trabajo. Puedes leer más sobre soporte de host en Godot.

¿Qué lenguajes de programación admite Godot?

Los lenguajes oficialmente soportados por Godot son GDScript, C# y C++ . Las subcategorías para cada idioma se pueden ver en la sección Scripts.

Si es nuevo en Godot o en el desarrollo de juegos, se recomienda aprender y utilizar el lenguaje GDScript porque es el idioma nativo de Godot. A largo plazo, el rendimiento de los lenguajes de scripting no es tan bueno como el de los lenguajes de bajo nivel, pero para la creación de prototipos/desarrollo de productos mínimos viables (MVP, productos mínimos viables) y un tiempo de comercialización rápido (TTM, Time-To -Markets), GDScript le proporcionará una forma rápida, amigable y eficiente de desarrollar juegos.

Tenga en cuenta que la compatibilidad con C# es relativamente nueva, por lo que puede encontrar algunos problemas al utilizarla. Actualmente, C# no es compatible con plataformas Android, iOS y web. Si bien la amigable y trabajadora comunidad de desarrollo siempre está lista para resolver cualquier problema nuevo que surja, dado que este es un proyecto de código abierto, le recomendamos que primero investigue un poco por su cuenta si encuentra problemas. Buscar en la discusión de un tema abierto suele ser una buena forma de solucionar problemas.

Para nuevos idiomas, el soporte se puede proporcionar a través de terceros utilizando GDExtensions. (Consulte la pregunta a continuación sobre complementos) Por ejemplo, actualmente se están trabajando enlaces no oficiales de Godot a Python y Nim.

¿Qué es GDScript y por qué debería usarlo?

GDScript es el lenguaje de scripting integrado de Godot . Está construido desde cero para maximizar el potencial de Godot con un código mínimo, permitiendo que tanto los desarrolladores principiantes como los expertos aprovechen al máximo Godot. Si ha escrito en un lenguaje como Python antes, esto le resultará muy familiar. Para obtener ejemplos y una descripción completa de la funcionalidad proporcionada por GDScript, consulte la Guía de secuencias de comandos de GDScript.

Hay muchas razones para usar GDScript, especialmente si estás creando un prototipo , en la etapa alfa/beta de un proyecto o no creando un juego AAA de próxima generación. La razón principal es reducir la complejidad general .

La intención original de crear un lenguaje de scripting personalizado estrechamente integrado para Godot era doble:

  • En primer lugar, reduce el tiempo necesario para poner en funcionamiento Godot, proporcionando a los desarrolladores una forma rápida de centrarse en el desarrollo y la producción;
  • En segundo lugar, reduce la carga general de mantenimiento, reduce la dimensionalidad del problema y permite a los desarrolladores del motor centrarse en eliminar errores y mejorar la funcionalidad relacionada con el núcleo del motor, en lugar de perder mucho tiempo intentando conseguir un pequeño aumento. en una gran cantidad de idiomas Función de cantidad.

Dado que Godot es un proyecto de código abierto, se debe priorizar una experiencia más integrada y fluida desde el principio en lugar de atraer usuarios adicionales al admitir lenguajes de programación más familiares, especialmente cuando admitir esos lenguajes más familiares resultaría en una mala experiencia. Entendemos que le gustaría utilizar otros idiomas con Godot (consulte Idiomas admitidos más arriba). Sin embargo, si aún no ha probado GDScript, pruébelo durante tres días . Al igual que Godot, creemos que le encantará GDScript una vez que vea lo poderoso que es y lo rápido que se puede desarrollar.

Puede encontrar más información sobre el uso de GDScript o lenguajes escritos dinámicamente en el tutorial GDScript: Introducción a los lenguajes dinámicos .

¿Cuál fue la motivación para diseñar GDScript?

Al principio, el motor utilizaba el lenguaje de programación Lua. Lua puede ser rápido gracias a LuaJIT, pero crear enlaces para sistemas orientados a objetos (mediante el uso de respaldos) es complejo y lento, y requiere mucho código. Después de realizar algunos experimentos con Python, también resultó difícil de integrar.

Las principales razones para diseñar un lenguaje de scripting personalizado para Godot son:

  1. La mayoría de las máquinas virtuales (VM) de secuencias de comandos no admiten subprocesos; Godot usa subprocesos (Lua, Python, Squirrel, JavaScript, ActionScript, etc.).
  2. El soporte de extensión de clases es deficiente en la mayoría de las máquinas virtuales de scripting y las adaptaciones a Godot se ejecutan de manera muy ineficiente (Lua, Python, JavaScript).
  3. Muchos lenguajes existentes tienen interfaces terribles vinculadas a C++, lo que genera una gran cantidad de código, errores, cuellos de botella e ineficiencias (Lua, Python, Squirrel, JavaScript, etc.). Queremos centrarnos en un gran motor en lugar de realizar mucha integración.
  4. No hay tipos de vectores nativos (vector3, matriz4, etc.), lo que resulta en un rendimiento muy reducido cuando se utilizan tipos personalizados (Lua, Python, Squirrel, JavaScript, ActionScript, etc.).
  5. Garbage Collector (GC) provoca bloqueos y un uso de memoria innecesariamente grande (Lua, Python, JavaScript, ActionScript, etc.).
  6. Dificultad para integrarse con editores de código para proporcionar finalización de código, edición en vivo, etc. (todos los lenguajes de secuencias de comandos mencionados anteriormente).

GDScript tiene como objetivo reducir los problemas anteriores.

¿Qué formatos de modelos 3D admite Godot?

Puede encontrar detalles sobre los formatos admitidos, cómo exportarlos desde el software de modelado 3D y cómo importarlos para Godot en el documento Importación de escenas 3D .

¿Godot admite [insertar FMOD, GameWorks y otros SDK cerrados]?

El propósito de Godot es crear un motor gratuito y de código abierto con licencia del MIT que sea modular y extensible. La comunidad de desarrollo de motores centrales no tiene planes de admitir SDK propietarios o de código cerrado de terceros, ya que la integración con estos SDK iría en contra del espíritu de Godot.

Dicho esto, debido a que Godot es de código abierto y modular, no hay nada que le impida a usted o a otras personas interesadas agregar estas bibliotecas como módulos y lanzar su juego como código abierto o cerrado.

Para saber cómo brindar soporte para el SDK elegido, consulte las preguntas sobre complementos a continuación.

Si conoce un SDK de terceros que no es compatible con Godot pero que ofrece integración gratuita y de código abierto, considere completar la integración usted mismo. Godot no pertenece a ninguna persona, pertenece a la comunidad y crece con contribuyentes comunitarios ambiciosos como tú.

¿Cómo instalar el editor Godot (integración de escritorio) en su sistema?

Dado que no necesita instalar Godot en su sistema para ejecutarlo, esto significa que la integración del escritorio no se realizará automáticamente. Hay dos formas de superar este problema. Puede instalar Godot desde Steam (todas las plataformas), Scoop (Windows), Homebrew (macOS) o Flathub (Linux). Esto automatizará los pasos necesarios para la integración del escritorio.

Alternativamente, puede realizar manualmente los pasos que el instalador realiza por usted:

ventanas

  • Mueva el ejecutable de Godot a una ubicación fija (es decir, fuera de su carpeta de descargas) para no moverlo accidentalmente y romper el acceso directo.
  • Haga clic derecho en el ejecutable de Godot y seleccione Crear acceso directo .
  • Mueva el acceso directo creado a %APPDATA%\Microsoft\Windows\Start Menu\Programs . Esta es la ubicación del usuario del acceso directo que aparecerá en el menú Inicio . También puedes anclar Godot a la barra de tareas haciendo clic derecho en el ejecutable y seleccionando Anclar a la barra de tareas.

macOS
Arrastre la aplicación de Godot extraída a /Applications/Godot.app y luego arrástrela al Dock. Spotlight encontrará a Godot siempre que esté en /Applications o ~/Applications .

linux

  • Mueva el binario de Godot a una ubicación fija (como fuera del directorio de Descargas) para no moverlo accidentalmente y romper el acceso directo.
  • Cambie el nombre del binario Godot y muévalo a una ubicación en la variable de entorno PATH . Generalmente se convierte en /usr/local/bin/godot o /usr/bin/godot . Hacerlo requiere derechos de administrador, pero esto también le permite ejecutar el editor Godot desde la terminal escribiendo Godot.
    • Si no puede mover el binario del editor Godot a una ubicación protegida, puede guardarlo en algún lugar de su directorio de inicio y modificar la línea Path= en el archivo .desktop vinculado a continuación para incluir la versión completa de la ruta .binaria de Godot .
  • Guarde el archivo .desktop en $HOME/.local/share/applications/ . Si tiene derechos de administrador, también puede guardar el archivo .desktop en /usr/local/share/applications para que todos los usuarios puedan usar el acceso directo.

¿Godot Editor es un programa de conveniencia?

En su configuración predeterminada, Godot es semiportátil . Su ejecutable se puede ejecutar desde cualquier ubicación, incluidas las ubicaciones en las que no se puede escribir, y no requiere privilegios de administrador.

Sin embargo, el archivo de configuración se escribirá en el directorio de datos o de configuración del usuario. Este suele ser un buen enfoque, pero significa que si copia la carpeta que contiene el ejecutable de Godot, el archivo de configuración no será portátil entre máquinas. Para obtener más información, consulte Rutas de archivos en el Proyecto Godot .

Si necesita una operación completamente conveniente (por ejemplo, usarla en una unidad flash USB), siga los pasos del modo autónomo .

¿Por qué Godot usa Vulkan u OpenGL en lugar de Direct3D?

El objetivo principal de Godot es la compatibilidad multiplataforma y los estándares abiertos . OpenGL y Vulkan son tecnologías abiertas y disponibles en (casi) todas las plataformas. Debido a esta decisión de diseño, los proyectos desarrollados con Godot en Windows pueden ejecutarse inmediatamente en Linux, macOS y otras plataformas.

Dado que Godot solo tiene unas pocas personas trabajando/desarrollando su renderizador, esperamos gastar menos recursos en el mantenimiento del backend de renderizado. Lo mejor de todo es que el uso de una única API en todas las plataformas aumenta la coherencia y reduce los problemas específicos de la plataforma.

A largo plazo, podemos desarrollar un renderizador Direct3D 12 para Godot (principalmente para Xbox), pero Vulkan y OpenGL seguirán siendo el motor de renderizado predeterminado para todas las plataformas, incluido Windows.

¿Por qué Godot mantiene pequeño su conjunto de características principales?

Godot no incluye intencionalmente funciones que están disponibles a través de complementos a menos que se utilicen con frecuencia. Por ejemplo, capacidades avanzadas de inteligencia artificial.

Hay varias razones para esto:

  • Mantenimiento de código y corrección de errores . Cada vez que aceptamos código nuevo en el repositorio de Godot, los contribuyentes existentes suelen asumir la responsabilidad de mantenerlo. Algunos contribuyentes no siempre se quedan después de fusionar su código, lo que nos dificulta mantener el código problemático. Esto puede provocar funciones mal mantenidas y errores difíciles de corregir. Además de eso, la cantidad de API que deben probarse e inspeccionarse aumenta con el tiempo.
  • Fácil de contribuir . Al mantener su base de código pequeña y limpia, compilar el código fuente es más rápido y sencillo. Esto facilita que los nuevos contribuyentes comiencen a utilizar Godot sin tener que comprar hardware de alta gama.
  • Mantenga los binarios pequeños para el editor . No todo el mundo tiene una conexión rápida a Internet. Garantizar que todos puedan descargar el editor Godot, extraerlo y ejecutarlo en menos de cinco minutos hace que Godot sea fácilmente accesible para los desarrolladores de todos los países.
  • Mantenga los archivos binarios pequeños para las plantillas exportadas . Esto afecta directamente el tamaño de los proyectos de exportación de Godot. En dispositivos móviles y web, es importante mantener el tamaño de los archivos pequeños para garantizar una instalación y carga rápidas en dispositivos de bajo rendimiento. Asimismo, en muchos países no se dispone de Internet de alta velocidad. Excepto por primera vez, estos países suelen imponer límites estrictos de uso de datos.

Con base en las razones anteriores, debemos elegir las funciones principales de Godot. Es por eso que estamos trasladando algunas funciones principales a complementos oficialmente admitidos en futuras versiones. Esto también tiene el beneficio en términos de tamaño binario de que solo paga por lo que realmente usa en su proyecto (¿la funcionalidad extendida viene como un paquete pago?). (Mientras tanto, puedes compilar plantillas de exportación personalizadas y desactivar funciones no utilizadas para optimizar el tamaño de lanzamiento de tu proyecto)

¿Cómo crear recursos que puedan manejar múltiples resoluciones y relaciones de aspecto?

Este problema surge con bastante frecuencia, probablemente debido a un malentendido cuando Apple inicialmente duplicó la resolución de sus dispositivos. La gente suele pensar que es una buena idea tener los mismos recursos en diferentes soluciones, por lo que mucha gente sigue por este camino. Este método solo funcionó en dispositivos Apple, pero desde entonces han aparecido varios dispositivos Android y Apple con diferentes resoluciones y relaciones de aspecto, y vienen en una gama muy amplia de tamaños y DPI.

La forma más común y apropiada de lograr esto es que el juego use una única resolución base y solo maneje diferentes relaciones de aspecto de pantalla. Esto es muy necesario en 2D, ya que en 3D es sólo una cuestión de cámara XFov o YFov.

  1. Elige una resolución base única para tu juego. Aunque algunos dispositivos tienen resoluciones de hasta 2K y otros solo llegan a 400p, escalar el hardware normal del dispositivo puede resolver este problema con un costo de rendimiento mínimo o nulo. Las opciones más comunes se acercan más a 1080p (1920x1080) o 720p (1280x720) . Recuerde, cuanto mayor sea la resolución, más grandes serán sus activos, más memoria ocuparán y más tardarán en cargarse.
  2. Utilice la opción de estiramiento en Godot; el estiramiento 2D funciona mejor manteniendo la relación de aspecto. Consulte el tutorial de resolución múltiple para aprender cómo lograrlo.
  3. Decide tu resolución mínima y luego decide si quieres que tu juego se estire vertical u horizontalmente en diferentes relaciones de aspecto, o si quieres mantener una determinada relación de aspecto y rellenar el exceso con barras negras. Esto también se explica en Multiresolución .
  4. Para las interfaces de usuario, utilice el anclaje para determinar dónde deben permanecer y moverse los controles. Si la interfaz de usuario es compleja, considere los contenedores de aprendizaje.

Simplemente sigue lo anterior y tu juego debería poder ejecutarse en múltiples resoluciones.

Si desea que su juego se ejecute en dispositivos más antiguos con pantallas más pequeñas (menos de 300 píxeles de ancho), puede usar las opciones de exportación para reducir la imagen y configurarla para usarla en el tamaño de pantalla de App Store o Google Play.

¿Cómo extender Godot?

Para ampliar Godot, como crear complementos del editor Godot o agregar soporte para otros idiomas, consulte las secciones EditorPlugins y scripts de herramientas .

Además, consulte el blog oficial sobre GDExtension, que también es una forma de desarrollar extensiones nativas para Godot:

  • Presentamos el sucesor (sucesor) de GDNative, GDExtension

El sucesor aquí probablemente se refiere a un módulo de extensión a través del cual los desarrolladores pueden ampliar Godot.

También puede consultar la implementación de GDScript, el módulo Godot y el soporte no oficial de Python para Godot. Este es un buen punto de partida para comprender cómo se integra otra biblioteca de terceros con Godot.

¿Cuándo se lanzará la próxima versión de Godot?

Cuando esté listo, consulte ¿Cuándo se lanzará la próxima versión? Se pueden ver los capítulos.

¿Qué versión de Godot debo usar en un nuevo proyecto?

Recomendamos usar Godot 4.x para nuevos proyectos, pero dependiendo de sus necesidades, 3.x puede ser mejor.

¿Debo actualizar mi proyecto para usar la nueva versión de Godot?

Actualizar a algunas versiones nuevas es más seguro que otras. En términos generales, la actualización depende de la situación real del proyecto.

Quiero contribuir, ¿cómo empiezo?

¡Impresionante! Como proyecto de código abierto, Godot prospera gracias a la innovación y la ambición de desarrolladores como usted.

La mejor manera de comenzar a contribuir con Godot es usarlo e informar cualquier problema que pueda encontrar. Un buen informe de errores y pasos de reproducción claros también pueden ayudar a los contribuyentes a corregir errores de forma rápida y eficaz. (Equivalente a probar e informar errores)

Si está listo para enviar una PR (solicitud de extracción), elija cualquier problema del enlace de arriba que le interese e intente resolverlo. Necesitará aprender cómo compilar el motor desde el código fuente o cómo compilar la documentación. También necesitarás estar familiarizado con Git, el sistema de control de versiones utilizado por los desarrolladores de Godot.

Nuestra documentación para contribuyentes explica cómo utilizar el código fuente del motor, cómo editar la documentación y otras formas de contribuir.

¿Tengo una buena idea para Godot? ¿Cómo compartirlo?

Siempre estamos buscando sugerencias sobre cómo mejorar el motor. Los comentarios de los usuarios son la principal fuerza impulsora detrás de nuestro proceso de toma de decisiones, y las limitaciones que puede enfrentar mientras trabaja en el proyecto son buenos datos que podemos respaldar al considerar mejoras en el motor.

Si encuentra problemas de usabilidad o faltan funciones en su versión actual de Godot, discútalo primero con nuestra comunidad. Puede haber otras formas, quizás mejores, de lograr los resultados deseados sugeridas por los miembros de la comunidad. También puede averiguar si otros usuarios tienen el mismo problema y trabajar juntos para encontrar una buena solución.

Si tiene ideas bien definidas para el motor, no dude en abrir una propuesta. Al describir su problema y la solución propuesta, sea específico y concreto (no sea abstracto); sólo se considerarán sugerencias factibles. Si desea implementarlo usted mismo, ¡se lo agradeceríamos! (Por supuesto que esto no es necesario)

Si todavía solo tienes una idea general y no tienes detalles específicos, también puedes iniciar una discusión de propuesta. La discusión puede ser cualquier cosa que desee y permitir una discusión libre para encontrar soluciones. Una vez encontrada, se puede abrir un problema de propuesta.

Lea el documento Léame antes de crear una propuesta para obtener más información sobre el proceso.

¿Es posible crear aplicaciones que no sean juegos usando Godot?

¡Sí! Godot tiene un extenso sistema de interfaz de usuario incorporado y su versión más pequeña puede ser una alternativa adecuada a marcos como Electron o Qt.

Al crear aplicaciones que no sean juegos, asegúrese de habilitar el modo de procesador bajo en la configuración del proyecto para reducir el uso de CPU y GPU.

Dicho esto, no recomendamos usar Godot para crear aplicaciones móviles porque el modo de bajo procesador aún no es compatible con plataformas móviles.

Consulte Material Maker y Pixelorama para ver ejemplos de aplicaciones de código abierto creadas con Godot.

¿Es posible utilizar Godot como biblioteca?

Godot está diseñado para usarse con su editor. Le recomendamos que lo pruebe, ya que lo más probable es que le ahorre tiempo a largo plazo. Actualmente no hay planes para que Godot esté disponible como biblioteca, ya que esto haría que el resto del motor sea más complejo y difícil de usar para usuarios ocasionales.

Si desea utilizar una biblioteca de renderizado, considere utilizar un motor de renderizado establecido. Tenga en cuenta que la comunidad de motores de renderizado es generalmente más pequeña en comparación con Godot. Esto hará que le resulte más difícil encontrar respuestas a sus preguntas.

¿Qué kit de herramientas de interfaz de usuario utiliza Godot?

Godot no utiliza kits de herramientas de interfaz de usuario estándar como GTK, Qt o wxWidgets. En cambio, Godot usa su propio conjunto de herramientas de interfaz de usuario, utilizando OpenGL Es o Vulkan para renderizar . El kit de herramientas se expone como nodos de control para editores de renderizado (escritos en C++). Estos nodos de control también se pueden utilizar en proyectos con cualquier lenguaje de scripting compatible con Godot.

Este conjunto de herramientas personalizado se beneficia de la aceleración de hardware y tiene una apariencia consistente en todas las plataformas. Lo mejor de todo es que no tiene que lidiar con las advertencias de licencia LGPL que vienen con GTK o Qt. En última instancia, esto significa que Godot está "comiendo su propia comida para perros", ya que el propio editor es uno de los usuarios más complejos del sistema Godot UI.

Comer su propia comida para perros
es un término de la jerga inglesa que se utiliza a menudo para describir una situación en la que una empresa (especialmente una empresa de software) utiliza sus propios productos.
Esto se refiere al conjunto de herramientas de interfaz de usuario de Godot, del cual el propio Godot es usuario. Desarrolle usted mismo su propio conjunto de herramientas de interfaz de usuario.

Este kit de interfaz de usuario personalizado no se puede usar como biblioteca, pero aún puedes usar Godot y crear aplicaciones que no sean juegos a través del editor.

¿Por qué Godot usa SCons para construir el sistema?

Godot utiliza el sistema de construcción SCons
y no tiene planes de cambiar a un sistema de construcción diferente en el futuro. Hay muchas razones para elegir SCons sobre otras alternativas. Por ejemplo:

  • Godot compila para una docena de plataformas diferentes: todas las plataformas de PC, todas las plataformas móviles, muchas plataformas de consola y WebAssembly.
  • Los desarrolladores a menudo necesitan compilar para múltiples plataformas al mismo tiempo o incluso para diferentes objetivos para la misma plataforma. No pueden permitirse el coste del cambio que supone reconfigurar y reconstruir el proyecto cada vez. Los SCons pueden hacer esto sin esfuerzo y sin romper la construcción.
  • No importa cuántos cambios, configuraciones, adiciones o eliminaciones, las SCons no interrumpirán la compilación.
  • El proceso de construcción de Godot no es sencillo. El código (encuadernadores) genera varios archivos, otros archivos se analizan (sombreadores) y se requieren otros archivos para proporcionar personalización (módulos). Esto requiere una lógica compleja que sea más fácil de escribir en un lenguaje de programación real como Python, en lugar de utilizar un lenguaje basado en macros que sólo se utiliza para la construcción.
  • El proceso de compilación de Godot hace un uso intensivo de herramientas de compilación cruzada. Cada plataforma tiene procesos de detección específicos, los cuales deben manejarse caso por caso.

Si planeas construir Godot tú mismo, intenta mantener la mente abierta y al menos familiarízate con las SCons.

¿Por qué Godot no usa STL (Biblioteca de plantillas estándar)?

Como muchas otras bibliotecas (como Qt), Godot no funciona con STL. Creemos que STL es una excelente biblioteca de uso general, pero tenemos requisitos especiales para Godot.

  • Las plantillas STL crean una gran cantidad de símbolos, lo que da como resultado binarios de depuración enormes. Usamos algunas plantillas con nombres muy cortos.
  • La mayoría de los contenedores Godot tienen que cumplir requisitos especiales, como Vector, que utiliza copia en escritura y se utiliza para transferir datos, o sistemas RID, que requieren un rendimiento de acceso O(1). Asimismo, nuestra implementación de hashmap está diseñada para integrarse perfectamente con los tipos de motores internos.
  • Nuestros contenedores tienen seguimiento de memoria incorporado, lo que ayuda a realizar un mejor seguimiento del uso de la memoria.
  • Para matrices grandes, utilizamos memoria agrupada, que se puede asignar a un búfer preasignado o memoria virtual.
  • Usamos un tipo String personalizado porque los tipos proporcionados por STL son demasiado básicos y carecen del soporte de internacionalización adecuado.

¿Por qué Godot no usa excepciones?

Creemos que el juego no debería fallar pase lo que pase. Si sucede algo inesperado, Godot imprimirá un error (que incluso puede rastrearse hasta el script), pero luego intentará recuperarse lo más elegantemente posible y continuará ejecutándose.

Además, las excepciones pueden aumentar significativamente el tamaño del archivo ejecutable.

¿Por qué Godot no hace cumplir la RTTI?

Godot proporciona su propio sistema de conversión de tipos, con la opción de utilizar RTTI (Identificación de tipo en tiempo de ejecución) internamente. Deshabilitar RTTI en Godot significa que se pueden lograr binarios bastante pequeños con un costo de rendimiento mínimo.

¿Godot utiliza ECS (Entity Component System)?

Godot no usa ECS sino que se basa en la herencia. Si bien no existe un enfoque universalmente mejor, hemos descubierto que el uso de un enfoque basado en la herencia da como resultado una mejor usabilidad y, al mismo tiempo, es lo suficientemente rápido para la mayoría de los casos de uso.

Es decir, no hay nada que le impida utilizar la composición en su proyecto (creando nodos secundarios con scripts independientes). Luego, estos nodos se pueden agregar y eliminar en tiempo de ejecución para agregar y eliminar comportamientos dinámicamente.

¿Por qué Godot no obliga a los usuarios a implementar DOD (Diseño Orientado a Datos)?

Aunque Godot intenta internamente utilizar la coherencia de la caché tanto como sea posible, no creemos que sea necesario obligar a los usuarios a utilizar DOD.

DOD es principalmente una optimización de la coherencia de la caché que solo proporciona mejoras de rendimiento significativas cuando se trata de miles de objetos que cambian raramente por cuadro. Dicho esto, si mueves cientos de sprites o enemigos por cuadro, DOD no logrará una mejora significativa en el rendimiento. En este caso, debería considerar optimizar de otra manera.

La gran mayoría de los juegos no requieren esto y Godot proporciona asistentes convenientes para realizar el trabajo en la mayoría de los casos.

Si tu juego necesita manejar una cantidad tan grande de objetos, te recomendamos usar C++ y GDExtensions para las tareas de alto rendimiento, y GDScript (o C#) para el resto.

¿Cómo apoyar o contribuir al desarrollo de Godot?

Consulte la sección Cómo contribuir .

¿Quién está trabajando en el desarrollo de Godot? ¿Cómo me pongo en contacto con usted?

Consulte la página correspondiente en el sitio web de Godot .

Supongo que te gusta

Origin blog.csdn.net/BadAyase/article/details/133470532
Recomendado
Clasificación