W tym "poradniku" (o ile można go tak nazwać ) 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ą
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:
\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:\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:
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
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)
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:
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:
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
Czwarte - najbardziej radykalne rozwiązanie to.. dokupienie większej ilości RAMu Przy Citieskach czasem nawet i 32GB to za mało
ArgumentNullException:
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:
lub
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 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
https://github.com/krzychu124/Cities-Sky...terchanges
Non platform assembly
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
Kolejny błąd w stylu Array index is out of range. Wszystko i nic w jednym 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
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.
Błędy związane z dodatkami z workshop-a:
System.NullReferenceException
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
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
Jak sama nazwa mówi. Może powodować spadki FPS-ów i inne problemy z danym obiektem.
LOD has no base
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
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)
No i w zasadzie to by było na tyle 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 Jeżeli macie coś do dodania to piszcie śmiało.
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
Może jednak zdarzyć się, że plik output_log.txt znajdzie się w tej ścieżce:
Dla systemów Mac OS X i Linux ścieżki wyglądają nieco inaczej, są to odpowiednio:
- Users/
/Library/Logs/Unity/Player.log
- ~/.config/unity3d/Colossal Order/Cities: Skylines/Player.log
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
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
Czwarte - najbardziej radykalne rozwiązanie to.. dokupienie większej ilości RAMu Przy Citieskach czasem nawet i 32GB to za mało
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 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
https://github.com/krzychu124/Cities-Sky...terchanges
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 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.
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)
No i w zasadzie to by było na tyle 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 Jeżeli macie coś do dodania to piszcie śmiało.