Автор | Сообщение |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 03.07.09 22:02:06 | |
| Последнее время многие взялись за ваяние собственных движков для игр на тему Дум. Я решил потренироваться и сделать двиг аля АлиенШутер на тему нашей любимой игры. Я решил, что составлять карту из тайлов фиксированного размера лучший вариант. Ниже я выложу ссылку на макетик, что наваял за пару вечеров. Скажу сразу, двиг еще не делал, основу редактора наваял . Мне нужен набор тайлов(пол, стены, без декораций) с текстурной разверткой, чтобы нормально протестить на вопрос производительности все это дело.
Ссылко на макет http://slil.ru/27810393
Управление: стрелки, мышь, пробел. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 04.07.09 00:09:00 | |
| А какие именно нужны? | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 04.07.09 00:25:21 | |
| Нужны 5х5. Чтобы лучше представить, например NWN2. Например корридор : 0,5 - стены, 4 - пол между ними. Угол корридора : тоже, но с 3-ей стороны еще стенка и т.д.
Лучше в 3ds, но, думаю md2 будет не хуже.
Но именно текстурная развертка нужна. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 04.07.09 00:28:05 | |
| то есть просто все возможные углы? И как они нужны - объектами как в образце или цельными мешами? И нужна ли на самом деле оборотная сторона тайла (низ и внешние края)? | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 04.07.09 00:44:54 | |
| На самом деле для теста подойдут просто тайлы типа ; пол, а по углам колонны(например 1х1), как в той демке, что выложил. Только нужны именно развертки. Чтобы в приложении я взял модель и сразу ей целиком текстуру назначил. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 04.07.09 00:51:51 | |
| Ну тогда нужен только полный образец текстуры (все стены и пол разные, например, просто разноцветные квадраты) Тогда для всех тайлов можно будет сделать одинаковую развёртку и потом удобно переключать текстуру в игре. И чтобы это смотрелось приличнее придётся использовать большие текстуры. | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 04.07.09 02:03:18 | |
| c4tnt, спасибо. Слух, можешь просто наложить текстуру на пол и на 4 колоны(любые пару штук найди). А потом запечь результат в 512х512 или 1024х1024? | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 09.07.09 22:25:25 | |
| c4tnt, большое спасибо. Завтра на основе развертки сделаю блендинг мап и через шейдер, думаю нормально наложу текстуры. Потом можно и бамп сделать попробовать. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 10.07.09 00:45:47 | |
| А в движке доступ к поверхностям есть? | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 10.07.09 20:27:44 | |
| , я в самом начале написал, что двига еще нет. К поверхностям, имеешь в виду, face'ы?
Ссылка, посмотри, правильно ли я на развертке указал веса текстур. К сожалению, через карту смешивания толком наложились только текстуры горизонтальных поверхностей. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 10.07.09 20:58:48 | |
| Просто если использовать тайлы для создания стен, текстура будет использоваться на редкость неэффективна. Может лучше генерировать структуру уровня простыми поверхностями с авторазвёрткой, а декорации добавлять уже моделями? | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 10.07.09 21:09:37 | |
| То, что декорации моделями, это естественно. Если делать тайлами, то легче будет сделать коллизии. Если использовать заранее текстурированные тайлы, то ограничение будет порядка 50 разных тайлов, прежде чем памяти будет отжираться слишком много. Я вот и хочу попробовать карту весов приспособить здесь, тогда каждый материал по 1 раза грузится. При текстурировании, например, ландшафта таким методом результат отличный и работает очень быстро. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 10.07.09 21:26:25 | |
| В ландшафте можно Vertexcolor использовать вместо добавочной текстуры - без шейдера можно смешать две текстуры, а с шейдером - четыре.
Текстура в той развёртке: http://c4tnt.ucoz.ru/testarea/diff2.jpg | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 10.07.09 22:00:47 | |
| Вроде, с шейдером можно и больше четырех (пример - прога Earth Sculptor), до 16-ти + lightmap + затемненность в альфа канале lightmap. Правда на более старых картах это делается в 2 прохода шейдера, в зависимости от текстурных юнитов. Спасибо за текстуру, попробую.
Добавлено спустя 23 минуты 21 секунду:
Глянул с твоей разверткой. При использовании 100 материалов с этой текстурой (с загрузкой каждой), памяти жрет 60 мб. Что-то меня это смущает(маловато отжирает). Хотя в коде, вроде все нормально, грузится каждая текстура... Спрошу там на форуме у себя.... | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 10.07.09 22:37:27 | |
| Кстати, могу подсказать быстрый коллайд выпуклой фигуры с плоскостью - нужно по очереди подставить координаты вершин в уравнение плоскости в качестве координат точки. Получится набор чисел, если они все имеют одинаковый знак - значит фигура не пересекает плоскость, если есть и положительные и отрицательные - значит есть пересечение. А если у всех плоскостей правильные нормали - можно проверять пересечение двух выпуклых объектов друг с другом.
А зачем тебе 100 материалов? | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 10.07.09 22:42:52 | |
| Не-не-не, здесь никакой сложной фигуры не нужно (я юзаю набор модулей, там все это уже есть). Нужно будет просто сделать простую форму коллизий, типа стены, пол, стат. объекты, и с ними уже коллизию вычислять. | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 10.07.09 22:49:06 | |
| Точно будет нужна возможность трассировать точку, а если ещё и произвольную форму трассировать, как в D3... У тебя же в демке игрок был в прямоугольном bbox-е, а так можно и цилиндрический использовать - с цилиндрами, конусамии ещё много чем ещё (главное - непрерывная первая производная, вроде) трюк тоже работает. Даже с NURB'сом вроде можно. | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 10.07.09 23:16:02 | |
| Это я все знаю, только, подумав, решил, что в данном случае, такая точность не нужна. | |
|
| |
Grey Recruit
| 32 |
Doom Rate: 1.14
|
Отправлено: 16.07.09 22:59:40 | |
| Думаю, все-таки, придется отдельно ставить тайлы, отдельно назначать каждому меш обжекту тайла материал. Это геморойней, но более гибко и позволяет не дублировать атомарные текстуры. Правда, назревает еще более зловещий вопрос: поиск пути. Для одного-двух объектов, работает все норм, но я боюсь, когда придется, допустим 50 или 100 обжектов просчитывать, этож ппц будет... | |
|
| |
c4tnt = Corporal =
| 182 |
Doom Rate: 1.92
|
Отправлено: 17.07.09 03:46:44 | |
| Так кластерная карта нужна и всё. Нужно просто покрыть всё пустое пространство сеткой из треугольников и создать список соседей для каждого треугольника. В игре нужно будет только узнать в каком треугольнике начало маршрута и в каком его конец, а потом проложить путь по центрам этих треугольников (С помощью A*, например). | |
|
| |
Grey Recruit
| 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 | |
|
| |