Prawdziwy układ słoneczny, komety, które naprawdę okrążają Słońce, i śledztwo w sprawie leniwej grawitacji

Stacja kosmiczna i formacja statków tuż przy niej, Słońce widoczne nad bazą, w tle pierścienie orbit

Prawdziwy zrzut ekranu z gry, bez retuszu.

W poprzednim wpisie wspominaliśmy o prototypie z prawdziwymi orbitami i grawitacją w stylu Kerbal Space Program, budowanym "z boku" jako eksperyment. Nie został eksperymentem na długo — to duże zamiast losowo rozrzuconej puli planet gra ma teraz stały, prawdziwy układ słoneczny, a przy okazji dorzuciliśmy komety z realną fizyką, nową kamerę i formację floty przy bazie. Będzie sporo do opowiedzenia, w tym jedno całkiem niezłe śledztwo.

Prawdziwy układ słoneczny zamiast losowej puli

Wcześniej świat to była losowa pula do kilkudziesięciu ciał, odradzająca się w przypadkowych miejscach. Teraz jest jedno Słońce w centrum i dziewięć stałych orbit: dwie wulkaniczne, dwie neutralne, dwie lodowe planety, jeden meteoryt, jedna stała czarna dziura (koniec z pojawianiem się i znikaniem) i jedna orbita zarezerwowana wyłącznie pod stacje graczy. Pozycja każdego ciała liczy się wprost z zegara — żaden klient nie musi niczego zapisywać ani synchronizować, wszyscy po prostu wiedzą, gdzie coś jest, znając tylko aktualny czas.

Zjedzone ciało też się już nie usuwa — zdrowie regeneruje się z czasem, więc orbita nigdy nie stoi pusta. Statki i dron są ciągnięte grawitacją dokładnie tak jak w tamtym prototypie: zawsze przez jedno, dominujące w danym miejscu ciało, a jak nic nie dominuje, to przez Słońce.

Komety, które naprawdę okrążają Słońce

Kometa to jedyne ciało w grze, którego pozycja jest faktycznie symulowana krok po kroku, a nie liczona wprost ze wzoru — leci z zewnątrz całego układu, zakręca pod wpływem prawdziwej grawitacji mijając Słońce w odległości mniej więcej 2/3 pierwszej orbity, i leci dalej na drugą stronę. W danym momencie istnieje dokładnie jedna — po jej zniknięciu (zjedzonej albo wylatującej z pola) następna czeka minutę, zanim się pojawi.

Pierwsza wersja celowania w punkt najbliższego przelotu po prostu mierzyła prosto w cel — i się nie sprawdziła: grawitacja po drodze zakrzywiała tor na tyle mocno, że kometa realnie nurkowała niemal w samo Słońce zamiast przelatywać w zamierzonej odległości. Poprawka: prawdziwe rozwiązanie dwuciałowe (zachowanie energii i momentu pędu), które trafia w cel z dokładnością do ułamka procenta. Ogon zawsze wskazuje kierunek od Słońca (tak jak w prawdziwej fizyce — to wiatr słoneczny, nie kierunek lotu), a każda kometa dostała też własną, cienką linię pokazującą cały jej tor od wlotu do wylotu.

Nowa kamera i formacja przy bazie

U góry ekranu jest teraz przełącznik: Baza (nowy, domyślny widok) patrzy na własną stację gracza, tak ustawiony, żeby Słońce było widoczne za nią i lekko nad nią, a Układ to poprzedni widok całego systemu. Oba tryby są w pełni sterowane myszką jak wcześniej — przełącznik tylko resetuje kamerę do domyślnego kadru danego trybu.

Statki (i dron) startują teraz przy własnej stacji zamiast w małym sześcianie blisko środka układu — który, odkąd tam stoi Słońce, oznaczał spawnowanie niemal w jego powierzchni. Nowa flota rozstawia się w ładny, samoczynnie rozszerzający się wzór spiralny (ten sam trik co w rozkładzie nasion słonecznika), a stacja ma teraz subtelne pole, w którym grawitacja po prostu nie działa — żeby świeżo postawiona flota nie zaczęła od razu spadać na Słońce.

Śledztwo: dlaczego Słońce prawie nie ciągnęło

Zgłoszenie było proste: "poleciałem dronem daleko od bazy i Słońce go nie ciągnie". Sprawdziliśmy wprost — i faktycznie, siła była jakieś 900 razy słabsza niż powinna być. Winny: pętla wybierająca, które ciało akurat najsilniej przyciąga, nigdy nie wykluczała samego Słońca (tylko czarną dziurę) — a że promień wpływu Słońca jest z definicji nieskończony, Słońce zawsze "wygrywało" tę konkurencję samo ze sobą, liczone swoją własną, drobną masą zamiast prawdziwej stałej opisującej jego realne przyciąganie. Błąd żył w kodzie od premiery nowego układu, po prostu nikt wcześniej nie miał okazji go zauważyć.

Naprawa odsłoniła od razu drugi problem: bez górnego ograniczenia, przyspieszenie tuż przy powierzchni ciała potrafiło wystrzelić do absurdalnych wartości w jednej klatce — statek, który bez grawitacji spokojnie dolatywał do celu w niecałe cztery minuty, z włączoną (poprawną!) grawitacją potrafił się zgubić na dobre, osiągając prędkość kilkaset razy większą niż normalnie. To już ograniczyliśmy sensownym górnym limitem.

Przy okazji spróbowaliśmy też, czy dałoby się sprawić, żeby grawitacja realnie wpływała na lecące w rozkazie statki, a nie tylko na bezczynne. Dwa razy się nie udało — za każdym razem statek, który mijał inną planetę po drodze, potrafił zgubić kurs na dobre i nigdy nie dolecieć. Zostawiliśmy więc statki w trakcie lotu odporne na grawitację — to się okazało nie przypadkiem, tylko rzeczywiście potrzebną właściwością, żeby "zaznacz i kliknij cel" niezawodnie działało.

Zagraj: michalstankiewicz4-cell.github.io/Space

Komentarze

Popularne posty z tego bloga

Witajcie na blogu Swarm Protocol

Stacja kosmiczna, pamiętliwy dron i pierwsze plany na hacking

Pod maską: pętla bez końca, 15 statków i klawisz C