Est-ce que peaufiner mon projet actuel sera une meilleure expérience d'apprentissage que d'en commencer un nouveau? [fermé]


15

J'ai commencé à programmer il y a de nombreuses années. Maintenant j'essaye de faire des jeux. J'ai lu de nombreuses recommandations pour commencer à cloner des jeux bien connus comme galaga, tetris, arkanoid, etc. J'ai également lu que je devrais opter pour tout le jeu (y compris les menus, le son, la partition, etc.).

Hier, j'ai terminé la première version complète de mon clone arkanoïde. Mais c'est loin d'être terminé. Je peux encore y travailler pendant des mois (je programme comme passe-temps pendant mon temps libre) en implémentant un commutateur de résolution d'écran, un remappage des touches de contrôle, des power-ups tombant de briques cassées et un énorme etc.

Mais je ne veux pas apprendre pour toujours à cloner UN jeu. J'ai l'envie de passer au clone suivant afin d'appliquer certaines idées de conception que j'ai rencontrées lors du développement de ce clone arkanoïde (en même temps, je lis le livre GoF et beaucoup de code source du concours de jeu Ludum Dare 21).

La question est donc: dois-je continuer à améliorer le clone arkanoid jusqu'à ce qu'il ait toutes les fonctionnalités du jeu original? ou devrais-je passer au clone suivant (il y a presque des jeux infinis à cloner) et commencer à réparer les choses que j'ai mal faites avec le clone précédent?

Cela peut être une question très subjective, alors veuillez limiter les réponses à la manière la plus efficace d'apprendre à créer mes propres jeux (sans cloner les idées de quelqu'un). Je vous remercie!


CLARIFICATION

Afin de clarifier ce que j'ai mis en œuvre, je fais cette liste:

Fonctionnalités implémentées:

  • Capacités de rebond (la balle rebondit sur les murs, sur les briques et sur la barre).
  • Sonne en rebondissant sur les briques et la barre, et lorsque le joueur gagne ou perd.
  • Menu de base du titre (nouveau jeu et sortie uniquement). Menu également en jeu et menus gagnant / perdant.
  • Seulement trois niveaux, mais le système de carte est si simple que je ne pense pas qu'il m'apprendra beaucoup (je me trompe?).

Fonctionnalités non implémentées:

  • Power-ups lors de la rupture des briques.
  • Briques complexes (avec plus d'un "point de vie" et invincibles).
  • De meilleurs graphismes (je ne suis pas vraiment bon dans ce domaine).
  • Programmation du polissage (utiliser plus intensivement les modèles de conception).

Voici un lien vers sa page Web (minimale): http://blog.acamara.es/piperine/ J'ai un peu honte de le montrer, alors ne me frappez pas trop fort :-)

Ma question était liée aux fonctionnalités non implémentées. Je me suis demandé quel était le chemin le plus rapide (optimal) pour apprendre. 1) implémenter les fonctionnalités non implémentées dans ce projet qui prend de l'ampleur, ou 2) créer un nouveau jeu qui m'apprendra probablement ces leçons et de nouvelles.


RÉPONDRE

J'ai choisi la réponse @ ashes999 parce que, dans mon cas , je pense que je devrais polir davantage et essayer "d'expédier" le jeu. Je pense que toutes les autres réponses sont également importantes à garder à l'esprit, donc si vous êtes venu ici avec la même question, avant de prendre une décision précipitée, lisez toute la discussion.

Merci à tous!


Désolé, mais dire que c'est une question objective ne le rend pas objectif. Cela dépendrait de la personne , de ses capacités, de ses objectifs et de sa motivation, si elle devait changer de projet - ce qui en fait une question subjective . Il n'y a tout simplement pas de "bonne" réponse à cette question.
Cyclops

