Autor Wątek: Generacja map 2d w Gizarmie  (Przeczytany 3590 razy)

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

  • +7
# Wrzesień 16, 2013, 00:55:39
Cześć

Chciałem utworzyć wątek dotyczący naszej prezentacji wygłoszonej na WGK 2013 "Metoda generacji dwuwymiarowych map zróżnicowanego terenu na przykładzie gry startegicznej Gizarma". Prezentacja zajęła pierwsze miejsce w konkursie Best Paper.

Tutaj można pobrać artykuł, tutaj prezentację.

Autorami prezentacji i artykułu jestem ja, Liosan oraz Hydro.

Jeżeli macie pytania / uwagi dotyczące naszej prezentacji, chętnie przeczytamy i odpowiemy, jeżeli będziemy potrafili :).

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +1
# Wrzesień 16, 2013, 01:52:58
Cytuj
Jeżeli macie pytania / uwagi dotyczące naszej prezentacji, chętnie przeczytamy i odpowiemy, jeżeli będziemy potrafili :).
Głównym moim pytaniem by było, jakbyś podszedł do tematu generowania map wysokości/wilgotności/temperatury/żyzności, itp całkowicie proceduralnie. ;)

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Wrzesień 16, 2013, 23:52:13
My nie robimy tego proceduralnie z założenia, ale mogę ci opowiedzieć o naszych "dobrych praktykach", które stosujemy przy rysowaniu map parametrów.

Naturalnie wyglądająca mapa powinna wyglądać różnorodnie, przy różnych przybliżeniach. Można to w miarę łatwo osiągnąć stosując mapy, które wyglądają różnorodnie przy różnych przybliżeniach.

Standardowo stosujemy 5 map parametrów klimatu - temperatura, wysokość, wilgotność, żyzność, zalesienie.

* Temperatura - zazwyczaj jest gradientem, lub czymś podobnym.
* Żyzność - występują dość duże obszary o jednolitej żyzności. Obszary o dużej żyzności nie sąsiadują zazwyczaj koło obszarów o żyzności niskiej. Jest tam większa strefa przejściowa.
* Wilgotność - Często obszary o większej wilgotności występują przy rzekach, w efekcie mają podłużne kształty. Poza tym na pojezierzach występuje dużo małych wysepek podwyższonej wilgotności
* Wysokość - ważne jest to, że w wysokich górach zmienność wysokości jest dość duża.
* Zalesienie - ten parametr tworzony jest na podstawie szumu perlina. W miejscach o mniejszym natężeniu lasu, szum jest przyciemniany, tam gdzie więcej rozjaśniany.

Nawiązując do zdania o różnorodności - mapa złożona z takich parametrów wygląda różnorodnie przy dużym oddaleniu bo dobrze widać wtedy wpływ temperatury, przy dużych zbliżeniach wygląda różnorodnie bo dobrze widać np. fluktuacje zalesienia na mapie.

Na stronie 10 artykułu pokazane są rozkłady zastosowane dla Europy, mapy klimatu są zrobione z zastosowaniem reguł o których napisałem.

Offline Karol

  • Użytkownik

  • +5
# Wrzesień 17, 2013, 02:32:43
Naturalnie wyglądająca mapa powinna wyglądać różnorodnie, przy różnych przybliżeniach. Można to w miarę łatwo osiągnąć stosując mapy, które wyglądają różnorodnie przy różnych przybliżeniach.
To jest doskonale wytłumaczone, ale to przecież banalne za pomocą tego doskonale tłumaczącego zdania.

Offline Liosan

  • Redaktor

# Wrzesień 17, 2013, 09:35:46
Naturalnie wyglądająca mapa powinna wyglądać różnorodnie, przy różnych przybliżeniach. Można to w miarę łatwo osiągnąć stosując mapy, które wyglądają różnorodnie przy różnych przybliżeniach.
To jest doskonale wytłumaczone, ale to przecież banalne za pomocą tego doskonale tłumaczącego zdania.
Mapa w grze powinna wyglądać naturalnie i różnorodnie. Jeśli użyjemy dobrze wyglądających map źródłowych (np. pochodzących z danych historycznych) którymi będziemy parametryzować nasz algorytm, to wynik będzie wiarygodny.

