Pytania do projektowania / edycji / zapisywania na poziomie 2D [zamknięte]


12

Myślałem o stworzeniu prostej gry 2D Sidescroller, takiej jak SuperMario. Potem zastanawiałem się, jak zapisać, załadować lub utworzyć poziomy dla gry. Pierwszą rzeczą, o której myślałem, było narysowanie prostego blokowego png, który reprezentuje poziom, wykonanie wszystkich części, w których gracz może chodzić w specjalnym kolorze (może liliowym). Zaimportowałem poziom w blokach lub kafelkach, aby sprawdzić kolizję.

więc moje pytania brzmią: czy
są na to lepsze metody?
jakie są profesjonalne metody?
powinienem to zrobić z kafelkami i edytorem map opartym na kafelkach? (z jakiegoś powodu nie podoba mi się to, ale wydaje mi się, że byłaby to najlepsza metoda, której bym użył)
z poziomem opartym na kafelkach, w jaki sposób można realizować zbocza i jak sprawdzać je pod kątem kolizji?

Odpowiedzi:


10

W przypadku MMO 2D używamy http://www.mapeditor.org/ . Używamy kilku warstw do tła, dekoracji tła, obiektów na tym samym poziomie co gracze i obiektów przed graczem. I dodatkowa warstwa z tylko jednym czerwonym kwadratem do oznaczania kolizji.

Nie jestem pewien, czy to podejście lub oprogramowanie działa w przypadku przewijania bocznego 2D, ale może warto go obejrzeć.


+1. To świetne narzędzie. Jest to również oprogramowanie typu open source, więc możesz go rozszerzyć, jeśli potrzebujesz.
Janis Kirsteins,

to naprawdę dobre narzędzie, przetestowałem je i nie miałem żadnego problemu z zaimportowaniem go do mojej gry.
Simiil

1
ok, więc teraz chcę wiedzieć, jak tworzyć poziomy nie oparte na kafelkach, takie jak światy w robakach, ale chyba kiedyś zadam to pytanie w nowym pytaniu
Simiil

6

Typowym sposobem może być na przykład tylko ciąg znaków

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

gdzie 0 byłoby blokiem, po którym można chodzić, 1 może oznaczać kolce, a 2 oznaczać linię mety

po prostu przeczytałbyś to w pliku tekstowym (lub na stałe zapisałeś w grze) i narysowałeś względny blok, który jest powiązany z liczbą, i miałeś swoją logikę kolizji, aby poradzić sobie bez względu na konfigurację.

Oczywiście możesz wybrać dowolny format, a być może 0 oznacza narysowanie 5 bloków dostępnych do przejścia.

To tylko jeden ze sposobów, w jaki można to osiągnąć.

http://www.smudgedcat.com/tut_tiledlevel.html ten link jest przykładem w c # przy użyciu frameworka XNA. da ci ogólny pomysł (NIE zawiera nachyleń, ale podobna rzecz mogłaby zostać użyta do zdefiniowania tego rodzaju przypadku)

Pozdrawiam Mark


Jest to dokładnie tak, jak „Excite Bike” zrobił swoje własne mapy z powrotem na Nintendo. vc.nintendolife.com/games/nes/excitebike
Stephen Furlani

5

alternatywny tekst

Wiele gier korzysta z aplikacji open source o nazwie Mappy . Ma swój własny format, który obsługuje wiele warstw i inne funkcje. Prawdopodobnie chcesz powiązać kilka rodzajów danych z danym kafelkiem.


Myślę, że podejście do edytora poziomów w grze jest bardzo powszechne. Tryb programisty jest wewnętrznym opisem tego, w jaki sposób zaprojektowano poziomy dla bardzo popularnej gry, Braid. Gra ma tryb rozwoju, w którym poziomy można budować / modyfikować. Same poziomy mają warstwę kolizyjną pokrytą kafelkami graficznymi:

alternatywny tekst


I ja osobiście tego nie polecam, ale program demonstracyjny 2D dla Allegro użył pewnego rodzaju formatu modelowania 3D i przekonwertował go na niestandardowy format w grze. Zaletą było to, że mógł modelować bardzo gładkie, ciągłe powierzchnie. (Była to gra planszowa oparta na fizyce 2D).

Do edycji danych poziomu gry demo Allegro używamy darmowego narzędzia Blender. Możesz go uzyskać tutaj:

http://blender.org

Oto instrukcje krok po kroku, jak to działa:

1) Umieść plik ademo_export.py w folderze skryptów Blendera. Jest to skrypt eksportu, który przekonwertuje z formatu .blend na format .txt używany w grze demo. W systemie Unix ścieżka będzie wyglądać następująco:

~ / .blender / scripts / ademo_export.py

2) Załaduj blender plików .blend. W obszarze Unix wpisz to z katalogu z plikiem level.blend:

blender -w level.blend

(-W ma używać trybów okienkowych, które wolę).

3) Edytuj poziom. W menu pod

Pomoc -> Skrypty Pomoc przeglądarki -> Eksport -> Poziom gry demonstracyjnej Allegro

znajdziesz kilka przydatnych wskazówek.

4) Zapisz plik (użyj kompresji przed zatwierdzeniem). Wyeksportuj go jako .txt z menu eksportu, wybierając Poziom gry demonstracyjnej Allegro.

5) Zaktualizuj level.dat za pomocą level.txt, nowy poziom powinien pojawić się w grze.


2

„Profesjonalne” metody prawdopodobnie wymagałyby bardzo szczegółowego edytora map, prawdopodobnie w języku C #, który dałby im pełną kontrolę nad wszystkim.

Istnieją dwa główne podejścia; jeden jest łatwiejszy do zrobienia, ale nie tak skuteczny.

  • Możesz użyć edytora map; albo napisanie własnego, albo znalezienie wcześniej istniejącego, takiego jak mapeditor, o którym wspomniał nhnb. Pisanie własnego byłoby dobre dla nauki, ale nie dla gotowego produktu.
  • Możesz po prostu wpisać dane do pliku tekstowego. To jest prostsze, ale nie jest łatwo ponownie przeczytać. Prawdopodobnie możesz uzyskać to samo z edytora map, ale byłoby to zautomatyzowane. Wadą jest to, że to znowu nie można dodawać żadnych efektów specjalnych, takich jak niektóre płytki (nie kaflowych typów , ale płytki (13,45), na przykład) do specjalnych rzeczy.

2

Miałem podobne myśli (np. Wróciłem do pisania gier hobby - praca i inne zobowiązania ...)

Poważnie rozważyłem drogę opracowania „Edytora map” jako części gry / aplikacji.

Jeśli Twoja gra kiedykolwiek wykracza poza własny komputer, zawartość społecznościowa byłaby wielkim dobrodziejstwem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.