Почему с ПК НЕТ дропа | Магия Крови [Longread]

Тема в разделе "Media", создана пользователем Neophron, 13 май 2021.

  1. Neophron

    Neophron Kranrot

    NetDropa.jpg

    Вот бывает сидишь во Флоране у разбитого корыта, плюёшь в колодец и охватывает тебя внезапная тоска по давно минувшим временам. Сейчас Флоран что - просто деревня дураков. Но в былые времена это была настоящая Тортуга пиратов Эльморадена, лагерь разбойников и столица преступного мира - жизнь здесь била ключом. Туда сюда сновали разношёрстные ПК, сбиваясь в случайные связи, спонтанные стаи и прочие не прочные союзы. Одно скажу точно, выйти из Флорана с красным ником было куда проще чем с белым, и это была особым тип солидарности местных джентельменов удачи. Дресскод - красный.
    В те времена среди флоранских бандитов ходил слушок о таинственных ритуалах магии крови. Как заведено, магия крови всегда основывается на жертвах, а в случае нашего ритуала - больших жертвах.
    ПК, который убьет больше пяти тысяч нэбов, отмоется и вновь станет белым персонажем.

    Слушок оказался сущей правдой и ритуал работал. Первым на моих глазах отмылся завсягдатай Флорана по прозвищу, на которое всем пох#й, как и на прозвище второго, хотя это был хороший ПК. Интересно упомянуть лишь третьего - это был Infiniti, один из ТОП ПК античного шога, который в будущем был так же был известен как Acris.

    Но, как водится, за любым проявлениям необъяснимой магии всегда стоят числа. В те далёкие времена знать этого мы, конечно, не могли.
    А дело было вот в чём: движок ладвы использовал для хранение любых числовых выражений исключительно 32 бита,
    а это означает, что максимальное число, которое помещалось в выделенную память, не могло превышать 2^32 (два в тридцать второй степени), что равняется 2147483647. Если число вывалится из допустимого диапазона, происходило закономерное переполнение, в итоге которого число становилось, де-факто, нулём. Именно это колдовство и происходило с кармой когда стрелка на счётчике ПК указывала на цифру 5982.

    Корейцы, рассудив что раз они находятся в средневековом сеттинге, а не в каком-нибудь космосе, то и космические цифры им ни к чему. Так бы оно и было, если бы не две категории граждан Эльморадена, а именно еб#ных гномов, которые смогли накопить 2147483647 монет, и еб#ных ПК, которые смогли накопить 2147483647 кармы. Накопленный капитал первых лопался как мыльный пузырь, а вторые, наоборот, получали экспресс амнистию.

    Интересный факт: данный баг имеет общий знаменатель с более знаменитым багом игры Sid Meier’s Civilization V, который известен как эффект Ганди или Ядерный Ганди, где известный своим миролюбием и гуманностью Ганди, в результате целочисленного переполнения цифры отвечавшей за его агрессивность в политике, сходил с ума и пытался превратить весь мир в радиоактивный пепел.

    Многие путают китайцев и корейцев, так вот китайцы известны своим трудолюбием, а корейцы.. А корейцы известны чем то другим. Решив что от работы и кони дохнут, вместо рефакторинга с учётом открывшихся обстоятельств, они просто заколотили дыры в коде костылями, причем сделали они это по старой доброй традиции - лишь с переходом на следующие хроники (С4).

    Костыль против переполнения адены основывался на том, что персонаж не может получить больше чем 2147483646 адены. Да, вот так просто.

    Прямо сейчас, вы можете зайти на тестовый севрер NewEra, напихать себе в карман 2147483646 адены, и положить на пол 1 адену и попробовать её подобрать. Поверьте, эта будет самая тяжёлая монетка, которую вам доведётся встречать.

    Костыль для кармы заключался в том что корейцы уменьшили её числовое количество, прибавляемое за убийство персонажа и отмываемое при получении опыта или смерти, соответственно. Теперь, наколотив заветные 5982 ПК, ваша карма составляла маленькую и стыдную цифру, которую можно показывать только при выключенном свете. Эту цифру можно смело умножить хоть в десять раз или даже в сто - она будет бесконечна далеко от переполнения. Если бы @Mr.Chief работал в те времена в NC Soft, он бы сказал что это вовсе и не баг, а фишка хроник, но, к несчастью для нашего брата, @Mr.Chief там не работал. Ритуал магии крови был прерван разгневанными корейскими богами и с наступлением С4, ПК больше не могли отмыться багом от целочисленного переполнения кармы.

    Долгие годы эти костыли исправно служили в роли затычек в трюме, не давая судну игры пойти ко дну. А на старых кораблях они служат верой и правдой до сих пор. Должный рефакторинг произошёл только в районе Грации, тогда во многих структурах данных, которыми обменивались клиент и сервер стали появляться 64 битные переменные.

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

    Соразмерив зависимость числового значения кармы с числовым значением ПК, мы приходим к тому, что чтобы накопить 2147483647 кармы в наших нынешних реалиях, нам потребуется более ста тысяч ПК. А это, как ни крути, дох#я по любым меркам. Но пусть сердце грешника греет тёплая мысль, что в нашем мире искупление и путь с чистого листа доступны для каждого.

    (Главное встать на путь исправления и убить сто тысяч нэбов. Привет, Ганди!)

    Помните миф про гидру, у которой за место одной отрубленной головы вырастали две новые? Так вот у программистов всё тоже самое, только вместо головы гидры - баги. Вероятно, случилось так, что код, отвечавший за расчёт кармы был изменен, а код, который контролировал расчёт дропа с персонажа при смерти, основываясь на то, кем он был при жизни, либо не был изменен вовсе, либо непредвиденным образом изменился сам собой таким образом, что понять это сложно, а описать еще сложнее.

    И вот, мы имеем те самые волшебные 5982 ПК, но никакого волшебства не происходит, игра по прежнему представляет нас как разбойника с красным ником. Подождите-ка, кажется одна её малая часть всё таки изменила о нас своё мнение - это часть игры, ответственная за расчёт дропа с персонажей. Она считает что мы белый человек, законопослушный гражданин, а значит и дропа с нас полагается как с белого. Как нам известно, это либо вообще ничего, реже - одна две вещи.

    Волшебное число 2^32, становится волшебным только в определенных промежутках, при полной луне, с 30 апреля на 1 мая в Вальпургиеву ночь, после чего вновь возвращается на легальные рельсы. В каком именно диапазоне я вам не скажу, но скажу, что в следующий раз волшебство выстрелит на 2*(2^31) и так далее.

    Послесловие: всё написанное выше не является фактом, а является только предположением, которое основано на некоторых фактах. Нет, скажу по другому - всё это является п#здежом и домыслами, призванными развлечь читателя, а верить им или нет, это личное дело каждого.
     
    Последнее редактирование: 14 май 2021
    Tirion, Ayaks, Arctiel и 6 другим нравится это.
  2. Scrath

    Scrath Elpy

    да оно понятно что при определеном капе пк\карма сервак видит красного как белого поэтому когдато кто -то предлагал админам сделадь потолок для счетчика пк\кармы
     
    Последнее редактирование: 13 май 2021
  3. ZXS

    ZXS Hobgoblin

    По фразе "5982 ПК la2" гуглятся интересные тексты, они применимы к той эпохе когда персонаж становился "белым", но если все как ты говоришь и алгоритм расчета % дропа остался старым, то вполне подходят под реалии этого сервера и можно подсчитать, когда с тебя дропнутся последние трусы, а когда нет.
     
  4. Lite

    Lite Hobgoblin

    Мне кажется что такой ошибки не может быть, т.к. я хз что туда надо написать в код, чтобы это так было... По идее это должно работать как, if значение кармы > 0, запускается механиз дропа при смерти. Но это только предположения)
     
  5. Neophron

    Neophron Kranrot

    Вообще, Lineage 2 такая не однородная по качеству игра:
    Гениальный и бессмертный геймдизайн идёт бок о бок с самой постыдной халтурой.
    И если корейцы делают тяп-ляп даже то что видно и за то что могут поругать, вроде нарисованных на домах окнах размер с ладонь, расположенных по пояс, то одному богу известно какова степень халтуры в коде, который не видно.
     
    Последнее редактирование: 13 май 2021
    Arctiel нравится это.
  6. Lite

    Lite Hobgoblin

    Звучит так, как будто мы играем в игру, которую кодили углем на стенах корейской пещеры :)
     

Поделиться этой страницей