Notas de estudio (dos): patrones de diseño en juegos

1. Es necesario darse cuenta profundamente del significado de los patrones de diseño
El desarrollo de juegos es un proyecto de software y su característica es que los requisitos son extremadamente cambiantes. Para cualquier proyecto de software, necesitamos organizar el código para mejorar su legibilidad (es fácil de entender para otros), seguridad (no a menudo errores) y facilidad de uso (la lógica es compleja, el pensamiento es demasiado sesgado y su uso es diferente. Tipo de problema), robustez (para poder manejar bien situaciones inesperadas), facilidad de mantenimiento (si es fácil de reparar y modificar), extensibilidad (si es fácil agregar funciones), encapsulación y reutilización (no copie y pegue un fragmento de código en todas partes)

2. Las características
del proyecto del juego Para el proyecto del juego, además de los problemas anteriores, debemos prestar más atención a su escalabilidad, ya que las necesidades del juego pueden cambiar cada día, por lo que debemos considerar lo más posible al momento de escribir la lógica del juego. En este caso, considerando la conveniencia de futuras modificaciones, etc. Por lo tanto, necesitamos reducir el acoplamiento del código tanto como sea posible, para que las diferentes funciones no se afecten entre sí tanto como sea posible. Sin embargo, la reducción del acoplamiento aquí no solo se refiere al acoplamiento entre módulos escritos por nosotros mismos, sino también a considerar el acoplamiento con módulos escritos por otros. Trate de no depender demasiado de los módulos de otras personas, para que una pequeña modificación del código de otras personas no nos cause Modificación a gran escala del código.

3. No sobre-diseñar
Debido a que los requisitos cambian con demasiada frecuencia, es posible que un plan que diseñó para los requisitos actuales sea perfecto o no, fracasará completamente cuando los requisitos cambien al día siguiente. Además, el diseño de un requisito requiere tiempo. Puede llevar una semana pensar en una solución casi perfecta, pero el requisito cambia en la segunda semana. El tiempo de esta semana se pierde casi por completo. Esto es casi imposible de comprender por completo, pero el problema puede evitarse tanto como sea posible mediante la acumulación de experiencia.

4. El rendimiento del juego es un indicador muy importante.A
diferencia de otros programas, muchas lógicas de juego no se basan en mensajes y deben llamarse en cada cuadro. Por lo tanto, cuando agregamos métodos a la función Tick (), debemos pensar si podemos conducir de otra manera para reducir el costo de ejecución de la función.

5. Modelo de fábrica: fábrica simple, fábrica ordinaria, fábrica abstracta La
llamada fábrica, el propósito es producir productos. Por lo tanto, encapsulamos al menos una clase de fábrica y una clase de producto. En términos generales, una fábrica no solo produce un producto. Entonces, abstraemos el producto y podemos derivar una variedad de productos similares basados ​​en este producto. Esta es una fábrica simple que puede producir una variedad de productos de diferentes series. Por ejemplo, una planta de fabricación produce aviones civiles, aviones de combate y drones. Entonces, estos tres aviones son del mismo tipo (todos los aviones), pero las series son diferentes (diferentes escenarios de aplicación).

Por supuesto, a veces, para tener una división clara del trabajo, no quiero que una sola fábrica produzca todo tipo de productos, así que abstraigo la fábrica y diferentes tipos de fábricas producen el mismo tipo y diferentes series de productos. Este también es un modelo de fábrica, llamémoslo una fábrica ordinaria . Por ejemplo: no puedo fabricar aviones de combate y aviones civiles en la misma fábrica, así que conseguiré una nueva fábrica de aviones de combate para producir aviones de combate, y aviones civiles obtendrán una nueva fábrica de fabricación civil para fabricarlos.

Entonces, ¿qué es una fábrica abstracta?
No importa cuán abstracta sea la fábrica simple anterior, una fábrica específica solo produce un producto específico. Cada fábrica de hormigón de la fábrica abstracta puede producir varios productos. Ejemplo: el fabricante descubre que hay una gran cantidad de materiales adicionales en la producción de aviones, que es demasiado derrochador para tirarlos, así que estudie la producción de autos pequeños. De esta manera, una planta de fabricación de aviones civiles puede volver a producir automóviles y luego renombrar una planta de fabricación civil. La fábrica de aviones de combate produjo vehículos a prueba de balas y pasó a llamarse fábrica militar.

Compare la fábrica simple, la fábrica ordinaria y la fábrica abstracta: la
fábrica simple tiene solo un tipo de fábrica, responsable de producir todos los productos del mismo tipo, por lo que simplemente se puede procesar en una fábrica, y la fábrica no necesita ser abstracta, sino porque puede haber múltiples productos, por lo que El producto debe ser abstracto.
Una fábrica ordinaria tiene múltiples fábricas, pero cada fábrica solo produce un producto del mismo tipo y serie. Considerando que puede haber múltiples productos del mismo tipo y una serie de productos corresponde a una fábrica, es necesario abstraer productos y fábricas.
Hay muchos tipos de fábricas abstractas y cada tipo de fábrica puede producir múltiples tipos de productos. Considerando que puede haber múltiples productos del mismo tipo, también es necesario abstraer.

