Strona 1 z 1

2k3 - rogue-like

: 09 lis 2017, 14:56
autor: Rave
W przyszłości chciałbym zrobić sobie w 2k3 rogue-like. Sam gameplay mógłby być dość łatwy, jednak nie wiem do końca jak rozwiązać generację. Niby 2k3 ma generator map, można go ustawić żeby się "sam włączał", jednak jest on tragiczny i jak np. postawisz jakieś eventy to nie ma gwarancji że po generacji na ścianie nie wylądują (albo w suficie). Pomyślałem więc, żeby zrobić parę pokojów i jakoś je połączyć losowo poprzez odpowiedni skrypcik eventowy który by wygenerował "mapę poziomu". Same pokoje/ekrany byłyby statyczne (no, może z losowymi potworami, bo to dość łatwo zrobić), ale za to ładne.

Połączenia samo w sobie mam niejako obmyślone, każdy poziom miałby po 10 "ekranów", więc bym musiał użyć 100 zmiennych zawierających id mapy, ale nie wiem jak ogarnąć generację. Nie może to być totalne losowe, bo np. niektóre pokoje muszą się generować obok innych a inne tylko poniżej określonego poziomu i naprawdę nie wiem jak to ugryźć. Kiedyś w turbo pascalu zrobiłem rogue-like, no ale generację miał jeszcze gorszą niż 2k3 ;) więc to doświadczenie się nie przyda.

Jakieś pomysły?

//edit: Kurde, trochę szkoda że X-Tech dalej zbanowany. Jakkolwiek jego wywody były rakotwórcze, tak 2k3 naprawdę gościu ogarniał. No ale rozumiem, czemu go wywalono, więc bez #bringbackXTech mi tu ;).

Re: 2k3 - rogue-like

: 09 lis 2017, 15:21
autor: Dragon Kamillo
Hmm - pomyślmy.
Na pewno będziesz miał mapy które będą miały przejście np z tylko jednej strony, z dwóch i tak dalej.
Robisz np parę wariantów lewego górnego rogu - i tylko z tych liczb wylosujesz pierwszą mapę.

Wylosowane mapy możesz zapisywać w zmienych, ale uwaga - o odpowiednich numerach (załóżmy że mapa będzie 100x100 mapek).
Numery zmiennych będą takie "XY" mapy.
Np mapę o współrzędnych 00 zapiszesz w zmiennej nr 10000 i tak dalej, dla współrzędnych 0,1 będzie to 10001, np dla 56,38 będzie to 15638 (użyjesz sobie patcha na więcej zmiennych to ci starczy) - ogólnie na zapisanie wszyskich map potrzebujesz 10000 zmiennych.

żeby obliczyć numer zmiennej z podanych współrzędnych zrobisz tak (100 + X) * 100 +Y (ta jedynka na początku żeby nie było sytuacji że współrzędne np 4,10 i 41,0 wygenerują ten sam numer - tak nie wygenerują bo wygeneruja 10410 i 14100, i gut.

No i se losujesz po kolei i zapisujesz po kolei wylosowane mapy, potem teleporty robisz sprawdzając na jakich współrzędnych na mapie jest nasz bohater i na jaką ma sie przenieść - to już proste.

Zostaje samo losowanie gdzie musisz sobie (np jak będziesz losować z lewej do prawej z góry na dół) numery map z mapy po lewej stronie i na górze i losować z warunkami że musi się z nimi zgadzać - możesz np mapy które się ze sobą zgadzają zapisać obok siebie w numerach zmiennych - wtedy warunki czy sie zgadzają czy nie zrobisz na przedziałach i wsio.

Ogólnie do zrobienia. Chyba że chcesz losować mapę podczas gry - w sumie zapis map zostaje ten sam - komplikuje się samo losowanie, ale nadal do zrobienia.

Re: 2k3 - rogue-like

: 09 lis 2017, 15:46
autor: Rave
Eh, Dragon, to twoje kombinowanie... Formułka jest prostsza.

x + (y*szerokość)

Gdzie szerokość to szerokość "mapy".

Tak jak mówię, zapis i podstawową generację (totalny random) mam obczajone. Nawet nie będę się bawił w "graniczne" mapy tylko po prostu jeśli ekran będzie w rogu czy na boku mapy zdarzenie teleportu zmieni się w jakąś skałę czy coś innego nie do przejścia, żeby gracz nie wyszedł tam gdzie nie powinien. Chodzi mi o bardziej skomplikowane przypadki generacji takie jak "specjalne" mapy które ZAWSZE muszą się pojawić obok innej mapy, mapy o określonej szansie pojawienia się oraz mapy generowane tylko na określonych poziomach.

Re: 2k3 - rogue-like

: 09 lis 2017, 16:07
autor: Yoroiookami
Jeżeli masz tylko 10 pomieszczeń, a niektóre muszą zostać w tym samym miejscu, może łatwiej, szybciej i mniej bugowato byłoby je po prostu przekopiować i połączyć wszystkie możliwe opcje? :L
Po wejściu na nowy poziom gracz losuje numerek od 1-5 i zależnie od tego ma inną kombinację pokoików. A jeżeli nie masz ochoty na kopiowanie map, niech teleporty się zmieniają zależnie od wylosowanego numerku.
(Taka propozycja, gdybyś stracił nadzieję/ochotę na zbędne kombinowanie)

Re: 2k3 - rogue-like

: 09 lis 2017, 18:16
autor: Rave
Niby tak, tylko ja chcę zrobić to maksymalnie losowo, chociaż bez przesady. Taki np. Enter the Gungeon też ma zaprojektowane pokoje umieszczone w sposób losowy i połączone razem. Ja chcę, żeby można było ogrywać grę wiele razy i ciągle nie wiedzieć kompletnie co cię czeka (dlatego zawartość skrzynek będzie również losowa).

Re: 2k3 - rogue-like

: 09 lis 2017, 18:26
autor: Yoroiookami
Jeżeli chcesz maksymalnie losowo, to możesz zostawić identyczny kształt pomieszczeń, a uzależnić szczegóły od przełączników lub zmiennych.
Np. w kuchni zależnie od zmiennej, na stole by leżało wino lub piwo.

To samo można zrobić ze skrzyniami, przeciwnikami i meblami.
Tylko wtedy będziesz mieć na mapach dużo zdarzeń. :L

Re: 2k3 - rogue-like

: 09 lis 2017, 19:06
autor: Dragon Kamillo
tylko że z tym moim kombinowaniem - przypadek mapy pojawiającej się zawsze koło innej losowej mapy miałbyś rozwiązany.

i nie rozumiem problemu z generowaniem czegoś wyłącznie na jakimś piętrze - toć to tylko warunek numeru piętra i zrobienie kolejnego zbioru który może się tylko generować jak jest określone piętro - jak nie losuj od nowa do skutku.

I faktycznie twój wzór lepszy.