[проект] Tower Defense на WebGL
Вложений: 1
Актуальная информация (23.10.2013)
Ссылка на демо ------ Итак, я вздумал сделать ещё один проект на WebGL и моём смеходвижке, название которому (движку-то) уже придумано, но не публикуется. Скажу сразу: эта игра будет являться аллюзией на Cursed Treausre. Или клоном, называйте как хотите (хотя если на то пошло, то все Tower Defensы клоны друг друга, а все шутеры от первого лица — клоны Quake'а). По крайней мере основная механика будет та же. Мудель, скажете, нехрен копировать то, что уже есть. Но я решил, что лучше уж подражать чему-то хорошему, чем выдумывать что-то своё, но плохое. По крайней мере, оригинал мне очень понравился, и я бы не прочь поиграть в продолжение, которого нет. Так что берём бразды в свои руки! Тем более, простора для творчества будет и так предостаточно! Вся игра планируется в 3D, довольно лоупольном, но симпатичном. Ведь делать это я буду своими кривыми ручонками с минимальным third-party (в идеале вообще без него, т.к. я ничего не знаю о том, ждёт ли проект коммерческий успех), а, значит, заранее нужно замахнуться на тот уровень медии, который я могу осилить сам и при этом в чтоб не увязнуть на год. Запланирована 1 неделя на рисовку всей графики, не больше. Цели проекта: 1. Тестирование, "укрепление" и прокачка движка (ибо фичи есть, но не оттестированы, и есть список желаемых фич). Игра, как известно, лучший тест для движка. 2. Готовый проект в портфолио, который не стыдно продемонстрировать >>:( 3. Прокачка навыков, куда без этого? 4. Возможно, копеечка на ВК :-D И в дальнейшем на ФБ. Впрочем, не рассчитываю на окупаемость, но если упадёт копеечка, это поднимет моё ЧСВ :-D Что на данный момент сделано: 1. Левопяточный редактор уровней (на скрине). Сделан он на HTML/JS и его даже можно потыкать: http://maslov.co/webgl/2/editor.html Обозначения схематичные, сохранять он пока не умеет (ещё не решил, будет он сохранять в бинарник или же будет высирать мне JSON) Дальнейший план: Задача 2: заставить движок хавать высер из левел-эдитора и расставлять кубики как полагается пока что моделек не будет будут просто кубики разных цветов Задача 3: заставить генерировать именно меш земли, т.е. цельный, а не из разных дипов Задача 4: сделать красивые переходы между разными типами террайна Задача 5: вставить тестовые модельки и текстуры чтобы когда придёт время заменять на релизные, я бы просто заменил файлы и всё, не пришлось бы ничо в коде переделывать Задача 6: пик по этому добру (о да, в движке до сих пор нет пика! значит надо сделать) Задача 7: расстановка начальной и конечной точки Задача 8: враги-кубы, бегущие из начала в конечную точку, путенах А* Задача 9: башни, стрельба говном по врагам Задача 10: апгрейды башен, меню апгрейда Далее по обстоятельствам. Итак, я начал. Надеюсь, кончу. :-D О прогрессе буду постить сюда. И да, не пора ли нам сделать раздел "Проекты на WebGL" ? У нас их уже, как-никак, два :-D |
Ответ: [проект] Tower Defense на WebGL
Цитата:
из террейна можно посчитать distance field заранее, пикать его будет оч быстро и весьма точно. |
Ответ: [проект] Tower Defense на WebGL
Да конечно не по деревьям, а по клеткам. Террейн не обычный террейн а скорее майнкрафтоподобный.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
В редакторе сделал экспорт и импорт в игру (пункт "Задача 2").
Я даже знаю, кто у меня будет тестовой моделькой крипа :-D http://maslov.co/webgl/2/maps/1.map Вот json этой мапы http://maslov.co/webgl/2/editor.html Можно даже его сюда заимпортить и посмотреть |
Ответ: [проект] Tower Defense на WebGL
Делай массив индексов для мапы, а то такой формат как у тебя солько же будет занимать?
Вот так лучше будет ( http://files.moka.co/map.json ): PHP код:
А можно его вообще одной строкой а не массивом выводить. Читаем: PHP код:
PHP код:
PHP код:
ЗЫ, с div'ами ты конечно прикольнулся в редакторе, не мог канвой сделать? |
Ответ: [проект] Tower Defense на WebGL
Да мне не жалко пары килобайт на это дело, пусть останется словами. 225 клеток всего-то. В конце-то концов, это же не основополагающая вещь и не боттлнек даже.
Канвой не мог, мне в разы удобнее с дивами. И если ты посмотришь на editor.js, то там всё завязано на эвентах по html-элементам. С канвой бы пришлось писать намного больше. Планы на ближайшее время: 1. Делаю в Максе тестовые тайлы. 2. Делаю объединение буферов 3. Делаю чтоб делалась карта не из кубиков, а из смоделленных тайлов и не отдельными Entity, а а один буфер 4. Разберусь наконец с проецированием в камеру, что-то я там накосячил в прошлый раз 5. Делаю пик по полигонам 6. Делаю ещё второй меш попроще тупо из квадов, чтобы пикать уже по нему, к тому же по дороге пикать не надо будет вообще 7. По координатам пика делаю определение клетки куда ткнули 8. Отлично, теперь я могу мышкой выбирать нужную клетку и у меня террайн, который я потом могу сделать красивый! |
Ответ: [проект] Tower Defense на WebGL
Кода да - мало..
Но в плане формата, всё же это тупой копи-паст, и если кто-то захочет заюзать формат - это же гемор то какой его распаршивать. Тем более хочешь заменить весь тайл-сет - без проблем, меняем просто первый массив, и карту не трогаем. Да и почему 15х15, ведь числа корявые :D 16х16 давай. |
Ответ: [проект] Tower Defense на WebGL
Да ладно гемор распаршивать? Это ж JSON!
И кто его захочет заюзать? Это как раз одна из тех вещей, которые делаются "на 1 раз". |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Запилил объединение буферов (Задача 2).
Ничего выдающегося, да и показывать пока нечего. Ну, покажу, пожалуй, пирамиду и сферу, с которыми я тренировался (синий объект - результат объединения буферов двух раздельных объектов), ведь тема должна содержать картинки, верно? |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Делаю тайлы.
Решил разделить их на два яруса: нижний (земля гориз. -> земля верт.) и верхний (земля верт. -> один из трёх типов местности либо переход между ними). Пока что мучаю нижний ярус, накопилась куча лапши, придётся это дело размотать прежде чем двигаться дальше. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Во! Сделал нижний ярус как полагается! Серые клетки соответствуют отсутствию в них меша. Просто пока второй ярус не готов, я их вставил, чтобы было понятно, что там что-то есть.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Убил последние косячки. Теперь можно браться за второй ярус тайлов.
Там будет посложнее, ибо там уже будут переходы не только между низом/верхом но и разными типами местности. Это значит, что будет нужно по 13 однородных тайлов для каждого типа местности и по 24 для каждой пары. То есть 13 * 3 + 24 * 3 Итого ещё 111 тайлов надо сделать. Такие дела. Зато как в Варкравте 3 :-D и даже лучше. |
Ответ: [проект] Tower Defense на WebGL
Цитата:
|
Ответ: [проект] Tower Defense на WebGL
Это похоже на какой то своеобразный дебаг отображающий какой то цикл. :)
|
Ответ: [проект] Tower Defense на WebGL
Цитата:
P.S. Оригинальную игру прошёл дважды: один раз как-то давно, а второй раз, когда увидел эту тему. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Цитата:
Цитата:
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Сделал верхний ярус.
Тайлы криво сходятся, да и насрать — на то они и тестовые. Сначала "промахнулся" с габаритами, но теперь понял, как ннада. По такому случаю можно сразу и "чистовые" сделать. Завтра надо будет подумать над текстурой. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
SUPER GLADKOU
|
Ответ: [проект] Tower Defense на WebGL
Даёшь геймплей!
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
KAK W WARCRAFTE POCONI
|
Ответ: [проект] Tower Defense на WebGL
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 2
Тайлы в Максе и что из них получается.
Я принял гениальное решение заменить камень на осень. Таким образом получается различие только в текстуре и не надо городить сложные переходы в сетке (от такого количества тайлов я охренел бы когда стал бы это вырисовывать). Нынешняя текстура — дерьмо наколеночное, но я считаю, что годная текса вкупе с различными вариантами тайлов и неровными бортиками сделает зашибись. |
Ответ: [проект] Tower Defense на WebGL
А почему не генерить это дело процедурно? В разы более гибко получиться, и никакой зависимости от текстур и переходов - корректный шейдер и готово.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Сделал балду, по которой будет делаться пик для строительства башен. Ещё бы сам пик в движке сделать :-D Это моя следующая задача. Для простоты пока сделаю без получения 3D-координаты, а лишь номер треугольника, по которому уже буду опеределять клетку, куда ткнули. Если так, то такой "пик" вообще плёвое дело, а в будущем при надобности доделаю как полагается.
А да, ещё карта сама себя окружает аналогичными тайлами, чтобы не было пустоты по краям. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Форма тайлов, как вариант.
Только это было для одного типа местности на одну карту. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Мини-апдейт: сделал [аналог блицовского] cameraProject
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Делаю говнопик. Меня убедили таки делать его частным случаем. Вот тест разпроецирования из камеры:
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Сделал камераПик на плоскость.
Как меня убедил мр_ф, (кстати, неоценимо меня проконсультировавший по данному вопросу), в таком частном случае пик по поликам не нужен. Таким образом я буду получать координаты x,z и по ним простецки получать номер ячейки игрового поля. А больше мне ничего и не надо на данном этапе. Завтра у лошков военная кафедра, а у благородных военбилет-донов свободный день, так что я посвящу его продолжению работы над пиком игровой клетки и можно будет уже переходить к следующей задаче. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 2
Джентльмены! Представляю вашему вниманию новейшие образцы моего творчества!
Полотна называются: "5-минут-текстура" и "5-минут-модель" соответственно. |
Ответ: [проект] Tower Defense на WebGL
Вертикальные рёбра - фи, делай их кривыми и широкими сверху.
|
Ответ: [проект] Tower Defense на WebGL
|
Ответ: [проект] Tower Defense на WebGL
Продолжаем 5-минут-творчество
|
Ответ: [проект] Tower Defense на WebGL
Снова - симетричность в таком стиле - только всё портит. Делай не симетрично..
|
Ответ: [проект] Tower Defense на WebGL
Цитата:
http://forum.boolean.name/showpost.p...4&postcount=29 Он точно так же относится и ко всему, что я буду моделлить тут до тех пор, пока я не напишу пост с тремя капсовыми словами: "БУТЫЛКА ТРОЛЛЕЙБУС БУБЛИК" (это будет кодовый сигнал о том, что я начал переделывать тестовые модели в релизные). |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Так. надо ещё сделать чтоб за пределами поля тоже были деревья. И очертить границу вверенной игроку области.
|
Ответ: [проект] Tower Defense на WebGL
Деревья инстансингом рендеришь?
|
Ответ: [проект] Tower Defense на WebGL
Нет, я не знаю, как на WebGL делается инстансинг. Потом как-нибудь выясню.
|
Ответ: [проект] Tower Defense на WebGL
Всё пихается в один вершинный и индексный буффера, далее заводиться много матриц и в вершинном также будет записан индекс матрицы, для того чтобы в шейдере применять соответствующую матрицу. Один проход рендера и все объекты (матрицы) можно двигать независимо.
|
Ответ: [проект] Tower Defense на WebGL
Да знаю я принцип, мне бы инфу, более приближенную к практике.
Но дело не в этом. Я думаю, что прекрасно обойдусь и без инстансинга в конкретном данном случае. Ведь я поставил цель сделать игру как можно скорее и не делать то, что не необходимо (вместо инстансинга отлично работает объединение всех деревьев в один буфер). |
Ответ: [проект] Tower Defense на WebGL
Ну это не "вместо" а на пути. Если всё в сингл сюрфейс зафигачить, двигать то ими нельзя будет, а вот если ещё им назначить свои матрицы и индекс матрицы в вершинном буфере - то будет инстансинг. Это как сингл-сюрфейс лвл2.
|
Ответ: [проект] Tower Defense на WebGL
Цитата:
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
118 мсек готовится синглсурфейс для игровой области что вполне приемлемо.
1276 мсек делается синглсурф для области вокруг, что не совсем уж вкусно. Но уж что-что, а область за пределами-то игрового поля должна быть синглсурфейсом, а не какими-то инстансами. Думаю, её размер сильно завышен. Во-первых, камера будет висеть ниже и её можно будет двигать (а-ля Варкрафт 3), во-вторых, по горизонтали и вертикали она должна быть разной (потому что по горизонтали мы видим больше сцены, чем по вертикали), а у меня она одной переменной задана. Так, даже с теперешней камерой, хватило бы и 1-2 доп клетки по вертикали, но по горизонтали не хватает и 9, в результате по вертикали тоже 9 и, соответственно, много лишнего. |
Ответ: [проект] Tower Defense на WebGL
А что если по бокам карты сделать туман? Так например сделано в игре В тылу врага 2.
|
Ответ: [проект] Tower Defense на WebGL
Цитата:
Что-то не могу найти скрин "В Тылу Врага 2" с туманом, может, там получше. |
Ответ: [проект] Tower Defense на WebGL
Цитата:
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Огораживаем зону влияния игрока
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Можно рубить деревья.
Можно ставить башни. Можно не хватать золота и маны. *То чувство, когда ты наконец кодишь геймплей, а не движки, загрузки, обработки, прочие приготовления |
Ответ: [проект] Tower Defense на WebGL
|
Ответ: [проект] Tower Defense на WebGL
|
Ответ: [проект] Tower Defense на WebGL
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Итак, в игре появились враги и проджектайлы.
Представляю вашему вниманию скриншот. Сейчас я объясню, что же на нём происходит. Мы видим башни. Они нарисованы как башни. На них написано число — время до перезарядки. Оно всё время уменьшается до нуля, а при выстреле — сброс. Далее мы видим врагов. Враги — это белые кубики. У них на пузе написана красная цифра — это их здоровье. В них летят тоже белые кубики. Это проджектайлы. Их синяя надпись P - 'Projectile'. Они на данный момент наносят по 40 урона. Нетрудно подсчитать, что враг откидывает коньки от 3 попаданий. За врага даётся золото — сообщение об этом мы видим по центру. Кстати, было непросто поймать на скриншот, чтобы сразу всё в него попало. В планах — путенах А*. А то сейчас враги безмозглы и бегут по прямой. Что-то уже на игру похожее нарисовывается. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Дорабатываю редактор чтоб можно было ставить спавн крипов и точку куда они все идут.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Делаю путенах. Визуализировал пока кубиками. Он у меня любит обшарить все углы прежде чем попасть куда надо. Ну это не беда, сейчас добавлю оценку расстояния...
|
Ответ: [проект] Tower Defense на WebGL
Волновой поиск пути будет наверно быстрее A*.
http://pmg.org.ru/ai/path.htm |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Спасибо, но я как-то давно прочитал статью про А* и хотел реализовать, так что уж доделаю А*.
Да и дело не реалтаймовое, и 15х15 клеток всего, так что вопрос производительности тут ребром не стоит. Теперь путенах в ту же точку ищет так. Уже лучше. |
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Ну в принципе к цели путь уже находит, так что считай свою задачу выполнил. Однако я его ещё доработаю.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
А теперь ищем путь вот так.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Ну вот, путенах доделан окончательно. Теперь в игре можно просрать Родину и позорить погоны.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Другая карта. Всё пучком.
|
Ответ: [проект] Tower Defense на WebGL
Вложений: 1
Да, это они.
Олсо, с опущенной камерой выглядит не так ущербно всё. Экспортнуть анимацию, к сожалению, не вышло, так что риггил и анимировал сам. Аниматор из меня не очень, но ничего, когда пойду работать в Близзард, там меня всему научат :cool: А пока годится в качестве временного контента. |
Ответ: [проект] Tower Defense на WebGL
Надо еще ssao прикрутить и с краями у травы что то сделать ибо острые концы у травы глаз колят. :)
|
Ответ: [проект] Tower Defense на WebGL
Теперь стало заметно "не правильное освещение" забора
|
Ответ: [проект] Tower Defense на WebGL
Цитата:
Цитата:
Очень жаль что WebGL не умеет в alpha-to-coverage, в 2.0, правда, обещались добавить, но 2.0 будет ещё не скоро. |
Ответ: [проект] Tower Defense на WebGL
ссао для такой игры это мега оверкилл, зачем?
тут всё отлично запекабельно, и напомню что запеченное АО будет выглядеть гораздо лучше, чем ссао. на башнях и деревьях запечь в тексу. под башнями и дереьями - поставить квад с альфанутой текстурой АО (и zwrite=false). на кусках террейна в углах микролайтмапы. чтобы сгладить края и не париться с сортировкой для бленда, есть двухпассовый метод (заюзано в флетаут2): http://www.gamedev.net/topic/455616-...g-image-heavy/ |
Часовой пояс GMT +4, время: 01:15. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot