Сайт Doom Power
 ПоискПоиск ВходВход
TDS Doom 3d
   Список разделов - Вокруг Doom - TDS Doom 3d
АвторСообщение
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 03.07.09 22:02:06

Последнее время многие взялись за ваяние собственных движков для игр на тему Дум. Я решил потренироваться и сделать двиг аля АлиенШутер на тему нашей любимой игры. Я решил, что составлять карту из тайлов фиксированного размера лучший вариант. Ниже я выложу ссылку на макетик, что наваял за пару вечеров. Скажу сразу, двиг еще не делал, основу редактора наваял . Мне нужен набор тайлов(пол, стены, без декораций) с текстурной разверткой, чтобы нормально протестить на вопрос производительности все это дело.
Ссылко на макет http://slil.ru/27810393
Управление: стрелки, мышь, пробел.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 04.07.09 00:09:00

А какие именно нужны?
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 04.07.09 00:25:21

Нужны 5х5. Чтобы лучше представить, например NWN2. Например корридор : 0,5 - стены, 4 - пол между ними. Угол корридора : тоже, но с 3-ей стороны еще стенка и т.д.
Лучше в 3ds, но, думаю md2 будет не хуже.
Но именно текстурная развертка нужна.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 04.07.09 00:28:05

то есть просто все возможные углы? И как они нужны - объектами как в образце или цельными мешами? И нужна ли на самом деле оборотная сторона тайла (низ и внешние края)?
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 04.07.09 00:44:54

На самом деле для теста подойдут просто тайлы типа ; пол, а по углам колонны(например 1х1), как в той демке, что выложил. Только нужны именно развертки. Чтобы в приложении я взял модель и сразу ей целиком текстуру назначил.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 04.07.09 00:51:51

Ну тогда нужен только полный образец текстуры (все стены и пол разные, например, просто разноцветные квадраты) Тогда для всех тайлов можно будет сделать одинаковую развёртку и потом удобно переключать текстуру в игре. И чтобы это смотрелось приличнее придётся использовать большие текстуры.
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 04.07.09 02:03:18

c4tnt, спасибо. Слух, можешь просто наложить текстуру на пол и на 4 колоны(любые пару штук найди). А потом запечь результат в 512х512 или 1024х1024?
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 04.07.09 21:08:23

http://c4tnt.ucoz.ru/testarea/testmesh.zip
Тестовый меш с развёрткой + текстура с развёрткой.
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 09.07.09 22:25:25

c4tnt, большое спасибо. Завтра на основе развертки сделаю блендинг мап и через шейдер, думаю нормально наложу текстуры. Потом можно и бамп сделать попробовать.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 10.07.09 00:45:47

А в движке доступ к поверхностям есть?
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 10.07.09 20:27:44

, я в самом начале написал, что двига еще нет. К поверхностям, имеешь в виду, face'ы?
Ссылка, посмотри, правильно ли я на развертке указал веса текстур. К сожалению, через карту смешивания толком наложились только текстуры горизонтальных поверхностей.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 10.07.09 20:58:48

Просто если использовать тайлы для создания стен, текстура будет использоваться на редкость неэффективна. Может лучше генерировать структуру уровня простыми поверхностями с авторазвёрткой, а декорации добавлять уже моделями?
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 10.07.09 21:09:37

То, что декорации моделями, это естественно. Если делать тайлами, то легче будет сделать коллизии. Если использовать заранее текстурированные тайлы, то ограничение будет порядка 50 разных тайлов, прежде чем памяти будет отжираться слишком много. Я вот и хочу попробовать карту весов приспособить здесь, тогда каждый материал по 1 раза грузится. При текстурировании, например, ландшафта таким методом результат отличный и работает очень быстро.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 10.07.09 21:26:25

В ландшафте можно Vertexcolor использовать вместо добавочной текстуры - без шейдера можно смешать две текстуры, а с шейдером - четыре.