Tu as raison, j'ai pensé "subjectif" mais j'ai écrit "objectif" (ça m'arrive aussi à gauche et à droite ...). Je l'ai changé.
Alejandro Cámara

Wups, désolé d'entendre ça. Cependant, je déteste dire cela, mais ce n'est toujours pas vraiment une bonne question pour ce site. Le but des sites StackExchange est de créer des questions / réponses qui sont utiles à beaucoup de gens, pas des questions qui ne s'appliquent qu'à une (ou quelques) personnes. En outre, il devrait (idéalement) y avoir une seule réponse correcte - mais pour les personnes à l'avenir qui trouveront ce message, certaines trouveront peut-être la meilleure réponse et d'autres, une réponse conflictuelle meilleure.
Cyclops

1
Je sentais que ce n'était pas non plus une bonne question. Mais la raison pour laquelle je l'ai écrit de toute façon, c'est peut-être parce que quelqu'un est coincé avec le même dilema. Même s'il n'y a pas de «bonne» réponse, la discussion pourrait éclairer d'autres personnes à prendre leur «bonne» réponse.
Alejandro Cámara

1
Personnellement, je pense que la portée d'un projet d'apprentissage devrait inclure toutes les fonctionnalités du jeu (donc implémentez les power-ups) mais après cela, appelez le projet terminé et continuez; ne vous embêtez pas à polir les graphiques.
jhocking

Réponses:


32

Je suis totalement en désaccord avec la réponse de Patrick . Si vous voulez réussir en tant que développeur de jeux, la compétence numéro un que vous devez apprendre est de savoir comment prendre une idée et expédier un jeu complet et raffiné.

Ce que vous réaliserez au fil du temps (ce que j'ai réalisé après plusieurs années), c'est que la programmation n'est qu'une petite partie de votre jeu. C'est facile, parce que c'est amusant. Mais s'en tenir à la seule programmation vous laissera une trace de preuves de concepts et de démos incomplètes.

Au lieu de cela, je vous suggère très fortement de mettre en place un site Web et un blog (Wordpress est idéal pour ce genre de choses), de terminer vos jeux (en commençant par Arkanoid) et de les publier dans la nature.

De plus, il est essentiel de réaliser que si vous faites cela, vous contrôlez quand le jeu est terminé. Si vous voulez 1000 niveaux avec 10 fonctionnalités principales, très bien. Si vous voulez 10 niveaux avec 3 fonctionnalités principales, très bien. (En fait, je recommande plus souvent les petits projets, car vous en apprenez plus et vous concentrez beaucoup sur le polissage de cette façon).

Edit: En réponse aux personnes qui ne sont pas d'accord, je pense que je dois clarifier. Si vous avez créé un jeu dans un seul but / expérience (ce que je fais tout le temps), par tous les moyens, coupez la portée et expédiez-le. Personne n'a dit qu'Arkanoid avait besoin de 1000 niveaux pour être un jeu raffiné; il suffit de créer suffisamment de niveaux pour qu'il soit, à votre avis, amusant et passe à autre chose.

Il est possible de passer des années sur un jeu et de ne jamais expédier. Mais je pense qu'il est beaucoup plus facile de tomber dans l'autre trou de ne faire que des démos et des prototypes techniques pour toujours. Il m'a fallu plus de 10 ans pour arrêter de le faire moi-même.


3
+1 "l'expédition est une fonctionnalité (obligatoire?)", Mais dans ce cas, vous pouvez également voir le clone arkanoid comme un prototype, et les prototypes sont censés être jetés lorsqu'un concept est prouvé ou réfuté.
Oskar Duveborn

2
@Oskar, il est plus facile de faire 1000 prototypes que d'expédier un jeu. En fin de compte, l'expédition vous fera réussir, tandis que les prototypes ne feront qu'augmenter certaines compétences en codage.
ashes999

2
Pourquoi rejeter "juste augmenter certaines compétences de codage"? Il pose spécifiquement des questions sur l'expérience d'apprentissage.
jhocking

@jhocking à cause de la réponse de Patrick. Ma réponse est spécifiquement de se concentrer au-delà des compétences de codage.
ashes999

1
@Yannbane Si les gens y jouent et pensent "oui, c'est un jeu complet", même si c'est un jeu court, c'est complet. Incomplet est généralement des jeux cassés ou des jeux avec, comme, un niveau. Une fois que vous l'avez expédié par la porte, vous avez terminé.
ashes999

8

Je proposerais une synthèse des deux réponses précédentes. Fondamentalement, je conviens qu'il est extrêmement important d'apprendre à prendre une idée et à livrer un jeu complet et soigné. Internet regorge de projets à moitié achevés que quelqu'un a commencé puis s'est ennuyé. La capacité de suivre un projet du début à la fin, ce que j'appelle la «capacité de finition», est rare et précieuse, et acquise en se forçant à le pratiquer.

Cependant, vous n'êtes pas encore à ce stade de votre apprentissage; Je ne recommanderais pas de le faire avec votre tout premier jeu, mais plutôt de faire quelques petits jeux pour apprendre avant de travailler sur votre premier projet complet.

(à part: je n'ai jamais vraiment identifié cela auparavant, mais maintenant que j'y pense, je pense que la capacité de finition est la principale chose que je vois séparer les développeurs expérimentés des novices)


ADDITION: Je pense que la plupart des désaccords entre les réponses se résument à différentes hypothèses sur où il en est dans son processus. Par exemple, quand il a dit "J'ai terminé la première version complète de mon clone arkanoïde", cela pourrait signifier beaucoup de choses différentes. Dans mon cas, puisqu'il a dit plus tôt: "J'ai également lu que je devrais opter pour tout le jeu (y compris les menus, le son, la partition"), je suppose qu'il a en fait implémenté ce truc et demande s'il devrait continuer encore plus loin. cas, je dirais non; appelez ce projet terminé et passez au projet suivant.

Mais ce n'est qu'une supposition de ma part; il n'a pas dit qu'il avait fait ce truc, juste qu'il l'avait lu. S'il n'a pas fait ce genre de choses, je dirais de ne pas continuer avant d'avoir fait ce genre de choses.


1
+1 Battez-moi! On dirait que vous ne faites que commencer, il est donc plus important de faire autant de choses que possible et d'apprendre, d'apprendre et d'apprendre. À mesure que vous vous améliorez, vous pouvez vous concentrer sur le polissage. Sinon, vous finirez par passer 2 ans sur votre premier jeu.
NoobsArePeople2

1
Être en désaccord. Vous pouvez passer dix ans à coder et ne jamais expédier un seul jeu. Ou vous pouvez expédier un simple clone arkanoïde au cours de vos six premiers mois. Je pense que ce dernier fait de vous un développeur globalement plus fort, tandis que le premier aide simplement vos compétences en développement de logiciels (et pas tant que ça - vous ne pensez jamais aux outils, au cycle de vie, etc. au simple codage).
ashes999

Eh bien, je n'ai pas dit 10 ans maintenant? Reste à savoir s'il est préférable de passer un an à coder une série d'exercices avant le projet complet de 6 mois plutôt que de faire directement le projet complet de 6 mois comme premier projet. C'est une question majeure dans l'enseignement que je fais; est-il préférable que les étudiants passent un semestre à faire tout un tas de petits projets ou un seul grand projet qui prend toute la classe? Personnellement, je me penche vers "beaucoup de petits projets pour les étudiants de premier cycle, un seul grand projet à l'école".
jhocking

Ma position est que, aussi important que soit le projet complet, pour que ce projet réussisse, vous devez d'abord avoir déjà appris les bases sur un tas de projets précédents.
jhocking

1
Quelles 2 réponses précédentes? Pour l'instant, c'est classé n ° 2, par votes
ADB

5

Je pense que vous avez la bonne idée que vous devriez passer au prochain projet maintenant. Je pense que cela parce que vous avez déjà appris de votre premier et que vous souhaitez appliquer ce que vous avez appris! Une fois que vous ralentissez l'apprentissage des bases, ce serait le moment de cloner des fonctionnalités plus profondes que vous pouvez continuer à apprendre.

N'oubliez pas que vous travaillez sur des compétences de programmation, pas sur la conception de jeux, vous voulez donc pouvoir programmer n'importe quelle conception de jeux lorsque vous avez terminé l'apprentissage.


3
Bien que je sois d'accord avec @ ashes999 et vous également, je pense que dans le contexte déclaré d'OP, il expérimente des implémentations, apprenant à écrire différents types de jeux. Dans ce cas, je pense qu'il devrait favoriser le passage à la chose suivante.
Ingénieur

En fait, il a laissé entendre qu'il voulait apprendre la conception de jeux et pas seulement la programmation de jeux. Dans sa dernière phrase, il a dit "le moyen le plus efficace d'apprendre à créer mes propres jeux (sans cloner les idées de quelqu'un)".
jhocking le

2

Pourquoi ne pas faire du "clone" le vôtre? Ajoutez de nouveaux rebondissements intéressants qui vous intéresseront.

Il y a un avantage à démarrer «votre propre» projet, vous avez l'impression que cela n'a jamais été fait auparavant. La réalité est que quelqu'un a probablement déjà quelque chose de similaire. Sauf si vous prévoyez d'inventer un nouveau genre de jeu, je vous suggère de vous approprier ces "clones".

Exemple, mon copain à l'université a créé un "clone" de pong. Il l'a fait sien, a ajouté un tout nouveau type de gameplay où un power-up a permis de conduire un char doux pendant environ 15 secondes et de détruire autant de briques que possible!

La meilleure façon d'apprendre le développement de jeux (art, code, design) est de le faire. Vous ne le faites peut-être pas bien au début, mais la clé est de continuer et d'écrire plus de code, de dessiner plus d'animations et de concevoir plus de niveaux !! À mon avis, peu importe si vous "clonez" quelque chose tant que vous le faites vous-même, continuez à le faire, rendez-le intéressant et amusez-vous!


2

Pour répondre à votre question, oui , peaufiner votre projet actuel sera une meilleure expérience d'apprentissage que d'en commencer un nouveau.

1) Vous devez prendre l'habitude de terminer les choses. C'est en soi une expérience d'apprentissage.

2) Les tâches que vous êtes "trop ​​paresseux pour ajouter" (faute d'un meilleur terme) peuvent contenir une tonne de leçons de développement de jeu, que vous sautez totalement.

3) Si vous vous ennuyez d'Arkanoid, vous pouvez toujours le mettre de côté et travailler sur autre chose pour le moment. Il n'y a rien de mal à cela.

1) Trop de choses inachevées sont mauvaises. Vous ne pouvez pas vraiment utiliser votre produit inachevé pour montrer efficacement vos compétences.

En effet, avoir un tableau de choses inachevées, c'est comme avoir un placard plein de déchets. Certains semblent utiles, mais en réalité, tout cela est très inutile, et la réalité de l'industrie du jeu est que peu de gens apprécieront vos "déchets" (jeux inachevés).

Les jeux inachevés sont trop courants. Les gens les ont mis là-bas et sont comme, "duh, ce jeu était sapposa être StreetFighter .. maintenant vous pouvez aller et venir .." Pas impressionnant . Personne ne peut voir dans votre tête ce qu'était le jeu "sapposa". Ils ne le voient que pour ce qu'il est, inachevé.

Un jeu inachevé est comme une tarte à moitié cuite. Certaines personnes pourraient être en mesure d'apprécier cela, mais cela a vraiment un goût dégoûtant, et 20 minutes de plus au four pourraient rendre ce que vous avez déjà fait à moitié délicieux pour tout le monde.

2) Les fonctionnalités sur lesquelles vous évitez de travailler peuvent contenir de précieuses leçons.

