Autor Wątek: Opis sposobu na ominięcie krytycznego błędu dot. specjalnych spotkań losowych  (Przeczytany 3337 razy)

jarekfall

  • St. kapral
  • *
  • Wiadomości: 8
    • Jarekfall's Site
Opis sposobu na ominięcie krytycznego błędu związanego z generowaniem specjalnych spotkań losowych.

Kilka słów o tym błędzie:

Błąd ten dotyczy sytuacji, gdy odkryliśmy na mapie świata wszystkie specjalne lokacje. Pojawia się, gdy najedziesz na jeden z kwadratów, któremu została przypisana właściwość mówiąca o tym, że ten kwadrat generuje specjalne spotkania. Jest to błąd programistów gry.

Jako ciekawostkę dodam, że błąd ten nie występuje, gdy po rozpoczęciu kampanii odnajdziemy wszystkie specjalne spotkania losowe i w tym czasie ani razu nie załadujemy stanu gry z pliku. Świadczy to o tym, że gra zapisuje w pliku niepoprawne dane służące do obsługi specjalnych spotkań, albo ich wcale nie zapisuje.

Przykład rozwiązania:

Opisana metoda wykorzystuje fakt, że gra nie generuje spotkań losowych na kratkach generujących te spotkania, gdy okrąg jednego spotkania będzie nachodził na okrąg innego, wcześniej odkrytego spotkania.
Oto przykładowe definicje specjalnych spotkań losowych:

specials = {
   "campaigns/missions/special/missionZ01.mis;mission_name_Z01;75;true;true",
   "campaigns/missions/special/missionZ02.mis;mission_name_Z02;20;true;true",
   "campaigns/missions/special/missionZ03.mis;mission_name_Z03;20;true;true",
}

W pierwszym wierszu mamy definicję, której jedynym przeznaczeniem jest ominięcie błędu (kodu w grze, który powoduje błąd), pozostałe 2 definicje są już typowe. Definicja pierwszej misji może nawet zawierać ścieżkę do nieistniejącego pliku mapy. Błąd nie wystąpi, gdy gracz nie odwiedzi wszystkich (tu trzech) spotkań losowych a jedynie dwa z trzech. Aby gracz nie mógł odwiedzić spotkania "missionZ01.mis" trzeba spełnić kilka warunków:

1. Dla kratek mapy o rozmiarze 75x75 pikseli ustawiamy średnicę okręgu spotkania losowego missionZ01.mis na 75 pikseli a dla wszystkich pozostałych spotkań średnicę o rozmiarze co najmniej 20 pikseli.

2. Dla żadnej z kratek nie ustawiamy szansy na wygenerowanie spotkania losowego missionZ01.mis. Czyli wszystkie kratki muszą mieć opis typu 0/x tylko dla tego fikcyjnego spotkania specjalnego.

3. Wszystkie kratki generujące spotkania losowe muszą dawać szansę równą co najmniej 1/x dla każdego ze specjalnych spotkań, oczywiście oprócz spotkania "missionZ01.mis".

4. Gracz może znaleźć maksymalnie 4 specjalne spotkania na obszarze jednej kratki w związku z tym może się zdarzyć, że pozostaną puste kratki generujące specjalne spotkania co jest niedopuszczalne. Aby do tego nie dopuścić należy dla K kratek generujących specjalne spotkania mieć zdefiniowanych co najmniej (4*K)-3 spotkań specjalnych nie uwzględniając fikcyjnego spotkania "missionZ01.mis".
jarekfall