Можно ли считать игры системами реального времени?
Я читал о системах реального времени и о том, как они работают и т. Д. Я также просматривал статью в Википедии, в которой говорилось, что игра в шахматы с таймером на ход может считаться системой реального времени, поскольку программа ДОЛЖНА вычислять движение в это время. А как насчет других игр? Как мы знаем, игры, как правило, пытаются работать с частотой более 25 FPS, можно ли это считать мягкой системой реального времени, поскольку если она падает ниже 25 (я использую 25 в качестве предопределенного порога между прочим), это не конец мир, просто удар по спектаклю, который мы хотели?
Также - в играх есть события, с которыми они должны справиться. Пользователь использует клавиатуру / мышь, и система должна ответить на эти события соответственно в течение (опять же) заранее определенного времени, прежде чем считается, что игра "провалилась".
О, и я сейчас говорю об одиночной игре, чтобы все было просто.
Звучит так, будто игры соответствуют мягким системным критериям реального времени, но я хотел бы знать, если я что-то упустил... спасибо.
9 ответов
Из Википедии,
О системе говорят, что она работает в режиме реального времени, если полная корректность операции зависит не только от ее логической корректности, но также и от времени, в которое она выполняется. Классическая концепция заключается в том, что в жесткой системе реального времени или в режиме реального времени завершение операции после ее крайнего срока считается бесполезным - в конечном итоге это может привести к критическому отказу всей системы. Мягкая система реального времени, с другой стороны, будет терпеть такое запаздывание и может отвечать сниженным качеством обслуживания (например, пропуская кадры при отображении видео).
Таким образом, я бы сказал, что эти игры FPS являются определенно примерами мягких систем реального времени. Это нормально, если некоторые кадры пропущены. Тем не менее, Википедия также указывает на то, что шахматный движок, который не дает хода в выделенные сроки, считается критическим провалом, и, следовательно, это сложная система реального времени.
Еще одна мысль об ИИ в FPS-е. Вероятно, можно было бы рассматривать ИИ как "отказавшую систему", если ему не удается вернуть результаты в течение достаточного времени и, следовательно, он останавливается.
Да, но с большим акцентом на мягком режиме реального времени.
Быть в реальном времени - это не значит быть быстрым, просто получить результат "достаточно быстро" - это часть определения правильности этого результата.
Википедия говорит (и это то, чему меня учили в колледже):
О системе говорят, что она работает в режиме реального времени, если полная корректность операции зависит не только от ее логической корректности, но также и от времени, в которое она выполняется. Системы реального времени, а также их сроки, классифицируются по причине пропуска срока.
В целом, большинство игр работают в режиме реального времени, поскольку, хотя целевая частота кадров (например, 30 кадров в секунду) определяет крайний срок, случайное несоблюдение этого срока не делает базовые вычисления бесполезными. Сбои уменьшают полезность вычислений, потому что они ухудшают качество игрового процесса.
Как вы упомянули, шахматный движок является примером системы реального времени. Тем не менее, это часто сложное приложение в реальном времени, потому что превышение контроля времени приводит к автоматической потере, а результат вычислений бесполезен.
Вы могли бы назвать их так, но я думаю, что это расширило бы определение "в реальном времени". Как понимается в отрасли, "в реальном времени" обычно подразумевает, что события будут обслуживаться в течение максимального времени, где это время обычно составляет миллисекунды, иногда даже микросекунды. Для сравнения, шахматная программа идет с ледниковыми скоростями (по крайней мере, если говорить о взаимодействии). Ни одно из специальных ограничений программирования, необходимых для выполнения жестких ограничений в реальном времени, не применяется к программированию "медленных" интерактивных игр, подобных этой.
"Интерактивный" будет подходящим словом. Что касается видеоигр, "FPS" фактически стал термином, используемым для классификации таких программ, которые характеризуются циклом, многократно обновляющим графику и вычисляющим игровую механику.
Я бы описал игры как жесткие системы реального времени. Возьмите стрелка - если вы не стреляете в противника до того, как он стреляет в вас, способность стрелять в него бесполезна, и вы проигрываете. Вы можете сделать аналогичные аналогии для многих других типов игр. Любая игра, в которой игрок играет в режиме реального времени, может быть описана таким образом.
Возможно, их реализация не сложна в реальном времени, но играть в них точно можно.
Хотя я думаю, что нам нравится верить, что наши системы работают в режиме реального времени, одна вещь, о которой меня интересует, это аспект точности моделирования в работе.
Чтобы уместить все в 16,6 мс, мы часто выполняем работу с более низкой точностью в тех местах, где, по-видимому, это не меняет результат, но дает результат (измеряемый "изображениями, мигающими на экране"), которые немного отличается от того, чем они были бы, если бы мы использовали меньше ярлыков. Очевидные сочетания клавиш верхнего уровня - это сглаживание и глубина резкости, более тонкими и менее очевидными для наблюдателя являются изменения в "lo-fi" интеллекте врагов, если их много на экране. Например, в некоторых из первых игр, над которыми я работал, у нас не было времени обновить "взгляд на мир" у всех, поэтому мы обошли вокруг врагов, а также смешали персонажа игрока с врагами. Таким образом, если бы присутствовало пять врагов, потребовалось бы десять кадров для обновления каждого (так как игрок обновлялся каждый второй кадр). Это не делало анимацию прерывистой или чего-то в этом роде, поскольку мы по-прежнему запускали правильные анимации, но принятие решений врагами, возможно, будет основано на старых или недействительных в настоящее время данных.
Как оказалось, это имело интересный эффект, что враги делали вещи так, как будто им потребовалось некоторое время, чтобы обработать происходящее. Например, они будут продолжать стрелять в игрока, даже если он будет мертв, или им может потребоваться некоторое время, прежде чем они заметят, что все их соотечественники были убиты, вызывая их испуганное бегство через некоторое время после того момента, как они решили бежать, если бы мы запускать "полную" симу при каждом обновлении.
Итак, действительно ли расчеты с низкими резями соответствуют вашему времени приемлемым компромиссом для прозвища в реальном времени?
Принц Персии на моем x386 показался мне в реальном времени без заметных задержек. Однако, если бы условия не были идеальными, производительность наверняка ухудшилась бы из-за видимых задержек, и, конечно, игра не имела никаких гарантий производительности в таких случаях.
Чтобы игра была в реальном времени, она не может быть просто игрой. Он должен взять на себя управление оборудованием, ОС, доступными ресурсами и определить условия, при которых эти гарантии действительны. Я не думаю, что есть какие-либо игры, которые идут в этом направлении.
Хотя я бы частично согласился с мягким определением в реальном времени. Не думайте, что какие-либо игры публикуют какие-либо соглашения об уровне обслуживания, но в большинстве случаев старайтесь работать в режиме реального времени - это в их интересах. Тем не менее, как и определения, большинство игровых консолей - XBox, PS[x], Wii и т. Д. Высоко оптимизированы для работы в режиме реального времени и обеспечивают это. Там может быть очень мало случаев, когда она падает на производительность, например, когда комнатная температура приближается к точке кипения, но это относится к большинству так называемых систем реального времени. Для их оптимальной работы в режиме реального времени должен быть соблюден определенный набор условий, иначе ситуация ухудшится.
На самом деле я не думаю, что игры - это системы реального времени. На самом деле большинство из них довольно инвариантны к планированию, особенно во время загрузки.
Когда вы сидите и смотрите на панель загрузки, система перегружена ошибками кэша и обычно связана с вводом / выводом. И каждый находит это совершенно приемлемым.
Конечно, пока вы работаете, вы можете рассматривать игру в режиме реального времени. Но если игра становится связанной с вводом / выводом из-за загрузки новой текстуры на лету, люди снова находят это приемлемым, если это происходит достаточно редко. То же самое для пошаговых игр, когда вы ждете очереди компьютера.
Все становится еще сложнее, когда вы думаете о многопользовательских играх. Особенно ММО, которые работают "в прошлом", чтобы скрыть проблемы с отставанием. Все, что он делает, это маскирует, насколько в действительности игра не в реальном времени.
редактировать: мое определение системы реального времени - это система, которая использует каждый цикл процессора для значимой работы. Если система запланирована из-за того, что она связана, например, с вводом / выводом, это не совсем система реального времени.
"Реальное время" - это нечеткая категория. Точнее говорить о системах реального времени в масштабе "твердости". Характеристики, которые усложняют систему реального времени:
- Ограниченная задержка (крайние сроки)
- Ограниченный джиттер (т.е. изменение времени отклика)
- Последствия невыполнения сроков и способность системы "отказоустойчиво" в случае несоблюдения сроков или полного отказа системы.
- Сокращение сроков. Системы реального времени, как правило, должны реагировать менее чем за секунду, и в большинстве случаев в пределах 100 мсек.
Следовательно, хотя технически игра в шахматы соответствует определению "реального времени", на практике она настолько мягкая, что этот термин на самом деле не применяется. Другой крайностью будет авионика "летать по проводам" в истребителе, где несоблюдение требований по срокам может привести к падению самолета.