Narzędzie do uzupełniania edsm.net
#1
Czołem Piloci,

Wczoraj w wolnym czasie przyjrzałem się EDSM i zrobiłem narzędzie pozwalające na znalezienie nie w pełni zeskanowanych systemów - pomyślałem, że się podzielę nim z Wami.

Projekt znajduje się na GitHubie i opisany jest w wersji angielskiej: https://github.com/Suremaker/edsm_scanner/wiki

Poniżej opis polski...

Wstęp

W chwili obecnej skanowanie systemów jest bardzo proste - wystarczy wlecieć do systemu i przeskanować go zintegrowanym Discovery Scannerem, tak by chwilę później użyć modułu Full Spectrum System Scaner i znaleźć wszystkie interesujące obiekty.

Każdy kto wybrał się na dłuższą wyprawę wie, że po setkach skoków nie chce się już skanować i analizować każdego obiektu w odwiedzanych systemach, a raczej zwraca się uwagę tylko na najciekawszych obiektach, ignorując wszystko inne.

W przeszłości, skanowanie było bardziej skomplikowane. Istniało kilka typów skanerów (Basic i Advance Discovery Scanner), które wcale nie musiały znajdować się w wyposażeniu statków, a nawet jeśli były to funkcjonowały inaczej (miały ograniczony zasięg), tak, że łatwo można było wylecieć z sytemu nie odkrywając wszystkich obiektów. Pamiętam, jak na początku mojej kariery dostałęm misję dostarczenia towaru na stację, która nie znajdowała się na mapie systemu, ponieważ jeszcze nie odkryłem planety przy której orbitowała!

Od jakiegoś czasu zanastanawiałem się ile jest takich systemów, które zostały odwiedzone, ale nie zeskanowane w pełni...

Przejrzałem historię moich odkryć na EDSM żeby zobaczyć jak strona pokazuje takie systemy. Dla przykładu znalazłem ten: Prua Dryoae HZ-S b9-4
[Obrazek: partially_discovered_sample.PNG]

Strona systemu pokazuje jeden obiekt, ale zawiera również informację, że zeskanowałem 1 z 10 dostępnych obiektów, co oznacza, że jest jeszcze 9 do odkrycia.

Zacząłem się zastanawiać jak mogę zebrać tę informację oraz ile jest takich systemów w naszej okolicy?...

EDSM API

Wiedząc, że EDSM zawiera dane o odkryciach, przejrzałem API portalu i znalazłem metodę na pobranie danch o systemie https://www.edsm.net/api-system-v1/bodie...Z-S%20b9-4

Kod:
{
   "id": 49801917,
   "id64": 9483689928273,
   "name": "Prua Dryoae HZ-S b9-4",
   "url": "https:\/\/www.edsm.net\/en\/system\/bodies\/id\/49801917\/name\/Prua+Dryoae+HZ-S+b9-4",
   "bodyCount": 10,
   "bodies": [
       {
           "id": 185220804,
           "id64": 9483689928273,
           "bodyId": 0,
           "name": "Prua Dryoae HZ-S b9-4",
           "discovery": {
               "commander": "Suremaker",
               "date": "2020-03-10 21:34:28"
           },
           "type": "Star",
           "subType": "M (Red dwarf) Star",
           "parents": null,
           "distanceToArrival": 0,
           "isMainStar": true,
           "isScoopable": true,
           "age": 10914,
           "spectralClass": "M4",
           "luminosity": "Va",
           "absoluteMagnitude": 9.52066,
           "solarMasses": 0.335938,
           "solarRadius": 0.45831297196261683,
           "surfaceTemperature": 2899,
           "orbitalPeriod": null,
           "semiMajorAxis": null,
           "orbitalEccentricity": null,
           "orbitalInclination": null,
           "argOfPeriapsis": null,
           "rotationalPeriod": 1.7182038483796296,
           "rotationalPeriodTidallyLocked": false,
           "axialTilt": 0,
           "updateTime": "2020-03-10 21:34:28"
       }
   ]
}

Jak widać bodyCount (10) przedstawia ilość obiektów w systemie, natomiast bodies zawierają listę odkrytych obiektów (1).

Następnie znalazłem metodę na pobranie listy wszystkich systemów sąsiadujących w odległości do 100ly od wybranego systemu: https://www.edsm.net/api-v1/sphere-systems

EdsmScanner.exe

Na postawie tych dwóch metod stworzyłem EdsmScanner.exe który zwraca mi wszystkie okoliczne systemy, które nie są w pełni odkryte.

Przykładowo, wywołanie z linii poleceń: EdsmScanner.exe "Ida Dhor" spowodowało przejście przez 1100 systemów w okolicy do 50ly i zwrócenie poniższych 2:

Kod:
V463 Carinae [40.96ly] (34 bodies) (29 discovered) => https://www.edsm.net/en/system/bodies/id/9135/name/V463+Carinae
LTT 2952 [45.56ly] (22 bodies) (18 discovered) => https://www.edsm.net/en/system/bodies/id/7096/name/LTT+2952

[Obrazek: v463%20carinae.PNG]
[Obrazek: ltt%202952.PNG]

Dla zainteresowanych, polecenie: EdsmScanner.exe "HR 8444" 100 skanuje 5246 systemy w okolicy do 100ly i zwraca 564 systemy które są nie wpełni zmapowane w EDSM!


VisitedStarCacheMerger.exe

Oczywiście EdsmScanner zwróci jedynie informacje o systemach, które znajdują się w bazie EDSM. Fajnie by było jednak mieć możliwość zobaczenia systemów których potencjalnie jeszcze nikt nie odwiedził (przynajmniej tych, których nie ma w EDSM).

Po przejrzeniu forów, znalazłem ten artykuł zawierający opis mechanizmu importowania systemów do lokalnej bazy pilota, tak by wyświetlały się w grze jako odwiedzone - niestety później odkryłem, że Frontier zepsuł tą funkcjonalność i nie można już z niej skorzystać.

Natknąłem się jednak na inny artykuł opisujący jak jest zbudowany plik VisitedStarsCache.dat znajdujący się w katalogu c:\Users\[user_name]\AppData\Local\Frontier Developments\Elite Dangerous\[elite_user_id]\

Na podstawie tych informacji stworzyłem VisitedStarCacheMerger.exe, który pozwala na dodanie w pełni odkrytych systemów do filtrów gracza.

Jedyne ograniczenie jest takie, że można zapisać maksymalnie 3876 systemów w tym pliku, więc na pewno nie obsłuży całej galaktyki ;-)



Użycie narzędzi

Narzędzia można pobrać ze strony: https://github.com/Suremaker/edsm_scanner/releases/ (plik o nazwie binaries.zip).

Użycie EdsmScanner.exe:
EdsmScanner.exe "Synuefe JM-G b57-1" - skanuje okolice do 50ly od Synuefe JM-G b57-1

EdsmScanner.exe "Synuefe JM-G b57-1" 100 - skanuje okolice do 100ly (maksymalna wartość) od Synuefe JM-G b57-1

Po wykonaniu, program stworzy 2 pliki:
  • partial_Synuefe JM-G b57-1.txt  - plik zawierający listę systemów, które są nie w pełni odkryte
  • discovered_Synuefe JM-G b57-1.txt - plik zawierający listę w pełni odkrytych systemów, gdzie lista zawiera identyfikatory id64 
Użycie VisitedStarCacheMerger.exe:
VisitedStarCacheMerger.exe VisitedStarsCache.dat "discovered_Synuefe JM-G b57-1.txt" - dodaje systemy z pliku txt do pliku dat. Ze względu na limit 3876 systemów, stare systemy zostaną nadpisane.
Jak wspomniałem wcześniej, plik .dat znajduje się w katalogu c:\Users\[user_name]\AppData\Local\Frontier Developments\Elite Dangerous\[elite_user_id]\

Mam nadzieję, że narzędzie okaże się przydatne Smile

O7
Odpowiedz


Wiadomości w tym wątku
Narzędzie do uzupełniania edsm.net - przez Suremaker - 27.11.2020, 20:57 UTC
RE: Narzędzie do uzupełniania edsm.net - przez Szumak - 13.01.2021, 19:40 UTC
RE: Narzędzie do uzupełniania edsm.net - przez Suremaker - 18.01.2021, 21:50 UTC
RE: Narzędzie do uzupełniania edsm.net - przez Suremaker - 16.05.2021, 22:39 UTC

Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  ED Shipyard NET - strona Harry'ego Pottera Mathias Shallowgrave 7 1,846 07.01.2019, 12:39 UTC
Ostatni post: Yautja
  EDMC - przydatne narzędzie czy zagrożenie. Gladehorn 5 1,989 13.02.2018, 07:28 UTC
Ostatni post: Gladehorn
Information Husarski Discord - narzędzie do komunikacji głosowej. Mathias Shallowgrave 0 8,372 11.11.2015, 15:49 UTC
Ostatni post: Mathias Shallowgrave



Użytkownicy przeglądający ten wątek: 1 gości