2009-04-08 17 views
9

Jestem w trakcie pisania niewielkiego widoku z góry RPG w stylu klasycznej serii Ultima. Potrzebuję szybkiego i brudnego (szybszego niż zabrudzonego) sposobu projektowania dużych map - powiedzmy 1000 płytek x 1000 płytek i potrzebuję pomocy w zastanawianiu się, jak to zrobić.Najlepszy sposób na stworzenie mapy gry

chciałbym powiedzieć, że są to dobre 50-60 różne rodzaje płytek - lasy, rzeki, równiny, itp

Dotychczas najlepiej mogłem wymyślić był

  • zdefiniować tablicę (lub podobną strukturę) do przechowywania dwóch kluczowych elementów informacji - identyfikator położenia/współrzędnych i liczbę całkowitą od 1 do 60 określającą, jaki rodzaj płytki to jest.

  • w aplikacji do edycji rastra narysuj obraz o wymiarach 1000 x 1000 pikseli. Używając palety 50 różnych kolorów, narysuję mapę - 1 piksel odpowiada 1 płytce. Powiedz dla danego kafelka wody, narysuję grupę pikseli w pewnym odcieniu niebieskiego. Zapisz jako .gif lub .png.

  • napisz jakiś procesor, który następnie analizuje wspomniany wcześniej gif/jpg i analizuje go piksel po pikselu. W zależności od wartości RGB piksela określa on typ płytki. Procesor, a następnie kod - generuje niektóre procedury, które wypełniają tablicę map.

Do tej pory myślę, że musi być łatwiejszy sposób.

Odpowiedz

2

Brzmi jak całkiem dobry sposób na mnie. Jednak może okazać się, że tworzenie niestandardowego narzędzia do tworzenia map jest tak proste.

Inną opcją może być napisanie programu, który pozwoli ci zdefiniować położenie głównych funkcji, a program generujący uzupełni resztę. (Np .: rzeka biegnąca od x1, y1 do x2, y2. "Duży" forrest wyśrodkowany na x, y itp.). To może pozwolić ci zdefiniować dużą mapę tylko z mniejszego pliku cech geograficznych. Wyobraź sobie, że to jak rysowanie grafiki wektorowej zamiast określania każdego ostatniego piksela w rastrze. :-)

11

Czy musi być oparty na kafelkach? Spójrz na miejscu Daniel Cook, Lost Garden, nie tylko on daje pewne smaczne darmową grafikę, ale omawia nadejście dowolnego umieszczania obrazów w grach, a płytki:

„Dawno, dawno temu, trzeba było użyć placyku płytek za wszystko. Obecnie nie ma prawdziwej potrzeby zrobić silnik 2D w oparciu płytek. z dowolnych obrazów z pełnym alfa i mnóstwem szybkości wypełniania, można umieścić razem gra jak naklejka z naklejkami Opuść grafikę na dowolne pozycje i waruj jak szaleniec. Aquaria wygląda wspaniale, a kafelków nigdzie nie widać."

tam również link tam na step-by-step instructions na dokonanie edytor w grze opartej na IndieLib.

+1

+1 dla obecnie pole myślenia! Będę tu całą noc! –

1

Innym rozwiązaniem byłoby wygenerować (piksel) mapę lub bezpośrednio mapa gry. To oczywiście zależą od wielkości twojego worla i jeśli masz dużo konkretnych zasobów (miasto w tym momencie, kopalnia w tym miejscu ...)

Na stronie było dużo artykułów na ten temat gra "łobuz", która może być całkiem użyteczna. (spróbuj na przykład RogueBassin)

Mówią także o strukturze danych, aby umożliwić większą wariację (taką jak posiadanie obrazu podstawowego i losowo dodają liczbę (małych) "obramowanych" obrazów podczas definiowania reprezentacji w tablicy map. Na przykład, aby dodać trochę kamienia do trawy). Inne efekty, jak się wydaje w ultima V, gdzie niektóre elementy dachu stały się przezroczyste, gdy przechodzisz do nich, są również oparte na tej strukturze.

Okazało się, że posiadanie obrazu (w naszym przypadku zestawu obrazów) jest łatwe, ponieważ możesz ulepszyć wygląd (nie więcej prostokątnego lasu!), Gdy masz czas, i skoncentrować się na konkretnym miejscu misji .

pozdrowienia

Guillaume

2

polecam posiadanie informacji o położeniu być informacje indeksowania dla swojej struktury przechowywania danych, a nie coś, czego szukamy w nim. TO ZNACZY.

int get_terrain_type(int x, int y) { 
    return terrain[x][y]; 
} 

(nie całkowicie pewny, że nie jest to, co masz na myśli, ale pomyślałem, że umieścić go tam.)

Powiązane problemy