Я работаю над игрой, которая имеет разрушаемую местность (как в игре Worms или Scorched Earth) и использует точное определение столкновений с помощью масок.
Уровень представляет собой единую поверхность, и теперь я создаю копию для каждого кадра, рисую на ней все спрайты, которые нужно нарисовать, а затем переносю видимую область на поверхность отображения.
Есть ли способ избежать копирования всей поверхности уровня в каждом кадре и по-прежнему иметь возможность использовать инструменты идеального столкновения пикселей, найденные в pygame?
Я попытался сначала скопировать поверхность уровня, а затем скопировать каждый спрайт на экране (с их координатами блитов, настроенными камерой, за исключением персонажа игрока, координаты которого статичны), но в этом случае система обнаружения столкновений разваливается, и я могу '' Кажется, я не могу это исправить.
ОБНОВИТЬ
Мне удалось заставить его работать следующим образом: при рисовании спрайтов я конвертирую их координаты игрового мира (которые в основном являются координатами относительно начала растрового изображения уровня) в экранные координаты (координаты относительно камеры, которая в данный момент является видимая область уровня).
На этапе обнаружения столкновений я использую координаты и ограничивающие рамки, расположенные относительно поверхности уровня; так же, как указано выше. Дело в том, что положение камеры привязано к положению игрока, которое не является и не должно было быть статическим значением (я действительно не уверен, как мне удалось не осознавать это так долго).
Хотя это решает мою проблему, ответ ниже представляет собой гораздо более исчерпывающий взгляд на то, как улучшить производительность в такой ситуации. Я также открыт для предложений по использованию других библиотек, которые упростят или ускорят испытание. Я думал о пиглете и раббите, но похоже, что там та же проблема.