Рассмотрим игру, основанную на тиках, где компьютеру нужно выполнять 100 операций за каждый тик. Что произойдет, если компьютер может выполнить только 50 операций за один тик?

2 ответа2

1

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

Вы можете увидеть, что я имею в виду в действии здесь, где парень играет с часами этого геймбоя.

В настоящее время приличная видеоигра будет проверять, который час и регулирует местоположение движущихся автомобилей, смотря на время. Так что, если мы находимся на каком-то определенном тике и на следующем тике прошло 2 секунды ... хорошо; исходя из скорости автомобиля мы можем рассчитать, где она должна быть сейчас.

В первом сценарии игра работает медленнее. Во втором сценарии, игра работает так же быстро , но choppier.

Теперь, если ваш вопрос действительно таков: «Я не ограничиваю скорость игры, не снижаю частоту кадров и не делаю ничего, чтобы избежать ситуации, когда процессор не может выполнить все такты».Когда время истекло, галочка закончилась и все началось снова. Что должно случиться?"

Хорошо, если игровой цикл выглядит примерно так:

  1. Возьмите вход контроллера.
  2. Расчет местоположения движущихся объектов
  3. Рассчитать столкновения
  4. Нарисуйте сценарий и большинство персонажей
  5. Рассчитать убытки
  6. Нарисовать модель игрока
  7. Нарисуй одежду игрока.

и процессор только добрался до пункта 6.5, после чего вы получите голого безногого персонажа, но игра может сыграть то же самое (или вылететь).

Если процессор сделал это только после 4, то автомобиль, на котором вы едете, не убьет вас, а просто проведет сквозь вас.

Конечно, это зависит от реализации игры, и я слишком изобретателен.

0

Рассмотрим игру, основанную на тиках, где компьютеру нужно выполнять 100 операций за каждый тик. Что произойдет, если компьютер может выполнить только 50 операций за один тик?

Зависит от того, что происходит, когда истекает срок действия галочки, и каковы операции

Если ваша игра находится в чем-то похожем на Visual Basic, где событие таймера запускает операции, а ваши операции - это процедура, запускающая игру, то таймер, в конце "галочки", снова запускает процедуру ,

Если вы не предусмотрели иное, существующая процедура будет продолжать работать. Там будет "перекрытие". Если ваш код не "реентерабельный" - то есть статические переменные используются во всей процедуре, неожиданные изменения переменных приведут как к первому запуску, так и ко второму запуску процедуры. Это приведет к неправильному поведению процедуры.

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

На старом компьютере или игровой системе "тик" обычно представлял собой IRQ или NMI, генерируемые, когда видеочип достигал определенной линии при рендеринге видео. Хорошие игры, если они "перегружены" и в этом случае не могут выполнить свою работу в виде галочки или "фрейма", запомнят этот факт, возможно, с помощью флажка, который проверяется в начале каждого фрейма, и продолжат работать, вводя замедление, но не провал. Когда работа завершена, флаг очищается. Это должно быть проверено в начале каждого "тика".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .