radekmie / h3mapgen

An attempt to build a comprehensive map generator for Heroes of Might and Magic III
6 stars 2 forks source link

Dodać handling redefiniowalnych parametrów "początkowych" na każdym etapie generacji #38

Open acatai opened 6 years ago

acatai commented 6 years ago

OK, z tego co dzisiaj ustaliliśmy, o generowaniu dowolnego elementu decydują trzy zbiory ustawień: config, userParams i concreteParams - nazwijmy je roboczo settings.

Standardowe działanie programu polega na wczytaniu tych rzeczy (np. przez GUI) i wygenerowaniu mapy. Voila i do domu.

Natomiast chcielibyśmy umożliwić użytkownikom wczytanie istniejącego h3pgm'a i regernerowanie niektórych etapów. "Regenerowanie" nie tylko w postaci, zrób mi inne potwory na tych samych ustawieniach, ale także np. zrób mi inne potwory. Albo ustaw inne zamki.

Pomysł jest więc taki, że do h3pgm'a możemy dodać wiele settingów, każdy musi być związany z jakimś etapem. I teraz w momencie gdy chcemy jakąś wartość X na etapie powiedzmy "monsters", to wyszukujemy setting który został położony najpóźniej na liście etapów poprzedzających "monsters".

Krótko mówiąc trzeba dopisać interfejs który będzie to obsługiwał od strony kodu. Kawałek liba który na zawołanie w stylu state.userParams("monsters") odpowiednio przeszuka h3pgm i zwróci pożądaną wartość. (a równocześnie byłbym za tym, żeby w samym h3pgm wyglądało to jakoś przejrzyście. no i wymaga to żebyśmy też mieli gdzieś w kodzie zapisany ordering całości wraz z nazwami kodowymi poszczególnych faz).

blocked by #37

acatai commented 6 years ago

OK, to jest taki future, future feature, ale naprawdę wypasiony ;]. Wydaje mi się, że Krzysiek kiedyś wykazywał potrzebę na asymetrię pomiędzy częścią graczy (jeśli chodzi o samą strukturę LML'a).

Szkic propozycji jest taki, żeby można było dać inne opcje konkretnemu subsetowi graczy (uproszczenie - graczom AI-only), i dla nich generować trochę inaczej - np. AI miałoby większy obszar ze słabszymi potworami.

Jeśli handling wielu parametrów poprzez jakiś interfejs już by istniał, wystarczyłoby go rozszerzyć żeby oprócz nazwy komponentu brał też numer gracza (jakiś conflict resolution by się przydał dla buforów z różnymi typami graczy, ale to szczegóły).