Actualmente estoy trabajando en un proyecto de iOS llamado Old Frank que he estado tratando de seguir un patrón de diseño MVC.
La esencia de esto es.
GameObjects(model) <- Scene(controller) -> Sprites "SpriteKit" (View)
Ahora, si entiendo MVC correctamente, no puede usar muchas de las funciones que SpriteKit tiene para ofrecer si desea seguir MVC. Por ejemplo SKAction
, detección de colisión, etc.
¿No depende del modelo donde se encuentran los objetos del juego y cómo deben reaccionar al tocar otros objetos? ¿No depende del modelo determinar la ubicación a lo largo del tiempo?
¿Hay alguna parte de SpriteKit que se considere aceptable usar como "vista" en MVC que no sea el renderizado?
ios
objective-c
spritekit
mvc
Skyler Lauren
fuente
fuente
Respuestas:
Tu pregunta es buena. He tenido exactamente la misma pregunta con respecto a SpriteKit y he estado muy confundido acerca de la falta de información en la web sobre esto. SpriteKit parece alentarlo a poner todo su código de Modelo-Vista-Controlador en la misma clase (su subclase SKScene), lo cual es realmente confuso para mí. ¿Cómo construirías un juego de alguna complejidad usando esa técnica? Combinar el estado del juego (puntaje, numLives, etc.), con un código de controlador como touchesBegan / Ended, y ver renderizado en la misma clase se vuelve realmente difícil de manejar más allá de los juegos más simples.
Estoy de acuerdo en que usar el patrón de recuerdo para ayudar con la persistencia es una buena idea, pero también creo que cambiar a un diseño MVC podría ser beneficioso. Actualmente estoy moviendo mi juego a una arquitectura MVC. Mi enfoque actual es que mi modelo (objetos del juego) administre los cuerpos físicos, la subclase SKScene actúe como controlador y una clase separada que actúe como la vista para configurar y representar los aspectos visuales de SKNodes en la escena. Estoy a mitad del proceso, así que no puedo decir con certeza si este será un buen diseño, pero parece que será mucho mejor que tener una subclase de 10,000 líneas de SKScene.
fuente
En términos simples, un diseño común en los juegos SpriteKit son escenas, capas, nodos y nodos secundarios.
Puede convertir cada parte en una clase discreta que encapsule todas las partes, propiedades y métodos.
Por ejemplo, una clase de fondo que tiene imágenes en capas, partículas, varias propiedades como la velocidad con la que se debe mover cada capa y métodos públicos para comenzar y detener el desplazamiento del fondo.
En este diseño, reúne estas clases discretas que hacen su propio trabajo en la escena, que en su mayoría maneja actualizaciones en ejecución: física, eventos táctiles, etc.
fuente