Ogłoszenie: Pliki log - gdzie je znaleźć i co można z nich odczytać?
W tym "poradniku" (o ile można go tak nazwać Wink) pokażę parę podstawowych informacji o plikach log, tak by nie trzeba było ich powtarzać w każdym następnym wątku dotyczącym problemów z grą Smile

Zaczniemy od podstaw - czym są pliki log? Są to pliki zawierające informacje o tym, co działo się podczas uruchamiania gry oraz dalszej rozgrywki. Jeżeli np. w trakcie wczytywania się save-a wystąpił crash, to właśnie dzięki tym plikom będziemy mogli dowiedzieć się, co było jego przyczyną. Dlatego tak ważne jest umieszczanie ich w swoim wątku. Bez nich nie jesteśmy w stanie nic zdziałać.
W Cities Skylines mamy dwa pliki log:
  • output_log.txt - główny plik zawierający całą historię ładowania się gry bądź dalszej rozgrywki
  • error.log - zawierający przede wszystkim informacje o pamięci RAM
Gdzie znajdę te pliki? Obydwa pliki powinny znajdować się w folderze instalacyjnym gry, czyli:  <SteamFolder>\SteamApps\common\Cities_Skylines\* - gdzie * to folder zawierający logi gry. Jest on nazwany datą i godziną ich zapisania (czyli wystąpienia błędu) np: 2019-11-03_162306.
Może jednak zdarzyć się, że plik output_log.txt znajdzie się w tej ścieżce: <SteamFolder>\SteamApps\common\Cities_Skylines\Cities_Data\output_log.txt (nie wiem czy wynika to z jakiegoś niedawnego update-a gry i zmiany lokalizacji zapisu plików, czy może z czegoś innego)

Dla systemów Mac OS X i Linux ścieżki wyglądają nieco inaczej, są to odpowiednio:
  • Users/<username>/Library/Logs/Unity/Player.log
  • ~/.config/unity3d/Colossal Order/Cities: Skylines/Player.log
W zasadzie na początek wystarczy tylko tyle. Jeżeli nie chcecie zagłębiać się w tajniki tych plików znaczenie poszczególnych błędów, wystarczy że będzie wiedzieć gdzie się one znajdują i podeślecie je wraz z założeniem tematu. Resztę pozostawcie nam Wink

<hr>

Co oznaczają poszczególne błędy? Jeżeli natomiast macie ochotę przeszukiwać te niekiedy kilka tysięcy linijek kodu w poszukiwaniu czegoś interesującego to zapraszam do lektury Wink
Oczywiście nie wypiszę tutaj wszystkich możliwych błędów, bo byłoby to w zasadzie niewykonalne ale postaram się opisać te najważniejsze/najczęściej występujące wraz z ich rozwiązaniami a w przyszłości być może dodam kolejne.

Brak wystarczającej ilości RAMu - podstawowa podstawa. Problem który powoduje najwięcej crashy, a jednocześnie jest bardzo prosty do wykrycia i naprawienia. Powinna więc być to pierwsza rzecz do sprawdzenia po "scrashowaniu" się gry. W jaki sposób możemy sprawdzić czy naszemu komputerowi skończyła się pamięć? Na samym początku pliku error.log mamy następujące linijki: (przykład)

Kod:
53% memory in use.
8176 MB physical memory [3810 MB free].
25584 MB paging file [18299 MB free].

Jeżeli któraś z tych wartości będzie wyjątkowo niska to znaczy że po prostu brakuje nam RAMu. Co ważne, nie powinniśmy zwracać tutaj uwagi tylko na pozycję "memory in use". Dla przykładu w tym pliku:

Kod:
64% memory in use.
8147 MB physical memory [2921 MB free].
8147 MB paging file [1 MB free].

procentowo pamięci jeszcze trochę mamy, w tym przypadku problem leży w pliku stronnicowania (paging file). Jak widać wolny jest jedynie 1MB czyli zdecydowanie za mało. 

Brak pamięci możemy poznać jeszcze po pliku output_log.txt. Jeżeli na jego końcu znajdziemy takie linijki:

Kod:
  ERROR: SymGetSymFromAddr64, GetLastError: 'Próbowano uzyskać dostęp do nieprawidłowego adresu.' (Address: 00007FF6DBFC4954)


to możemy być prawie pewni że mamy za mało pamięci.

A jak poradzić sobie ze zbyt małą ilością RAMu? Jest na to parę rozwiązań. Pierwsze to odsubksrybowanie pewnej ilości obiektów. Jak wiadomo im więcej modyfikacji i dodatków - tym większe zużycie pamięci fizycznej. Drugie: zmniejszenie jakości tekstur. Te również oddziałują na wykorzystanie RAMu, tak więc warto najpierw spróbować zmniejszyć ustawienia. Trzecie - zwiększyć rozmiar pliku stronnicowania. Czym on jest i jak to zrobić, to już rozpisywać się nie będę. Pełno poradników na ten temat znajdziecie w internecie. Ja mogę tylko dodać że jest to taki "wirtualny RAM" na jednym z naszych dysków. Przy grze w Cities Skylines bardzo istotny Wink Czwarte - najbardziej radykalne rozwiązanie to.. dokupienie większej ilości RAMu Smile Przy Citieskach czasem nawet i 32GB to za mało Wink

ArgumentNullException:

Kod:
ArgumentNullException: Argument cannot be null.

Jeden z tych błędów które niewiele nam mówią. Może doprowadzić do crasha ale nie musi. A przyczyną może być.. wszystko. Warto jednak sprawdzić, czy przy tym błędzie nie pojawia się nazwa jakiejś modyfikacji. Dla przykładu powyższy błąd często występował przez błędną konfigurację modów Vehicle Effects i Extra Vehicle Effects.

