Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты на Unity

Ответ
 
Опции темы
Старый 12.07.2010, 23:27   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Bombers3d - генерация меша уровня

Что-то опять появилась ностальгия по Mine Bombers... и захотелось оживить заброшенный проект Bombers3D средствами Unity3d. Первое с чего-бы хотел начать - это с генерации сетки уровня.

Как это было реализовано раньше на Blitz3d (как работает можно в игре посмотреть на F8 - F10, точно не помню):
  1. Сетка уровня была разбита на вертикальные полосы
  2. При уничтожении любой клетки полосы или при изменении ее текстуры происходила перегенерация сетки всей полосы.
  3. На сетку накладывалась одна большая текстура, содержащая в себе все необходимые тайлы.
  4. Анимация текстур уровня (в той версии которая на сайте ее нету, анимаци восновном использовалась для тумана войны и оружия - "биомасса", которая кроме анимации еще и заполняла все свободное пространство) была выполнена путем отрисовки в эту большую текстуру новых кадров анимации на свои места.
  5. Генерация сетки полосы выполнялась очисткой меша и созданием заново нужных вершин, нормалей и индексов.
  6. Для тумана войны генерировалась более упрощенная сетка, т.к. он имел одинаковую текстуру.

Как это реализовать в юнити:
  1. Первое от чего хочется отказаться - это единая текстура. Хочется больше универсальности по изменению ресурсов в игре.
  2. Так же хочется отказаться от рендеринга в текстуру для создания анимированных тайлов. (Хочется чтобы игру можно было скомпилировать на бесплатной версии Юнити).
  3. Хочется добиться минимального переключения текстур при визуализации уровня. Возможно для этого придется генерировать меши для каждого материала отдельно.
  4. Стоит ли сохранить линейчатую структуру генерации стеки?
  5. Хочется использовать карты нормалей для лучшего освещения (ну с этим проблем думаю не возникнет).
  6. По результатам хочется создать редактор для уровней игры.

Хотелось бы выслушать мнение форумчан по этому поводу. Может у кого есть более интересные идеи по этому поводу?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 02:53   #2
Illidan
Разработчик
 
Регистрация: 06.08.2007
Сообщений: 473
Написано 131 полезных сообщений
(для 257 пользователей)
Ответ: Bombers3d - генерация меша уровня

так непонятно ничего, треба ссылочку на проект
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 08:56   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Сообщение от Illidan Посмотреть сообщение
так непонятно ничего, треба ссылочку на проект
Первый пост, на слове "Bombers3D"
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 10:18   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

*Мысли в слух*
Если не задумываться о генерации уровня, а ставить префабы в нужные места с полной геометрией куба без нижней части, то при уровне размером 100х60 получается 6000 объектов и порядка 60000 полигонов/120000 вершин. Если принять во внимание что для одинаковых блоков уровня будет использоваться инстансинг, то на современных машинах все будет летать... но так делать не хочется, а хочется сделать оптимально.

UPD: Другим подходом может быть создание вершинного буфера на весь уровень, а при регенерации сетки создавать только индексые буфферы для каждого из материалов. Такой вариант возможно будет одним из оптимальных вариантов - создать для каждого материала динамические списки индексов и пересоздавать их при необходимости. Таким образом возможно получится минимизировать число переключений текстур и повысить скорость рендеринга.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 13:08   #5
jimon
 
Сообщений: n/a
Ответ: Bombers3d - генерация меша уровня

чет ты усложняешь самое примитивное, у тебя там сетка 10000 * 10000 и в каждой клетке уникальная модель по 5 тыс поликов ? нет ! не парься зря, или юнити настолько тормознутое ?
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (13.07.2010)
Старый 13.07.2010, 13:26   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Т.е. просто расставлять заготовленные префабы блоков уровня? Юнити то не тормознутое, вспоминается тормознутость блитца Плюс хочется максимально оптимизировать производительность... может я и заморачиваюсь, в общем будет видно после тестов.

UPD: С другой стороны, если принять во внимание то, что каждый блок может иметь до пяти текстур, то не ясно как поведет себя рендер юнити... будем пробовать
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 20:46   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Эксперимент с генерацией единого меша для всего уровня не удался, т.к. Юнити не поддерживает сетки с более чем 65к вершин. Будем разбивать.

UPD: для использования какрт нормалей нужно генерить так же тангенты, что мне лень )) Буду генерировать поле с помощью готовых блоков. Посмотрю на производительность.

UPD2: Сгенерированное поле 100х60 с одним материалом дало не очень привлекательную производительность в редакторе на моем ноуте. Всетаки буду пытаться генерировать поле. Подготовлю заранее тангенты.
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 13.07.2010 в 22:55.
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 23:00   #8
jimon
 
Сообщений: n/a
Ответ: Bombers3d - генерация меша уровня

pax
Юнити не поддерживает сетки с более чем 65к вершин.
а там вообще нет 4 байтовых индексов ? мм страшно уж могли бы сами сделать абстракцию для разбиения

