krre |
Отправлено: 24 Июля, 2016 - 12:45:12 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Размышляя над тем, куда двигаться дальше, я стал гуглить интернет в поисках технологии разрушаемых 3D-моделей. Большинство современных игр имеют ограниченные возможности по части разрушения мира. Разбить можно только то, что предусмотрено программистами, да и то лишь на те осколки, которые заготовлены заранее. Чаще всего разбиваются всякие ящики, чтобы найти там аптечку, патроны или ещё какую-нибудь ерунду. Нельзя, например, раздолбать стену в коридоре и выйти в непредусмотренное игрой пространство.
У меня же игра создаётся в жанре открытого мира, в котором нет заранее заготовленных коридоров, за пределами которых абсолютное ничто. Наоборот, есть планета (или астероид), на ней находится ландшафт, и ты делаешь с ним всё, что хочешь. Так как ландшафт предсказумо состоит из трёхмерных моделей, то надо как-то эти модели дробить, причем, на осколки состоящие из какого-то материала. И вот тут возникает проблема. Трёхмерная графика построена по принципу обтягивания объёма полигональной сеткой. Эта облочка создаёт видимость сплошного объекта, но внутри он, конечно же, пустой. Значит, в момент разрушения объекта надо чем-то его заполнить. Пытаясь выяснить, как это сделать, я наткнулся на любопытную технологию Sparse Voxel Octree, разрежённое воксельное октодерево.
Оказывается, давным давно, на заре геймдева, когда появлялись первые видеокарты, существовало две технологии создания геометрии - полигональная и воксельная. Полигональная - это обтягивание объёма сеткой из треугольников, а воксельная - это заполнение объёма трёхмерными пикселями - вокселями. При этом воксели могут быть разного размера, как большого, и так очень маленького, размером с обычный экранный пиксель. Полигональная технология победила, и все видеокарты стали аппаратно её поддерживать, а воксельная со времем забылась. Игр на ней долгое время почти не делали.
Но, как всегда бывает, ничто не вечно под луной, и в последние годы начались робкие попытки снова начать использовать эти воксели. Уж слишком много накопилось проблем с полигонами, и чем дальше, тем тяжелее с ними работать. А воксели наоборот очень просты в обращении, имеют кучу преимуществ, а самое главное - поскольку они создают объёмные модели, то их легко можно разрушать. Одна беда - очень уж они тормозные и съедают много памяти. Тем не менее, сейчас всё чаще говорят, что будущее геймдева за вокселями, и несколько крупных игровых движков уже начали постепенный переход на них. Когда-нибудь, наверное, они будут ускоряться аппаратно видеокартами, как сейчас полигоны.
После такого длинного вступления перехожу к сути. Я решил опередить своё время и попытаться использовать воксели в игре про Гагарина. Есть усовершенствованная технология для их обработки, которая называется, как уже упоминалось выше, Sparse Voxel Octree, на которую я и ориентируюсь. Собственно, выбор-то у меня небольшой. Раз уж я избрал такой хитрый жанр для игры, в котором всё можно разрушать и создавать заново из разломанных материалов, то придётся как-то выкручиваться. Поскольку графику я собираюсь делать попримитивнее, то, надеюсь, тормозить игра у меня будет не сильно. |
|
|
Коля Логан |
Отправлено: 24 Июля, 2016 - 20:41:08 ID
|
почетный участник
Сообщений всего: 4476
Дата рег-ции: Июль 2008
Откуда: Донецк, Украина
Репутация: 30
|
krre:Да, действительно, а я как-то не обратил внимания. Вот что значит, тестер - это игрок с опытом. Спасибо, пофикшу.
Я поначалу думал, что это у меня что-то не так, но таки да, мышь двигается влево, если ей двигать вправо и наоборот.
krre:Готово, дал тебе доступ!
Спасибо.
Первым делом залез за текстуры, точнее далеко за пределы тестовой площадки. Позабавило, что внутрь объектов вообще можно зайти. |
|
|
Коля Логан |
Отправлено: 25 Июля, 2016 - 14:37:18 ID
|
почетный участник
Сообщений всего: 4476
Дата рег-ции: Июль 2008
Откуда: Донецк, Украина
Репутация: 30
|
krre:Надо же, у всех с первого раза запустилось и заработало. ЧЯДНТ?
Не знаю. Ты не волнуйся, я собираюсь ещё полазить по этому снэпшоту и найти какой-нибудь глюк на ровном месте.
krre:Ага, правда, сыровато выглядит пока. Если разрешение низкое, то проявляется повышенная мохнатость. Вот, сравните, слева - полигональный заяц, а справа - воксельный, он весь из маленьких заметных кубиков состоит.
Что нынешняя графика игры, что примеры с зайцами крайне нравятся мне схожестью с компьютерной графикой 1980-х и 1990-х, когда это дело было реально себе искусством, а не визуальным эффектом. Помнится, стоит у меня замечательная книженция в Донецке с сюровыми иллюстрациями - "Мир компьютера", кажется, называется. Вот в раннем детстве, года так в три-четыре она однозначно сформировала мое представление о компьютерной графике именно как о крайне странном изобразительном искусстве... Короче, продолжай в том же духе! |
|
|
krre |
Отправлено: 25 Июля, 2016 - 18:20:49 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Я, конечно, не слишком большой фанат олдскульности, но в данный момент меня обстоятельства вынуждают следовать этому стилю и стараться всё упрощать по максимуму. Иначе мне десять жизней не хватит, чтоб что-то играбельное сделать.
Продолжаем. Сейчас я сделал в своей голове, выражаясь языком компьютерной графики, переключение контекста и отложил на некоторое время работу над 3D, а взялся за 2D. За GUI, точнее говоря. Пусть мозг отдохнёт немного, а, как мы знаем, лучший отдых для организма - это смена рода деятельности.
Так вот. Захотелось мне сделать всё-таки меню. Чтоб там кнопки были типа Play, Settings, Exit. И чтоб это меню появлялось не только в начале игры, но и на паузе, когда ESC нажимаешь. Там ещё будет добавляться кнопка Continue, если после паузы я хочу продолжить игру, а не окончательно выйти.
Самая большая проблема на этом этапе - это лайауты. Нужны эти лайауты для того, чтоб можно было автоматически размещать контролы в столбец, строку или в сетку, не хардкодя их координаты вручную для каждого контрола. В общем, задача хоть и непростая, но теорию по этой части мне изучать уже не надо. Я каждый день на работе с программированием гуёв вожусь и знаю, на что они способны. Осталось только копнуть чуть поглубже и заглянуть в их внутренности на примере какого-нибудь открытого фреймворка. |
|
|
krre |
Отправлено: 27 Июля, 2016 - 13:47:19 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Сделал лайауты, но пока это предварительный вариант, лишь бы по-быстрому заработало. Потому буду ещё не раз переделывать. Ну, и раз уж я взялся за GUI, то пришлось заодно разобраться со стейтами и довести их до ума. Теперь у меня при нажатии ESC включается стейт паузы. В это время игра останавливается, но продолжает отрисовываться. Поверх неё должно появиться меню с вариантами Continue и Exit. Первое вернёт управление в игру и продолжит её выполнение, а второе игру полностью закроет.
Далее мне надо разработать вот это самое меню с двумя пунктами. Для этого нужны кнопки, которых ещё пока нет. Сделаю их, состряпаю меню попроще, чтоб как-то работало, и тогда уже вернусь, наверное, обратно к 3D графике. |
|
|
krre |
Отправлено: 29 Июля, 2016 - 12:35:18 ID
|
компьютерный мультипликатор
Сообщений всего: 2151
Дата рег-ции: Дек. 2008
Репутация: 28
|
Пока думаю, как лучше рисовать мир, пришли такие идеи.
Мир будет состоять из атомов - минимальных неделимых частиц, которые уже невозможно дальше разрушить. Только они будут не такие мелкие, как в жизни, а гораздо крупнее. В связи с этим в мире будет своя таблица Менделеева со своими атомами и их свойствами (цвет, плотность и так далее). Некоторые из атомов совпадают с нашими, а некоторые выдуманные. Комбинация атомов в одном материале создаёт новый материал.
Все ресурсы на планете состоят из этих материалов. Из ресурса можно изготовить предмет, а потом разрушать его столько раз, пока предмет не раздробится до уровня атомов. Потом их можно собрать, соединить с другими и получить новый ресурс или предмет. Таким образом, комбинируя атомы друг с другом в различных пропорциях и комбинациях, можно будет получать огромное разнообразие материалов.
Как рисовать эти мелкие кубики, я ещё до конца не понял. Похоже, что на близком расстоянии все предметы будут шершавыми, то есть состоять из трёхмерных пикселей, но начиная с нескольких метров мир будет выглядеть нормально, как я надеюсь. Насколько мелкими удастся сделать атомы, ещё неясно. Это надо экспериментировать, смотреть по производительности и FPS. |
|
|
|