Quels sont les plus gros pièges à considérer lors du développement d'un nouveau jeu?


19

En fait, je viens de commencer à tracer (merci David Young pour la correction de la nomenclature) quelques nouveaux jeux Web pour Facebook il y a quelques semaines et je viens d'être inondé de blocages mentaux et le temps passe par le recodage. Je travaille sur quelque chose de similaire au RPG au tour par tour (Vampire Wars). J'ai les compétences pour coder un jeu, mais j'essaie de trouver les bons modèles de conception et de faire correspondre le produit à ce que je vois dans mon esprit.

Normalement, lors de la construction d'un site Web, j'aime «penser en code» et je trouve plus rapide de changer le code / HTML pour le modifier. C'est probablement parce que je suis TRÈS à l'aise dans ce que je fais et je sais à quoi m'attendre. comme je l'ai fait encore et encore. À ce stade du développement du jeu, je me retrouve à recommencer sur le papier (comme je le faisais avec les sites Web) et je me demande si c'est juste mon manque de concentration et d'intuition avec la logique du jeu ou si c'est un moyen approprié de développer mes pensées dans avance de codage.

J'apprécierais quelques conseils sur la façon d'attaquer correctement ce problème et de me maintenir sur la tâche. J'apprends rapidement à quel point un moteur de jeu est différent d'un site Web d'entreprise standard! Chaque fois que je mets quelque chose en place, cela me semble mooshy et incomplet et ça devient de plus en plus frustrant.

Élargi

Par exemple, le moteur de combat qui me donne tant de problèmes récemment prend une compétence d'attaque simple, puis effectue un jet aléatoire entre -50% et + 50%, puis multiplie la compétence d'attaque d'origine par ce pourcentage. La même chose se fait avec la défense, puis je les maille pour déterminer si des dommages sont causés à la santé ennemie. Je suppose que je devrais réaliser que je suis au-dessus de ma tête quand j'ai commencé à me demander si c'était même la bonne façon de le faire, ou s'il y avait même une 'bonne' façon. Un défaut majeur que j'ai trouvé avec cela est que deux personnages autour du même niveau peuvent avoir plusieurs `` rouleaux '' où l'attaque est de -50% et la défense est de + 50%, donc je me retrouve avec des séquences de combat EXTRÊMEMENT longues où personne ne fait rien. ÉCHOUER

Peut-être que mon message aurait dû demander des liens suggérés décrivant une logique de jeu simple.

Extension de fin

Merci d'avance à tous!


1
Ceci est une lecture quelque peu liée et intéressante que j'ai trouvée utile: makegames.tumblr.com/post/1136623767/finishing-a-game
zfedoran

Réponses:


22

ajouter trop de fonctionnalités. Concentrez-vous sur le cœur du jeu, construisez-le, puis si tout fonctionne bien, ajoutez des fonctionnalités. Les gens se concentrent trop sur l'ajout de choses sympas et ne font rien.


4
Cela a presque tué l'un de mes jeux FB. Il regorge de fonctionnalités, mais le tout semble à moitié déçu dans l'ensemble.
Tesserex

Si je me souviens bien, ce phénomène est appelé "fluage des fonctionnalités". Un piège dangereux, en effet.
S. Tarık Çetin

14

Ceci est un excellent article sur la façon de créer un prototype de jeu. D'après votre question, il semble que vous manquez l'idée de ce qu'est un prototype.

Prototypage: vous le faites (probablement) mal

Texte de présentation:

Erreur # 4: Construire un système, pas un jeu
Lorsque vous créez un prototype, si vous vous retrouvez à travailler sur quelque chose qui ne fait pas avancer votre progression directement, arrêtez-vous là. En tant que programmeurs, nous avons tendance à essayer de généraliser notre code, à le rendre élégant et à pouvoir gérer toutes les situations. Nous trouvons qu'une démangeaison est terriblement difficile à ne pas rayer, mais nous devons apprendre comment. Il m'a fallu de nombreuses années pour réaliser qu'il ne s'agissait pas du code, mais du jeu que vous livriez à la fin.

N'écrivez pas un système de composants de jeu élégant, sautez complètement l'éditeur et câblez l'état dans le code, évitez la folie XML basée sur les données, l'auto-analyse, et codez simplement la fichue chose.

Éditer:

J'ajoute cela juste pour clarifier la différence entre Prototype et Tracer Code.

N'oubliez pas: un prototype est conçu pour être jeté! Le code Tracer ne l'est pas.

Le piège du prototype

... L'approche par code traceur résout un problème différent. Vous devez savoir comment l'application dans son ensemble est liée. Vous voulez montrer à vos utilisateurs comment les interactions fonctionneront dans la pratique, et vous voulez donner à vos développeurs un squelette architectural sur lequel accrocher du code. Dans ce cas, vous pouvez créer un traceur composé d'une implémentation triviale de l'algorithme d'emballage de conteneur (peut-être quelque chose comme le premier arrivé, premier servi) et une interface utilisateur simple mais fonctionnelle. Une fois que tous les composants de l'application sont raccordés, vous disposez d'un cadre pour montrer à vos utilisateurs et à vos développeurs. Au fil du temps, vous ajoutez à ce cadre de nouvelles fonctionnalités, complétant des routines tronquées. Mais le cadre reste intact, et vous savez que le système continuera à se comporter comme il le faisait lorsque votre premier code traceur a été terminé.

