Diseño de nivel 2D / edición / preguntas de almacenamiento [cerrado]

12

Pensé en hacer un simple juego 2D Sidescroller como SuperMario. Luego me pregunté cómo guardar, cargar o crear los niveles para el juego. Lo primero en lo que pensé fue en dibujar un simple png bloqueado que represente el nivel, y hacer que todas las partes donde el jugador pueda caminar tengan un color especial (tal vez lila). Importaría el nivel en bloques o mosaicos para poder verificar la colisión.

entonces mis preguntas son:
¿hay mejores métodos para esto?
¿Cuáles son los métodos profesionales para esto?
¿Debo hacer esto con mosaicos y un editor de mapas basado en mosaicos? (por alguna razón no me gusta esto, pero supongo que si es el mejor método lo usaría)
con un nivel basado en mosaicos, ¿cómo se darían cuenta de las pendientes y cómo se verían las colisiones?

Simiil
fuente

Respuestas:

10

Para un MMO 2D usamos http://www.mapeditor.org/ . Usamos varias capas para el fondo, la decoración del fondo, los objetos en el mismo nivel que los jugadores y los objetos que están frente al jugador. Y una capa adicional con solo un cuadrado rojo para marcar colisiones.

No estoy seguro de si este enfoque o el software funciona para un desplazamiento lateral 2D, pero puede valer la pena echarle un vistazo.

Hendrik Brummermann
fuente
+1. Es una gran herramienta. También es de código abierto, por lo que puede ampliarlo si lo requiere.
Janis Kirsteins
esa es realmente una buena herramienta, lo probé y no tuve un solo problema al importarlo a mi juego.
Simiil
1
ok, ahora quiero saber cómo hacer niveles no basados ​​en mosaicos, como los mundos en gusanos, pero supongo que algún día haré esto en una nueva pregunta
Simiil
6

Una forma común podría ser solo una cadena, por ejemplo

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

donde 0 sería un bloque en el que puede caminar 1 podría ser picos y 2 podría ser la línea de meta

simplemente leería esto a través de un archivo de texto (o lo tendría codificado en el juego) y dibujaría el bloque relativo que está asociado al número y tendría que manejar su lógica de colisión sin importar cómo esté configurado.

Obviamente, puede elegir el formato que desee y tal vez 0 significa dibujar 5 bloques caminables.

Esta es solo una forma de lograrlo.

http://www.smudgedcat.com/tut_tiledlevel.html este enlace es un ejemplo dentro de c # usando el marco XNA. le dará una idea aproximada (NO contiene pendientes, pero podría usarse algo similar para definir este tipo de caso)

Saludos Mark

markblue777
fuente
Esto es más o menos exactamente como "Excite Bike" hizo sus mapas personalizados en la Nintendo. vc.nintendolife.com/games/nes/excitebike
Stephen Furlani
5

texto alternativo

Muchos juegos usan una aplicación de código abierto llamada Mappy . Tiene su propio formato que admite múltiples capas y otras características. Probablemente desee asociar varios tipos de datos con un mosaico dado.


Creo que el enfoque del editor de nivel en el juego es muy común. El modo de desarrollador es una cuenta interna de cómo se diseñaron los niveles para un juego muy popular, Braid. El juego tiene un modo de desarrollo donde los niveles se pueden construir / modificar. Los niveles mismos tienen una capa de colisión cubierta con mosaicos gráficos:

texto alternativo


Y personalmente no lo recomiendo, pero un programa de demostración en 2D para Allegro usó algún tipo de formato de modelado 3D y lo convirtió a un formato personalizado en el juego. La ventaja era que podía modelar superficies muy lisas y continuas. (Era un juego de skate en 2D basado en la física).

Para editar los datos de nivel del juego de demostración Allegro, utilizamos la herramienta gratuita y de código abierto Blender. Puedes obtenerlo aquí:

http://blender.org

Aquí hay instrucciones paso a paso de cómo funciona:

1) Coloque el archivo ademo_export.py en su carpeta de scripts de Blender. Es el script de exportación que convertirá del formato .blend al formato .txt utilizado por el juego de demostración. Bajo unix, el camino será:

~ / .blender / scripts / ademo_export.py

2) Cargue la licuadora de archivos .blend. En Unix, escriba esto desde el directorio con el archivo level.blend:

licuadora -w level.blend

(El -w es usar modos de ventana, que prefiero).

3) Edite el nivel. En el menú, debajo de

Ayuda -> Scripts Ayuda del navegador -> Exportar -> Allegro Demo Game Level

Encontrarás algunos consejos útiles.

4) Guarde el archivo (use compresión antes de confirmar). Exporte como .txt desde el menú de exportación, eligiendo Allegro Demo Game Level.

5) Actualiza level.dat usando level.txt, el nuevo nivel debería aparecer en el juego.

Leftium
fuente
2

Los métodos 'profesionales' probablemente implicarían un editor de mapas muy detallado, probablemente en C #, que les daría un control total sobre todo.

Hay dos enfoques principales; uno es más fácil de hacer, pero no tan efectivo.

  • Podrías usar un editor de mapas; ya sea escribiendo el suyo propio o encontrando uno preexistente como mapeditor que nhnb mencionó. Escribir el suyo sería bueno para una experiencia de aprendizaje, pero no tanto para un producto terminado.
  • Simplemente podría escribir datos en un archivo de texto. Esto es más simple, pero no es fácil volver a leer. Probablemente podría obtener lo mismo del editor de mapas, pero eso sería automatizado. La desventaja de esto es que no puede agregar ningún efecto especial, como ciertos mosaicos (no tipos de mosaicos , sino mosaicos (13,45) por ejemplo) para hacer cosas especiales.
El pato comunista
fuente
2

He tenido pensamientos similares (es decir, volver a escribir juegos como pasatiempo: trabajo y otros compromisos ...)

Consideraría seriamente la ruta del desarrollo del 'Editor de mapas' como parte del juego / aplicación.

Si su juego alguna vez va más allá de su propia PC, el Contenido de la comunidad sería de gran ayuda.

Malla
fuente