Je travaille actuellement sur un projet iOS appelé Old Frank que j'ai essayé de suivre un modèle de conception MVC.
L'essentiel est.
GameObjects(model) <- Scene(controller) -> Sprites "SpriteKit" (View)
Maintenant, si je comprends bien MVC, vous ne pouvez pas utiliser beaucoup de fonctionnalités que SpriteKit a à offrir si vous souhaitez suivre MVC. Par exemple, tout SKAction
, détection de collision, etc.
N'est-ce pas au modèle où se trouvent les objets du jeu et comment ils doivent réagir lorsqu'ils touchent d'autres objets? N'est-ce pas au modèle de déterminer l'emplacement au fil du temps?
Y a-t-il des parties de SpriteKit qui pourraient être considérées comme utilisables comme "vue" dans MVC autres que le rendu?
ios
objective-c
spritekit
mvc
Skyler Lauren
la source
la source
Réponses:
Votre question est bonne. J'ai eu exactement la même question concernant SpriteKit et j'ai été très confus quant au manque d'informations sur le Web à ce sujet. SpriteKit semble vous encourager à mettre tout votre code Model-View-Controller dans la même classe (votre sous-classe SKScene), ce qui est vraiment déroutant pour moi. Comment pourriez-vous jamais construire un jeu de toute complexité en utilisant cette technique? Combiner l'état du jeu (score, numLives, etc.), avec du code de contrôleur comme touchesBegan / Ended, et afficher le rendu dans la même classe devient vraiment difficile à gérer au-delà du plus simple des jeux.
Je conviens que l'utilisation du modèle de souvenir pour aider à la persistance est une bonne idée, mais je pense également que le passage à une conception MVC pourrait être bénéfique. Je déplace actuellement mon jeu dans une architecture MVC. Mon approche actuelle consiste à faire gérer par mon modèle (objets de jeu) les corps physiques, la sous-classe SKScene comme contrôleur et une classe distincte pour agir comme vue pour configurer et rendre les aspects visuels des SKNodes dans la scène. Je ne suis qu'à mi-chemin du processus, donc je ne peux pas dire avec certitude si ce sera une bonne conception, mais il semble que ce sera beaucoup mieux que d'avoir une sous-classe de 10000 lignes de SKScene.
la source
En termes simples, une conception courante dans les jeux SpriteKit est des scènes, des couches, des nœuds et des nœuds enfants.
Vous pouvez faire de chaque pièce une classe discrète qui encapsule toutes les pièces, propriétés et méthodes.
Par exemple, une classe d'arrière-plan contenant des images en couches, des particules, diverses propriétés telles que la vitesse de déplacement de chaque calque et des méthodes publiques pour démarrer et arrêter le défilement de l'arrière-plan.
Dans cette conception, vous assemblez ces classes discrètes qui font leur propre travail dans la scène qui gère principalement la mise à jour en cours: physique, événements tactiles, etc.
la source