Skocz do zawartości
Od piątku, zmiany w systemie zapisów. Więcej informacji wkrótce.
  • Headless Client

       (0 opinii)

    Doman
    // CO TO JEST HEADLESS CLIENT ?
     
    Jest to dodatkowy serwer który odciąża główny serwer przejmując wszystkie obliczenia AI.
    Dzięki temu główny serwer może się zająć graczami oraz obiektami dodatkowymi (np. stolik).
    Może to poprawić FPS u graczy, a na pewno poprawi AI w dużych misjach.
    Pamiętaj aby nie przesadzać. Jeśli na małym terenie postawisz dużo AI to u graczy będzie mało FPS, komputer każdego gracza musi wyświetlić te jednostki. Lub jeśli ich nie widać to przynajmniej je mieć w pamięci. To zawsze wpływa na FPS.
     
     
    // UWAGI
     
    TEN SPOSÓB NIE DZIAŁA Z DAC. (Może wyglądać jakby działał na pierwszy rzut oka - ale uwierz, spierdoli Ci misje).
    Jeśli używasz cba_defend lub podobnych skryptów przeczytaj koniecznie punkt 8 w parametrach skryptu i go zastosuj.
    Obecnie używamy jednego klienta HC, bez problemu poradzi sobie do 300 AI.
    Czytaj punkt 8 aby dowiedzieć się jak rozdysponować jednostki pomiędzy headless klientem a serwerem (na serwerze max 50 jednostek).
    Skrypt cache od jokoho powinien działać. (http://forum.armacoopcorps.pl/topic/8105-jk-caching/)
    NIE UŻYWAJ MODUŁÓW WerthlesHeadless albo ACE_Headless (niepotrzebne pakowanie się w zależności na misjach, są niedopracowane względem podanego tutaj skryptu, wylecą w przyszłości).
     
     
    // DLA Mission Makera:
     
    Jeśli Twoja misja używa headlessa wpisz to koniecznie w opisie misji (aby się wyświetliło w lobby).
    Jeśli HC nie zostanie uruchomiony Twoja misja będzie działać normalnie, tylko AI będą liczone przez serwer (jak do tej pory).
     
     
    // DLA ADMINA / Sztabowca
     
    Headless jest ustawiony, wystarczy go uruchomić.
    Powinien się automatycznie połączyć do głównego serwera.
    Tylko aktualny admin widzi slot HC i może powiedzieć czy Headless się połączył i wskoczył na swój slot.
    Headless powinien automatycznie się "zagreenować". A na mapie musi w pełni się wgrać (widać to na liście graczy).
    Jeśli misja jest z jakiegoś powodu restartowana polecam zrestartować również headlessa.
    Jeśli admin wyrzuci headlessa z serwera (kick) - nie połączy on się automatycznie. Trzeba go zrestartować.
     
     
    // SKRYPT
     
    WH.sqf skopiuj do głównego folderu misji.
     
     
    // EDYTOR
     
    USTAW W EDYTORZE LOGIKĘ GRY:
    Systemy (F5) -> Logic Entities -> Headless_Client
    Postaw to gdziekolwiek na mapie.
    KONIECZNIE ustaw aby to była GRYWALNA jednostka oraz NAZWIJ JĄ "HC" - bez klamerek
     
    ViVgPO.jpg
     
    image.png
     
    // INIT.SQF
     
    PARAMETRY SKRYPTU:
    1. Powtarzanie skryptu - true, uruchom tylko raz - false
          Czy skrypt ma co jakiś czas sprawdzać lokalność jednostek i na nowo wyrównywać pomiędzy HC.
          Polecam zostawić true.
    2. Czas pomiędzy powtórzeniami, 30 sekund jest ok
    3. Debug dostępny dla wszystkich - true / Tylko dla admina/hosta - false
          Pod skrolką można uruchomić debug, wyświetla informacje dotyczące działania skryptu.
    4. Zaawansowane balansowanie miedzy wszystkimi HC. Polecam ustawić false - mniej obciąża serwer.
    5. Opóźnienie wykonania skryptu na początku misji, polecam ustawić na co najmniej 30 sekund.
          Jeśli w misji jest jakieś wprowadzenie warto ostawić większą wartość, tak aby dopiero po wprowadzeniu się skrypt odpalił.
          Wprowadzenie - czarny ekran, napisy itp.
    6. Dodatkowe opóźnienie po przerzuceniu jednej grupy na HC, redukuje desync. Domyślnie 3 sekundy. Nie warto zmieniać.
    7. Wyświetlaj dodatkowy raport po jednym cyklu przerzucenia jednostek na HC. W celach debuga.
    8. Lista dodatkowych nazw grup/jednostek/pojazdu_w_którym_jednostki_sie_znajduja - które maja zostać zignorowane (nie zostaną przerzucone na HC)
          Może się przydać jeśli dana grupa ma podpięte  jakieś dodatkowe skrypty (np. cba_defend).
          przyklad: ["B_Heli"] - wszystkie jednostki o typie B_Heli nie zostaną przeniesione na HC
          Format: ["NazwaJednostki","CallsignGrupy","TypJednostki"]
          UWAGA: Jeśli wpiszesz "ZIELONY1" jednostki/grupy nazwane "JASNOZIELONY1" również zostaną pominięte.
          UWAGA2: nazwa "ignore" jest zakodowana na twardo, jeśli w łatwy sposób chcesz wykluczyć dane jednostki/grupy wpisz w ich nazwie 'ignore1', 'ignore2' itd.
     
    Linia do init.sqf, wklej na samej górze:
    [true,30,false,true,30,3,true,[]] execVM "WH.sqf";
     
     
    // JAK TESTOWAĆ LOKALNIE
     
    Musisz odpalić drugą instancję gry, z naszą linią modów oraz dodatkowo: "-client -connect=127.0.0.1 -port=2302" ...bez cudzysłowów.
     
    Jeśli używasz Arma3Sync:
    - kliknij Profiles -> Duplicate -> nazwij drugi profil "HC" -> W trzeciej zakładce w Additional Parameters wklej: "-client -connect=127.0.0.1 -port=2302" ...bez cudzysłowów.
    - upewnij się, że jest wyłączone łączenie się na serwer (pole na dole Join Server jest puste).
    - odpal przez Start Game.
     
    Uruchomi się okienko:
     
    Xf8w4D.png
    Tak właśnie wygląda headless.
     
    W edytorze, jeśli masz wszystko dobrze ustawione pod headlessa, uruchom testowanie misji "na multiplayer". W lobby powinieneś zobaczyć po lewej stronie "czwartą frakcję" a tam slot dla headless klienta. Na ten slot klient powinien wskoczyć sam. Jeśli tego nie robi (bo np. zmieniłeś coś w misji i testujesz ponownie) musisz wyłączyć headlessa i uruchomić go ponownie.
    Po uruchomieniu misji (na briefingu) sprawdź zakładkę Gracze. Tam zobaczysz, że headless się ładuje (jest przy nim klepsydra). Możesz uruchomić misję dopiero po załadowaniu headlessa (ikonka zmieni się na białoszarą). Zależnie od prędkości Twojego komputera potrwa to krócej lub dłużej.
     
    Aby zobaczyć efekty działania uruchom debug w powyższym skrypcie.
    Dla misji używających tylko skryptu: [true,30,true,false,30,3,true,[]] execVM "WH.sqf";
         ---- w finalnej wersji misji wyłącz możliwość debugowania!
    Dla misji używających ALIVE: [true,30,true,false,3600,3,true,[]] execVM "WH.sqf";
          --- zmieniona jest wartość opóźnienia - skrypt uruchomi się po godzinie, przez co nie będzie kolidował z ALiVe.
          --- w finalnej wersji misji wywal skrypt oraz linijkę go uruchamiającą z init.sqf ! ! ! (lub po prostu zakomentuj)
     
     
     
    // FAQ
     
    Kiedy będzie obsługa DAC?
         Nie działa z DAC.
     
    Czy działa z ALIVE?
          NIE - Alive w swój sposób używa Headlessa. Ustaw to po prostu w modułach.
     
     
     
    // CHANGE LOG
     

    v0.6 06.10.2016

          Dodano informację jak u siebie testować headlessa.

     

    v0.5 05.10.2016
          Pierwsza publiczna wersja na potrzeby ACC.
          Działa z "prostymi" misjami, gdzie AI są stawiane w edytorze.
    • Super 1
    • Lubię 3
    • Upvote 1

    Opinie użytkowników

    Brak opinii do wyświetlenia.


  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...