Lepiej? :)

Co do generacji proceduralnej - nic nie stoi na przeszkodzie żeby kiedyś spróbować. Troll udostępniał wszystkie potrzebne narzędzie na forum dla testerów, więc... ktoś ma ochotę się zapisać do gry? :)

Liosan

Offline hydro

  • Użytkownik
    • Gizarma

# Wrzesień 17, 2013, 15:36:41
To jest doskonale wytłumaczone, ale to przecież banalne za pomocą tego doskonale tłumaczącego zdania.

Chodzi o to, że kompletna mapa używana w grze wygląda różnorodnie przy różnych przybliżeniach, (czyli wykazuje duże zróżnicowanie krajobrazu niezależnie od skali powiększenia) wtedy, gdy użyjesz do jej generacji kilku wsadowych map klimatu, wyglądających różnorodnie przy różnych przybliżeniach. W tej sekcji:
* Temperatura - zazwyczaj jest gradientem, lub czymś podobnym.
* Żyzność - występują dość duże obszary o jednolitej żyzności. Obszary o dużej żyzności nie sąsiadują zazwyczaj koło obszarów o żyzności niskiej. Jest tam większa strefa przejściowa.
* Wilgotność - Często obszary o większej wilgotności występują przy rzekach, w efekcie mają podłużne kształty. Poza tym na pojezierzach występuje dużo małych wysepek podwyższonej wilgotności
* Wysokość - ważne jest to, że w wysokich górach zmienność wysokości jest dość duża.
* Zalesienie - ten parametr tworzony jest na podstawie szumu perlina. W miejscach o mniejszym natężeniu lasu, szum jest przyciemniany, tam gdzie więcej rozjaśniany.
opisane jest, jakie mapy klimatu najlepiej (dotychczas) sprawdziły się w praktycznym zastosowaniu, to znaczy: pozwoliły powtarzalnie generować kompletne mapy terenu o najnaturalniejszym wyglądzie (wykazujące duże zróżnicowanie krajobrazu niezależnie od skali powiększenia).

Co do generacji proceduralnej - nic nie stoi na przeszkodzie żeby kiedyś spróbować. Troll udostępniał wszystkie potrzebne narzędzie na forum dla testerów, więc... ktoś ma ochotę się zapisać do gry? :)

W sumie mogę nawet powiedzieć, że ja przygotowuję mapy klimatu według takiego algorytmu:

1. sprawdź n = wymaganą ilość map klimatu
2. twórz bitmapę w wymaganym rozmiarze
3. określ parametr klimatu definiowany przez daną bitmapę
4. wypełnij bitmapę kolorem oznaczającym średnią wartość definiowanego przez nią parametru
5. zapisz bitmapę jako mapę klimatu
6. jeżeli ilość zapisanych map klimatu <n, idź do 2
7. wybierz mapę klimatu do edycji
8. szukaj informacji (mechanika gry, założenia scenariusza, cechy klimatu, procesy geologiczne, procesy meteorologiczne)
9. analizuj znalezione informacje
10. wyciągnij wnioski
11. rozjaśnij mapę klimatu tam gdzie wartość parametru powinna być wyższa
12. przyciemnij mapę klimatu tam gdzie wartość parametru powinna być niższa
13. zapisz zmodyfikowaną mapę klimatu
14. jeżeli ilość zmodyfikowanych map klimatu <n, idź do 7
15. kompiluj mapę wynikową
16. analizuj efekt kompilacji
17. jeżeli efekt kompilacji niezadowalający, idź do 7
18. skonsultuj
19. jeżeli skonsultowany efekt kompilacji niezadowalający, idź do 7
20. stop

Kroki 8, 9, 10, 16 i 18 wywołują podprogramy w moim kodzie maszynowym, trudnym do analizy z zewnątrz ;-)
Może kiedyś da się to przetłumaczyć na coś uniwersalniejszego - a może lepiej, żeby każdy użył swoich procedur w tym zakresie :-)
« Ostatnia zmiana: Wrzesień 17, 2013, 15:47:13 wysłana przez hydro »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Wrzesień 17, 2013, 16:37:55
hydro: Kroki 8, 9 i 10 są chyba uniwersalnym algorytmem na każdy problem. ;)

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Wrzesień 17, 2013, 22:51:28
Naturalnie wyglądająca mapa powinna wyglądać różnorodnie, przy różnych przybliżeniach. Można to w miarę łatwo osiągnąć stosując mapy, które wyglądają różnorodnie przy różnych przybliżeniach.

Ok, to zdanie nie ma sensu. Mój błąd.

Tak jak pisałem, naturalnie wyglądająca mapa powinna wyglądać różnorodnie, przy różnych przybliżeniach. Względnie łatwo jest stworzyć tonalną bitmapę, która wygląda różnorodnie przy jednym określonym przybliżeniu. Teraz stosując kilka bitmap z których każda wygląda różnorodnie przy pewnym określonym przybliżeniu (innym dla każdej bitmapy) jako input do metody symulacji klimatu z naszego artykułu, otrzymamy rozkład terenu wyglądający różnorodnie przy różnych przybliżeniach. Czyli taki jaki chcemy.

Przykładowo gradient wygląda różnorodnie jak się patrzy na niego z daleka a dość jednolicie przy powiększeniu. Odwrotnie jest z  szumem perlina, w dużym oddaleniu wygląda jednolicie, natomiast przy  dużym przybliżeniu różnorodnie.

Oczywiście nie twierdzę, że jest to gotowy przepis na generacje proceduralną, ale myślę, że jest to pewna podpowiedź jak można by się do tego zabrać.

Troll

Offline WhiteLightning

  • Użytkownik

  • +1
# Wrzesień 20, 2013, 14:08:57
Pomyslcie czy nie dalo by sie zrobic z tego publikacji (chyba ze przedstawianie na WGK juz sie liczy w ten sposob). Ew. moglibyscie napisac chocby artykul do magazynu Programista czy czegos podobnego i pare groszy by wpadlo, bo pomysl i tematyka ciekawa, a podejscie chyba w miare oryginalne.

Offline hydro

  • Użytkownik
    • Gizarma

# Wrzesień 21, 2013, 04:01:33
Pomyslcie czy nie dalo by sie zrobic z tego publikacji (chyba ze przedstawianie na WGK juz sie liczy w ten sposob). Ew. moglibyscie napisac chocby artykul do magazynu Programista czy czegos podobnego i pare groszy by wpadlo, bo pomysl i tematyka ciekawa, a podejscie chyba w miare oryginalne.

Dzięki za dobre słowo :-) Podlinkowana w pierwszym poście wątku wersja artykułu (tylko z czarno-białymi obrazkami) została opublikowana w: Wytwarzanie gier komputerowych, t. 3, Materiały Konferencyjne Krajowej Konferencji Wytwarzania Gier Komputerowych, Gdańsk 2013.
Do innego publikatora musiałoby więc powstać coś nowego. Da się przygotować rozszerzoną wersję artykułu, albo pogłębić jakieś szczegółowe zagadnienie, albo uzupełnić opis zastosowania o nowe wyniki... pomysłów jest dużo. Na wszystko oczywiście potrzebny jest czas, a o ten zasób bywa najtrudniej ;-)
.
« Ostatnia zmiana: Wrzesień 21, 2013, 04:06:46 wysłana przez hydro »

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

  • +1
# Wrzesień 21, 2013, 16:06:11
No i w międzyczasie trzeba znaleźć chwilę, żeby rozwijać grę o której się tak dużo piszę :).