🎮 Ранее я уже упоминал интересный блог Глена Фидлера — основателя NetworkNext и эксперта по мультиплееру
(тот пост — тык).
У него есть легендарная статья о реализации игрового цикла с разной частотой обновления логики и рендера
👉 Fix Your Timestep!
Но сегодня — не о ней 😉
Я наткнулся на отличное продолжение этой темы и хочу поделиться ею с вами:
👉 Upgrade Your Timestep!
она развивает идеи Фидлера и добавляет несколько практичных апгрейдов.
🧠 хранить время в u64 (uint64) (наносекундах), а не в double — потому что при долгой работе float и double теряют точность, и симуляция со временем начинает «плыть»;
🛠 рассмотреть проблему времени в шейдерах, которые используют float, — автор ссылается на решение Джонатана Блоу (автор Braid, The Witness (очень советую, кстати, оба эти проекта - покажите их детям) ) и предлагает своё возможное улучшение;
🐌внедрить timescale, который позволяет ускорять или замедлять течение времени без нарушения детерминизма;
⏱️ добавить таймеры, работающие на этой же временной системе — удобно для событий вроде задержек, подсказок и внутриигровых таймингов.
(тот пост — тык).
У него есть легендарная статья о реализации игрового цикла с разной частотой обновления логики и рендера
👉 Fix Your Timestep!
Но сегодня — не о ней 😉
Я наткнулся на отличное продолжение этой темы и хочу поделиться ею с вами:
👉 Upgrade Your Timestep!
она развивает идеи Фидлера и добавляет несколько практичных апгрейдов.
🧠 хранить время в u64 (uint64) (наносекундах), а не в double — потому что при долгой работе float и double теряют точность, и симуляция со временем начинает «плыть»;
🛠 рассмотреть проблему времени в шейдерах, которые используют float, — автор ссылается на решение Джонатана Блоу (автор Braid, The Witness (очень советую, кстати, оба эти проекта - покажите их детям) ) и предлагает своё возможное улучшение;
🐌внедрить timescale, который позволяет ускорять или замедлять течение времени без нарушения детерминизма;
⏱️ добавить таймеры, работающие на этой же временной системе — удобно для событий вроде задержек, подсказок и внутриигровых таймингов.