Questions sur la conception, l'édition et la sauvegarde de niveaux 2D [fermé]

12

J'ai pensé à créer un jeu 2D Sidescroller simple comme SuperMario. Ensuite, je me suis demandé comment enregistrer, charger ou créer les niveaux du jeu. La première chose à laquelle j'ai pensé était de dessiner un simple png en blocs qui représente le niveau, en créant toutes les parties où le joueur peut marcher d'une couleur spéciale (peut-être lilas). Je voudrais importer le niveau dans des blocs ou des tuiles afin que je puisse vérifier la collision.

donc mes questions sont:
y a-t-il de meilleures méthodes pour cela?
quelles sont les méthodes professionnelles pour cela?
dois-je faire cela avec des tuiles et un éditeur de carte basé sur des tuiles? (pour une raison quelconque, je n'aime pas cela, mais je suppose que si c'est la meilleure méthode, je l'utiliserais)
avec un niveau basé sur des carreaux, comment réaliseriez-vous les pentes et comment les vérifieriez-vous pour les collisions?

Simiil
la source

Réponses:

10

Pour un MMO 2D, nous utilisons http://www.mapeditor.org/ . Nous utilisons plusieurs couches pour le fond, la décoration de fond, des objets au même niveau que les joueurs et des objets devant le joueur. Et un calque supplémentaire avec un seul carré rouge pour marquer les collisions.

Je ne sais pas si cette approche ou le logiciel fonctionne pour un défilement latéral 2D, mais cela peut valoir la peine d'y jeter un œil.

Hendrik Brummermann
la source
+1. C'est un excellent outil. Il est également open source, vous pouvez donc l'étendre si vous le souhaitez.
Janis Kirsteins
c'est vraiment un bon outil, je l'ai testé et je n'ai eu aucun problème pour l'importer dans mon jeu.
Simiil
1
ok maintenant je veux savoir comment créer des niveaux non basés sur des tuiles, comme les mondes dans les vers, mais je suppose que je vais poser cette question un jour
Simiil
6

Une façon courante pourrait être de simplement une chaîne par exemple

0,0,0,0,0,0,1,1,1,0,0,0,0,2

où 0 serait un bloc sur lequel vous pouvez marcher 1 pourrait être des pointes et 2 pourrait être la ligne d'arrivée

vous devez simplement le lire dans un fichier texte (ou le faire coder en dur dans le jeu) et dessiner le bloc relatif associé au numéro et avoir votre logique de colision à gérer quelle que soit la configuration.

Évidemment, vous pouvez choisir le format que vous voulez et peut-être 0 signifie dessiner 5 blocs accessibles à pied.

Ce n'est là qu'une façon d'y parvenir.

http://www.smudgedcat.com/tut_tiledlevel.html ce lien est un exemple dans c # utilisant le framework XNA. cela vous donnera une idée approximative (il ne contient PAS de pentes, mais une chose similaire pourrait être utilisée pour définir ce type de cas)

Cordialement Mark

markblue777
la source
C'est à peu près exactement comment "Excite Bike" a fait ses cartes personnalisées sur Nintendo. vc.nintendolife.com/games/nes/excitebike
Stephen Furlani
5

texte alternatif

De nombreux jeux utilisent une application open source appelée Mappy . Il a son propre format qui prend en charge plusieurs couches et d'autres fonctionnalités. Vous souhaitez probablement associer plusieurs types de données à une tuile donnée.


Je pense que l'approche de l'éditeur de niveau en jeu est très courante. Le mode développeur est un compte rendu interne de la façon dont les niveaux d'un jeu très populaire, Braid, ont été conçus. Le jeu a un mode de développement où les niveaux peuvent être construits / modifiés. Les niveaux eux-mêmes ont une couche de collision recouverte de carreaux graphiques:

texte alternatif


Et personnellement, je ne le recommande pas, mais un programme de démonstration 2D pour Allegro a utilisé un certain type de format de modélisation 3D et l'a converti en un format personnalisé dans le jeu. L'avantage était qu'il pouvait modéliser des surfaces très lisses et continues. (C'était un jeu de planche à roulettes basé sur la physique 2D.)

Pour modifier les données de niveau du jeu de démonstration Allegro, nous utilisons l'outil gratuit et open source Blender. Vous pouvez l'obtenir ici:

http://blender.org

Voici des instructions étape par étape sur la façon dont cela fonctionne:

1) Placez le fichier ademo_export.py dans votre dossier de scripts Blender. C'est le script d'exportation qui convertira le format .blend au format .txt utilisé par le jeu de démonstration. Sous Unix, le chemin sera:

~ / .blender / scripts / ademo_export.py

2) Chargez le mélangeur de fichiers .blend. Sous Unix, saisissez-le dans le répertoire avec le fichier level.blend:

blender -w level.blend

(Le -w est d'utiliser des modes fenêtrés, ce que je préfère.)

3) Modifiez le niveau. Dans le menu, sous

Aide -> Navigateur d'aide sur les scripts -> Exporter -> Allegro Demo Game Level

vous trouverez quelques conseils utiles.

4) Enregistrez le fichier (utilisez la compression avant de valider). Exportez-le au format .txt dans le menu d'exportation, en choisissant Allegro Demo Game Level.

5) Mettez à jour level.dat en utilisant level.txt, le nouveau niveau devrait apparaître dans le jeu.

Leftium
la source
2

Les méthodes «professionnelles» impliqueraient probablement un éditeur de carte très détaillé, probablement en C #, qui leur donnerait un contrôle total sur tout.

Il existe deux approches principales; on est plus facile à faire, mais pas aussi efficace.

  • Vous pouvez utiliser un éditeur de carte; soit en écrivant le vôtre, soit en trouvant un préexistant tel que mapeditor dont nhnb a parlé. Écrire le vôtre serait bon pour une expérience d'apprentissage, mais pas tant pour un produit fini.
  • Vous pouvez simplement taper des données dans un fichier texte. C'est plus simple, mais ce n'est pas facile à relire. Vous pourriez probablement obtenir la même chose de l'éditeur de carte, mais cela serait automatisé. L'inconvénient à nouveau de cela est que vous ne pouvez pas ajouter d'effets spéciaux tels que certaines tuiles (pas des types de tuiles , mais des tuiles (13,45) par exemple) pour faire des choses spéciales.
Le canard communiste
la source
2

J'ai eu des pensées similaires (c'est-à-dire se remettre à écrire des jeux comme passe-temps - travail et autres engagements ...)

J'envisagerais sérieusement la voie du développement de «l'éditeur de carte» dans le cadre du jeu / de l'application.

Si jamais votre jeu dépasse votre propre PC, le contenu de la communauté serait une excellente aubaine.

Engrener
la source