Перейти к публикации
Гость zaharic

Дополнение к частым ошибкам.

Рекомендованные сообщения

Гость zaharic

Данную информацию пишу для людей желающих помочь создателям модификаций (понимающим хоть что-то в  java и scala) и не нашим добрым ученикам различных школ (возблагодарим их за основной онлайн), пишу как разработчик, но постараюсь написать понятным языком.

 

Словарь:

* - любое слова цифра и тому подобное, рендер - часть программы отвечающая за отображение объектов - в нашем случае игрового мира, стак-трейс - цепочка выполнения программы после ошибки.

 

Если вы сами что-то пофиксили 100 раз проверьте, не создали ли вы новых багов, а потом выкладывайте.

1. Сложный баг/дюп/краш/лаг.

После тутора @Andrey по частым ошибкам все поняли, как это делать, но на уровне кода такие как Class*Expection и LWJGLExpection иногда надо смотреть подробнее. В частности в DivineRPG есть краши сервера из-за переполнения стека миров (слава богу добавили только мобов) и они ведут себя как ошибки памяти, но посмотрев в исходные коды видно:

1. В некоторых модах есть переполняющие бесконечные циклы. Они приводят к ошибкам памяти. их ловим по вызовам к памяти. Они стоят в стак-трейсе ошибки памяти.

2. Разглядывая исходные коды на строке ошибки иногда видно глупости (Object)null, while(true) { *; } к примеру, значит пиши разработчику, так быть не должно. Но и напиши сюда на форум пускай хоть тут пофиксят.

3. Лютый баги - дюпы и краши. Они появляются от отсутствия проверок или от ошибок логики. Их фиксят исправлением этих ошибок. Но краши из-за ошибок логики хитры. В них иногда нет прямого стак-трейса исключения. Идём в исходные коды разглядываем цепи выполнения и находим: всё что угодно например баги листвы форестри, тут сами не сделаете (ну если вы уже познали все азы то попробуйте, но не рекомендую, не вы писали, можете не знать всех тонкостей мода) пишите создателю мода, ну и сюда в баги.

4. Лаги рендера и их ловля. Сплошная кутерьма: optifine + waila. Эти 2 мода любят ошибки рендера. Optifine рисует по другому (меняет рендер) и это сказывается на производительности в лучшую сторону. Но не всё поддаётся правке. К примеру блоки GT и optifine == одни глюки в их gui. Берём отладчик и смотрим что к чему! И вот оно к примеру: создатель мода приписал завёрнутый рендер блоку и его не понял optifine. А вот причём тут waila она иногда вызывает краши при наведении на неправильно нарисованные блоки.

2. Самостоятельный фикс багов.

В следующем сообщении.

Поделиться сообщением


Ссылка на сообщение
Гость zaharic

Ну что ж продолжим.

Все кто хоть что-то понимают в программирование поймут о чём я!

1. Найдите ошибку в коде и поймите что не так. Подумайте о способе фикса, обязательно оповестите автора мода об ошибке. Если баг есть а ошибку не видно, значит плохо искали.

2. Разглядывая исходные коды иногда разглядываешь код, который не должен вызвать ошибки на 1 взгляд но вызывает. Вот пример (больше придумывать не стал):

Ошибка памяти если поставить много блоков с этим тайл энити:
public class MyTile extends TileEnity {
 public HashMap<String, String> a;
 public MyTile() {
 	a = new HashMap<String, String>();
   	a.put("a", "b");
   	a.put("c", "d");
    ...
 }
 ...
}
А если HashMap не меняется - фикс прост:
public class MyTile extends TileEnity {
 public static HashMap<String, String> a = new HashMap<String, String>();
 static {
   	a.put("a", "b");
   	a.put("c", "d");
    ...
 }
 ...
}

 

Изменено пользователем zaharic
Добавил пример.

Поделиться сообщением


Ссылка на сообщение

Что за набор слов я прочитал? Если Вы не практиковались в программировании, а ваше изложение основано только на знаниях, полученных во время учёбы, то мне вас очень жаль.

И в чём смысл данной темы?

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение

Я уж было думал я один ничего не понял.

Он так и в лс обьясняет. Понятно только одно - ничего не понятно.


Тут могла бы быть ваша реклама, но я оставлю свою и свою.

Поделиться сообщением


Ссылка на сообщение
Гость zaharic

Хоть кто-то понял меня. Практиковать то я практиковался и даже много, но это общие первые сведения. Для человека желающего помочь в фиксе чего либо.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...