Игра Pyglet Snake - оптимизация или разные решения - PullRequest
1 голос
/ 16 июня 2020

Недавно я начал программировать на Pyglet. Я создал несколько игр, включая Snake. Мне удалось сделать простую его версию. Теперь я хочу перейти к более продвинутой версии Snake с меню, скинами, параметрами сложности, графикой, плавным движением, в далеком будущем потенциально многопользовательским и т. Д. c.

Моя идея заключалась в том, чтобы сложить несколько кругов друг на друга, чтобы получилась змея, похожая на slither.io.

Все работало нормально, пока я не попытался изменить тело змеи от solid цветов до чего-то более сложного. Оказывается, что pyglet.graphics.Batch () не имеет порядка, в котором будут отрисованы ваши спрайты, и вам нужно принудительно установить порядок с помощью OrderGroups . Однако для меня это крайне неэффективно.

Мой вопрос: есть ли способ заставить порядок в моих кругах более умным способом? Я попробовал просмотреть список спрайтов и нарисовать их в нужном мне порядке. Несмотря на то, что это сработало, производительность упала даже больше, чем с OrderGroups .

И еще лучший вопрос, как мне полностью избавиться от повторяющихся кругов? Я знаю, что рисовать так много файлов .png крайне неэффективно, но я не знаю, как еще добиться подобного вида.

Я готов переписать весь код, чтобы сделать его более эффективным и стабильным. Но я хотел бы, чтобы новый код мог как-то обрабатывать скины и другие вещи, о которых я упоминал.

Я знаю, что вы можете использовать OpenGL, чтобы каким-то образом создать движущуюся змейку на экране. Но я посмотрел на него, и он показался мне слишком продвинутым. Но если нет другого пути, я готов изучить его сейчас.

Любое понимание высоко ценится, вот мой код со всей графикой: https://github.com/teasin951/Snake

РЕДАКТИРОВАТЬ: Просто чтобы вы могли это представить, я в основном хочу добиться беглости работы с Google Snake в стиле slither.io

...