Как Карнов ждёт Silksong (на самом деле не ждёт, ведь Blasphemous > Hollow Knight)
Forwarded from Гипермда
Прочитал про раскопки одного из самых странных багов в истории видеоигр – исчезновение гидроплана из GTA San Andreas после… обновления Windows 11 24H2? Как обновление винды смогло что-то поломать в игре двадцатилетней давности? Почему именно исчезающий гидроплан? На самом деле, это история про категории, самоисправление систем и строгость с любопытными перспективами.
Автор популярного семейства патчей для серии GTA – SilentPatch – примерно с октября 2024 года начал получать на гитхабе жалобы на “исчезнувший гидроплан” Skimmer. Исчез он только в San Andreas, вне зависимости от того, модфицировали игру или нет. Из исходных данных в анамнезе был только один общий факт – гидроплан всегда пропадал после установки обновления 24H2. Причем гидроплан нельзя было даже заспавнить с помощью скриптов – скрипт срабатывает, но гидроплана не видно.
Тогда Silent использовал скрипт, чтобы заспавнить гидроплан и сразу посадить в него аватар игрока. Оказывается, самолет все же появлялся, просто на первом же кадре он взлетал на высоту в 1087 квадриллионов световых лет даже без включения двигателя (выходит, что в каком-то смысле гидроплан даже прокачался).
Silent дает детальное описание проблемы (очень советую прочитать), я постараюсь упростить. Дело в том, что во время создания транспорта игра обращается к данным о размерах передних и задних колес...
Которых у гидроплана нет. И параметров этих у гидроплана тоже нет.
В GTA этих параметров нет у лодок, и поэтому в Vice City с гидропланами нет проблем – они принадлежат классу лодок, Skimmer is a boat. Но в San Andreas их перенесли в класс самолетов, у которых колеса уже должны быть. И если внести параметры колес в описание гидроплана ручками, никаких проблем в San Andreas не возникает. Но при чем тут Windows 11 и обновление, что именно ломается? Если кратко, то раньше в игре пустые строки заполнялись автоматически самой игрой, и размер “колес” гидроплана менялся на 1.0. На Win11 24H2 – на невозможные числа (7.84421263e+33 и 4.54809690e-38).
Проблема, в общем, оказалась не в самой Windows – в 24H2 изменилось стэковое пространство, занимаемое Critical Section Objects. Что это значит? В программном коде есть участки, называемые “критическими секциями” – они не могут быть использованы более чем одним потоком выполнения одновременно; другим потокам нужно подождать разблокировки. Проще говоря, какие-то наборы операции не могут выполняться одновременно.
“Нарезка” таких секций на уровне машинного кода меняется от одной версии Windows к другой, но в случае с San Andreas переменные, которые отвечали за размер колес, не попадали в критическую секцию кода, который спавнил гидроплан. Сам исполнительный файл видел пустоту в параметрах и выставлял значения для колес по умолчанию – поэтому проблем с гидропланом не было на компьютерах. А вот на Xbox эта проблема возникала, и ее Rockstar правили патчем отдельно, прописывая значения колес; но все компьютерные версии игры полагались, по факту, на авось. На 24H2 размер стэка стал таким, что в критическую секцию попал параметр размера колес, и сама игра уже не могла “посмотреть” в этот мусор и прописать нужное значение – доступ блокировался свойствами секции, винда практически говорит “модифицировать эти данные сейчас нельзя”, а значит, нельзя поменять значения на “по умолчанию”, и данные на нужных адресах в итоге дают кучу мусора. Если бы код в этом участке был короче всего на 4 байта, этот баг всплыл бы намного раньше, так как попадал бы в границы критической секции. (Да, если кто-то может чуть более грамотно это сформулировать – добро пожаловать в комменты).
Полезных выводов из этой истории два. Во-первых, как советует автор, нужно валидировать данные и не надеяться, что ошибки сами исправятся стандартными значениями. Ну а во-вторых, чудо, что игры вообще запускаются.
UPD. На хабре есть перевод на русский.
Автор популярного семейства патчей для серии GTA – SilentPatch – примерно с октября 2024 года начал получать на гитхабе жалобы на “исчезнувший гидроплан” Skimmer. Исчез он только в San Andreas, вне зависимости от того, модфицировали игру или нет. Из исходных данных в анамнезе был только один общий факт – гидроплан всегда пропадал после установки обновления 24H2. Причем гидроплан нельзя было даже заспавнить с помощью скриптов – скрипт срабатывает, но гидроплана не видно.
Тогда Silent использовал скрипт, чтобы заспавнить гидроплан и сразу посадить в него аватар игрока. Оказывается, самолет все же появлялся, просто на первом же кадре он взлетал на высоту в 1087 квадриллионов световых лет даже без включения двигателя (выходит, что в каком-то смысле гидроплан даже прокачался).
Silent дает детальное описание проблемы (очень советую прочитать), я постараюсь упростить. Дело в том, что во время создания транспорта игра обращается к данным о размерах передних и задних колес...
Которых у гидроплана нет. И параметров этих у гидроплана тоже нет.
В GTA этих параметров нет у лодок, и поэтому в Vice City с гидропланами нет проблем – они принадлежат классу лодок, Skimmer is a boat. Но в San Andreas их перенесли в класс самолетов, у которых колеса уже должны быть. И если внести параметры колес в описание гидроплана ручками, никаких проблем в San Andreas не возникает. Но при чем тут Windows 11 и обновление, что именно ломается? Если кратко, то раньше в игре пустые строки заполнялись автоматически самой игрой, и размер “колес” гидроплана менялся на 1.0. На Win11 24H2 – на невозможные числа (7.84421263e+33 и 4.54809690e-38).
Проблема, в общем, оказалась не в самой Windows – в 24H2 изменилось стэковое пространство, занимаемое Critical Section Objects. Что это значит? В программном коде есть участки, называемые “критическими секциями” – они не могут быть использованы более чем одним потоком выполнения одновременно; другим потокам нужно подождать разблокировки. Проще говоря, какие-то наборы операции не могут выполняться одновременно.
“Нарезка” таких секций на уровне машинного кода меняется от одной версии Windows к другой, но в случае с San Andreas переменные, которые отвечали за размер колес, не попадали в критическую секцию кода, который спавнил гидроплан. Сам исполнительный файл видел пустоту в параметрах и выставлял значения для колес по умолчанию – поэтому проблем с гидропланом не было на компьютерах. А вот на Xbox эта проблема возникала, и ее Rockstar правили патчем отдельно, прописывая значения колес; но все компьютерные версии игры полагались, по факту, на авось. На 24H2 размер стэка стал таким, что в критическую секцию попал параметр размера колес, и сама игра уже не могла “посмотреть” в этот мусор и прописать нужное значение – доступ блокировался свойствами секции, винда практически говорит “модифицировать эти данные сейчас нельзя”, а значит, нельзя поменять значения на “по умолчанию”, и данные на нужных адресах в итоге дают кучу мусора. Если бы код в этом участке был короче всего на 4 байта, этот баг всплыл бы намного раньше, так как попадал бы в границы критической секции. (Да, если кто-то может чуть более грамотно это сформулировать – добро пожаловать в комменты).
Полезных выводов из этой истории два. Во-первых, как советует автор, нужно валидировать данные и не надеяться, что ошибки сами исправятся стандартными значениями. Ну а во-вторых, чудо, что игры вообще запускаются.
UPD. На хабре есть перевод на русский.
Silent’s Blog
How a 20 year old bug in GTA San Andreas surfaced in Windows 11 24H2
After over two decades, players are now forbidden from flying a seaplane, all thanks to undefined code behavior.
Forwarded from 🐞Д(а)урдом (Daur Avidzba)
Я абсолютно не понимаю коллекционеров, которые хранят в своей коллекции запечатанные издания игр. «Силдовая» коробка — это просто товар. Я считаю, что пока ты не распечатал диск, он не стал твоим. Ты просто хранишь его так, чтобы он сохранил свой товарный вид надолго. Но для чего? Правильно, издание в заводской плёнке будет только расти в цене. То есть, все эти ретроблогеры, собиратели тысячи игр и редких изданий в плёнке ни хрена не коллекционеры по существу. Они тупо коммерсанты, которые собирают коллекцию не для себя или своих детей, а чтобы однажды задорого это всё можно было продать. Они ещё любят хвастаться, что смогли урвать где-то на аукционе силдовый диск какой-то игры, которая им даже не интересна, они никогда в неё играть не будут, но зато СИЛД! Я считаю: купил, распаковал — теперь это реально твоё, с твоими личными царапинками, впитавшее воздух твоей комнаты. А то корчат из себя смотрителей музеев, блин, бесят.
Media is too big
VIEW IN TELEGRAM
Многие спрашивают (нет), что происходит у нас на стримах. Ответ есть в этой нарезке, за работу большое спасибо Cheezzy fioletovaya boroda.
Осторожно, в видео присутствует мат.
Осторожно, в видео присутствует мат.
Forwarded from Адептус Мишанякус
На Кинопоиске вышел мой, т.е. авторский топ всех частей DOOM (TDA добавим как пройду!)
Если честно, я никогда не мыслил в рамках франшизы топами, было интересно подумать о серии с такой стороны. Скорее всего, он кого-то сильно разозлит или возмутит, но такой цели точно не стояло.
Приятного и вдумчивого чтения!
https://www.kinopoisk.ru/media/article/4011179/
Если честно, я никогда не мыслил в рамках франшизы топами, было интересно подумать о серии с такой стороны. Скорее всего, он кого-то сильно разозлит или возмутит, но такой цели точно не стояло.
Приятного и вдумчивого чтения!
https://www.kinopoisk.ru/media/article/4011179/
Forwarded from PodcastOGRU
Ох и требования к играм были раньше. Вот список того, что требовали от авторов, которые хотели, чтобы их игру разместили в книге 101 BASIC Computer Games 1974 года.
1) Принимаются только законченные и проверенные на баги версии игр;
2) Пожалуйста, пришлите: один листинг программы и две распечатки, где показано как в неё бы играл обычный человек;
3) Присылайте исходный код только на белой, нелинованной бумаге. Мы не можем работать с розовой, жёлтой, синей или серой бумагой. Ксерокопии не допускаются. Не сгибайте листы;
4) Листинги и распечатки должны быть напечатаны свежей чёрной лентой. Не фиолетовой, и не синей, и, в особенности, не б/у;
5) Печатный механизм у телетайпа должен быть чистым. Воспользуйтесь специальным очистителем для шарика или жёсткой зубной щёткой, если нужно;
6) Если возможно, приложите перфоленту с программой. Если у вас промасленная бумага (из телетайпа), то сложите её частями по 8.5" и оставьте 17" пустого листа. Оберните её в пластиковую плёнку или вощёную бумагу перед отправкой. Многие работы протекли и не попали в нашу книгу из-за этого;
7) Также пришлите ваше ФИО, полный адрес, номер телефона, связь с учебным заведением, возраст, тип компьютера, и источник происхождения программы (если она не ваша);
8) Присылая программу вы даёте компании право на публикацию, перепечатку и распространение своей программы любым способом. Вы всегда будете указаны как автор;
1) Принимаются только законченные и проверенные на баги версии игр;
2) Пожалуйста, пришлите: один листинг программы и две распечатки, где показано как в неё бы играл обычный человек;
3) Присылайте исходный код только на белой, нелинованной бумаге. Мы не можем работать с розовой, жёлтой, синей или серой бумагой. Ксерокопии не допускаются. Не сгибайте листы;
4) Листинги и распечатки должны быть напечатаны свежей чёрной лентой. Не фиолетовой, и не синей, и, в особенности, не б/у;
5) Печатный механизм у телетайпа должен быть чистым. Воспользуйтесь специальным очистителем для шарика или жёсткой зубной щёткой, если нужно;
6) Если возможно, приложите перфоленту с программой. Если у вас промасленная бумага (из телетайпа), то сложите её частями по 8.5" и оставьте 17" пустого листа. Оберните её в пластиковую плёнку или вощёную бумагу перед отправкой. Многие работы протекли и не попали в нашу книгу из-за этого;
7) Также пришлите ваше ФИО, полный адрес, номер телефона, связь с учебным заведением, возраст, тип компьютера, и источник происхождения программы (если она не ваша);
8) Присылая программу вы даёте компании право на публикацию, перепечатку и распространение своей программы любым способом. Вы всегда будете указаны как автор;
Оказывается, у широко известной в узких кругах Waxworks в 2020 году случился ремейк.
Waxworks — это такая полу-адвенчура-полу-dungeon-crawl с кровищей, говном и ультражестокостью про музей восковых фигур. Ничего особенного, но деды вспоминают с теплотой, да и презентация у игры крайне симпатичная.
В ремейк, судя по Стиму, никто играть не захотел и за пять лет в него поиграло пара сотен человек, что печально, но закономерно. В пользовательских обзорах ругают примерно всё: управление, боёвку, отсутствие музыки, нежелание игры объяснять свои правила, и, самое главное — из игры зачем-то убрали ту самую ультражестокость, за которую так любили оригинал.
Waxworks — это такая полу-адвенчура-полу-dungeon-crawl с кровищей, говном и ультражестокостью про музей восковых фигур. Ничего особенного, но деды вспоминают с теплотой, да и презентация у игры крайне симпатичная.
В ремейк, судя по Стиму, никто играть не захотел и за пять лет в него поиграло пара сотен человек, что печально, но закономерно. В пользовательских обзорах ругают примерно всё: управление, боёвку, отсутствие музыки, нежелание игры объяснять свои правила, и, самое главное — из игры зачем-то убрали ту самую ультражестокость, за которую так любили оригинал.
Forwarded from 🥒ohi 🥒 rok🥒
This media is not supported in your browser
VIEW IN TELEGRAM