Partir de zéro - Est-ce une erreur si je réinvente la roue?


31

Habituellement, chaque fois que je veux commencer un jeu, je pense avoir une bonne architecture de base pour le rendu et une meilleure boucle de jeu à partir de zéro. Je ne veux généralement pas utiliser les moteurs existants. La raison derrière cela est que je veux l'implémenter par moi-même pour apprendre des choses.

Mais beaucoup de blogs et de développeurs disent que ce n'est pas une bonne option pour réinventer la roue.

Suis-je en train de manquer quelque chose?


À quelle fréquence "lancez-vous un jeu"? Si vous répétez rapidement des idées, faites ce qui fonctionne. Si vous faites un magnum opus où un faux pas est coûteux ou le temps est limité, pourquoi perdre du temps à réinventer la roue? Si vous êtes intéressé à apprendre comment les choses fonctionnent, pourquoi ne pas écrire votre propre technologie? Quels sont vos objectifs ici?
ChrisE

Réponses:


16

Non, ce n'est pas du tout une mauvaise chose. L'apprentissage et la capacité d'apprendre sont absolument fondamentaux pour être un bon programmeur.

MAIS
L'important lorsque vous construisez quelque chose à partir de zéro est de le terminer complètement. Peu importe à quel point il est hacky et non optimisé, si vous le complétez, il y a un sentiment de satisfaction pas comme les autres. Tout cela vous donnera une expérience précieuse et vous pourrez toujours rendre le code plus élégant ou mieux fonctionner plus tard lorsque vous aurez quelque chose de fonctionnel. À la fin de la journée, les seules choses qui séparent les programmeurs impressionnants et les programmeurs médiocres sont l'expérience et la pratique.

Bien sûr, lorsque vous avez fait quelque chose et que vous souhaitez créer d'autres jeux, il n'y a aucune raison de réutiliser votre ancienne base de code.

Si vous cherchez à démarrer une carrière dans le développement de jeux, ou tout type de développement vraiment, l'expérience vous mènera très, très loin. Mais si vous cherchez à produire des jeux rapidement et facilement (relativement facilement, par rapport à l'écriture de vos propres trucs), utilisez un moteur existant.

Pour être honnête avec vous, une combinaison d'expérience en utilisant votre propre code ET en utilisant une variété de bibliothèques et de moteurs différents fera de vous un meilleur codeur.


Merci Ray, c'est utile! mais pouvez-vous s'il vous plaît également énumérer les mécanismes de jeu ...
Ayyappa

Aucun problème. Je ne suis pas tout à fait certain de ce que vous voulez dire dans le contexte de votre question initiale. Que cherchez-vous en particulier?
Ray Dey

C'est ok, je vais en faire une question distincte.L'autre question de ce post a été supprimée (modifiée) car elle ne fait pas un peu référence au contexte.
Ayyappa

+1 pour la ligne d' arrivée - terminer un projet est une bonne expérience.
Cyclops

36
i want to implement it on my own to learn stuff.

C'est probablement la chose la plus importante. Si votre objectif est d'apprendre, l'écriture de vos propres moteurs de rendu et de boucle de jeu à partir de zéro est très bien, et une expérience d'apprentissage parfaitement bonne. Si votre objectif est de créer un jeu fini rapidement et facilement, utilisez un framework existant.


3
+1. Ce n'est pas parce qu'une API ou une bibliothèque tierce peut supprimer tous les détails de l'implémentation que vous n'avez pas besoin de les connaître. L'utilisation de «roues standard» vous aidera à écrire le code fini plus rapidement; mais faire votre propre roue vous aidera à identifier celles qui sont les meilleures, et surtout comment les optimiser et les déboguer lorsque les rayons commencent à sortir ...
sebf

4
+1 Ne réinventez pas la roue, sauf si vous apprenez à fabriquer des roues.
zzzzBov

4
rappelez-vous que cela améliorera vos compétences en conception de moteur de jeu , mais pas en conception de jeu.
Dave O.

C'est aussi une réponse digne ... merci ... mais c'est dommage que je ne puisse pas marquer deux réponses :(
Ayyappa

10

Réinventer la roue vous apprend comment les roues fonctionnent.


5

Cela dépend de ce que vous recherchez. Si vous voulez apprendre, réinventez autant de roues que vous le souhaitez. Je connais des gens qui ont écrit leurs propres chargeurs JVM ou PNG pour le plaisir.

La plupart des blogs donnent probablement des conseils sur la façon d'obtenir les informations qui vous rémunèrent rapidement, mais je ne sais pas si c'est une bonne stratégie à long terme. Si vous ne savez pas avec quoi vous jouez, comment savoir si c'est un bon choix? Que ferez-vous lorsque vous rencontrez des problèmes, allez pleurnicher sur des forums ou pouvez-vous le découvrir vous-même?


4

Il y a beaucoup de découragement à propos de cette phrase dans la communauté de programmation générale, mais je pense que nous savons tous que beaucoup d'entre nous n'aiment rien de plus que réinventer la roue et trouver un moyen de la faire tourner un peu mieux, plus vite et plus frais.

Les nouvelles technologies font leur apparition tout le temps et ont besoin de personnes pour réinventer la roue. OpenCL et d'autres langages de calcul GPU en sont un bon exemple.

Vous pouvez utiliser un cadre qui incluait les nouvelles capacités de cette année mais en le faisant vous-même, si vous faites vraiment la recherche et apportez des améliorations sur ce qui existe déjà, .. vous pouvez vraiment parcourir de nouveaux terrains en termes de performances et d'utilité.

Une fois que vous avez inventé quelques roues pour vous faire rouler, vous connaissez assez bien vos trucs comme un gros bonus!

De plus, c'est vraiment très amusant.


1

Et il y a ceux qui prétendent être plus productifs précisément parce qu'ils réinventent la roue.

Exemple: Eskil Steenberg, créateur de World of Love (excellente vidéo où il parle de son jeu, de son moteur et de ses outils impressionnants , et de sa philosophie: http://vimeo.com/18423305 )


1

Si c'est votre première fois, même si c'est juste pour apprendre, il est toujours préférable d'utiliser une sorte de moteur car vous apprendrez ce que le moteur peut vous apporter.

«La roue» utilisée dans la métaphore est le concept, pas la mise en œuvre. Même si vous ne réinventerez pas la roue, vous devez toujours choisir si vous en achèterez une ou si vous en fabriquerez une vous-même. Par conséquent, créer votre propre moteur n'est même pas réinventer la roue, c'est juste que vous voulez créer votre propre roue dans un but, qui pourrait être pour l'apprentissage, à faible coût, pour une petite taille ou toute utilisation ou exigence spécifique.


0

Le fait est que ce qui prend beaucoup de temps lorsque vous faites un jeu, c'est le contenu réel et la création et le test des actifs - et non l'écriture de code en général. C'est probablement pourquoi il est facile d'ignorer cette partie et d'utiliser un moteur existant pour pouvoir passer plus de temps sur le contenu, la conception de jeux et les bogues de niveau supérieur.

Je pense qu'en faisant des trucs à partir de zéro pour apprendre, cela générera une bonne idée du travail derrière les moteurs existants et améliorera la possibilité d'en sélectionner un plus tard si nécessaire.

Pour le plaisir et pour l'apprentissage, faites ce que vous voulez. Si je devais écrire des classes de pipeline de contenu à partir de zéro, en gérant tous les détails ennuyeux et les cas marginaux du système de fichiers et des chargeurs de ressources, je deviendrais fou - tant que j'en ai appris suffisamment pour avoir une très bonne compréhension de la façon de le faire, J'ai tendance à éviter de le faire si quelqu'un l'a déjà bien fait (bien que cela soit vrai, beaucoup de frameworks et de moteurs ne rentreront pas dans ma propre idée de "bon", ce qui serait la cause de réécrire quelque chose). Si je ne sais pas comment le faire, j'aime vraiment le faire au moins une fois, juste pour saisir les moindres détails de ce que c'est - comme Ray Dey l'a déjà dit.


0

Ce n'est qu'une erreur si vous n'avez pas le temps d'apprendre. Si vous avez le temps, allez-y. Sinon, ne le faites pas.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.