LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Здесь описаны разные случаи: https://habr.com/ru/post/401681/

А вот недавний довольно интересный случай из игры, который произошёл on-line:

Произошёл он всего две недели назад. Я не берусь утверждать что это именно из-за космической радиации случилось, но это довольно интересный баг и похож он как раз на подобное.

Если кто не понял по видео в чём вообще дело, вот моё простенькое объяснение:

В одной из самой популярной пошаговой стратегии сегодня, которая называется Heroes of Might and Magic III: Horn of the Abyss, есть герои с различными навыками. Один из навыков называется «Разведка» и он позволяет открывать с каждым уровнем опыта героя всё больший и больший кусок «тумана войны» вокруг героя на карте.

Герой, точнее героиня, на которой был пойман этот баг имеет имя «Мириам» и она специализируется как раз на разведке. Благодаря этой специализации пространство карты вокруг героя открывается по подобной формуле: int(LEVEL / 6) + 1, где LEVEL – текущий уровень героя.

Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.

  1. Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен 16395, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время.
  2. Как только игрок двинулся героем с уровенем 16395 по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью.
  3. После этого уровень вернулся снова на 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 – текущий уровень героя.

Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.

  1. Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен 16395, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время.
  2. Как только игрок двинулся героем с уровенем 16395 по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью.
  3. После этого уровень вернулся снова на 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 – текущий уровень героя.

Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.

  1. Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен 16395, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время.
  2. Как только игрок двинулся героем с уровенем 16395 по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью.
  3. После этого уровень вернулся снова на 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 – текущий уровень героя.

Так вот, суть бага: у игрока внезапно открылась вся карта. А причиной этого, если внимательно посмотреть на видео, стало всего лишь изменение одного бита из-за которого уровень игрока резко увеличился.

  1. Обратите пристальное внимание на таймкод 00:27, когда игрок переключился на героя «Мириам», её уровень внезапно стал равен 16395, это очень большое число и обычной игрой подобный уровень героя достичь нереально за разумное время.
  2. Как только игрок двинулся героем с уровенем 16395 по карте, радиус разведки оказался настолько огромным, что вышел за пределы самой карты, что открыло её полностью.
  3. После этого уровень вернулся снова на 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 руб. Игру после бага скорее всего пришлось переиграть, но так и непонятно что это было, действительно «космический луч» или всё-таки читы на одной из сторон (у игрока или оппонента).

А вы что думаете? (: