Оптимизация оригинальных карт

Материал из Pocket Fallout для КПК на PDA PC PPC Mobile.

Т.к. авторы оригинального Fallout не думали о портировании своего творения на КПК, карты у них получились громоздкими и ресурсоемкими. Например, в некоторых случаях 30% карты вообще не отображается за ненадобностью. И такие карты на КПК грузятся УЖАСНО долго (особенно если через скрипт), поэтому привожу данную статью, чтобы все знали как нужно «ручками» вырезать те части карты, которые не отображаются.
На самом деле это очень просто. Работа не пыльная и заключается в комментировании, а затем удалении того кода скрипта, который строит не отображаемые части карты.

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


Содержание

Список необходимых оптимизаций

  1. Чем меньше объектов на локации, тем лучше. На картах зачастую располагают неоправданно много статических объектов (например - деревьев). В Pocket F.A.L.L.O.U.T., в целях экономии ресурсов мобильного устройства, установлено ограничение на количество таких вот статических объектов (700 шт.). И для некоторых карт следует производить "вырубку лесов" иными словами - удалять не нужные объекты, сохраняя при этом антураж и атмосферу локации.
  2. Зоны выхода (коричневая или зеленая сеточка, лежащая на земле). Зоны выхода также воспринимаются движком как статические объекты на земле. Рекомендую зоны выхода создавать только по углам, это существенно сокращает затраты на отрисовку "сеточки".
  3. Используйте минимум изображений (для тайлов, юнитов, объектов). Скорость загрузки локации напрямую зависит от количества использованных на ней изображений.

Порядок изменения скрипта map_build.pfs

  1. Изменил значения m_build.AddMapViewPort() на «глаз» таким образом, чтобы видеть всю карту целиком
  2. В config.cfg прописал параметры :
debug_mode={1}
debug_map={<Имя карты>}
draw_tile_coord={1}
  1. Загрузил игру
  2. Выписал на бумажку диапазоны тайлов земли, которые будут отображены пользователю. Например: 1;1 – 44;39
  3. Открыл модуль строительства карты. Нашел процедуру procedure mInitFloor()
  4. Ориентируясь на Y координату в методе SetMapCellTile() я тупо комментировал все установки тайлов, удовлетворяющих условию из п.4 (пример ниже).
  5. Загружал заново игру с моей картой, смотрел все ли там в порядке, и если да – тупо удалял закомментированные участки кода

Пример

Мне необходимо удалить все, что не видно пользователю. То, что пользователь видит, я определил в п.4. Значит, я комментирую все до значения X=44; Y=39

m_build.SetMapCellTile(41, 39, 179);
m_build.SetMapCellTile(42, 39, 184);
m_build.SetMapCellTile(43, 39, 180);
m_build.SetMapCellTile(44, 39, 196);

//m_build.SetMapCellTile(45, 39, 191);
//m_build.SetMapCellTile(46, 39, 192);
//m_build.SetMapCellTile(47, 39, 191);
//m_build.SetMapCellTile(48, 39, 194);
//m_build.SetMapCellTile(49, 39, 191);
//m_build.SetMapCellTile(50, 39, 192);

Примечания

  • Эту операцию можно произвести не только с тайлами земли, но и с потолком, зонами выхода, различными объектами, которые авторы разместили вне зоны видимости пользователя.
  • Помним, что портируем карту на КПК! У КПК ресурсы и возможности послабее, чем у ПК. По этому стараемся убрать как можно больше ненужных объектов с карты (например, если на карте много деревьев, если убрать их 30%, то о\атмосферу карты этим не испортишь)
  • Не забываем расстанавливать точки обхода
Личные инструменты