Подход: более высокая скорость моделирования
Время вашего пользовательского интерфейса должно быть отделено от вашего реального игрового цикла, как и ваш рендеринг. Скажем, например, ваш мир движется со скоростью 4x. Допустим, что при вашей базовой (1x) скорости ваша игра запускает 30 обновлений в секунду.
После этого в режиме ускоренной перемотки вы получите что-то вроде следующего:
- Мировая логика запускает 4 обновления для каждого обновления интерфейса и рендерера. Это означает, что ему нужно запускать 120 обновлений в секунду. Таким образом, ваша модель мира (данные) обновляется с такой скоростью.
- Рендерер и логика пользовательского интерфейса продолжают опрашивать или делать что-либо со скоростью 30 обновлений в секунду.
Другими словами, игра в целом не работает быстрее. Симуляция часть.
Вы можете вывести две вещи из этого:
Вы должны сохранять свою игровую логику достаточно простой, чтобы вы могли легко запускать ее в четыре раза быстрее на целевой платформе, ИЛИ вам нужно вводить методы для более быстрой экстраполяции различных аспектов игрового процесса - однако это может привести к модели, которая отличается от того, что было бы, если бы вы просто использовали более быстрый темп моделирования. Таким образом, компромиссом будет стоимость обработки для точности. Смотрите подход 2 ниже.
Именно разделение интересов позволяет вам легко ускорить симуляцию мира, причем это разделение представляет собой модель, представление и контроллер ( MVC ). Если ваши мировые данные (M), логика рендеринга (V) и игровая логика (C) смешаны, вы действительно не сможете сделать это, по крайней мере, без массовой мигрени.
Подход: экстраполяция на основе дельт времени
Как уже упоминалось выше, вам нужно рассчитать движение на основе того, как далеко что-то должно было бы пройти в данный момент времени. Это предполагает, что физика вашей игры по своей природе более реалистична, однако это может быть не так. Это довольно обширная тема и значительно более сложная. Вам нужно будет задать больше вопросов, если вы хотите знать. По сути, вы будете делать некоторые исчисления, чтобы все было правильно. Вам придется иметь дело с взаимопроникновением при столкновениях и множеством других вопросов, которые я не буду здесь рассматривать.
Заключить
Это дает вам общий план. Вы выбираете язык самостоятельно, возможно, вы либо знаете, как это сделать в Unity, либо нет. Время на любом языке требует от вас детального понимания всех деталей, я бы предложил начать со статей Гаффера и ознакомиться с документацией по Unity API.