2010-11-13 4 views
2

J'ai commencé à programmer un jeu pour l'iphone et comme tous les débutants j'ai l'impression de photographier dans l'obscurité. Je veux juste lancer mon design et comment fonctionne mon "moteur graphique" pour voir s'il est proche du design standard ou de la bonne pratique. Permettez-moi de vous expliquer comment cela fonctionne:Iphone Game Develoment - Besoin de conseils de conception

Pour des raisons de simplification permet simplement dire que j'ai les 3 catégories suivantes:

LevelView: hérite de UIViewController et est une vue avec 10 boutons pour chaque niveau du jeu. Cliquer sur un bouton crée un nouvel objet GameViewController (en utilisant initWithLevel) et l'instancie avec un entier (1-10) selon le niveau choisi par le joueur.

GameViewController: hérite de UIViewController et possède la méthode initWithLevel (int) et une grosse instruction switch qui effectue la configuration de niveau en fonction de l'int qui a été passé. Il instancie donc deux types d'objets (robots et planètes) en différents nombres selon chaque niveau. Chaque objet créé est inséré dans un tableau appartenant à un singleton. Puis à la fin, il va commencer le gameloop qui est une autre méthode dans cette classe.

GameView: hérite de UIView et est l'endroit où tout est dessiné (a une méthode drawRect) et où sont les méthodes touchées, déplacées et terminées. Qu'est-ce qui se passera pour chaque gameLoop est que cela va tirer tous les objets du tableau global (le tableau dans le singleton) et selon quel objet il va dessiner l'image correcte à l'emplacement correct. (l'emplacement des robots et des planètes est stocké dans leurs objets respectifs sous forme de variables)

Dans les touches Début, Déplacement, Fin des méthodes en fonction de ce que l'utilisateur retire des objets pertinents du tableau singleton et leur position/capacité est actualisé. Par conséquent, la prochaine fois que la boucle sera exécutée et qu'elle sera à nouveau dessinée, la méthode draw mettra à jour son emplacement ou son comportement.

Cela vous semble-t-il exact à ce stade? Dois-je instancier un objet GameViewController pour démarrer le niveau? Le gameLoop devrait-il être dans GameViewController ou devrait-il être dans le GameView? J'ai ajouté le GameView sur GameViewController dans InterfaceBuilder. Il dessine les objets initiaux mais je ne suis pas sûr de savoir comment les mettre à jour à l'avenir. Comment puis-je appeler la méthode drawRect pour tout mettre à jour?

De toute façon, désolé pour le poste extrêmement long. Je ne cherche pas une réponse spécifique juste un examen de quelqu'un plus expérimenté dans ce pour me dire:

1) oui, vous allez dans la conception de direction sage

2) ne vous devez repenser quelques choses

Merci pour votre aide

Stav

Répondre

1

Je recommande vraiment vraiment vraiment l'aide d'un bon cadre de jeu comme Cocos2d, plutôt que de rouler tout seul.

Il est très rapide et facile de rouler avec, et un lot des meilleurs jeux ont été faites avec.

Il a même la gestion des "niveaux" comme vous essayez de le faire.

Je l'ai téléchargé et mon premier test a été lancé en 24 minutes!

Check it out à:

http://www.cocos2d-iphone.org/

+0

Je l'ai vérifié. Regarde assez puissant pour ce que je fais et assez facile! Je pense que je peux changer toute mon application à cela! Bravo – STDE

+0

Hey - merci pour le commentaire. Je passe à cocos2d car il semble beaucoup plus facile et plus rapide que le framework de base que j'utilisais auparavant. À votre santé! – STDE

1

Je suis d'accord sur le Cocos2d. D'un autre côté, si vous êtes intéressé par le fonctionnement des graphiques, commencez à apprendre OpenGL ES, c'est dur à apprendre mais une fois que vous le savez, vous n'êtes plus aussi limité qu'avant en utilisant des frameworks qui font tout le travail.

Sur votre autre question, la conception. Les applications sont construites sur le modèle MVC. Selon l'échelle de l'application, vous pouvez mettre la boucle de jeu (logique) dans la classe de contrôleur ou pour un projet plus grand (et un meilleur design), vous devez séparer les 2 à mon avis.

+0

Merci pour le commentaire alJaree. Une autre question, est-ce un bon design de mettre mes objets de jeu dans un singleton et de les transférer entre les classes de cette façon? Y a-t-un autre moyen de faire ça? J'ai vérifié Cocos2d et il semble très facile d'utiliser un assez puissant pour mes besoins. Je peux passer à cela. – STDE

+0

Bien sûr. Le singleton devrait faire l'affaire. Jetez un oeil à ce post. L'auteur utilise cocos2d et discute de la classe singleton. http://getsetgames.com/2009/08/30/the-objective-c-singleton/ – jarryd

+0

Merci! Je commence à convertir toute ma structure de menu en scène et en implémentant toutes les bases de cocos2d. Après cela, toute la partie du moteur graphique devrait être assez facile! à votre santé! – STDE

Questions connexes