Развитие игровой вспышки
Текущее время: Пн июн 25, 2018 11:50 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Время
СообщениеДобавлено: Пт ноя 13, 2015 2:25 am 
Не в сети

Зарегистрирован: Пт ноя 13, 2015 1:59 am
Сообщений: 88
В очередной раз перепроходил Braid, и мне стало интересно, как реализуются манипуляции со временем в подобных играх? Напомню, что в Braid время может течь по-разному для разных объектов, зависеть от их расположения в пространстве (кольцо), и перематываться, например.

P.S. Вопрос относится к программированию, а не к непосредственно гейм-дизайну, но, поскольку ни с какой конкретной технологией он не связан, а общего раздела для кода нет, я решил разместить его здесь. Прошу прощения, если не туда :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Время
СообщениеДобавлено: Пт ноя 13, 2015 11:26 am 
Не в сети

Зарегистрирован: Ср июл 01, 2015 7:14 pm
Сообщений: 15
Время штука относительная и зависит от частоты процессора)
В современных играх, компенсируют скорость обработки посредством умножения разницы времени, между двумя кадрами. Называется такое время deltaTime. После умножения на дельту, все манипуляция на сцене приводятся к скорости выполнения в 1 секунду.
Так образом, увеличив deltaTime в два раза, мы ускорим объект на сцене и его действия будут происходить уже за пол секунды. Соответственно уменьшив дельту в два раза - объект замедлится.
Теоретически, отрицательная дельта повернет время вспять)


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Время
СообщениеДобавлено: Пт ноя 13, 2015 1:22 pm 
Не в сети

Зарегистрирован: Пт ноя 13, 2015 1:59 am
Сообщений: 88
Сам отсчёт времени элементарен, проблема в том, чтобы объекты правильно реагировали на его течение. Они, например, могут использовать датчик случайных чисел, который тоже должен быть "инвертируемым". Допустим, сделать самодельный ГСЧ, удовлетворяющий таким требованиям, не очень сложно - но как быть с более сложными объектами, которые, к примеру, двигаются по частично заранее рассчитываемым путям, или самим игроком?

Пока единственное, что мне приходит в голову - хранить все состояние объекта (включая внутренние данные, конечно) для каждого отсчета. Но затем, при перемотке назад, нужно будет интерполировать с учетом нового deltaTime, что выйдет ещё накладнее с точки зрения производительности. Может быть, есть какие-то более простые решения?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Время
СообщениеДобавлено: Пт ноя 13, 2015 3:18 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Вс июл 04, 2010 3:52 pm
Сообщений: 86
Откуда: Киев
Читайте про паттерн Мементо. Он сохраняет состояние к которому можно откатится. Для плавности эффекта возвращения времени пользуемся интерполяцией персонажей между состояний.
Блоу (создатель Braid) рассказывал как он все это оптимизировал, чтобы по памяти не много занимало еще. Суть в том чтобы делать слепки всего только каждую секунду (например), а промежуточные состояния уже каждый кадр.
Все это реализуется достаточно просто если соблюдать все правила и делать поменьше ф-ла с побочными эффектами.


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB