Autor Wątek: Automated Level Design - Propozycja Compo  (Przeczytany 8489 razy)

Offline Kos

  • Użytkownik
    • kos.gd

# Styczeń 03, 2011, 21:19:04
Jeżeli miałby kto ochotę - czemu nie. Dla sprawiedliwości do oceny będą jednak globalnie wylosowane seedy, żeby wszyscy oceniali to samo. :)

Nojaaaak. Bez sensu! Tzn... Dobra, może i z sensem :P, niech sobie będą, ale czemu chcesz zabierać uczestnikom możliwość generowania sobie ile wlezie?

Postawmy to jasno: Możemy oceniać na dwa sposoby: "który generator zawsze robi najfaniejsze poziomy" i "który czasami wygeneruje najfajniejszy poziom". Ustalamy, że decydujemy się na ten pierwszy wariant- czyli generator, który zrobił na losowych seedach 5 niezłych poziomów, jest lepszy od takiego, którym udało się komuś po X próbach wygenerować poziom super-hiper-fajny? Taka byłaby implikajca globalnie wylosowanych seedów.

Offline Mr. Spam

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

Offline Xirdus

  • Redaktor

# Styczeń 03, 2011, 21:22:50
@Kos
Ocenie podlega tylko i wyłącznie te 5 wylosowanych seedów. Reszta poza konkursem.

Offline Dab

  • Redaktor
    • blog

# Styczeń 03, 2011, 21:29:26
Czyli można ręcznie przygotować 3 poziomy i przypisać je jakoś do klas seedów ;)

BTW: a co z teksturami/materiałami owych voxeli?
« Ostatnia zmiana: Styczeń 03, 2011, 21:31:16 wysłana przez Dab »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 03, 2011, 22:05:20
Cytuj
Nojaaaak. Bez sensu! Tzn... Dobra, może i z sensem :P, niech sobie będą, ale czemu chcesz zabierać uczestnikom możliwość generowania sobie ile wlezie?
A czy ja chcę zabierać? Po prostu będą określone plansze do oceny, a reszta to ile dusza zapragnie. :)

Cytuj
Postawmy to jasno: Możemy oceniać na dwa sposoby: "który generator zawsze robi najfaniejsze poziomy" i "który czasami wygeneruje najfajniejszy poziom". Ustalamy, że decydujemy się na ten pierwszy wariant- czyli generator, który zrobił na losowych seedach 5 niezłych poziomów, jest lepszy od takiego, którym udało się komuś po X próbach wygenerować poziom super-hiper-fajny? Taka byłaby implikajca globalnie wylosowanych seedów.
Jak dla mnie właśnie dokładnie tak jest. Poza tym nie każdemu chciało by się robić to X prób (gdzie X jest większe niż 5). No i druga kwestia, proponowany system promuje generatory, które wykazują się większą różnorodnością - generator, który dla 5 różnych seedów wygeneruje 5 diametralnie różnych architektur będzie lepiej oceniony, niż generator generujący zawsze mapy upiornie do siebie podobne. :)

Główna motywacją było jednak dla mnie to, żeby wszyscy oceniali dokładnie te same poziomy. Czy seedów będzie 5, czy 25 (plus zasada "oceniaj tyle, aż się nie znudzi"), to już kwestia drugorzędna. :)

Cytuj
Czyli można ręcznie przygotować 3 poziomy i przypisać je jakoś do klas seedów ;)
Nie przejdzie - nie masz pojęcia, jakie seedy będą podlegały ocenie (to będzie wylosowane dopiero po zebraniu prac). Dodatkowo generowanie map pod głosowanie odbędzie się u organizatora, żeby upewnić się, że rzeczywiście mapa zależy wyłącznie od seeda.

Offline Xirdus

  • Redaktor

# Styczeń 03, 2011, 22:12:59
Nie przejdzie - nie masz pojęcia, jakie seedy będą podlegały ocenie (to będzie wylosowane dopiero po zebraniu prac). Dodatkowo generowanie map pod głosowanie odbędzie się u organizatora, żeby upewnić się, że rzeczywiście mapa zależy wyłącznie od seeda.
Można zrobić 10 różnych i przy każdym uruchomieniu "generować" kolejną z nich. Kryterium "generacji" nie będzie seed, a magiczny bajt w ukrytym pliku bez nazwy schowanym pod trzydziestoma podfolderami gdzieś w moich dokumentach ;).

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 03, 2011, 22:30:22
Cytuj
Można zrobić 10 różnych i przy każdym uruchomieniu "generować" kolejną z nich. Kryterium "generacji" nie będzie seed, a magiczny bajt w ukrytym pliku bez nazwy schowanym pod trzydziestoma podfolderami gdzieś w moich dokumentach ;).
Nie przejdzie. ;)

Jeszcze nie zdecydowałem, jakim algorytmem będę weryfikował zależność tylko od seeda, ale może to być coś w tym guście:
- wybieramy N oficjalnych przypadkowych seedów,
- wybieramy M dodatkowych seedów (np. M = 5N),
- puszczamy algorytm na wszystkich powyższych seedach w przypadkowej kolejności, pełen zestaw na dwóch różnych kompach odłączonych od sieci,
- po wygenerowaniu porównujemy wyniki z obu kompów - jeżeli jest OK, to wybieramy mapy odpowiadające oficjalnym seedom

