C++ - generowanie mapy.

0

Witam, jestem nowy, więc po pierwsze hej!

Jestem studentem Informatyki 2 semestru, na moim roku mamy coś takiego jak projekt z programowania obiektowego. Razem z sekcją zdecydowaliśmy się napisać grę- prostą platformówkę. Mnie przyznano zadanie napisania generatora map losowych.

Mam niestety z tym problem, ponieważ nie wiem kompletnie, jak mam do tego podejść. Gra ma być zrobiona w SDLu. Mapy mają być generowane losowo w stylu mapek w np. Mario- chodzi się od lewej do prawej, są platformy, dziury i tak dalej, po mapie poruszają się wrogowie i są bonusy, na końcu oczywiście finisz. Nie ma jakichś dziwnych obiektów w stylu wyrzutni. Nie wiem, w jaki sposób to napisać, jeden kolega podsunął mi pomysł- generator bitmapy, w której brązowa będzie podłoga, zielony to bonus itp. ale nie potrafię tego potem przetworzyć w taki sposób, aby kod gry reagował na zetknięcie się z danym obiektem.

Może mi ktoś pomóc, podpowiedzieć, może nawet pokazać kawałek kodu prostego generatora mapy, generalnie cokolwiek, co by mi mogło pomóc?

Dziękuję z góry i pozdrawiam.

0

Twój problem jest na tyle ogólny, że ciężko cokolwiek konkretnego poradzić.
Z tego co piszesz wynika że wasza gra już potrafi czytać/interpretować mapy. W tej sytuacji jedyne co Ci zostaje to zapoznać się z formatem jaki określili koledzy i wykonać kilka map własnoręcznie, na próbę.
Dopiero potem gdy będziesz wiedzieć jak mniej więcej ma ona wyglądać będziesz mógł zautomatyzować proces tworzenia.

0

Dzięki za odpowiedź :)

No właśnie tego zapomniałem dopisać- format mapy mam wybrać także ja, więc generalnie reszta tej części- czyt. czytanie mapy- będzie leżała w rękach kolegów, którzy się dostosują do mnie.

Jaką metodą jest najprościej robić właśnie taki generator mapy?

0

Zaczynasz od złej strony. Nie wiesz co chcesz generować, a chcesz robić generator tego czegoś.

Skoro napisałeś coś na temat "reagowania kodu gry na zetknięcie z obiektem" to rozumiem, że wewnętrzny format mapy został już przez was określony, przez co w jakiś sposób odbija się na mechanice.
W takiej sytuacji pozostaje Ci najlepiej opracować format analogiczny do tego z czego już korzysta gra.
Ale z racji że Ty się tym masz zająć, to po co znowu ktoś inny ma pisać wczytywanie tej mapy, skoro Ty już znasz ten format, i zapewne i tak skorzystasz przy wczytywaniu z kodu generatora?

Apropos samego generatora ogarnicza Cię Twoja wyobraźnia: zobacz sam jak tworzysz "mapę" i spróbuj zautomatyzować ten proces.

0

ja jak robiłem grę planszową to najpierw zrobiłem przykładową mapę ręcznie, potem praktycznie całą grę i ostatnim etapem było dopiero stworzenie edytora map i wygenerowanie plansz i potem dopiero drobne poprawki - tak więc jak dla mnie zaczęcie od generatora map jest trochę podejściem od d**y strony
ale może się nie znam ;) po prostu ja to robiłem w tej kolejności

a i nie wiem co to ma być za gra ale w najprostszym podejściu twoim generatorem może być ms paint ;) dosłownie rysujesz sobie mapę, a w programie zamieniasz podczas ładowania piksele na obiekty

przy czym dobrze narysować dwie takie mapy - jedna czarno-biała będąca mapą kolizji, a druga kolorowa będąca mapą obiektów - gdzie ilość kolorów oznacza liczbę różnych obiektów jakie możesz narysować (jakieś chmurki, krzaczki, cokolwiek)
do takiego mario starczyłoby chyba 16 ;)

0

Najpierw opracuj sobie format tych map. Możesz tak jak już wspomniano skupić się na kolorach i po nich realizować kolizję. Albo możesz zabawić się w mapki kafelkowe, wtedy będziesz miał łatwiejszą sprawę z generowaniem terenu losowo.
Poczytaj sobie tutki easykoder'a na temat gamedevu i tworzenia mapek - są pisane w Allegro, ale zasady odnoszą się ogólnie: http://www.easykoder.vot.pl/arty

A generowanie losowe? Musisz sobie pomyśleć jak ma wyglądać ta mapa, jakie zasady są konieczne. Weźmy za przykład coś w stylu Mario:
-generuj dół mapy jako ziemię po której można chodzić.
-wylosuj liczbę "przepaści", potem losowo umieść je na mapie, nadając losową szerokość w przedziale <1, maksymalna_długość_skoku), dodaj po drodze jakieś ograniczniki częstotliwości, żeby nie dostać na początku 10 dziur a potem pustego terenu.
-losowo wklep na mapę przeszkody terenowe, wzniesienia, górki, tak jak przepaście zachowując ustalone wcześniej zasady
-potem nawrzucaj tam przeciwników, też losowo.

Finito. Najważniejsze najpierw przemyśleć jak będzie w ogóle tworzona mapa - kafelki, kolory, czy może coś innego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1