Чиним игру. Читаем крашлоги. Сам себе помощник.

sweetie

Новичок
Игрок
Регистрация
5 Апр 2018
Сообщения
10
Симпатии
7
Баллы
3
#1
Из-за огромного количества модификаций для нашей игры время от времени происходят так называемые "краши" - аварийное завершение игры. Но нет ничего невозможного и все краши можно предотвратить.

В целях отладки в игре присутствует система постоянного логирования, но нас интересуют только краш-логи (crash-report).

На первый взгляд краш-лог это что-то невероятно умное и понять этот эльфийско-программистский язык дано не только лишь каждому, но это не так.

Для выявления причины чаще всего хватает пару строк.
Что вызвало ошибку:
Код:
Description: Updating screen events
Конкретизация:
Код:
java.lang.OutOfMemoryError: unable to create new native thread
Description: Updating screen events - при среднем знании английского и понимании работы компухтеров будет вполне понятно (наверное).
Непонятно.
Идем далее: java.lang.OutOfMemoryError: unable to create new native thread - тут-то и кроется решение. Из-за нехватки выделенной памяти процессу (javaw.exe) процессор не может создать тред (поток выполнения).
И, как очевидно, нехватка таковой решается увеличением доступной для использования памяти.

Следующая ошибка: java.lang.IllegalStateException: Already tesselating!
Description: Rendering entity in world -> Рендер объекта в мире
java.lang.IllegalStateException: Already tesselating! -> IllegalStateException проще: метод был вызван в неподходящее время (a method has been invoked at an illegal or inappropriate time.)
Already tesselating! -> Уже тесселируется. Непонятно.
Копаю глубже:
Код:
A detailed walkthrough of the error, its code path and all known details is as follows:

---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at net.minecraft.client.renderer.Tessellator.func_78371_b(Tessellator.java:374)
    at net.minecraft.client.renderer.Tessellator.func_78382_b(Tessellator.java:364)
    at thaumcraft.client.renderers.entity.RenderGolemBobber.doRender(RenderGolemBobber.java:44)
    at thaumcraft.client.renderers.entity.RenderGolemBobber.func_76986_a(RenderGolemBobber.java:115)
    at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:293)

-- Entity being rendered --
Details:
    Entity Type: Thaumcraft.GolemBobber (thaumcraft.common.entities.golems.EntityGolemBobber)
    Entity ID: 300852
    Entity Name: Поплавок голема
    Entity's Exact location: 679.44, 54.90, 5926.53
    Entity's Block location: World: (679,54,5926), Chunk: (at 7,3,6 in 42,370; contains blocks 672,0,5920 to 687,255,5935), Region: (1,11; contains chunks 32,352 to 63,383, blocks 512,0,5632 to 1023,255,6143)
    Entity's Momentum: -0.00, -0.00, 0.00

По тому, что ошибка происходит в
thaumcraft.client.renderers.entity.RenderGolemBobber.doRender(RenderGolemBobber.java:44)
в thaumcraft.client.renderers.entity.RenderGolemBobber.func_76986_a(RenderGolemBobber.java:115)
можно понять, что проблема в отрисовке GolemBobber из Thaumcraft на стороне клиента.
Первое, что может прийти в голову в качестве решения - попросить убрать големов модератора или сожителя, но мой вариант решения другой:
Мне кажется, что в подавляющем большинстве случаев это происходит по вине OptiFine, а конкретно функции ChunkLoading (метод прорисовки чанков).
Часто из-за ужасной оптимизации игры неопытные пользователи лезут в настройки видео, где куча-куча параметров OptiFine и самое сладкое - их описание.
Расширенный OpenGL: Fast - даже звучит как что-то очень мощное, но это к слову.
Проблема в параметре ниже: читая описание, пользователь видит, что Multi-core chunk loading сильно повысит производительность, и это так. Но рекомендую использовать Default или Smooth (если нет мерцания текстур), т.к именно Multi-core chunk loading является причиной краша в данном примере. Решение просто: ставим Default или Smooth:
  • Отключаем автовход на сервер и просто выполняем действие перед входом ИЛИ
  • Меняем параметр ofChunkLoading в \VictoryCraft\updates\*server*\optionsof.txt на 0 ИЛИ
  • Сносим настройки OptiFine, удалив файл optionsof.txt ИЛИ
  • Сносим клиент и качаем заново
    Smile.png

org.lwjgl.LWJGLException: Pixel format not accelerated
Description: Initializing game -> Здесь краш происходит еще на стадии инициализации игры
Pixel format not accelerated -> Отсутствует акселерация (ускорение) формата пикселей
Если видеокарта не может отрисовать пикселы - проблема на программном уровне и не касается игры. Рекомендация: обновить драйвера видеокарты до последней версии.
(На забугорном сайте рекомендуют также удалить все настройки из профиля Java)
((Я вообще не рекомендую ставить какие-либо параметры запуска Java, зря это форсят..))

Ticking entity / Ticking screen
Решение такое же как и в случае OutOfMemory - выделение большего объема памяти (2gb)

Информация собрана из гугла и личного опыта.
 

Mirabel

Тех.Поддержка/Комьюнити-менеджер
Команда форума
Комьюнити-менеджер
Регистрация
19 Фев 2018
Сообщения
4,933
Симпатии
825
Баллы
185
#2
Интересный гайдик, надоть почитать ;)
 

mico59rus

Игрок
Игрок
Регистрация
8 Ноя 2017
Сообщения
967
Симпатии
128
Баллы
45
#3
Если есть возможность пополняй этот гайд. Шикарно.
 

Legion256

Новичок
Игрок
Регистрация
29 Апр 2018
Сообщения
29
Симпатии
8
Баллы
8
#5
Интересно и полезно в некоторых случаях))
 
Сверху