История изменений
Исправление EXL, (текущая версия) :
Здесь описаны разные случаи: https://habr.com/ru/post/401681/
А вот недавний довольно интересный случай из игры, который произошёл on-line:
Произошёл он всего две недели назад. Я не берусь утверждать что это именно из-за космической радиации случилось, но это довольно интересный баг и похож он как раз на подобное.
Если кто не понял по видео в чём вообще дело, вот моё простенькое объяснение:
В одной из самой популярной пошаговой стратегии сегодня, которая называется Heroes of Might and Magic III: Horn of the Abyss, есть герои с различными навыками. Один из навыков называется «Разведка» и он позволяет открывать с каждым уровнем опыта героя всё больший и больший кусок «тумана войны» вокруг героя на карте.
Герой, точнее героиня, на которой был пойман этот баг имеет имя «Мириам» и она специализируется как раз на разведке. Благодаря этой специализации пространство карты вокруг героя открывается по подобной формуле: int(LEVEL / 6) + 1
, где LEVEL
– текущий уровень героя.
Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.
- Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен
16395
, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время. - Как только игрок двинулся героем с уровенем
16395
по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью. - После этого уровень вернулся снова на
11
, который был у «Мириам» изначально.
Если провести небольшое расследование, то можно заметить, что 16395-11=16384
, а 16384
это 2^14
, что уже навлекает на мысль о том, что случилось что-то с представлением числа. Если допустить, что уровень героя хранится в RAM в каком-нибудь int16_t
, то получается следующая картина:
>>> format(11, '#016b')
'0b00000000001011'
>>> format(16384, '#016b')
'0b100000000000000'
>>> format(16395, '#016b')
'0b100000000001011'
Как видно, 15-бит (16-ый отвечает за знак) внезапно был инвертирован, что и повлекло за собой этот баг.
Примечательно, что подобное случилось вроде как на игровом турнире с призовым фондом в 750 000 руб. Игру после бага скорее всего пришлось переиграть, но так и непонятно что это было, действительно «космический луч» или всё-таки читы на одной из сторон (у игрока или оппонента).
А вы что думаете? (:
Исправление EXL, :
Здесь описаны разные случаи: https://habr.com/ru/post/401681/
А вот недавний довольно интересный случай из игры, который произошёл on-line:
Произошёл он всего две недели назад. Я не берусь утверждать что это именно из-за космической радиации случилось, но это довольно интересный баг и похож он как раз на подобное.
Если кто не понял по видео в чём вообще дело, вот моё простенькое объяснение:
В одной из самой популярной пошаговой стратегии сегодня, которая называется Heroes of Might and Magic III: Horn of the Abyss, есть герои с различными навыками. Один из навыков называется «Разведка» и он позволяет открывать с каждым уровнем опыта героя всё больший и больший кусок «тумана войны» вокруг героя на карте.
Герой, точнее героиня, на которой был пойман этот баг имеет имя «Мириам» и она специализируется как раз на разведке. Благодаря этой специализации пространство карты вокруг героя открывается по подобной формуле: int(LEVEL / 6) + 1
, где LEVEL
– текущий уровень героя.
Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.
- Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен
16395
, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время. - Как только игрок двинулся героем с уровенем
16395
по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью. - После этого уровень вернулся снова на
11
, который был у «Мириам» изначально.
Если провести небольшое расследование, то можно заметить, что 16395-11=16384
, а 16384
это 2^14
, что уже навлекает на мысль о том, что случилось что-то с представлением числа. Если допустить, что уровень героя хранится в RAM в каком-нибудь int16_t
, то получается следующая картина:
>>> format(11, '#016b')
'0b00000000001011'
>>> format(16384, '#016b')
'0b100000000000000'
>>> format(16395, '#016b')
'0b100000000001011'
Как видно, 15-бит (16-ый отвечает за знак) внезапно был инвертирован, что и повлекло за собой этот баг.
Примечательно, что подобное случилось на игровом турнире с призовым фондом в 750 000 руб. Игру после бага скорее всего пришлось переиграть, но так и непонятно что это было, действительно «космический луч» или всё-таки читы на одной из сторон (у игрока или оппонента).
А вы что думаете? (:
Исправление EXL, :
Здесь описаны разные случаи: https://habr.com/ru/post/401681/
А вот недавний довольно интересный случай из игры, который произошёл on-line:
Произошёл он всего две недели назад. Я не берусь утверждать что это именно из-за космической радиации случилось, но это довольно интересный баг и похож он как раз на подобное.
Если кто не понял по видео в чём вообще дело, вот моё простенькое объяснение:
В одной из самой популярной пошаговой стратегии сегодня, которая называется Heroes of Might and Magic III: Horn of the Abyss, есть герои с различными навыками. Один из навыков называется «Разведка» и он позволяет открывать с каждым уровнем опыта героя всё больший и больший кусок «тумана войны» вокруг героя на карте.
Герой, точнее героиня, на которой был пойман этот баг имеет имя Мириам и она специализируется как раз на разведке. Благодаря этой специализации пространство карты вокруг героя открывается по подобной формуле: int(LEVEL / 6) + 1
, где LEVEL
– текущий уровень героя.
Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.
- Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен
16395
, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время. - Как только игрок двинулся героем с уровенем
16395
по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью. - После этого уровень вернулся снова на
11
, который был у «Мириам» изначально.
Если провести небольшое расследование, то можно заметить, что 16395-11=16384
, а 16384
это 2^14
, что уже .
Если представить, что уровень героя хранится в каком-нибудь int16_t
, то получается следующая картина:
>>> format(11, '#016b')
'0b00000000001011'
>>> format(16384, '#016b')
'0b100000000000000'
>>> format(16395, '#016b')
'0b100000000001011'
Как видно, 15-бит (16-ый отвечает за знак) внезапно был инвертирован, что и повлекло за собой этот баг.
Примечательно, что подобное случилось на игровом турнире с призовым фондом в 750 000 руб. Игру после бага скорее всего пришлось переиграть, но так и непонятно что это было, действительно «космический луч» или всё-таки читы на одной из сторон (у игрока или оппонента).
А вы что думаете? (:
Исходная версия EXL, :
Здесь описаны разные случаи: https://habr.com/ru/post/401681/
А вот недавний довольно интересный случай из игры, который произошёл on-line:
Произошёл он всего две недели назад. Я не берусь утверждать что это именно из-за космической радиации случилось, но это довольно интересный баг и похож он как раз на подобное.
Если кто не понял по видео в чём вообще дело, вот моё простенькое объяснение:
В одной из самой популярной пошаговой стратегии сегодня, которая называется Heroes of Might and Magic III: Horn of the Abyss, есть герои с различными навыками. Один из навыков называется «Разведка» и он позволяет открывать с каждым уровнем опыта героя всё больший и больший кусок «тумана войны» вокруг игрока.
Герой, точнее героиня, на которой был пойман этот баг имеет имя Мириам и она специализируется как раз на разведке. Благодаря этой специализации пространство карты вокруг героя открывается по подобной формуле: int(LEVEL / 6) + 1
, где LEVEL
– текущий уровень героя.
Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.
- Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен
16395
, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время. - Как только игрок двинулся героем с уровенем
16395
по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью. - После этого уровень вернулся снова на
11
, который был у «Мириам» изначально.
Если провести небольшое расследование, то можно заметить, что 16395-11=16384
, а 16384
это 2^14
, что уже .
Если представить, что уровень героя хранится в каком-нибудь int16_t
, то получается следующая картина:
>>> format(11, '#016b')
'0b00000000001011'
>>> format(16384, '#016b')
'0b100000000000000'
>>> format(16395, '#016b')
'0b100000000001011'
Как видно, 15-бит (16-ый отвечает за знак) внезапно был инвертирован, что и повлекло за собой этот баг.
Примечательно, что подобное случилось на игровом турнире с призовым фондом в 750 000 руб. Игру после бага скорее всего пришлось переиграть, но так и непонятно что это было, действительно «космический луч» или всё-таки читы на одной из сторон (у игрока или оппонента).
А вы что думаете? (: