Создать запись
2777
0 Оставить Мнение 11 Апреля 2013
Оптимизация игры.. практика и немного теории.

Можно использовать три метода оптимизации игры:
  1. Улучшать алгортимы.
  2. Кэшировать данные.
  3. Показывать в игре ровно столько примитивов, сколько позволяет ее нормальная работа или урезание количества объектов на сцене.
Начнем с принципа построения карты в игре Лабиринт. Карта строилась размещением одинаковых элементов - стен по точкам где они должны были располагаться. Элементы - стены, состоят из 6 граней. Первая оптимизация для игры: убрать верхнюю грань - потолок, и нижнюю (пол) для стен, т. к. они не будут видны. Убрали. Что дальше? Дальше интереснее - будем считать что надо показывать только те грани которые видит пользователь в игре. Итого, расположив бок о бок две стенки, мы избавляемся от 2-ух граней в которых они соприкасаются. Немного, но и на том неплохо. Здесь уже алгоритм сложнее, но не на много: при инициализации карты мы будем запоминать какую грань показывать. Для этого просто берем и исходя из каждой стены проверяем ее соседей. Если стена есть рядом, мы запоминаем направление и образно помним что в этой области грани не будет, и так с каждой стенкой. Кому-то может показаться процесс такой модификации скучным, но как по мне, он совсем не скучный, а очень интересный, поскольку мы решаем одновременно две задачи: кэширования настоящей карты и удалением лишних графических примитивов со сцены. Даже наоборот, такая задача, должна подогреть интерес к разработке. В чем заключается кэширование? Кэширование заключается в том, что ОДИН раз, при загрузке, мы записываем в массив массив реальных граней, которые видит пользователь, а потом мы просто раз за разом их считываем, а не просчитываем заново. Экспериментально было выявлено, что смартфон отлично держит карту - 12x12, больше - уже появляются проблемы с производительностью, поэтому на будущее, будем делать двери, которые будут загружать новые уровни. Так у мы не будем каждый раз рисовать ВЕСЬ лабиринт, а только участки на которых мы находимся. В принципе это все.

Далее - будет.