Погружение в мир создания 3d игр - enterra incognita.
Легко ли делать 3d игру?
В первую очередь следует рассказать об ощущениях. 3d игра казалась мне чем-то недостижимым и
непостижимым. Хотя давным-давно я пробовал начинать разработку игр именно с 3d игр.
Если ваша цель не заключается в развитии умений и навыков моделирования в таких программах,
как blender или 3ds max, то, возможно разработка 3d игр не покажется вам слишком уж
сложной.
Но даже и в этом случае - можно ведь не ставить планку высоко и ограничиться более
низко-полигональными или вообще практически примитивными моделями.
Для меня же целью было создание именно всей игры целиком - включая и графику и
программирование, и сюжет с геймплеем, звуками и музыкой.
Все это мне интересно делать самостоятельно.
Почему же долгое время я так и продолжал делать 2d игры, и не брался за создание 3d?
Останавливало нежелание изучать что-то новое в большом объеме, вспоминать старые навыки.
Почему-то казалось, что 2d игр вполне достаточно, а 3d - это где-то там, за гранью.
Началось с того, что я освоил java libgdx сделав 2d игру.
Игра получилась очень несложной в реализации и стала хорошей основой учебного проекта.
Хотя и в плане играбельности она получилась неплохой и вполне имеющей свои перспективы.
Поскольку в прошлом году я уже плотно изучал godot, делая на нём свой первый масштабный
2d проект, но не самый первый, если вы могли подумать. Просто раньше я делал игры
в основном на своем движке - fle game engine.
На нём я даже делал свои первые 3d игры, например -
нечто: необъяснимое
Потом переключился на 2d, т. к. нужно было явно глубже прокачивать свои навыки рисования,
программирования и другие.
Прошло энное количество лет прежде чем я стал снова задумываться о необходимости осваивать
направление 3d игр.
Причин тому было множество.
Развитие навыков создания 3d графики, которые были, но требовали дальнейшего развития.
Создание игры мечты в 3d. Ведь не секрет, что 3d игры дают больше полета для фантазии,
хотя и требуют больших усилий в процессе разработки.
Если сделать качественного персонажа в 3d, то работа с ним будет протекать гораздо в
более приятном русле. В 2d нужно рисовать каждый ракурс, в 3d достаточно выставить
модель в необходимую позу или анимировать.
Создание более реалистичных игровых карт и локаций - это одно из преимуществ 3d.
Но даже не реализм здесь главное, а возможность взаимодействия с игрой во всех трех
плоскостях.
И это совершенно иные возможности как для геймдизайна, так и для ощущений получаемых
от игры игроком.
Сложный барьер между 2d и 3d играми преодолим.
Но чтобы к этому подойти, требуется проделать значительную работу.
В первую очередь я увидел связь между godot и blender. А именно в том, что в blender
можно экспортировать модель со скелетными анимациями в формате glb, и этот же формат
подхватит godot и сможет использовать в созданном проекте.
Конечно я обнаружил это не сразу.
Сначала в качестве исследовательского эксперимента смотрел примеры учебных 3d игр
для godot.
И вот там задался вопросом: что это за формат glb?
А увидев его поддержку в blender 3.3, сразу же решил взяться за освоение этой программы,
тем более опыт работы в 3ds max у меня уже был.
Получалось все далеко не сразу.
Для начала я решил сделать самую простейшую модель - кубика с 2 ногами и реализовать
для него скелетную анимацию.
Но даже это оказалось не так просто.
Однако все преодолимо, тем более этим же самым путем я шел когда осваивал 3ds max и
создание 3d игр в directx 9 на c++.
В течение нескольких дней я решил поставленную задачу и перешел уже к моделированию
более сложного персонажа, а также реализации скелета и скелетной анимации
для него.
Это сейчас все выглядит просто и очевидно, а все просчеты и ошибки видны как
на ладони. Но когда это все только изучаешь, вопросов гораздо больше и не
все они так очевидны.
Наконец я реализовал первую версию модели Inky и очень воодушевился.
Особенно после того, как вставил её в игру.
Выглядела она пока что не очень презентабельно, но это был уже огромный шаг вперед
после кубика с ножками )))
Дело оставалось за малым - доработать модель еще немного и собственно развивать
саму игру дальше.
Чем я и занимался.
И итог этого вы можете видеть на видео в самом верху данной страницы,
с чего собственно и начинается данная статья.
Основной сложностью в создании 3d игры для меня является моделирование
детализированных персонажей.
Пробовал я этим заниматься давным-давно, но тогда конечно получалось еще
хуже.
Сейчас хотя бы механизм того, как подойти к этому и научиться уже понятен.
Нужно двигаться от простого к сложному. То есть от низко-полигональной, грубой
модели, но соблюдающей главные пропорции и имеющей привлекательный вид (если
закрыть глаза на степерь детализации), к более высоко-полигональной и
детализированной.
Грубую модель персонажа при соответствующем навыке можно создать за несколько
дней.
Имеется в виду конечно не просто 3d модель, но и её текстурирование, создание
скелета и скелетной анимации, подготовка в экспорту в нужный формат и
вставка в игру.
То есть полный цикл шагов необходимый для реализации полноценного 3d персонажа в игре.
Моей ошибкой в этом вопросе раньше была именно попытка создавать сразу очень
детализированного персонажа, это приводило к большим затратам времени, трудностям
в моделировании и кончалось это полным разочарованием от получаемого результата.
В таких условиях разумеется я терял всякий энтузиазм, т. к. в голове было одно, а
по факту выходило ужасно, никуда не годно и потому все желание моментально пропадало.
Внушало это лишь то, что создание 3d игр для меня пока что непреодолимая преграда.
И какое же воодушевление возникло после того, как у меня наконец получился нормальный,
пусть и пока низко-детализированный, но 3d персонаж и к тому же уже работающий
сразу в моей игре !!!
Ощущениям и впечатлениям такого рода наверное можно посвящать всю жизнь ))) Их ни на
что не променяешь ;)
Их трудно передать словами. Но факт остается фактом, если что-то очень долго не получается,
а потом вдруг - получится ...
одним словом чувствуешь себя очень и очень вдохновленным и способным свернуть любые
горы )))
enterra и enterra 3d стали для меня своего рода terra incognita - неиследованной территорией
самого себя и своих возможностей.
Отсюда вытекает мой вам совет: если что-то кажется вам недостижимым и вы уже неоднократно
пытались это преодолеть, но так и не преодолели - не отчаиваться и пробовать и пробовать
еще и еще раз.
И однажды все получится !
Я уверен.
Вот как раз та самая статья, с которой начинались мои попытки создать персонажа девушку -
Моделируем девушку в 3d используя 3ds max
но как вы увидите, цикл статей не был закончен.
И вот теперь, спустя значительный период времени это наконец свершилось !
Правда еще не совсем до конца - предстоит сделать более детализированную модель, но
этот шаг уже на очереди.
С 11.02.2023 уже начал работу по созданию enterra 3d на directx 12 c++, т. е. в рамках
своего движка fle game engine -
enterra 3d: adventures continue - игра на fle game engine directx 12 c++
Далее -
Это своего рода 2 глава моих похождений в мире современных 3d игр, в вопросах
их создания конечно же, а не игры в них. )))
Как я писал игру enterra 3d для directx 12 c++
Предупрежу сразу: данный материал содержит скорее впечатления, чем практический опыт
и описания как это сделать. Практическому я уделю внимание чуть позднее и уже в виде
отдельных уроков и статей.
Сейчас просто хочу рассказать о впечатлениях перехода на directx 12 и переписывания
своего движка, fle game engine, на новые рельсы.
Начну с того, что не хотел переходить на новый directx с directx 9, который я использовал
до текущего момента по многим причинам и отнюдь не субъективным.
Первая причина - отсутствие подходящего оборудования.
До недавнего времени я не спешил переходить на directx 12 по той простой причине, что
мое оборудование его попросту не поддерживало.
Это длилось достаточное количество времени и потому большого смысла в освоении
новой технологии у меня не было. Я при всем желании не мог её использовать.
Когда же наконец такая возможность появилась, то я конечно же первым делом
установил весь необходимый софт и все, что было нужно.
Оставалось найти время и желание, чтобы заняться данной проблемой.
Время по-возможности можно было найти, а вот с желанием было сложнее.
Его было мало, потому что у меня сложилось мнение, что разработка 3d игры это очень
трудное и даже непосильное занятие, по сравнению с уже изученной темой создания
2d игр.
Переломным моментом стало то, что я описал в самом начале данной статьи, а именно
создание enterra на java libgdx, а затем 3d её версии уже на godot 3.5.1 с новым
названием enterra 3d.
Тем самым барьер к созданию 3d игр был преодолен. Желание появилось.
Но почему бы не продолжить делать 3d игры на godot 3.5.1 ?
Собственно я и продолжаю. Но я исхожу из того факта, что всегда должна быть какая-то
альтернатива. Хотя даже не это важный фактор в принятии решения.
Причина важнее - то что я уже давно хотел изучить directx 12 и собственно написать
(обновить) свой fle game engine до нового свежего api.
Стоит отметить, что уроков по созданию directx 12 игр, в отличие от уроков по godot,
unity 3d, game maker studio и других движков - очень мало. Кроме официальных есть
несколько уроков, но все они лишь повторяют официальный мануал, а вот полноценных
уроков про создание своей игры на directx 12 я пока не нашел вообще.
Есть официальный пример создания для UWP платформы. Но больше никакой информации
нет.
Причин тому множество. То что тема достаточно сложная и новички в создании игр
никогда не будут начинать с написания своего движка. Не в то время мы сейчас
живем.
Поэтому неофициальной информации и уроков практически нет. То есть чтобы создать
игру на directx 12 c++ нужно изучать официальные примеры из directx sdk 12,
которые входят в состав windows sdk для win 10 и 11.
Такое положение вещей отпугивает практически всех кто никогда не делал свои игры,
и даже тех, кто их уже делал. Что прекрасно видно на моем собственном примере.
Нагуглить что-то простое и понятное, на русском языке, да даже на английском -
не получится.
Все что есть - это готовые примеры на c++ и надо сразу же изучать код и
писать свой собственный.
Ну а по всем вопросам обращаться к официальному мануалу по directx 12 sdk.
Другого способа освоить directx 12 и сделать на нём игру на данный момент - нет !
Если у вас есть в распоряжении противоположная информация, прошу связаться со мной
через форму комментариев внизу этой страницы. Хотя сомневаюсь, что Вы ей
будете располагать как минимум в ближайшие несколько лет.
А потому остается лишь сжать зубы, засучить рукава и сделать ПЕРВЫЙ ШАГ в создании
игры на directx 12 c++.
Я начал с того, что взял самый первый пример из официального SDK - D3D12HelloWindow
и попробовал создать для приложения свою собственную иконку и внедрить её.
Все это казалось поначалу непосильной задачей, но постепенно я разобрался и все
получилось !
А это значит я стал двигаться дальше.
Первым делом я конечно просмотрел все примеры которые есть в SDK, в том числе
пример 3d игры, и наметил план, которого я буду придерживаться в своем пути
по освоению directx 12 и созданию enterra 3d на нём.
Мне поможет то, что enterra 3d в готовом виде уже есть у меня на godot, тем
самым не нужно будет ничего изобретать, а лишь написать код и выполнить ряд
дополнительных телодвижений - и тогда все получится.
Следующим этапом я сейчас делаю уже 2 шаг - какой именно - вывод 2d изображения
на экран 3d игры.
Как только я его закончу, то Вы об этом сразу же узнаете, потому что на
странице
enterra 3d: adventures continue - игра на fle game engine directx 12 c++
появится свежая версия того, что я уже сделал.
На этом пока у меня на сегодня все.
16.02.2023
Продолжаю свои заметки.
Начал изучать пример D3D12HelloTexture. Конечно хотелось бы описать этот опыт в виде
небольшого видео-урока или статьи, пока нахожусь под впечатлением. Но вероятно сделаю
это позднее.
Пример D3D12HelloTexture показывает основы работы с pipeline directx 12 и демонстрирует
вывод треугольника заполняемого генерируемой текстурой в виде шахматной доски.
Перенеся весь необходимый код в свое приложение enterra 3d directx 12 c++, и убедившись,
что все работает прекрасно как в режиме отладки Debug, так и в Release сборке, я
озадачился вопросом:
А как вывести уже не треугольник, а прямоугольник?
Поскольку теперь меня интересует вывод 2d заставки. Смысл в том, чтобы вывести прямоугольник
на размеры всего окна будущей игры с выводом в нём текстуры заставки.
В ходе экспериментов я выяснил, что если вершины треугольника объявлены по часовой
стрелке, т. е. так -
Vertex triangleVertices[] =
{
{ { 0.0f, 0.25f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } },
{ { 0.25f, -0.25f * m_aspectRatio, 0.0f }, { 1.0f, 1.0f } },
{ { -0.25f, -0.25f * m_aspectRatio, 0.0f }, { 0.0f, 1.0f } }
};
То данная грань будет видимой. И будет отрисовываться если мы будем её рендерить.
Если же порядок вершин - против часовой стрелки. Грань видна не будет.
Каждая вершина описывается как набор из 3-х координат - x, y, z, а также u, v текстурных координат.
Чтобы проверить свое предположение я описал вершины треугольника уже так -
Vertex triangleVertices[] =
{
{ { 0.0f, 0.25f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } },
{ { 0.25f, -0.25f * m_aspectRatio, 0.0f }, { 1.0f, 1.0f } },
{ { -0.25f, -0.25f * m_aspectRatio, 0.0f }, { 0.0f, 1.0f } }
};
В этом случае уже никакого треугольника не видно. Потому что вершины объявлены в порядке
следования против часовой стрелки.
Vertex triangleVertices[] =
{
{ { 0.0f, 0.25f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } }, //1 вершина
{ { 0.25f, -0.25f * m_aspectRatio, 0.0f }, { 1.0f, 1.0f } }, //2
{ { -0.25f, -0.25f * m_aspectRatio, 0.0f }, { 0.0f, 1.0f } } //3
};
0.0f, 0.0f это центр экрана в окне игры.
Соответственно видите, что вершины поменялись местами, если сравнить с тем, что было -
Vertex triangleVertices[] =
{
{ { 0.0f, 0.25f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } }, //1 вершина правая верхняя
{ { 0.25f, -0.25f * m_aspectRatio, 0.0f }, { 1.0f, 1.0f } }, //2 - ниже неё справа
{ { -0.25f, -0.25f * m_aspectRatio, 0.0f }, { 0.0f, 1.0f } } //3 - левее от 2
};
Чтобы проверить все ли я правильно понял, я немного изменил координаты и получился вот такой
треугольник.
Vertex triangleVertices[] =
{ { 0.0f, 0.0f * m_aspectRatio, 0.0f }, { 0.5f, 0.0f } },
{ { 0.0f, -0.5f * m_aspectRatio, 0.0f }, { 1.0f, 1.0f } },
{ { -0.5f, -0.5f * m_aspectRatio, 0.0f }, { 0.0f, 1.0f } }
Смысл понятен и можно добавить еще 3 вершины, чтобы вывести 2 треугольник
по тем же правилам, чтобы получить прямоугольник.
Добавлю, что прямоугольник у меня вывести получилось и даже получилось
видоизменять генерируемую программным путём текстуру.
Но об этом я расскажу завтра.
До новых встреч !!!
продолжение -
[продолжение - страница 2]
оцените статью:
0
0
игры, сервисы
играть
играть
случайный сайт
играть
видео-рассказ, уроки godot, виртуальный помощник по поиску информации
играть
читать
купить
скачать
игры Многоликий: dress - hordes эпизоды с 1 по 4
играть
скачать
купить
купить
игры, музыкальные клипы
скачать
скачать
смотреть
скачать/играть
музыкальный клип, игры
смотреть
играть
скачать
скачать
разработка игр, анимационный фильм, новогодняя дискотека 2020 - песни на итальянском, игра про лифт
смотреть
смотреть
смотреть
смотреть
игры, инструменты разработки, анимационный фильм, фильм.
купить
смотреть
смотреть
скачать
игры
скачать
скачать
скачать
купить
игры в браузере
играть
играть
играть
играть
игры в браузере
играть
играть
играть
играть
игры в браузере
играть
играть
играть
играть
игры в браузере
играть
играть
играть
играть
игры в браузере (3), создание музыки в браузере (1)
играть
играть
играть
играть
игры в браузере
играть
играть
играть
играть
игры в браузере
играть
играть
бк 0010.01 - играть!
играть
игры в браузере
играть
играть
играть
играть
игры в браузере (3), скачиваемые (1)
играть
играть
играть
скачать
игры в браузере
играть
играть
играть
играть
игры в браузере, скачиваемые игры
играть
скачать
играть
играть
игры в браузере
играть
играть
играть
играть
игры в браузере
Foxyland 2
quidget 2
играть
играть
полезный софт, игры в браузере
скачать
anova игра
A Knots Story
sabotage
сервисы, игры
24500 руб.
скачать
игра
играть
игры, программы
купить / скачать
купить
5500 руб.
скачать
поздравления, уроки рисования, уроки создания сайтов
читать
читать
читать
150 руб.
комиксы, музыка, рассказы
читать
читать
слушать
читать
игра для разработки, калькулятор услуг, cms, комикс
250 руб.
разработка на заказ
1250 руб.
350 руб.
игры для разработки, комиксы
скачать
читать
читать
скачать
игры шарики и ямки, комиксы про Костю Коробкина, ria xxl игра, fly snow 3d генератор эффектов снега, частиц и др. -
скачать
читать
150 руб.
350 руб.
Создай свою игру на fle game engine -
800 руб.
240 руб./скачать
скачать
скачать
Для создания сайта - модуль отзывов/комментариев для вашего сайта в составе megainformatic cms express files -
700 руб.
1250 руб.
150 руб.
500 руб.
Уроки Flash, бесплатные Flash - игры.
бесплатно
бесплатно
2500 руб.
14000 руб.
Поддержка сайтом нескольких языков (multi lang), создание собственной системы личных кабинетов, соц. сети или фриланс - биржи (megainformatic cms social), создание сервиса коллективных покупок на базе megainformatic cms groupon, онлайн сервис подсчёта статистики ключевых слов в статьях вашего сайта keywords gen + описание кода данного сервиса, с возможностью бесплатно реализовать его аналог на своём собственном сайте.
500 руб.
12000 руб.
14000 руб.
бесплатно
megainformatic.ru/webjob/ - сервис для фриланс проектов
- место встречи заказчиков и исполнителей
megainformatic.ru/webjob/ - сервис для фриланс проектов
- место встречи заказчиков и исполнителей
Системы управления сайтом, уроки
1250 руб.
бесплатно
550 руб.
500 руб.
megainformatic cms admin - простая и компактная система
для работы и управления сайтом
350 руб.
5800 руб.
3000 руб.
500 руб.
megainformatic cms free и серия продуктов - Уроки Photoshop
бесплатно
650 руб.
700 руб.
750 руб.
Данная серия посвящена описанию приемов и методов создания изображений,
с помощью инструментария программы Adobe Photoshop. Кроме того, многие
описанные средства могут вам помочь при освоении и многих других программ
для работы с растровой графикой - GIMP, Corel Photo Paint и других.
бесплатные игры 2d и 3d, а также эмулятор Ну, Погоди!
300 руб.
бесплатно
бесплатно
бесплатно
Это серия распространяемых бесплатно игр. Вы не только можете поиграть,
но и скачать исходники, получив тем самым возможность внести изменения
в игру или создать новую !!! (эмулятор Ну, Погоди! распространяется платно).
серия игр про Веселого Буквоежку, и бесплатно распространяемая игра
Нечто: Необъяснимое - в плену желаний
350 руб.
510 руб.
fle game engine
бесплатно
Здесь представлены новинки жанра - Говорящий Комикс, Настольная игра,
А также продукт, который позволит Вам научиться создавать игры самостоятельно.
Ну и конечно изюминка в своём роде - бесплатная игра - Нечто: Необъяснимое
- в плену желаний
Серия бесплатных онлайн уроков, посвященных 3ds max, photoshop, c++,
directx, delphi и php.
бесплатно
бесплатно
бесплатно
бесплатно
бесплатно
бесплатно
500 руб.
300 руб.
Описаны практические примеры решения различных задач, возникающих при
создании игр и сайтов.
Продукты Набор разработчика и Ваше Визуальное Шоу распространяются платно.
уроки и продукты различной тематики
бесплатно
бесплатно
бесплатно
400 руб.
Бесплатные Уроки Photoshop free, Бесплатные Уроки по программированию
на delphi directx - Как создать игру Ну, Погоди!, Бесплатная Авторская
музыка в формате mp3 - Музыкальные Миры, Платно распространяемый продукт
megainformatic cms express - система для быстрого создания Вашего сайта
на php + my sql.
Проекты игр, уроки
450 руб.
бесплатно
бесплатно
бесплатно
Игра Веселый Буквоежка, уроки delphi directx 8.1 для начинающих (описываются
основы 3d игр), моделируем девушку в 3d studio max, уроки музыки - пишем
музыку в Fruity Loops Studio
megainformatic
cms express files - это простое, быстрое и очень компактное решение
для создания первого вашего сайта. НЕ ИСПОЛЬЗУЕТ базы данных mysql.
Вместо этого используются файловые базы данных. Поэтому Вы
можете использовать систему даже на хостинге с поддержкой php, но
без поддержки баз данных my sql.
Очень
проста в установке - достаточно вам скопировать все файлы на ваш
хостинг и сайт готов к работе !!!
В комплект входят 3 готовых шаблона, модули поиска и карты сайта,
а также статьи по основам создания сайта.