Использование Tile Maps с cocos2d - как мне обрабатывать большое количество изображений?

Я создаю игру, в которой пользователи (игроки) могут построить свой собственный город. Там они могут строить дома, добавлять в них мебель и т. Д. В основном аналогично The Sims.

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

  • земля
  • этаж
  • стены и мебель (в основном все)

Все эти слои изначально пусты. Пользователь должен их заполнить.

Я использую cocos2d v2 и его CCTMXTiledMap для рендеринга этой тайловой карты в моем проекте.

Я понял одну вещь: слои, определенные на карте, CCTMXLayers, поддерживают изображения только из одного набора тайлов (#).

Это привело к следующим вопросам, на которые мне нужно ответить, прежде чем приступить к серьезной разработке игры.

Вопрос 1. Эта игра была бы неинтересной, если бы у всех моих домов были одинаковые стены. Мне очень нужно множество разных видов стен в «стенах и мебели» - тайлсет. Насколько большим может быть набор плиток? Обратите внимание, что мне нужно хранить здесь не только различные текстуры стен, но и текстуры, представляющие мебель из-за (#).

Вопрос 2. Вы меняете плитки в CCTMXTiledMap (насколько я знаю ...?) С помощью метода setGID для этого конкретного слоя. Вернемся к примеру с разными стенами. Допустим, игрок может выбирать между разными стенами из прокручивающегося меню HUD-Layer. Когда игрок выбирает определенную стену - как мне узнать, какая GID стена у этой конкретной стены (во время выполнения)?

P.S Я новичок как в cocos2d, так и в Tiled, поэтому, если я выбрал неправильный подход, скажите, пожалуйста, какой подход мне следует использовать в подобной игре. Я тоже изучаю Kobold Touch - может, это лучше мне подходит?


person Eyeball    schedule 13.10.2014    source источник


Ответы (1)


1) Ваш набор плиток должен оставаться в пределах размера текстуры вашего целевого устройства. В основном вы всегда в безопасности с разрешением 1024x1024 пикселей, но последние устройства поддерживают до 4096x4096 пикселей. См. http://www.uchidacoonga.com/2012/04/quick-tip-max-texture-size/

2) Вы получаете GID, беря локальный индекс тайла в его наборе тайлов и добавляя значение свойства tileset.firstGid.

Я бы посоветовал вам изучить Kobold Kit или, возможно, перейти на более новую версию cocos2d (если они избавились от ограничения по одному тайлсету на слой). Один набор тайлов на слой - это понятное ограничение по соображениям производительности, но также довольно неприятно обходиться, если вам нужно.

person Thorbjørn Lindeijer    schedule 13.10.2014