"Super Meat Boy" - це складний платформер, який нещодавно вийшов на ПК, вимагаючи виняткового контролю та ідеальних піксельних стрибків. Код фізики в грі залежить від частоти кадрів, яка заблокована до 60 кадрів в секунду; це означає, що якщо ваш комп'ютер не зможе запустити гру на повній швидкості, фізика зійде з розуму, змусивши (крім усього іншого) вашого персонажа повільніше бігати і падати через землю. Крім того, якщо vsync вимкнено, гра працює надзвичайно швидко.
Чи могли б досвідчені з програмою 2D ігор пояснити, чому гра була закодована саме так? Невже фізичний цикл, що працює з постійною швидкістю, не стане кращим рішенням? (Насправді, я думаю, цикл фізики використовується для частин гри, оскільки деякі сутності продовжують нормально рухатися незалежно від частоти кадрів. З іншого боку, ваш персонаж працює так само [fps / 60].)
Мене турбує ця реалізація - це втрата абстракції між ігровим двигуном та графічною візуалізацією, яка залежить від конкретних системних речей, таких як монітор, відеокарта та процесор. Якщо з будь-якої причини ваш комп’ютер не може обробити vsync або не може запустити гру рівно 60 кадрів в секунду, вона зламається ефектно. Чому крок надання будь-яким чином повинен впливати на обчислення фізики? (Більшість ігор в даний час або сповільнюватимуть гру, або пропускають кадри.) З іншого боку, я розумію, що платформи старої школи на NES та SNES залежали від фіксованої частоти кадрів для більшої частини їхнього контролю та фізики. Чому це так, і чи можна було б створити формотворцю в цій вені, не маючи залежності від частоти кадрів? Чи обов'язково є втрата точності, якщо ви відокремлюєте відображення графіки від решти двигуна?
Дякую, і вибачте, якщо питання було заплутаним.