Домашняя » как » Почему старые игры работают слишком быстро на современных компьютерах?

    Почему старые игры работают слишком быстро на современных компьютерах?

    Если вы когда-нибудь пытались запустить винтажную компьютерную игру на современной системе, вы, вероятно, были шокированы тем, как быстро игра побежала. Почему старые игры выходят из-под контроля на современном оборудовании?

    Ранее сегодня мы показали вам, как запустить старое программное обеспечение на современных компьютерах; Сегодняшняя сессия вопросов и ответов - хороший комплимент, который объясняет, почему некоторые старые программы (особенно игры), кажется, никогда не работают правильно, когда вы пытаетесь запустить их на современном оборудовании..

    Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..

    Вопрос

    Читатель SuperUser TreyK хочет знать, почему старые компьютерные игры быстро сходят с ума на новом оборудовании:

    У меня есть несколько старых программ, которые я снял с компьютера ранней 90-х годов, и попытался запустить их на относительно современном компьютере. Интересно, что они бегали с невероятной скоростью - нет, не с частотой 60 кадров в секунду, а с типом «о, боже мой, персонаж ходит на скорости звука». быстро. Я нажимал клавишу со стрелкой, и спрайт персонажа проносился по экрану гораздо быстрее, чем обычно. Временная прогрессия в игре происходила намного быстрее, чем следовало. Есть даже программы, сделанные для замедления вашего процессора, так что эти игры действительно играбельны.

    Я слышал, что это связано с игрой в зависимости от циклов процессора или что-то в этом роде. Мои вопросы:

    • Почему старые игры делают это, и как им это сходит с рук?
    • Как сделать новые игры не сделать это и работать независимо от частоты процессора?

    Так что за история? Почему именно спрайты в старых играх вспыхивают по экрану так быстро, что игра становится неиграбельной??

    Ответ

    Участник SuperUser JourneymanGeek разбивает его на части:

    Я полагаю, что они предполагали, что системные часы будут работать с определенной частотой, и привязали свои внутренние таймеры к этой частоте. Большинство из этих игр, вероятно, работали в DOS и работали в реальном режиме (с полным, прямым доступом к оборудованию) и предполагали, что вы используете IIRC Система с тактовой частотой 4,77 МГц для ПК и любого стандартного процессора, который эта модель работала для других систем, таких как Amiga.

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

    Первоначально одним из способов обойти разную скорость процессора была старая добрая кнопка Turbo (которая замедляла работу вашей системы). Современные приложения находятся в защищенном режиме, а ОС стремится управлять ресурсами - они не будут разрешать приложение DOS (которое в любом случае работает в NTVDM на 32-битной системе), чтобы во многих случаях использовать весь процессор. Короче говоря, операционные системы стали умнее, как и API.

    Основано на этом руководстве на ПК Oldskool, где логика и память подвели меня - это отличное чтение и, вероятно, более подробно объясняет «почему».

    Такие вещи, как CPUkiller, используют как можно больше ресурсов, чтобы «замедлить» работу вашей системы, что неэффективно. Вам лучше использовать DOSBox для управления тактовой частотой, которую видит ваше приложение.

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


    Есть что добавить к объяснению? Звук выключен в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.