Les trucs que vous rechignez à terminer:

Fonctionnalités non implémentées:

  • Power-ups lors de la rupture des briques.
  • Briques complexes (avec plus d'un "point de vie" et invincibles).
  • De meilleurs graphismes (je ne suis pas vraiment bon dans ce domaine).
  • Programmation du polissage (utiliser plus intensivement les modèles de conception).

Vous pouvez laisser de côté certaines de ces choses. Par exemple, "Utilisez plus intensivement les modèles de conception". Une refactorisation comme celle-ci est une perte de temps pour un projet pour animaux de compagnie, pour l'appliquer, vous devez simplement commencer un nouveau projet.

Certains d'entre eux sont faciles. Par exemple, des briques complexes. Certains d'entre eux représentent en fait beaucoup de travail . Les bonus ne sont pas faciles, ils nécessitent que vous mettiez en place des éléments de construction tels que des armes à feu, des balles, nécessiterait l'ajout de code d'intersection de rayons.

Je pense que ce que vous voyez est "la mise en place de l'échafaudage était si facile ... et regardez c'est presque terminé. La finition serait tellement de travail, pourrait tout aussi bien s'arrêter maintenant." Oui, ériger le cadre en bois pour une maison est aussi "facile", et cela peut représenter la moitié du travail. Les cloisons sèches, l'électricité, la plomberie, sont tous des "détails". Mais en ne finissant pas la maison, personne n'achètera à quel point la maison aurait été formidable si seulement vous l'auriez terminée.

3) Si vous vous ennuyez de ce sur quoi vous travaillez, il n'y a rien de mal à commencer autre chose.

Cela ne signifie pas pourri sur quoi vous travaillez, mais il n'y a aucun mal à passer un mois ou deux à penser à autre chose ou à démarrer un nouveau jeu. Vous pouvez revenir à Arkanoid avec une nouvelle perspective.

Un dernier point également. En plus de développer toutes les fonctionnalités attendues d'Arkanoid, il est encore plus intéressant d'y apporter votre propre touche. Donc, au lieu de vous arrêter sur votre clone, vous devriez aller plus loin et innover sur le jeu original.


1

La bonne réponse dépend vraiment de ce que vous voulez faire ensuite. Si vous passez à quelque chose de nouveau, vous risquez de vous retrouver à résoudre les mêmes anciens problèmes à nouveau et à ne pas vraiment étendre vos compétences, mais vous pouvez passer à quelque chose de nouveau. Si vous continuez à peaufiner, il y a des choses utiles à apprendre de la brève liste que vous avez donnée, et elles vous tiendront bien à l'avenir, mais vous travaillez toujours sur la même ancienne base de code.

Ce que je recommanderais, et c'est une opinion purement personnelle, c'est de passer à quelque chose de nouveau et de garder le polonais pour cela. En même temps, essayez de vous étirer avec quelque chose de nouveau. Donc, si vous n'utilisez actuellement pas d'API 3D, apprenez-en une et utilisez-la. Si vous en utilisez un, apprenez l’autre et utilisez-le. Ou passez à un niveau plus avancé que celui que vous utilisez. Inclut un meilleur son, physique ou moteur d'entrée dès le départ. Quoi qu'il en soit, ce que je considère comme l'important est de sortir un peu de votre zone de confort actuelle et d'acquérir plus de compétences et de connaissances, tout en vous amusant.

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.