![]() |
|
Модераторы: Rickert |
![]()
|
|
| ASSERT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.10.2007 Репутация: нет Всего: нет |
Здравствуйте!
У меня возникла такая проблемма. Создаю редактор карт для 2D игры на базе движка HGE. Карта строится из набора спрайтов ( 24 шт ) которые определленным образом сочетаются друг с другом. Получается своеобразный "паззл". С помощью этого набора возможно составить карту практически любой сложности и топологии. Вот здесь проблема: не могу спроектировать алгоритм автоподбора того или иного спрайта при редактировании. Я не хочу оставлять рисование карты по одному спрайту, выбирая из таблицы всех 24 спрайтов. Хочу сделать нечто подобное на StarCraft Editor - там тоже псевдоизометрия и наборы спрайтов. Может быть кто- нибудь уже сталкивался с такой проблеммой и успешно ее решил, или же встречал похожие алгоритмы? Очень надеюсь на помощь. Это сообщение отредактировал(а) ASSERT - 2.11.2007, 14:36 |
|||
|
||||
| WTF4XZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 16.4.2007 Где: 63 Самара Репутация: нет Всего: 5 |
Собственно несколько не понял вопрос
Как я понимаю то спрайт имеет 4 границы и нужно подбирать спрайт который будет сочитаться... могу предложить это сделать через 6 мерный массив, суть идеи: элемент - за что отвечает 0 - номер спрайта 1 - верхняя граница 2 - нижняя граница, и так далее с 3 и 4... 5 - проходимость или характеристика (гора, вода, дорога, и прочее) Задача идёт в следующем. Заполняем эту "таблицу" и далее начинаем "генерировать" подборка спрайта идёт по принципу: а) подходит ли по топография (понятия не имею что точно нужно. но здесь к примеру можно что то задавать к примеру число гор и прочего) б) может ли он вообще граничить с уже размещённым. в) размещение Собственно это подбор спрайта, ИМХО алгоритм сырой можно аптемезировать, писал на вскидку. Далее, это фсё накладывается на алгоритм генерации типа необходимой карты, игра 2Д по этому тип карты это матрица (двухмерный массив) заполненная. что там гора вода или космический корабль. ЗЫ. было бы не плохо представлять что именно я пытаюсь описать. какой нить линк на скрин от этой игры или подобия не помешал бы --------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера. |
|||
|
||||
| ASSERT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.10.2007 Репутация: нет Всего: нет |
Спасибо за совет, но с шестимерными массивами комп тяжеловато работает, тем более, что по этой схеме приходится в комбинаторном порядке делать довольно много проходов. Тем более, что пока у меня два ТИПА спрайтов - вода и лед и еще нет всяких там горок, тропинок и прочего мха
( Объекты я буду ставить вообще в отдельном слое. ) Да и еще один момент - я карты не генерю - я их сам рисую. Но твой совет меня натолкнул на пару интересных мычлей, попробую поэкспериментировать. |
|||
|
||||
| ASSERT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.10.2007 Репутация: нет Всего: нет |
Для всех, кто интересуется этой темой - я все-таки реализовал эту идею таким образом:
1. Каждый спрайт имеет битовую маску, которая описывает его топологию по краям ( по этой маске можно определить соответствие соседям со всех четырех сторон ). 2. Рисуем шаблоном ( кистью ), который представляет собой набор спрайтов, "дружащих" с собой. 3. При наложении этой кисти на имеющийся ландшафт - складываем маски налагающегося спрайта и имеющегося на ландшафте с помощью побитового ИЛИ 4. По результирующей маске находим нужный спрайт и ставим его на это место. Работает быстро и эффективно. Если художник грамотно нарисует бесшовные спрайты, можно таким образом нарисовать из них любой ландшафт одним касанием! |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |