Je suis développeur de logiciels depuis 5 ans maintenant et je souhaite me lancer dans le développement de jeux iOS. J'ai joué avec le SDK iOS pendant environ 2 ans, en assistant à des réunions cocoaheads, et je pense avoir une bonne compréhension de l'objectif-c, du cacao et même du c et du c ++.
J'ai une idée de jeu et je sais que j'utiliserai Box2D, mais je me demande si je devrais utiliser cocos2D ou non. Les principales raisons sont:
- Je veux peut-être faire des choses, graphiques, qui ne sont pas disponibles dans cocos2d.
- Si je lance mon propre moteur de jeu, j'aurai plus de contrôle.
Bien sûr, la principale raison d'utiliser un moteur de jeu déjà existant est le temps qu'il économise, et cela facilite les choses difficiles; mais pour quelqu'un qui a les côtelettes techniques pour rouler le sien, est-ce logique?
Réponses:
La plupart des autres articles seront "faire un jeu pas un moteur", mais je vais supposer que vous avez un jeu particulier à l'esprit et que vous voulez savoir quand c'est une bonne idée de commencer avec le code de quelqu'un d'autre base ou recommencer à zéro.
Vous ne devriez pas utiliser votre propre technologie à moins que vous ne le sachiez utiliser vous devez utiliser la vôtre . Cela peut sembler désinvolte, mais c'est vraiment la seule bonne réponse. Comme pour la plupart des décisions, il y a des compromis. Vous seul pouvez déterminer pour votre situation particulière l'analyse coûts / avantages.
Vous devez avoir une compréhension des choses suivantes (cette liste n'est guère exhaustive).
(Notez que je n'ai pas spécifiquement mis "plus de contrôle" là-haut. C'est une phrase chargée qui peut aller de "je n'aime pas le code que je n'écris pas" à "j'ai besoin de pouvoir voir, comprendre et peaufiner toutes les variables du moteur physique pour obtenir cet effet particulier. "La première n'est pas vraiment une considération valable, mais la seconde l'est.)
Personnellement, je trouve que faire rouler votre propre technologie pour un jeu à petit budget ne vaut presque jamais l'effort. La quantité de puissance que vous obtenez les moteurs bon marché de nos jours est ridicule. Vous n'êtes pas à un point où vous décidez ou non d'une licence de moteur triple A de plusieurs millions de dollars. Vous ne pourrez pas battre ce que disons Unity pour 3 000 $. Ou Cocos2d pour tout ce qu'il en coûte (n'est-ce pas gratuit?).
Maintenant, si votre jeu est principalement axé sur une sorte de technologie que d'autres moteurs ne peuvent pas fournir ou ne peuvent pas fournir à un taux de rafraîchissement raisonnable, alors il pourrait être utile d'étudier ce que vous pouvez faire. Cela ne signifie pas pour autant que vous jetez complètement les autres logiciels intermédiaires. Ce n'est pas parce que vous avez besoin de votre propre moteur de rendu que vous ne pouvez pas utiliser un autre middleware pour la physique ou le son ou l'interface utilisateur ou ce que vous avez.
la source
Ne roulez pas votre propre moteur. Lancez votre propre jeu. S'il vous arrive d'écrire un moteur en même temps, c'est bon pour vous, sinon vous pouvez toujours refactoriser les pièces que vous voudrez peut-être réutiliser pour le rendre plus "moteur".
Les gens surestiment souvent ce qu'il faut pour écrire la partie "moteur" d'un jeu. Si vous ne faites que ce dont vous avez besoin, cela ne prendra pas si longtemps. La partie difficile est de ne pas rester bloqué dans l'infrastructure d'écriture et de n'écrire que ce dont vous avez absolument besoin pour résoudre votre problème.
J'utiliserais un moteur existant lorsque:
la source
Je pense que tu devrais juste écrire ton jeu, et peut-être que tu finiras avec un moteur plus tard . Écrire le moteur graphique (c'est tout ce dont on dirait que vous parlez) à partir de zéro en n'utilisant rien, mais OpenGL ne fera probablement que perdre votre temps. C'est un problème relativement bien résolu, donc en général, vous ne changeriez que la forme de l'API sans ajouter beaucoup de nouvelles fonctionnalités importantes par rapport à toute autre solution tierce disponible.
Si Cocos2D ou une autre couche graphique répond maintenant à vos besoins, utilisez-le. Si vos besoins changent pendant le développement, vous pouvez échanger le backend de rendu assez facilement - si vous croyez vraiment avoir l'expérience et les moyens de créer un moteur vous-même, vous devriez certainement avoir ce qu'il faut pour structurer votre jeu de telle sorte que l'échange le backend de rendu est une opération relativement banale.
Construisez votre jeu, permettez à ses besoins spécifiques de piloter l'ensemble des fonctionnalités du code que vous écrivez, et écrivez le code avec la réutilisabilité et la bonne architecture à l'esprit. Vous vous retrouverez naturellement avec un "moteur" après avoir terminé quelques projets comme celui-ci, et vous terminerez ces projets plus rapidement parce que vous vous évitez de vous enliser dans le fluage des fonctionnalités au niveau du framework.
la source
C'est très simple. Quel est votre objectif principal: apprendre ou commercialiser?
Évitez d'utiliser une bibliothèque si votre objectif principal est d'apprendre de l'expérience de la mise en œuvre des concepts résolus par la bibliothèque. Chaque fois que je développe un jeu (à temps partiel), mon objectif est purement d'apprendre. Je me fiche du temps qu'il faut, c'est pourquoi je fais tout à partir de zéro! Maintenant, vous décidez.
la source
Vous devez lancer votre propre moteur de jeu lorsque vous savez qu'il est nécessaire .
Par exemple, disons que vous n'avez pas d'argent à dépenser pour Unity. Ou, vous préférez le dépenser sur du nouveau matériel à la place. Ou, il y a des problèmes de performances avec les moteurs gratuits à votre disposition, ou vous devez avoir plus de contrôle à un faible niveau.
Si vous aimez écrire des logiciels pour écrire des logiciels, vous allez adorer écrire un moteur de jeu. Un piège courant des programmeurs de jeux débutants consiste à se laisser prendre à écrire un moteur comme un projet perpétuel. Je crois honnêtement que c'est ainsi que tous ces moteurs de jeux open source sont nés - des programmeurs de jeux qui ne l'ont pas fait
Dans ce cas, écrivez votre propre moteur.
la source