Faire un jeu comme tutoriel? [fermé]


19

Je suis en charge d'un club de développement de jeux dans mon école et j'aimerais travailler sur un projet cet été que je pourrais utiliser comme tutoriel le semestre prochain. Je n'ai jamais rien fait de tel, alors je me demandais si quelqu'un avait des lignes directrices ou des idées.

Ce que je veux faire, c'est faire un jeu très simple. Quelque chose comme un tireur de haut en bas où les ennemis se précipitent pour que vous les tuiez et ramassiez du butin. Cependant, je veux que tout soit très facilement modifié. Les gens du club ont peu d'expérience en développement de jeux, donc si je pouvais configurer mon jeu de telle manière que les gens puissent modifier et ajouter des fonctionnalités facilement, ce serait génial pour eux.

Des trucs comme avoir une classe ennemie où le comportement est facile à jouer, ou faire tirer des armes différemment / ajouter de nouvelles armes et de nouveaux butins. Même en ajoutant de nouveaux éléments au jeu. Quelle serait la meilleure façon de construire le jeu pour permettre ce genre de malléabilité?


1
Jetez un œil à cette réponse sur Stack Overflow.
Andrew Russell

Réponses:


16

Une manière traditionnelle d'atteindre cet objectif dans le développement de jeux consiste à utiliser une architecture basée sur les données pour les systèmes de jeux.

En substance, cela signifie que le code n'implémente pas un type particulier d'arme (un pistolet) avec des valeurs explicitement définies pour sa portée / dégâts / pénétration, mais qu'il remplit les concepts génériques d'une arme à distance (portée / dommages / pénétration ...) à partir d'une source de données externe (au code). Cette source externe peut varier de fichiers analysables (peut-être XML) lus depuis le disque, à des fichiers binaires ou des éléments de base de données générés via des outils internes ou externes au moteur de jeu lui-même.

Définissant quelque chose comme un ennemi, le système d'IA peut être conçu pour prendre en charge un certain nombre de comportements génériques (agressifs, défensifs, de soutien, lâches) qui sont ensuite peaufinés par des éléments pilotés par les données.

My New Enemy, commence par le comportement agressif de l'IA de base avec des valeurs basées sur les données pour: -ignorer les joueurs> mon niveau + X -poursuivre les joueurs jusqu'à X unités au-delà du point d'apparition -fuir quand la santé <X -les priorités des capacités rangées -les priorités des capacités de mêlée (pour les joueurs trop proches)

Un schéma basé sur des données plus compliqué pourrait permettre la définition de points de données spécifiques (événements) où un état AI passe (machine à états finis) à un autre état (ou même une chance de passer à l'un des N autres états) permettant à vos utilisateurs de définir un hiérarchie compliquée des comportements.

Tout cela est bien sûr plus de travail que le simple codage explicite d'un comportement, mais c'est un défi amusant pour permettre aux utilisateurs de produire du contenu sans modification de la source.

Il y a des points bonus à atteindre:

  • si vous pouvez mettre à jour dynamiquement les données et que les modifications soient reflétées dans le moteur de jeu sans redémarrer l'application
  • si vous créez des interfaces utilisateur conviviales sur les données permettant aux utilisateurs d'utiliser une interface pour interagir avec les données plutôt que de modifier directement des fichiers texte (xml ou autre)

Pour un jeu de didacticiel ciblé comme une foule plus technique, la plupart du travail se fait à la place dans des classes / objets conçus qui exposent des interfaces propres pour les utilisateurs à étendre, qui à leur tour peuvent également être basées sur les données.


Bonne réponse! +1
AttackingHobo

Merci pour votre contribution :)! Connaissez-vous des sites qui me montreraient comment implémenter ce type de code? Je n'ai jamais fait de jeux avec des sources externes comme ça. Bien que je veuille vraiment qu'ils codent en XNA dans le club, je ferai probablement quelque chose de plus dans le sens des classes et des objets dont ils pourraient facilement hériter dans leurs propres classes. Mais je vais certainement examiner cela,
Benixo

Un excellent moyen de le faire nécessite votre propre analyseur de configuration, pour permettre le chargement de structures très simples pilotées par les données. Essentiellement, la clé de tout didacticiel consiste à enseigner par blocs, donc l'abstraction est absolument essentielle. Un bon exercice pourrait alors être de concevoir une interface graphique simple qui permet à un utilisateur de définir et de créer de nouveaux types d'armes.
deceleratedcaviar

Les aspects liés aux données les plus courants dans les jeux sont les niveaux. Même si tout le reste est codé en dur, les conceptions de niveau (c'est-à-dire où le paysage est placé, où les ennemis sont placés, etc.) sont presque toujours définies dans des fichiers de données que le jeu charge. Son deuxième point bonus décrit un outil d'édition de niveau.
jhocking

Le processus d'écriture / lecture d'objets sur / depuis le disque est connu sous le nom de «dé- / sérialisation». Vous pouvez trouver des tutoriels utiles sous ce terme.
Exilyth

1

Si vous cherchez quelques idées sur la façon de démarrer votre projet et de le construire étape par étape afin qu'il puisse être converti en tutoriel, jetez un œil à XNA Game Programming Adventures . L'auteur a mis en place plusieurs tutoriels, avec explication et code source qui incrémente étape par étape.


0

Je suggérerais de regarder le tutoriel de développement de jeux Java sur www.thenewboston.com

Ce n'est peut-être pas exactement ce que vous recherchez en termes de types avec des armes et tout ce jazz, mais cela donne une belle ventilation étape par étape d'un certain nombre de facteurs clés dans le développement de jeux. Le présentateur "Bucky" a également un style d'enseignement relaxant, juste pour le plaisir. Prendre plaisir.

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.