Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2D ландшафт из спрайтов - проблема, алгоритм автоподбора спрайтов 
:(
    Опции темы
ASSERT
Дата 2.11.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.10.2007

Репутация: нет
Всего: нет



Здравствуйте!

У меня возникла такая проблемма.

Создаю редактор карт для 2D игры на базе движка HGE. Карта строится из набора спрайтов ( 24 шт ) которые определленным образом сочетаются друг с другом. Получается своеобразный "паззл".
С помощью этого набора возможно составить карту практически любой сложности и топологии.

Вот здесь проблема: не могу спроектировать алгоритм автоподбора того или иного спрайта при редактировании. Я не хочу оставлять рисование карты по одному спрайту, выбирая из таблицы всех 24 спрайтов. Хочу сделать нечто подобное на StarCraft Editor - там тоже псевдоизометрия и наборы спрайтов.

Может быть кто- нибудь уже сталкивался с такой проблеммой и успешно ее решил, или же встречал похожие алгоритмы?

Очень надеюсь на помощь.

Это сообщение отредактировал(а) ASSERT - 2.11.2007, 14:36
PM MAIL ICQ   Вверх
WTF4XZ
Дата 3.11.2007, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Собственно несколько не понял вопрос smile
Как я понимаю то спрайт имеет 4 границы и нужно подбирать спрайт который будет сочитаться... могу предложить это сделать через 6 мерный массив, суть идеи:
элемент - за что отвечает
0 - номер спрайта
1 - верхняя граница
2 - нижняя граница, и так далее с 3 и 4...
5 - проходимость или характеристика (гора, вода, дорога, и прочее)

Задача идёт в следующем. Заполняем эту "таблицу" и далее начинаем "генерировать"
подборка спрайта идёт по принципу:
а) подходит ли по топография (понятия не имею что точно нужно. но здесь к примеру можно что то задавать к примеру число гор и прочего)
б) может ли он вообще граничить с уже размещённым.
в) размещение

Собственно это подбор спрайта, ИМХО алгоритм сырой можно аптемезировать, писал на вскидку.
Далее, это фсё накладывается на алгоритм генерации типа необходимой карты, игра 2Д по этому тип карты это матрица (двухмерный массив) заполненная. что там гора вода или космический корабль.

ЗЫ. было бы не плохо представлять что именно я пытаюсь описать. какой нить линк на скрин от этой игры или подобия не помешал бы smile
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
ASSERT
Дата 6.11.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.10.2007

Репутация: нет
Всего: нет



Спасибо за совет, но с шестимерными массивами комп тяжеловато работает, тем более, что по этой схеме приходится в комбинаторном порядке делать довольно много проходов. Тем более, что пока у меня два ТИПА спрайтов - вода и лед и еще нет всяких там горок, тропинок и прочего мха smile)) 
( Объекты я буду ставить вообще в отдельном слое. )

Да и еще один момент - я карты не генерю - я их сам рисую.


Но твой совет меня натолкнул на пару интересных мычлей, попробую поэкспериментировать. smile
PM MAIL ICQ   Вверх
ASSERT
Дата 7.11.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.10.2007

Репутация: нет
Всего: нет



Для всех, кто интересуется этой темой - я все-таки реализовал эту идею таким образом:

1. Каждый спрайт имеет битовую маску, которая описывает его топологию по краям ( по этой маске можно определить соответствие соседям со всех четырех сторон ).

2. Рисуем шаблоном ( кистью ), который представляет собой набор спрайтов, "дружащих" с собой.

3. При наложении этой кисти на имеющийся ландшафт - складываем маски налагающегося спрайта и имеющегося на ландшафте с помощью побитового ИЛИ

4. По результирующей маске находим нужный спрайт и ставим его на это место.

Работает быстро и эффективно. Если художник грамотно нарисует бесшовные спрайты, можно таким образом нарисовать из них любой ландшафт одним касанием! 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.