Я думал, что у меня должен быть
отдельная тема для игровой логики
и в цикле рендеринга, я должен просто
«сделать снимок» текущей игры
логика и дисплей что, нет?
Нет способа, который был бы простым, безопасным и быстрым, чтобы сделать снимок огромного комка игрового состояния. Вы можете создать двойной буфер, что, вероятно, является следующей лучшей вещью. Но это все равно не решит проблему, так что нет, вы бы этого не сделали, по крайней мере, не для этой цели.
Допустим, у меня есть мяч с Х = 0, и
стена в X = 10 и в медленной машине,
первая петля помещает шар в X = 7
и во втором цикле это помещает
шар в X = 14. Было бы просто разбить
игра!
Поток двух не решит этого, если только вы не сможете гарантировать, что каждый используемый вами компьютер всегда будет достаточно быстрым для проверки X = 1, X = 2, X = 3 ... X = 10. Вы не можете сделать эту гарантию. И даже если бы вы могли, редко использовать целые числа для позиций. Можете ли вы итеративно проверить X = 0,0000001, X = 0,0000002, X = 0,0000003 ... X = 0,99999999, X = 10,00000? Нет.
Как вы, ребята, опытные разработчики игр работаете над этим?
У нас обычно все еще есть один цикл. ввод, обновление, рендеринг, повтор. Как вы упомянули, проблемы столкновений решаются с помощью метода обнаружения столкновений, который вычисляет площадь, через которую должен пройти объект, например. разрешение для X = [от 0 до 17]. На очень медленной машине это может быть X = [0-50], а на быстрой машине это может быть X = [0-5], за которым следует X = [5-10], но каждый будет работать так, как ожидается.