The Game Without A Name

Вступление

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

Что же вступление начато, немного о себе, я Михаил, единственный и гордый разработчик данной игры. Принимаю каждого человека который хочет помочь или просто посмотреть как пишется игра с нуля за короткий срок, неважно что вы умеете, если у вас есть отзыв, критика или совет, я всегда будут рад выслушать, даже если вы просто скажете что мой персонаж похож на множество 3D кубов соединённых вместе, а шейдеры для игры вызывают приступ эпилепсии. Буду рад каждому человеку.

Цель же данного проекта, получить опыта, знаний в различных редакторах и просто повеселиться, я буду обновлять данный пост ежедневно пока меня не забанят модераторы за мой стиль изложения, так как честно скажу я не читал правил.

Начало

Главный герой -- "Безымянный" (прямо как главный герой серии игр Gothic), начинает своё путешествие пройдя через ворота, которые сам же и откроет, на его пути будут встречаться различные головоломки и враги, мешающие нашему герою на пути.

Главный герой в Blender

Собственно сам герой нашей игры, прямиком из Blender

Игра пишется на Unity 3D, Тематика конкурса будет заключаться в головоломках решаемых по прохождению игры, основная идея взять головоломки из старых частей Tomb Raider и переделать под стилистику игры, геймплей не будет содержать из себя только головоломки, в данный момент идея разделить уровни, между решением головоломок и уровнями с врагами, и уровнями с врагами и головоломками, и наоборот, оба стиля уровней, как решение головоломок так и борьба с противниками будут раскрывать свой маленький сюжет игры.

Стилистика игры будет -- "мультяшной" если так можно выразиться

Пример той самой мультяшности.

Начальный уровень будет состоять из ландшафта гор и в принципе всё, в игре не будет открытого миром, только маленькие интересные локации, плотно заполненные различными предметами, в которые будет весело играть.

Стартовая Локация или -- Hub, как я его называю в Blender

Дыра в модели не из-за кривых рук, она предназначена для применения в Unity, там находиться тоннель который начнёт приключение нашего персонажа в этом мире.

Прогресс

Что имеется на данный момент, первое это анимация бега и ходьбы, только в одном направлении - прямо. Idle - анимация и сам персонаж с UV-развёрткой, благо, по стилистике игры он состоит из перекрещенных кубов так что делать развёртку долго не пришлось, 3D модели я создаю в Blender, который абсолютно новый для меня, собственно как и Unity.

Ещё имеется шейдер для создания линий вокруг объектов, эти линии придают свой стиль игре который я пытался добиться с момента создания проекта (несколько дней назад), думаю C# код не будет так интересен для наблюдения так что я приложу скриншот меню в котором редактирую высоту линий и цвет, это всё что на данный момент умеет делать шейдер, отображать линии, их цвет, основной цвет объекта, принимать и отбрасывать тень. В планах добавить Bump/Normal map, и применение текстур.

 

Пример применения шейдера на материал головы главного героя. Шейдеру дал название CartoonEffect так как моя фантазия кончилась на момент его написания

В будущих планах написать шейдер для воды с добавлением таких же линий, в момент написания данного шейдера понял что работа с прозрачными материалами требуют большого количества времени, так что пока применяется один шейдер на все объекты, что глупо.

Для освещения я применяю бесплатно распространяемые шейдеры Volumetric Lights которые можно найти на Github автора - https://github.com/SlightlyMad/VolumetricLights

На сегодня всё, до завтра!

Прогресс на 7 Апреля

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

Болванки на месте появления. Дома и дороги на опорах, так как местность болотистая (пока ещё нет, но скоро всё будет).

Так же была создана карта уровня с видом сверху, для более легкого понимаю того где должны располагаться объекты, видит ли игрок основные аспекты уровня, места куда можно идти, так же на карте расположена область запрещающая перемещаться игроку, так как там ничего не будет находиться.

Треугольник возле игрока показывает зону видимости, в эту зону желательно расположить главные объекты уровня, чтобы игрок сразу понимал куда ему можно идти и что делать. В моём случае игроку нужно видеть Destination area - место назначения куда нужно следовать сразу после ознакомления с окружением локации, Красным цветом отображенны области в которых игрок не может находиться -- они используются как декорации. Props Area - область где будут располагаться 3D-модели, с которыми можно взаимодействовать или просто исследовать.

Был улучшен шейдер CartoonEffect - Добавлен Sufrace Shader - или отображение теней на поверхности, предыдущая версия могла только отбрасывать и принимать тень, но функционала для отображения теней на материале не было, добавлена поддержка текстур и Normal или Bump map.

Пример шейдера на материале горы, Normal Map, без текстуры, с применением цвета и линий вокруг объекта.

На данный момент это всё, увидимся завтра.

Обновление за предыдущие дни

Обновлена карта местности в соответствии с сюжетом локации. Текущая версия карты выглядит так:

Данная версия была создана с помощью World Machine - бесплатной версии. Бесплатная версия вполне подходит для экспорта в Unity, если нет дальнейших планов по продаже игры то этой версии будет вполне достаточно, имеется ограничение текстур на 513x513 px, данное ограничение меня сильно не затронуло, так как я буду использовать свой шейдер в дальнейшем.

Настройки в World Machine. Для экспорта в Unity была использована только карта высот (height map); normal и light map понадобятся для шейдера.

О локации. На локацию были добавлены 3 новые точки к предыдущим, первая это фракция бандитов основанная на месте падения второго метеорита, вторая точка это логово зверей, в которой будет находиться ключ необходимый для открытия церкви, и последняя это точка крушения, место откуда начинается игра. Остальные точки были в предыдущей итерации карты.

Следующая остановка - Skybox, черновая версия была создана используя 6 квадратов размером 256x256 px. Для понимания работы Skybox материала в Unity сделал данную развёртку:

Зелёный блок это земля или низ 3D-куба, видна эта текстура только в момент падения с границ локации, что делает её довольно бесполезной только если нет цели постоянно ронять персонажа за границы локации, остальные блоки залиты одним цветом специально для теста.

В своём проекте использовал добавление текстур по одному файлу через 6 Sided шейдер, так как это легче чем надеяться на то, что Unity нормально сошьёт твою развёртку. В дальнейшем добавлю солнце и возможно горы для фона, облака в планах сделать объемными через шейдеры, только если не будут уничтожать фреймрейт.

Ray Tracing и интеракция

Для отображения имени над объектом (нпс, враги, предметы), использовал метод отрисовки луча с центра камеры, для того, чтобы луч не сталкивался с главным героем, который находиться в центре камеры, сменил его слой на игнорирования лучей - "Ignore Raycast". Для отображения текста использовал TextMesh как prefab, и добавил к нему скрипт слежения за камерой, сделано это для того чтобы текст был читаем с любой позиции камеры.

Выглядит это примерно так:

TextMesh создаётся с ранее созданного prefab'a как ребёнок объекта, на который игрок смотрит в данный момент.

Позиция создания текста берётся с центра объекта поэтому он пока выглядит странно, ещё имеется проблема с шейдером на персонаже который пропускает текста через себя, что выглядит не очень красиво. На данный момент это всё что могу показать через скриншоты, ведётся работа над взаимодействием с объектом и инвентарём персонажа, пока всё это реализованно в виде кода.

Мини-апдейт: окончание конкурса

К конкурсу я к сожаленью не успеваю, делать всё с нуля одному довольно тяжело, но продолжу обновлять данный пост если это разрешается в правилах сайта.

На данный момент имеется инвентарь, поднятие предметов, база-данных SQLite для предметов, текстов, статистики нпс и игрового персонажа, SQLite конечно over-engineering, так как можно было использовать xml-файл записывая туда все нужные данные, но для будущих проектов думаю не помешает иметь навык настройки и работы базы-данных. Готовы примерные расположения ключевых точек на локации, пока в виде простых кубов для проверки уровня, в данный момент пишется ИИ для врагов и дружественных НПС, далее начну писать простенькие пазлы решаемые с помощью взаимодействия объектов друг с другом, пока это текущий план на данный момент, проект продолжиться до 1 мая, дальше будет новый, а этот отправиться в архив.

the game without a name unity3d blender c#
Логотип проекта

Приключенческая игра с решением головоломок, смесь старых версий Tomb Raider с добавлением тематики конкурса - физики.

2


Участие в джемах


blog comments powered by Disqus