Текстура в той развёртке: http://c4tnt.ucoz.ru/testarea/diff2.jpg
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 10.07.09 22:00:47

Вроде, с шейдером можно и больше четырех (пример - прога Earth Sculptor), до 16-ти + lightmap + затемненность в альфа канале lightmap. Правда на более старых картах это делается в 2 прохода шейдера, в зависимости от текстурных юнитов. Спасибо за текстуру, попробую.

Добавлено спустя 23 минуты 21 секунду:

Глянул с твоей разверткой. При использовании 100 материалов с этой текстурой (с загрузкой каждой), памяти жрет 60 мб. Что-то меня это смущает(маловато отжирает). Хотя в коде, вроде все нормально, грузится каждая текстура... Спрошу там на форуме у себя....
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 10.07.09 22:37:27

Кстати, могу подсказать быстрый коллайд выпуклой фигуры с плоскостью - нужно по очереди подставить координаты вершин в уравнение плоскости в качестве координат точки. Получится набор чисел, если они все имеют одинаковый знак - значит фигура не пересекает плоскость, если есть и положительные и отрицательные - значит есть пересечение. А если у всех плоскостей правильные нормали - можно проверять пересечение двух выпуклых объектов друг с другом.

А зачем тебе 100 материалов? Surprised
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 10.07.09 22:42:52

Не-не-не, здесь никакой сложной фигуры не нужно (я юзаю набор модулей, там все это уже есть). Нужно будет просто сделать простую форму коллизий, типа стены, пол, стат. объекты, и с ними уже коллизию вычислять.
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 10.07.09 22:49:06

Точно будет нужна возможность трассировать точку, а если ещё и произвольную форму трассировать, как в D3... У тебя же в демке игрок был в прямоугольном bbox-е, а так можно и цилиндрический использовать - с цилиндрами, конусамии ещё много чем ещё (главное - непрерывная первая производная, вроде) трюк тоже работает. Даже с NURB'сом вроде можно. Laughing
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 10.07.09 23:16:02

Это я все знаю, только, подумав, решил, что в данном случае, такая точность не нужна.
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 16.07.09 22:59:40

Думаю, все-таки, придется отдельно ставить тайлы, отдельно назначать каждому меш обжекту тайла материал. Это геморойней, но более гибко и позволяет не дублировать атомарные текстуры. Правда, назревает еще более зловещий вопрос: поиск пути. Для одного-двух объектов, работает все норм, но я боюсь, когда придется, допустим 50 или 100 обжектов просчитывать, этож ппц будет...
c4tnt
= Corporal =
Next rank: - Lance Corporal - after 28 points
182

Doom Rate: 1.92
Сообщение Отправлено: 17.07.09 03:46:44

Так кластерная карта нужна и всё. Нужно просто покрыть всё пустое пространство сеткой из треугольников и создать список соседей для каждого треугольника. В игре нужно будет только узнать в каком треугольнике начало маршрута и в каком его конец, а потом проложить путь по центрам этих треугольников (С помощью A*, например).
Grey
Recruit
Next rank: Marine after 8 points
32

Doom Rate: 1.14
Сообщение Отправлено: 22.07.09 23:43:42

Вот думаю над коллизиями между снарядами(плазма/пулемет) и тайлами. Плазма, та же, просчитывается при максимуме снарядов выпущенных(пока 255) при 70 фпс. Что будет, когда я буду просчитывать коллизии от пулемета, жа к томуже, может и от монстряковского, я не знаю...
Первую часть редактора, кстати наваял...

Добавлено спустя 2 дня 23 часа 24 минуты 22 секунды:

Интересная работа на двиге, которым пользуюсь.
http://www.youtube.com/watch?v=Ka5aNbvmWNM
http://www.youtube.com/watch?v=TxXE84-YGHI&feature=related
Страница 1 из 1Перейти наверх
   Список разделов - Вокруг Doom - TDS Doom 3d