Останнім часом я маю справу з деякими проблемами тремтіння частоти кадрів зі своєю грою, і, здається, найкращим рішенням було б те, що запропонував Гленн Фідлер (Gaffer on Games) у класичному « Виправити свій графік часу! стаття.
Тепер - я вже використовую фіксований крок часу для свого оновлення. Проблема полягає в тому, що я не роблю запропоновану інтерполяцію для надання. Підсумок полягає в тому, що я отримую подвоєні або пропущені кадри, якщо показник візуалізації не відповідає моїй швидкості оновлення. Вони можуть бути візуально помітні.
Тож я хотів би додати інтерполяцію до своєї гри - і мені цікаво знати, як інші структурували свої дані та код для того, щоб це підтримати.
Очевидно, мені потрібно буде зберігати (де? / Як?) Дві копії інформації про стан гри, що стосуються мого рендерінга, щоб вона могла інтерполювати між ними.
Додатково - це здається гарним місцем для додавання ниток. Я думаю, що потік оновлення може працювати над третьою копією ігрового стану, залишаючи інші дві копії лише для читання для потоку візуалізації. (Це гарна ідея?)
Схоже, наявність двох-трьох версій стану гри може внести продуктивність і - що набагато важливіше - проблеми з надійністю та продуктивністю розробника, порівняно з наявністю лише однієї версії. Тому мене особливо цікавлять методи пом'якшення цих питань.
Особливу увагу, на мою думку, є проблема, як обробляти додавання та видалення об'єктів із ігрового стану.
Нарешті, здається, що якийсь стан або безпосередньо не потрібен для візуалізації, або буде занадто складно відслідковувати різні версії (наприклад: сторонній фізичний двигун, який зберігає один стан) - тому мені було б цікаво знати, як люди обробляли такі дані в такій системі.