для использования какрт нормалей нужно генерить так же тангенты
там точно нету TBN генератора ? зачем тогда такой двиг ?
 
Ответить с цитированием
Старый 14.07.2010, 00:51   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Сообщение от jimon Посмотреть сообщение
а там вообще нет 4 байтовых индексов ? мм страшно уж могли бы сами сделать абстракцию для разбиения
Вероятно это сделано для поддержки старых видеокарт. При импорте скорее всего большие сетки разбиваются. Не пробовал такие модели импортировать.

Сообщение от jimon Посмотреть сообщение
там точно нету TBN генератора ? зачем тогда такой двиг ?
Тангенты можно сгенерировать при импорте модели. Для расчета при ручном создании меша нет, почему-то не сделали такую возможность. Нашел исходник расчета тангентов, что-то он нормально не работает. Подобрал вручную... слава богу для боксов это было просто )
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.07.2010, 10:16   #10
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Генерация уровня на основе готовых блоков не подошла из-за своей артефактности. В стыках блоков проявляются линии, вспоминается, что тоже самое было и в блице. Остается генерация сетки налету. В связи с оптимизацией по материалам я принял решение генерировать сетку полинейно (как и было), но группировать рядом стоящие линии для меньшего количества дравколов. Например по две - четыре линии. Это в 2-4 раза снизит количество переключений текстур при отрисовке меша уровня.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.07.2010, 12:50   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Первый сгенерированный уровень пока с одной текстурой, но уже предусмотрено любое их количество и даже анимацию текстур на уровне будет легко сделать. Меш уровня разбит на части, каждая шириной по четыре линии (это настраивается). Во вьюпорте выбрана первая.
UPD: Тесты показали, что регенерация сетки одной части меша, состоящей из четырех полос занимает менее миллисекунды машинного времени даже на моем ноуте, чему я рад, т.к. большие взрывы некоторых предполагаемых видов оружия будут вызывать перегенерацию сетки всего уровня
Миниатюры
Нажмите на изображение для увеличения
Название: firstGeneratedLevel.jpg
Просмотров: 1216
Размер:	70.8 Кб
ID:	10681  
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Arton (14.07.2010), Fatalix3d (18.07.2010), Nuprahtor (14.07.2010)
Старый 14.07.2010, 18:04   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Добавлена возможность вращать любую грань на 90, 180 и 270 градусов. Будем экономить текстуры!

Чтобы не сложно было делать дизайн уровней будет заготовлено много вариантов блоков игрового уровня и на их основе будет построен редактор.
Миниатюры
Нажмите на изображение для увеличения
Название: firstGeneratedLevelRotation.jpg
Просмотров: 1115
Размер:	67.7 Кб
ID:	10682  
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Fatalix3d (18.07.2010)
Старый 14.07.2010, 19:27   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Тестирование системы наложения материалов.

На скрине рандомно сгенерированный уровень из предустановленных восьми блоков.

UPD: Добавил скрин уровня со скосом, который говорит о том, что можно создавать не только прямоугольные уровни )
Миниатюры
Нажмите на изображение для увеличения
Название: MaterialSystem1.jpg
Просмотров: 1110
Размер:	62.7 Кб
ID:	10683  Нажмите на изображение для увеличения
Название: nonOrtoLevel.jpg
Просмотров: 1104
Размер:	35.9 Кб
ID:	10686  
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 14.07.2010 в 20:35.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Arton (15.07.2010), Fatalix3d (18.07.2010), is.SarCasm (14.07.2010)
Старый 16.07.2010, 21:28   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Появились зачатки редактора уровней. Демо по следующей ссылке:
http://shgames.ru/bombers_ed.html

Описание:
Clear Level Data - очистка всего уровня (по умолчанию сгенерирована билиберда, так что надо будет на нее нажать)
Floor - "рисование" пола
Block - "рисование" блоков
Clear - удаление данных ячейки
Кнопка Change меняет текущую кисть для "рисования"

В аттаче скрин созданного уровня "Аля Бомбермен"

UPD: Сетка уровня теперь разделена на блоки 10х10, уровень будет всегда размером 100х100 (думаю такого размера хватит за глаза), сетка создается только для используемых блоков.
Миниатюры
Нажмите на изображение для увеличения
Название: levelEditor.jpg
Просмотров: 1245
Размер:	103.2 Кб
ID:	10709  
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Fatalix3d (18.07.2010), h1dd3n (18.07.2010), Nex (17.07.2010), Reks888 (17.07.2010)
Старый 18.07.2010, 00:33   #15
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bombers3d - генерация меша уровня

Запилил резиновую рамку для редактора не смотря на жару. Ссылка та же (пост #14). Активировать рамку можно нажав кнопку "Rect".
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Fatalix3d (18.07.2010), h1dd3n (18.07.2010), Nuprahtor (18.07.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:06.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com