Offline Avaj

  • Użytkownik

# Styczeń 03, 2011, 22:54:34
Spoko, przez ostatni weekend już coś napisałem (zoptymalizowane voxele + normalmapping + deffered shading + oświetlenie volumetryczne + kamera + fizyka). :) Ale mówię, że silnik musi być cały czas ten sam. :)
Nudzi ci się w domu, nie? :)

Offline Karol

  • Użytkownik

# Styczeń 03, 2011, 23:07:05
  • Jaki format zapisu mapy?
  • Jak wyglądać będzie seed? Czy to będzie dowolna wartość z zakresu np. unsigned int czy też liczba z zakresu 1000000-9999999 (chodzi o stałą ilość cyfr, jak np. w Settlersach pierwszych)?

Offline Oti

  • Użytkownik

# Styczeń 03, 2011, 23:11:29
  • Jaki format zapisu mapy?
  • Jak wyglądać będzie seed? Czy to będzie dowolna wartość z zakresu np. unsigned int czy też liczba z zakresu 1000000-9999999 (chodzi o stałą ilość cyfr, jak np. w Settlersach pierwszych)?
A po co Ci te informacje przed starem compo? ;> A to, jak będzie wyglądać seed to jest raczej nieistotne-z tego co ogarniam to wystarczy tylko srand(seed); i wio.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 03, 2011, 23:25:11
Cytuj
Nudzi ci się w domu, nie? :)
Dwa słowa: code reuse. ;)

Cytuj
1. Jaki format zapisu mapy?
2. Jak wyglądać będzie seed? Czy to będzie dowolna wartość z zakresu np. unsigned int czy też liczba z zakresu 1000000-9999999 (chodzi o stałą ilość cyfr, jak np. w Settlersach pierwszych)?
Będzie wszystko dokładnie podane w momencie startu compo, ale będzie to najprawdopodobniej coś w stylu:
- format mapy tekstowy - rozmiar w osiach x, y, z, dalej liczby po jednej na voxel (białe znaki można stosować dowolnie), a za tym jakiś opis punktów szczególnych (gdzie jest start, itp); osie mapy: X+ do przodu, Y+ w prawo, Z+ w górę,
- seed będzie z zakresu 0-0x7FFFFFFF (max int)

Offline Kos

  • Użytkownik
    • kos.gd

# Styczeń 03, 2011, 23:28:14
Cytuj
X+ do przodu, Y+ w prawo, Z+ w górę

Pff :)

Offline Avaj

  • Użytkownik

# Styczeń 03, 2011, 23:40:05
Cytuj
X+ do przodu, Y+ w prawo, Z+ w górę

Pff :)
Otóż to, przecież każdy wie, że jedyny słuszny układ to X+ w prawo, Y+ do góry i Z+ do tyłu :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 03, 2011, 23:46:20
Otóż to, przecież każdy wie, że jedyny słuszny układ to X+ w prawo, Y+ do góry i Z+ do tyłu :)
Powiedz to Carmackowi. Jak go przekonasz, to i mnie też. ;) U niego od czasów Dooma i pierwszego Quake'a niepodzielnie jest Z+ w górę, więc takie zboczenie i mi zostało. :) Niemniej jednak jeżeli o format pliku chodzi, to nie widzę problemu by przy zrzucaniu do pliku przewrócić tablicę w dowolny sposób.

Offline Karol

  • Użytkownik

# Styczeń 03, 2011, 23:46:59
A po co Ci te informacje przed starem compo? ;>
Po to, aby jakoś na nie wpłynąć w miarę możliwości, a nie żeby zacząć pisać przed starem compo.

A to, jak będzie wyglądać seed to jest raczej nieistotne-z tego co ogarniam to wystarczy tylko srand(seed); i wio.
Dla mnie miałoby znaczenie, bo można wtedy określić sobie, że np. 5ta cyfra odpowiada za feature X, a 8ma za feature Y itp, w przypadku gdy seed jest liczbą o zmiennej ilości cyfr już tak nie można.

- format mapy tekstowy - rozmiar w osiach x, y, z, dalej liczby po jednej na voxel (białe znaki można stosować dowolnie), a za tym jakiś opis punktów szczególnych (gdzie jest start, itp); osie mapy: X+ do przodu, Y+ w prawo, Z+ w górę,
O ile się nie mylę to ani to po DirectX'owemu, ani OpenGL'owemu? X+ w prawo, Y+ do góry, Z+ do przodu (w OpenGL Z+ to do tyłu)?

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Styczeń 03, 2011, 23:56:29
Cytuj
O ile się nie mylę to ani to po DirectX'owemu, ani OpenGL'owemu?
Tak. Za to jest to format przyjazny edycji map - jak patrzysz z góry, to X i Y są zgodne z ekranowym X i Y, a Z jest po prostu w górę. Właściwie to jak patrzy się z góry, to jest to układ "OpenGLowy", tyle że z odwróconym Y.