| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > 2D ландшафт из спрайтов - проблема |
| Автор: ASSERT 2.11.2007, 14:35 |
| Здравствуйте! У меня возникла такая проблемма. Создаю редактор карт для 2D игры на базе движка HGE. Карта строится из набора спрайтов ( 24 шт ) которые определленным образом сочетаются друг с другом. Получается своеобразный "паззл". С помощью этого набора возможно составить карту практически любой сложности и топологии. Вот здесь проблема: не могу спроектировать алгоритм автоподбора того или иного спрайта при редактировании. Я не хочу оставлять рисование карты по одному спрайту, выбирая из таблицы всех 24 спрайтов. Хочу сделать нечто подобное на StarCraft Editor - там тоже псевдоизометрия и наборы спрайтов. Может быть кто- нибудь уже сталкивался с такой проблеммой и успешно ее решил, или же встречал похожие алгоритмы? Очень надеюсь на помощь. |
| Автор: WTF4XZ 3.11.2007, 02:33 |
| Собственно несколько не понял вопрос Как я понимаю то спрайт имеет 4 границы и нужно подбирать спрайт который будет сочитаться... могу предложить это сделать через 6 мерный массив, суть идеи: элемент - за что отвечает 0 - номер спрайта 1 - верхняя граница 2 - нижняя граница, и так далее с 3 и 4... 5 - проходимость или характеристика (гора, вода, дорога, и прочее) Задача идёт в следующем. Заполняем эту "таблицу" и далее начинаем "генерировать" подборка спрайта идёт по принципу: а) подходит ли по топография (понятия не имею что точно нужно. но здесь к примеру можно что то задавать к примеру число гор и прочего) б) может ли он вообще граничить с уже размещённым. в) размещение Собственно это подбор спрайта, ИМХО алгоритм сырой можно аптемезировать, писал на вскидку. Далее, это фсё накладывается на алгоритм генерации типа необходимой карты, игра 2Д по этому тип карты это матрица (двухмерный массив) заполненная. что там гора вода или космический корабль. ЗЫ. было бы не плохо представлять что именно я пытаюсь описать. какой нить линк на скрин от этой игры или подобия не помешал бы |
| Автор: ASSERT 6.11.2007, 10:05 |
| Спасибо за совет, но с шестимерными массивами комп тяжеловато работает, тем более, что по этой схеме приходится в комбинаторном порядке делать довольно много проходов. Тем более, что пока у меня два ТИПА спрайтов - вода и лед и еще нет всяких там горок, тропинок и прочего мха ( Объекты я буду ставить вообще в отдельном слое. ) Да и еще один момент - я карты не генерю - я их сам рисую. Но твой совет меня натолкнул на пару интересных мычлей, попробую поэкспериментировать. |
| Автор: ASSERT 7.11.2007, 09:47 |
| Для всех, кто интересуется этой темой - я все-таки реализовал эту идею таким образом: 1. Каждый спрайт имеет битовую маску, которая описывает его топологию по краям ( по этой маске можно определить соответствие соседям со всех четырех сторон ). 2. Рисуем шаблоном ( кистью ), который представляет собой набор спрайтов, "дружащих" с собой. 3. При наложении этой кисти на имеющийся ландшафт - складываем маски налагающегося спрайта и имеющегося на ландшафте с помощью побитового ИЛИ 4. По результирующей маске находим нужный спрайт и ставим его на это место. Работает быстро и эффективно. Если художник грамотно нарисует бесшовные спрайты, можно таким образом нарисовать из них любой ландшафт одним касанием! |