Quand devriez-vous lancer votre propre moteur de jeu? [fermé]

20

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:

  1. Je veux peut-être faire des choses, graphiques, qui ne sont pas disponibles dans cocos2d.
  2. 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?

Joey Green
la source
7
Si vous dites "C / C ++", il est fort probable que vous ne maîtrisiez pas au moins l'un d'entre eux, et probablement les deux.
DeadMG
10
Je comprends que certaines personnes confondent les deux et je devrais probablement dire C / C ++ / Objective-C pour répéter que je comprends les principaux langages que vous pouvez utiliser pour programmer sur la plate-forme iOS. Je n'avais pas envie de dire que C / C ++ signifierait automatiquement que je confondais les deux en un.
Joey Green
J'aime cette question car elle apporte un changement bienvenu par rapport à l'habituel "comment puis-je créer mon propre moteur?" des questions. +1 pour vous, monsieur.
Ray Dey
1
@DeadMG Je dis quelque chose "C / C ++" et j'ai une excellente compréhension des deux.
Ciaran
Je dirais que c'est le même qui l'a fait
bobobobo

Réponses:

38

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).

  • Quel middleware existe déjà que vous pourriez utiliser ("moteur" ou autre)
  • Ce que ce middleware apporte à la table, en termes de fonctionnalités.
  • Le degré de maturité / de fiabilité du middleware, surtout si vous vous souciez du support multiplateforme
  • Quel type d'outils le middleware fournit ou ne fournit pas pour accélérer le développement (ne négligez pas les outils avec votre propre technologie)
  • Quelles sont les limites du middleware (comme exemple simple, Unity 3.x n'a pas fait d'ombres en temps réel à partir de lumières dynamiques sur iOS)
  • Quelles fonctionnalités spécifiques votre jeu doit avoir .
  • Quels sont vos délais et combien de temps vous devrez passer pour arriver au point où le middleware vous mènera par rapport au coût du middleware.
  • L'extensibilité du middleware (par exemple, vous pouvez contourner le problème des ombres sur iOS dans Unity en utilisant des ombres de blob. Ou peut-être des ombres de projection.)

(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.

Tetrad
la source
7
D'accord. Comme tldr: Si vous devez poser la question, vous feriez bien mieux d'aller avec un moteur existant.
Chris Subagio
Votre note en gras résume mon expérience.
Ingénieur
1
La communauté est également importante. Quelque chose avec une communauté forte, comme XNA, rend la résolution des problèmes particuliers que beaucoup plus facile parce que quelqu'un l' a fait avant ou peut vous donner des pointeurs.
ashes999
14

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:

  • J'ai un délai serré
  • J'ai un ensemble de fonctionnalités fixes connu pour pouvoir choisir un moteur pour cela
néant
la source
3

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
Si son objectif est d'apprendre, ce n'est pas une perte de temps.
Ciaran
3

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.

Ciaran
la source
0

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.

bobobobo
la source