¿Cómo desarrollar un motor de juego?
Hmm, el motor del juego se ha desarrollado hasta el día de hoy y ya es un sistema de software con necesidades industriales relativamente generales. Si se subdivide, habrá muchas divisiones diferentes según las diferentes dimensiones de subdivisión. Por ejemplo, según las funciones, se puede dividir en motor de física, motor de renderizado, motor de script, etc. Según la plataforma, se puede dividir en motor de juegos de PC. Los motores de juegos HTML5 y terminales móviles se dividen en motores 2D, motores 3D, etc. según las categorías de representación.
Para otro ejemplo, los juegos en línea se dividen en motores de cliente y motores de servidor; la arquitectura del motor del servidor está estrechamente relacionada con el tipo de juego y los requisitos de carga, y la arquitectura en sí está relacionada con la selección de tecnología. Componentes básicos (sistema operativo, lenguaje de desarrollo, biblioteca de red, base de datos, herramientas de operación y mantenimiento, operación backend, etc.), que es más flexible.
De acuerdo con los requisitos de la pregunta, supongo que el cartel pregunta sobre un motor de cliente multiplataforma general y los objetos de referencia son Unity, Unreal, CocosCreator, etc. Primero, las funciones centrales típicas del motor del juego se extraen de la siguiente manera:
Renderizado: para realizar la visualización de la imagen
Física: para realizar la abstracción y expresión del mundo físico
Audio: para realizar el procesamiento de reproducción de sonido
Red: realizar la función de red
Interfaz de programación de juegos: hable sobre la interfaz que el motor del juego puede proporcionar y exponer a los desarrolladores en forma de API
Integración compatible Entorno de desarrollo (IDE): realiza edición y organización de escenas visuales, edición física visual, diseño de interfaz de usuario visual, uso de recursos, etc.
Función de depuración: proporciona una forma conveniente para que los desarrolladores prueben y depuren funciones del juego para optimizar el rendimiento.
Función de empaquetado y publicación: genera los archivos ejecutables (ejecutables) exe, app, apk, etc. del juego final
Función de extensión de complemento: proporciona a los desarrolladores avanzados acceso al motor en sí Interfaz funcional con funciones mejoradas
Otras funciones: por ejemplo, Unity tiene un servicio que puede integrar estadísticas de datos de la plataforma, su propia publicidad en video y otras funciones.
Luego describiremos brevemente los métodos de implementación uno por uno, enfatizando que es mejor consultar motores que han sido ampliamente verificados en la industria, como Unity, si desea conocer más detalles; Puedes utilizar los motores convencionales primero.
1. Para que sea multiplataforma, generalmente se utiliza una capa inferior de biblioteca estándar de gráficos multiplataforma, como OpenGL. Sobre la base de la biblioteca de capa inferior, se construye un marco de renderizado de capa superior. , como Sprite, GUI y extensiones de sombreado de modelos 3D, etc.
2. Física: los motores de física tienen requisitos relativamente altos para el rendimiento informático y las pruebas de las funciones subyacentes requieren mucho esfuerzo, por lo que generalmente se utilizan motores de física maduros, como Havok, PhysX, Bullet y Cannon. js, etc.
3. Audio: Se suelen utilizar soluciones maduras en la industria, como OpenAL de código abierto, FMOD y la función de Audio de la propia plataforma HTML5. En términos generales, la demanda de funciones de audio en juegos sin música es relativamente sencilla. Dependen principalmente de software profesional para proporcionar archivos de efectos de sonido (mp3, wma, etc.), analizar archivos pequeños en el juego, procesar la reproducción de sonido y ajustar. volumen, etc
4. Red: proporciona funciones de red y proporciona interfaces empaquetadas y fáciles de usar para TCP, UDP, HTTP y otros protocolos bajo demanda. Si para facilitar el desarrollo, el procesamiento de la conexión, las indicaciones de error, el formato del marco del protocolo, los métodos de serialización y deserialización de la comunicación entre el cliente y el servidor se pueden manejar bien, se pueden proporcionar más especificaciones además de esto, como el uso de Protobuf como protocolo. formato.
5. Interfaz de programación de juegos: Esta es la organización de la API proporcionada a los desarrolladores. Determine qué lenguaje proporciona el motor a los desarrolladores para programar, cómo usar imágenes, recursos de audio y video, modelos 3D, etc., y cómo proporcionar interfaces para interactuar con el entorno de ejecución del juego (computadora, teléfono móvil), etc.
6. Compatibilidad con el entorno de desarrollo integrado (IDE): herramientas de desarrollo visual fáciles de usar, como diseño de arrastrar y soltar, uso de recursos de juegos de arrastrar y soltar, edición de código y depuración integrada. y funciones de embalaje, etc. Esta área constituye la mayor parte de la carga de trabajo de desarrollo del motor de juegos, e involucra interfaces interactivas que los usuarios (desarrolladores de juegos) utilizan intensamente y debe ser lo más eficiente y fácil de usar posible. En términos generales, si no es particularmente capaz de controlarlo, es mejor utilizar una solución de desarrollo de aplicaciones multiplataforma ya preparada, como CocosCreator que utiliza el marco electrónico.
7. Función de depuración: proporciona visualización de FPS, ejecución de código de seguimiento, perfil, simulación de señal de red, configuración de simulación de resolución, simulación de dispositivo de hardware (teléfono móvil), vista previa del juego, etc. Se recomienda que el tiempo de ejecución del juego y el editor utilicen el mismo o aproximadamente el mismo conjunto de interfaces de recursos y renderizado (como Unity). Esto puede reducir fácilmente la situación en la que los resultados de depuración y ejecución son completamente diferentes.
8. Función de empaquetado y publicación: el procesamiento simple puede generar proyectos para las plataformas correspondientes que se empaquetarán. Por ejemplo, la plataforma Android genera proyectos de AndroidStudio y la plataforma ios genera proyectos de xcode. relaciones de recursos y bibliotecas de códigos, y los archivos de configuración. Eficacia, coherencia, velocidad de compilación, etc.
9. Función de extensión enchufable: la mano de obra es limitada debido al tiempo y las funciones del motor no tienen que ser grandes y completas desde el principio. El motor general se puede diseñar como un fácil de usar. Estructura ampliada y fácil de modificar, y las interfaces correspondientes pueden exponerse a los desarrolladores. Los jugadores trabajan juntos para iterar y mejorar el motor del juego.
10. Otras funciones: esta área se puede agregar de acuerdo con las características del propio motor. Por ejemplo, varios motores importantes ahora proporcionan almacenes de recursos, estadísticas de datos y otras interfaces de servicios heredados oficialmente.
La implementación de un motor verdaderamente utilizable es un proyecto sistemático y complejo. Hay mucho trabajo sucio que debe considerarse, incluida la compatibilidad de la plataforma, el rendimiento, los efectos, la facilidad de uso, la solidez y la documentación. escribir requiere mucho esfuerzo;
Si está personalmente interesado en comprenderlo, puede ampliar la consulta a contenido relacionado según el contenido anterior y puede comunicarse en cualquier momento.
Si quieres crear un motor de entretenimiento, puedes jugar a tu antojo. La tecnología es como la poesía, y cuanto más juegues, más loco te volverás;
Si quieres. Si quieres crear un gran motor, acepta mi rodilla.
Básicamente, hoy en día se utilizan dos interfaces de hardware en los juegos, una es DirectX y la otra es OpenGL. OpenGL es solo una interfaz de gráficos 2D3D y no tiene otras funciones. DirectX es un conjunto completo de interfaces multimedia, incluida. 2D3D Imágenes, vídeo, audio, redes, dispositivos de entrada y más, desarrollados específicamente para la producción de juegos. Ambos se están desarrollando rápidamente y constantemente se agregan e implementan nuevas características en el hardware. La tarea del motor del juego es encapsular los detalles de estas interfaces de aceleración de hardware subyacentes y proporcionar a los diseñadores de juegos una interfaz completa para implementar las funciones requeridas por el juego. Si desea escribir un motor, primero debe saber cómo es. Puede consultar los motores publicados, que van desde motores simples no comerciales hasta motores comerciales potentes y complejos. Se recomienda echar un vistazo al famoso motor 2D HGE. Es muy rápido, fácil de usar y el código fuente está incluido en el motor. Consulte su sitio web: hge.relishgames.com para saber cómo utilizar el motor y descargar el paquete del motor. Los documentos de referencia que contiene le enseñarán cómo utilizarlo. Consulte el conocido sitio web de desarrollo de juegos www.devmaster.net en la industria para obtener información detallada sobre varios motores de juegos.