Имеется идея по созданию игры в стиле City Building Series (Caesar, Zeus, Paraoh, Emperor) на Unity3D. Карта в ней представляет собой поле, поделенное на тайлы. Каждый тайл имеет набор свойств.
В связи с этим возник вопрос: как генерировать ландшафт? В настоящее время я использую Plane в качестве тайла. Расставлять вручную - занятие долгое и нерациональное. Поэтому я решил использовать заранее определенный файл, описывающий карту, например, в виде таблицы. Пока в голову приходит только использование XML, хранящий информацию о каждом тайле на игровом поле.
Как можно реализовать данный механизм в Unity3D и верный ли я выбрал путь?
p.s.: На одном из YouTube каналов видел вариант создания всей карты на одном Plane (урок был о генерации Tile map как в Civilization), генерируемом автоматически. В качестве одного тайла там использовался квадрат из двух треугольников этого Plane. Но я не уверен, что в моем случае это подходящий вариант.
Ответ
Для статического генерируемого ландшафта Использование XML, особенно при большом размере карты, на мой взгляд очень ресурсоемко.
Вместо этого предлагаю использовать битмап-изображение, каждый пиксель которого своими четыремя байтами (ARGB) способен описать 2^32 (>4 млрд) возможных состояний одного тайла. Изображения отлично комбинируются, что позволяет строить сложные и протяженные ландшафты.
На практике я использовал несколько таких карт, отдельно для слоев ландшафта, растительности, дорог, воды и карта доступности. Последняя определяла может ли персонаж пройти через тайл, если да то с какой скоростью.
Визуально все эти карты элементарно редактируются в любом графическом редакторе.
Комментариев нет:
Отправить комментарий