У меня вопрос несколько отвлеченный от OTTD, но тем не менее касается разработки подобных игр.
Уважаемые форумчане подскажите как строится игровой цикл в подобных играх. Насколько я понимаю есть некий "игровой цикл". За один проход изменяется положение каждого объекта, затем происходит вывод на экран. Смена положения расчитывается исходя из скорости транспорта и времени цикла (фиксированное). Получается, что при обработке 30 раз в секунду имеем 30 кадров в секунду с равномерно движущимися машинками, поездами ...
Все замечательно пока у нас фиксированная скорость. А что делать если мы хотим изменить скорость увеличив или уменьшив ее раза в три?
Если изменим время одного "игрового цикла", то получим иное поведение транспорта так как пропустить в ожидании (например в ожидании зеленого на светофоре) один цикл при скорости 1:3 это уже будет не тоже самое что при скорости 1:1. А значит поезда станут ездить медленней и доход будет иной.
Кто знает как реализованно ускорение в OTTD? Сдается мне, что "игровой цикл" просто вызывается в два раза чаще, а значит вся обработка ровно таже самая, просто на экране мы видим более быстрое движение поездов. Но нут другая засада - мы не можем замедлять ход времени, а ускоряться можем только в кратное кол-во раз х2, х3, х4, х5, х6 и т.д.
В идеале это что-то вроде Simutrans-овского подхода ко времени. Но как это реализованно на уровне алгоритмов????
Заранее благодарю за советы и мысли. Попробую еще поискать на игровых форумах, если сам найду что-то стоящее отпишу сюда если будет интересно.