Array index is out of range:

Kod:
Simulation error: Array index is out of range.

lub

Kod:
IndexOutOfRangeException: Array index is out of range.

Ulubiony błąd wszystkich graczy Cities Skylines. Jeżeli już udało nam się załadować save-a ale mimo wszystko coś nie działa to najczęściej w specjalnym okienku widzimy właśnie to Smile A co to znaczy? Wszystko.. Tak. Kolejny błąd niewiele nam mówiący. Zazwyczaj, jeżeli nie zawsze, występuje z pewnym dopiskiem. Tutaj wszystko zależy od posiadanych modyfikacji i pozostałej części loga. Po samym błędzie mało jesteśmy w stanie stwierdzić. Nie będę się rozpisywał w tym wątku o potencjalnych przyczynach i rozwiązaniach, dla chętnych zamieszczam te dwa linki: 
https://github.com/krzychu124/Cities-Sky...t-of-range
[/url][url=https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/wiki/Broken-Road-Assets#interchanges]https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/wiki/Broken-Road-Assets#interchanges

Non platform assembly

Kod:
Non platform assembly: data-<***> (this message is harmless)

Ten kod sam w sobie nie jest zbyt ważny, zresztą jak mówi sam za siebie dopisek po nim. Potrafi pojawić się jednak dość często i zabrać dużą część logu, dlatego o nim tutaj wspominam. Można go jednak po prostu zignorować.

Object reference not set to an instance of an object

Kod:
Object reference not set to an instance of an object
[System.NullReferenceException]

Kolejny błąd w stylu Array index is out of range. Wszystko i nic w jednym Wink Ponownie rozwiązań może być multum i wiele zależy od pozostałych części logu i innych czynników - np. posiadanych modyfikacji. Dla chętnych zamieszczam link do paru najczęstszych powodów wystąpienia błędu i sposobów jego rozwiązania: https://github.com/krzychu124/Cities-Sky...-an-object

DirectX 11 error

Kod:
d3d11: failed to create staging 2D texture w=<width> h=<height> d3dfmt=77 [80070057]

Pojawia się dość często jednak nie zawsze musi doprowadzić do crasha gry. Warto jednak sprawdzić czy to właśnie on nie jest przyczyną. A jak to zrobić? Błąd powodują albo sterowniki karty graficznej albo problem z DX 11. Tak więc:
1) należy sprawdzić czy ma się aktualne sterowniki, a jeżeli nie - zaktualizować je
2) w opcjach uruchamiania użyć komendy "-force-d3d9" - która jak sama nazwa mówi, wymusi użycie przez grę DX9.

<hr>

Błędy związane z dodatkami z workshop-a:

System.NullReferenceException

Kod:
System.NullReferenceException: Loading custom asset failed:['<asset_name>' [CustomAssetMetaData, 082a798a36408fd943adbe9df9a56b91, in package ''<workshop_id>' [/<path>/Steam/steamapps/workshop/content/255710/<workshop_id>/<asset_name>.crp]' (2147090, 2048)]]
[Modding]

Błąd podobny do poprzednich. Tym razem może nam wskazać potencjalnego sprawcę problemów z grą. Jeżeli występują crashe związane z tym błędem to sugeruje się odsubskrybować wskazany dodatek.

LOD missing


Kod:
LOD missing: <workshop_id>.<asset_name>_Data  [Core]

Wskazuje na brakujący LOD w danym obiekcie. Może powodować dłuższe ładowanie się gry i problemy z LOD-em w tym obiekcie.

Źle zoptymalizowany LOD


Kod:
LOD vertex count high (<num1> > <num2>): <workshop_id>.<asset_name>_Data  [Core]

Jak sama nazwa mówi. Może powodować spadki FPS-ów i inne problemy z danym obiektem.

LOD has no base

Kod:
LOD has no base: <workshop_id>.<asset_name>_Data  [Core]

Nie wiadomo co dokładnie może oznaczać ten błąd. Możemy domyślać się, że chodzi o kolejne problemy z LODem jakiegoś obiektu.

Unknown prefab

Kod:
Unknown prefab: <prefab_name>  [Serialization]

Ten błąd wiąże się z brakiem danego prop-a bądź obiektu. Zazwyczaj spowodowany jest albo przez to, że autor obiektu nie dodał do listy wymaganych dodatków jakiegoś propa bądź użytkownik nie zasubskrybował wszystkich wymaganych dodatków z powyższej listy. Może powodować braki w budynkach lub innych obiektach albo całkowite "wymazanie" ich z gry (nie będą dostępne do wyboru oraz nie będą się pojawiać jeżeli zostały wcześniej postawione)

<hr>

No i w zasadzie to by było na tyle Smile Niestety, do rozwiązania wielu powyższych błędów potrzebne jest więcej informacji, m.in lista modyfikacji, bądź okoliczności w jakich się pojawiły (np. odsubskrybowanie jakichś dodatków itp). Niektóre z nich mogą jednak nakierować nas na właściwy trop, dzięki czemu dość szybko uporamy się z problemem. Jeżeli jednak nie jesteście w stanie sami poradzić sobie z jakimś błędem, bardzo ważne jest to, by do wątku dołączyć powyższe pliki log. Bez nich nie jesteśmy w stanie stwierdzić co jest przyczyną błędu oraz udzielić wam pomocy.

Mam nadzieję, że komuś przyda się ten "poradnik" i dowie się paru rzeczy albo przynajmniej rozwieje on parę wątpliwości Smile Jeżeli macie coś do dodania to piszcie śmiało.