La distinction est suffisamment importante pour justifier sa répétition. Le prototypage génère du code jetable. Le code Tracer est simple mais complet et fait partie du squelette du système final. Considérez le prototypage comme la collecte de renseignements et de reconnaissance qui a lieu avant qu'une seule balle de traçage ne soit tirée.

Plus d'informations sur la conception du code Tracer, de The Pragmatic Programmer

Puces et prototypes Tracer


C'est un grand ... Je vais devoir jeter un œil à cet article. Juste à partir de l'extrait que vous avez posté, il semble que je puisse mal regarder le prototypage, mais il semble également que ce soit une erreur courante.
angryCodeMonkey

l'erreur que vous avez citée me harcèle depuis un bon moment maintenant.
jokoon

4

Pièges: ne pas séparer votre logique de vos données. Ne pas tester que vos données produisent les résultats souhaités.

De votre commentaire sur le post de Joe:

Vous voulez que je code un moteur de combat pour les rencontres de monstres, BOOM! J'ai réécrit mon moteur au moins trois fois cette semaine et je ne me sens jamais bien. Je veux dire, les maths fonctionnent, mais quand je l'essaye, c'est juste ridicule. Cela a-t-il du sens?

Il semble que vous confondiez le moteur avec les données ici. Votre moteur de rencontre de monstres doit être piloté par des données. Si les données qui affectent votre équilibre / plaisir de jeu sont erronées, il ne devrait pas être nécessaire de réécrire complètement votre moteur - ajustez simplement vos variables d'équilibre jusqu'à ce que vous vous sentiez bien.

Cependant, comme les variables d'équilibre sont parfois interdépendantes, le changement d'une variable pour un meilleur scénario peut avoir un effet (négatif) considérable sur d'autres scénarios.

Afin de tester que vos données nouvellement modifiées ne gâchent pas tout un tas d'autres cas, il est utile de garder quelques cas de test autour et de vous assurer qu'ils ne sont pas cassés après le réglage. Voici un exemple admirablement artificiel de la façon dont vous testeriez cela.

TestResult TestPlayerKillsMonsterDuringAttack(PlayerStats, MonsterStats, seed)
{
   Player player(PlayerStats);
   Monster monster(MonsterStats);

EncounterEngine.SeedRNG(seed);
while(1) { result = EncounterEngine.Attack(player, monster); if (result == PLAYER_DEAD) return TEST_FAIL; if (result == MONSTER_DEAD) return TEST_PASS; // result == MONSTER_DAMAGED, PLAYER_DAMAGED is expected. } }

Par exemple. Si vous appelez cela avec PlayerStats.Level == 5 et MonsterStats.Level == 3, vous vous attendriez à ce que le joueur vaincra toujours ce monstre par la suite.


Le conseil que j'obtiens ici est excellent, et je peux voir que j'ai adopté la mauvaise approche dans beaucoup de cas. Cependant, la raison pour laquelle j'ai réécrit le moteur est que je pense que je le rends trop compliqué. Ma dernière version du moteur de combat est une classe avec (pour le moment) une seule fonction publique et plusieurs supports. La fonction principale «combat» consiste non seulement à calculer l'attaque de base contre la défense, mais également à déterminer la première frappe, à vérifier les jets pour déterminer si votre compétence tactique vous donne une deuxième frappe, etc., etc., etc. difficile!
angryCodeMonkey

Ne pas séparer votre logique de vos données. C'est un excellent point, qui causera presque toujours des problèmes en cours de route ou lors de la mise à jour!
Spooks

2

Le piège ici, pour autant que je puisse voir, est que vous traitez la programmation et la conception de jeux comme la même tâche, alors qu'en réalité ce sont des tâches distinctes. Comme vous le suggérez, ce n'est pas un problème de programmation ou d'algorithme (vous pouvez coder le système de combat comme vous le souhaitez), c'est ce qui est amusant et intéressant pour le joueur.

La réponse est, recherchez des ressources sur la conception du jeu et l'équilibre du jeu. Il y a en fait des universités qui consacrent un programme d'études complet de quatre ans aux sujets que vous soulevez, il est donc impossible de vous donner une réponse rapide et sale (de la même manière que vous seriez probablement perplexe si quelqu'un disait " oui, j'ai cette idée de jeu mais je ne sais pas comment le programmer, à quoi dois-je faire attention? "). Il existe des livres, des cours et des écrits en ligne sur la conception de jeux; les chercher.


1

Le plus grand écueil lors de l'écriture de jeux est de se demander si vous utilisez ou non les bons modèles de conception au lieu d'écrire simplement du code qui vous fait du bien.


Le problème que j'ai actuellement, c'est que je me sens bien avec le code que j'écris. Vous voulez un backend comptable pour votre entreprise, pas de problème ... Vous voulez que je code un moteur de combat pour les rencontres de monstres, BOOM! J'ai réécrit mon moteur au moins trois fois cette semaine et je ne m'en sens jamais bien. Je veux dire, les maths fonctionnent, mais quand je l'essaye, ça semble juste bancal. Cela a-t-il du sens?
angryCodeMonkey

pourquoi réécrire le moteur? vous pouvez implémenter du code spécifique au jeu dans un langage de script comme lua. Modifiez les variables ou la façon dont les mathématiques sont calculées et n'avez jamais besoin de recompiler juste pour vérifier les choses. gamedev.net/reference/articles/article1932.asp
David Young

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.