Modo de fábrica en el diseño del juego: los objetos que deben generarse y crearse con frecuencia en el mundo del juego de la lógica de GamePlay se pueden administrar mediante el modo de fábrica. Los monstruos engendrados pueden luego abstraerse en fábricas ordinarias de acuerdo con los tipos de monstruos.

6.Modo Constructor:
subdivida y divida los detalles de construcción de un objeto para lograr el efecto de ajustar libremente el orden de construcción y el contenido de la construcción.

Modo constructor en el diseño de juegos: no lo uso mucho. Personalmente, creo que se pueden crear diferentes tipos de armas ensambladas a través de esto, y las partes se pueden dividir. En resumen, el mismo recurso se puede reutilizar para lograr diversidad de desempeño.

7. Modo de prototipo:
Copiar una instancia de un objeto es simplemente un clon. Generalmente se usa para crear un nuevo objeto basado en el propio objeto, ocultando los detalles de la creación del objeto.

Modo prototipo en el diseño de juegos: generalmente, los objetos que se arrastran al editor se crean de manera similar, como el Prefab en Unity. Primero, el jugador arrastra un objeto desde el archivo de recursos a la escena del editor, en este momento, se crea un objeto. Posteriormente, el jugador hace clic en jugar y el nuevo mundo clonará un objeto idéntico.

8. Singleton / Singleton:
solo hay un objeto global en todo el programa en ejecución.

Singleton en el diseño de juegos: como gestión global de NPC, registrador de eventos, gestión de consola, etc.

9. Modo de observador / modo de publicación y suscripción:
cuando cambia el estado de un objeto, todos los objetos que dependen de él son notificados y actualizados automáticamente. El objeto objetivo puede vincular libremente a N observadores. No le importa quiénes sean los suscriptores. De todos modos, informa a todos los observadores cada vez que cambia, lo que logra el propósito de reducir el acoplamiento.
El modelo de publicación-suscripción es diferente del modelo de observador. Hay un centro de envío unificado para la publicación. Los suscriptores (observadores analógicos) pueden suscribirse al contenido del centro de envío a voluntad y los editores (objetos de destino analógicos) pueden publicar mensajes en el centro de envío en cualquier momento y luego enviar El centro procesa la publicación de mensajes según se suscriban los suscriptores.

Modo de observador en el diseño del juego: por
ejemplo, en el sistema de tareas, todos los jugadores que reciben la misma tarea global recibirán información actualizada sobre la tarea. Este modo es muy similar a la realización del agente de multidifusión en lenguaje C ++.

10. Adaptador:
Puentee las clases que realizan la misma función pero las interfaces no son compatibles para que puedan trabajar juntas, principalmente para lidiar con la incompatibilidad de la interfaz antigua.

Modo adaptador en el diseño del juego: generalmente, se usa cuando el código del proyecto o del motor no es compatible con la interfaz original después de la actualización, o cuando el código del proyecto anterior se aplica en un juego nuevo. Por ejemplo, el proyecto antiguo usa las funciones del nuevo motor y llama a la interfaz subyacente del nuevo motor. Puede crear un nuevo adaptador para heredar la clase anterior y luego guardar las propiedades de un motor nuevo correspondiente al tipo de clase. Al llamar a la interfaz anterior, sobrescribirá la lógica anterior original y la cambiará a la interfaz de la clase correspondiente del motor nuevo. También puede agregar un motor nuevo a la clase anterior. Nueva interfaz solo disponible.

11.Modo puente puente:
si un objeto tiene dos factores de cambio dimensionales, entonces un cambio dimensional se puede realizar a través de la abstracción de la herencia, y otro factor de cambio dimensional se puede agregar en la clase abstracta (esto también se abstrae a través de la herencia, y también Puede continuar agregando abstracciones), este es el modo puente.

Modo puente en el diseño de juegos: todavía no lo he usado.

12. Decorador: Consiste
en decorar algunas clases existentes para ampliar algunas funciones, el valor de decoradores radica en la decoración, y no afecta las funciones centrales de la clase decorada en sí. Por lo general, en un sistema heredado, las subclases suelen ser mutuamente excluyentes, pero algunas funciones son comunes. Para agregar dinámicamente diferentes funciones a diferentes subclases, puede usar decoradores para lograr este efecto.

Modo puente en el diseño de juegos: todavía no lo he usado.

Enlace original (indique si ha sido reimpreso): http://blog.csdn.net/u012999985/article/details/79090524

Supongo que te gusta

Origin blog.csdn.net/qq_43801020/article/details/108921041
Recomendado
Clasificación