Сообщество - Лига Разработчиков Видеоигр

Лига Разработчиков Видеоигр

8 924 поста 23 151 подписчик

Популярные теги в сообществе:

12

Relict Engine: Шейдеры. Часть 1. Теория и вопросы

Начнем, пожалуй, с теории.

Шейдеры и модель затенения

пример работы отложенного затенения (иллюстрация <!--noindex--><a href="https://pikabu.ru/story/relict_engine_sheyderyi_chast_1_teoriya_i_voprosyi_13424189?u=https%3A%2F%2Flearnopengl.com%2F&t=https%3A%2F%2Flearnopengl.com%2F&h=9d0d5ab19c1209e085c1ddb0125053715c6b9c32" title="https://learnopengl.com/" target="_blank" rel="nofollow noopener">https://learnopengl.com/</a><!--/noindex-->)

пример работы отложенного затенения (иллюстрация https://learnopengl.com/)

Шейдер это программа, написанная на одном из специализированных языков программирования, например GLSL, и выполняемая на GPU.
Шейдеры бывают разных видов: вершинные, фрагментные, геометрические и компьют. Каждый создан для своей задачи и работают чуть по разному.
Например, вершинный шейдер работает исключительно с вершинами (или набором точек) 3д модели, а фрагментный (или, как его еще называют, пиксельный), только с пикселями экрана или текстуры.

Для вывода графики на экран нам нужен как минимум вершинный и фрагментный шейдеры. Они будут исполнятся на каждый отдельно взятый объект. В случае вершинного для каждой вершины модели; в случае фрагментного для каждого пикселя экрана, занятого объемом результата вершинного шейдера.

А так-же есть две модели шейдинга (шейдинг ("затенение") - процесс в компьютерной графике, который придает объектам реалистичный вид, определяя их цвет и внешний вид в зависимости от освещения, текстур и материалов):
Forward (или прямое затенение) - при этой модели каждый отдельный объект обрабатывается самостоятельно. Свет и тени будут считаться отдельно для каждого объекта.
Deffered (или отложенное затенение) - отрисовка сцены происходит в несколько проходов с сохранением промежуточных данных в специальные текстуры, которые имеют общее название G-Buffer. А потом, отдельным проходом, единоразово будет просчитан свет и тень.

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


Шейдеры в Relict Engine

Таким образом, в первую очередь нам нужно выбрать, какую модель затенения использовать в движке. Т.к. проект, для которого Relict Engine создается, связан с космосом, то логично предположить, что прямое затенение даст больше производительности, нежели отложенное. И это будет верно, пока мы говорим о "сферическом космосе в вакууме". Как только появляются туманности, низкие орбиты и нагруженные космопорты на этих орбитах, все становится менее очевидно. Поэтому, несмотря на кажущуюся простоту этого вопроса , ответить на него не так уж и просто.

Следующие вопросы, который надо решить, и которые не связаны с моделью затенения напрямую, а больше относятся к архитектуре движка, является: А как хранить шейдеры? Как передавать в них параметры?

В спецификации OpenGL 4.5 появилась возможность использовать бинарные шейдеры Spir-V, которые являются основным форматом шейдеров для Vulkan. И это удобно, мы сможем использовать один и тот-же шейдер как для OpenGL, так и для Vulkan без модификации. Но это касается "статичных" шейдеров. Их нельзя изменять, можно добавить только заранее известные переменные, которые можно будет передать в шейдер через функции движка или скрипта, а если мы хотим чего-то более сложного? Например передать не текстуру, а некую математическую функцию, которая будет определять цвет пикселя по своим собственным законам?

Таким образом, нам понадобится система, которая будет компоновать наши кастомные навороты, а так-же вводные данные, в виде переданных параметров с набором функций базовых шейдеров в некую отдельную сущность, которая будет представлять из-себя скомпонованный шейдер из множества отдельно взятых функций и точки входа. И желательно, все это все равно сохранить в Spir-V формат для удобства дальнейшего перехода на Vulkan.
Более того, в зависимости от выбранной модели затенения, выходной результат так-же должен отличаться. Так например, если мы для Основного цвета (Diffuse Color) не будем использовать текстуру, а некую мат. функцию, то нам нужно будет скомпоновать эту функцию с шейдером G-Buffer, в случае использования отложенного затенения, когда как в случае прямого затенения, с итоговым фрагментным шейдером.

Иными словами только для подготовки шейдера к компиляции в кэш нам потребуется целый промежуточный комбайн. Этот комбайн будет работать с текстом, компонуя и генерируя исходный glsl код из пред написанных сниппетов и нашего материала. А на выходе должен быть Asset, уже в формате Spir-V, который и будет использоваться для компиляции уже в машинный код и исполнения на GPU.

Показать полностью
42

Как я сделал игру за 269 часов и НЕ обоср*лся?

Как я сделал игру за 269 часов и НЕ обоср*лся?

Моя новая игра была сделана ровно за 269 часов или-же за 33 дня по 8 часов работы.

Первое и самое важное.

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

Мне не страшно признаться, что мой проект звезд с неба не хватает. Я же сам прекрасно вижу, как он выглядит. Особенно, если пытаться разглядеть в нем серьезную игру! А вот, если воспринимать его изначально как прикол - вполне себе гуд. Но давайте к делу


КАК Я СДЕЛАЛ ИГРУ ЗА 269 ЧАСОВ ?

Главное правило, которого я придерживался:

Нету времени делать, не делай.

1. Игра базируется на основа популярного шаблона для хорроров. В нем собрано абсолютно все необходимое для проекта, поэтому данный ассет сэкономил мне уйму времени и сил.

Как я сделал игру за 269 часов и НЕ обоср*лся?

2. Я не пытался растянуть геймплей до двух часов, лишь бы игру не вернули. Я пошел по другому пути и решил сделать контент чуть более насыщенным, но на минут 40-50, нежели унылый говях на два часа.

Как по-мне, данная стратегия работает лучше. По крайней мере, она сработала для моего первого проекта. Так почему не сработает и для второго.

Скрин возвратов с первой игры:

Как я сделал игру за 269 часов и НЕ обоср*лся?

3. Я ограничивал свои идеи. Конечно, мне всегда хотелось добавить что-то интересное и уникальное , хотелось над чем-то сильнее запариться, но я себя осаждал. Ведь время идет, а проект делается в качестве эксперимента и я не мог себе позволить тратить слишком много времени и сил.

Не советую так делать, если хотите чтобы Ваш проект получился действительно хорошим, но и не забывайте, что Ваш самый ценный ресурс (Время) иссекает. Поэтому ищите золотую середину. Где вы запариваетесь, но не упарываетесь.

4. Я ни на что не рассчитывал. У меня не было абсолютно никаких ожиданий от данного проекта. Я просто делал его для своих видосов на Ютубе, вот и все. Поэтому, я и не запаривался и не стопорился во время работы. По сути, у меня не было даже минуты прокрастинации, потому что я всегда понимал, что мне нужно за сегодня сделать.

По поводу дохода:

Я поставил себе моральную планку в $2-3k бачей чистой прибыли. Эта сумма не окупает мое затраченное время, но морально меня удовлетворит.

Спойлер: Моя моральная планка окупилась за первые 48 часов.

5. Я использовал готовые ассеты для работы. Какая-то часть ассетов - моя и сделана мной еще давным-давно, какая-то часть купленная(Также давным-давно). В процессе работы над игрой, я практически ничего не моделил, поэтому время тоже сэкономил.

Не бойтесь использовать ассеты. Если вы используете их с умом, никаких претензий к Вам не будет.

Как я сделал игру за 269 часов и НЕ обоср*лся?

Коротко об игре: Вы — вор! Вам поступает заказ от дилера и теперь нужно украсть несколько артефактов в недавно обнаруженной археологами древней гробнице!

Если интересно, что за игрульку я навоял: Вот страничка в Стиме

Показать полностью 6
75

Работаю над психологической CRPG, вдохновлённой Disco Elysium — ищу обратную связь по ранним визуалам

Привет всем!

Я — часть небольшой команды, которая работает над нашим проектом мечты — нарративной психологической CRPG Savior Syndrome: The Crimson Sun.

У всех нас есть опыт в геймдеве, но сейчас мы делаем игру в свободное время, потому что это именно тот проект, который мы всегда хотели создать. Трейлера пока нет (он в работе), но я бы хотел поделиться ранними скриншотами, UI-макетами и концепт-артом — и услышать ваше мнение о выбранном направлении.

О игре: Действие разворачивается в мире, где генетические эксперименты соседствуют с оккультными практиками. Основные особенности:

  • высокая вариативность и нелинейность сюжета;

  • развитие персонажа через психотипы, а не классические характеристики (влияет на взаимодействие с миром);

  • сбор улик и преобразование их в факты, которые продвигают расследование и историю;

  • психологические дуэли — мини-система, где вы используете дедукции, чтобы “пробить” собеседника.

На этом этапе мне особенно важна обратная связь по визуальному стилю и понятности интерфейса.

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

Спасибо, что уделили время! Готов ответить на вопросы или рассказать больше, если интересно.

https://store.steampowered.com/app/2988560/Savior_Syndrome_T...

Показать полностью 2
13

Куда можно демонстрировать скриншоты своего indiegamedev-изделия

Куда можно демонстрировать скриншоты своего indiegamedev-изделия

Всем привет.

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

Как будто, скриншоты из игры - это дешево и сердито. При этом можно еще и качеством управлять. Быстро показать новый UI без заморочек или подобрать сочный кадр прямо на витрину магазина.

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


Это моя скромная подборка, где можно делиться прогрессом. Это не реклама площадок и пабликов. И все ресурсы доступны для всех из РФ (без обходов, VPN и прочего).

Скриншотные субботники:

Паблики VK

- prototype.indie

- Weloveplayers.com

- Быть Инди

- Gamedev по-русски

- Ducat

- Last Indie Standing

Telegram

- GameDev: разработка игр

Bluesky

- https://bsky.app/profile/gamedevelopers.bsky.social. Про этот канал не уверен. Не выглядит хоть шибко уж активным.

Вообще, реестр каналов, где проводились какие-то регулярные мероприятия для разрабов, вроде скриншотника, сильно сократился. От года к году примерно в 2 раза. Ваше мнение, почему?

Кроме скриншотников:

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

Отдельно на prototype.indie есть тематические дни для 3д моделей (вторник), арта (пятница) и саунддизайна (четверг). А реддит, соответствующие сабы. Например, r/PixelArt. Но это уже немного про другое и за пределами данного поста.

Ну и конечно же, никто и ничто не мешает отправлять пост про игре в предложку пабликов, блогерам, стримерам, прессе. Это так же за пределами данного поста.

Есть мнение, что участие в скриншотных субботниках хоть и незначительно, но помогает повысить видимость проекта. И это при минимальных трудозатратах. А вы как считаете? Смело пишите в комментариях.

Возможно, есть еще какие-то каналы, которые я упускаю? Так же прошу написать в комментах.

Надеюсь, пост будет полезен. Всем удачного дня, гладкого кода и хорошего настроения!

Показать полностью
14

Делаем TD/roguelike игру

Привет, это команда LazyDogs!

Немного предыстории:
Сидели однажды три ленивых собаки, и ностальгировали по временам, когда трава была зеленее, а варкрафт был еще относительно свежей игрой. Жанр ТД процветал в кастомках, играть было весело. Попытки поискать игру чтобы вернуть себе 2007й оказались тщетны, жанр свернул в сторону цветастых мобильных игр. Не то. Что делать? Правильно, не нравится - сделай сам. Скачали юнити, и началось создание TD мечты.

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

Первая версия карты.

Первая версия карты.

Помимо тд, собаки очень любили жанр roguelike, поэтому было решено совместить тд и рогалик, поэтому дальше были добавлены инвентари у вышек, система характеристик.

Старый UI будет чуть позже, это уже актуальная версия

Старый UI будет чуть позже, это уже актуальная версия

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

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

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

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

Так начиналось создание вышек для игры

А потом и юнитов

UI оказался таким же мучением, поэтому мы пошли тем же путем, и за следующие месяцы прошли путь от этого

Старого UI не сохранилось в нормальном виде, поэтому бонусом идет вышка которая случайно крутила всю верхушку вокруг центра

вот до этого

Деревья на карте чуток подросли когда делали новую карту.

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

Мы старались, чтобы противники не казались однообразными, поэтому те или иные способности есть у всех кроме базовых юнитов каждой из фракций

Примерно к этому моменту мы поняли что у нас есть красивые юниты, вышки, эффекты, но от нашей карты начинает течь кровь из глаз, поэтому было принято решение срочно ее менять. К тому времени у нас уже было больше опыта работы с юнити, поэтому за сроки в 2 раза быстрее карта стала в разы лучше

Все еще немного в работе, но уже похоже на повод для гордости, а не стыда.

На этом мы прибыли к текущему моменту. На самом деле я ОЧЕНЬ многое опустил, но я не уверен что расписать все в одном посте было бы хорошей идеей(да и вряд ли бы удалось), поэтому каждый нюанс в деталях я распишу в отдельных постах, этот хотелось бы оставить общим обзором нашего пути в геймдев.

Мы уже обзавелись страничкой(количество мучений для этого тоже заслуживает отдельного поста, даже несмотря на то насколько Valve постарались упростить процесс попадания в стим).

https://store.steampowered.com/app/3648780/Another_TD/

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

Показать полностью 20
12

Как я пытался начать с нуля. Часть 2: книга и одержимость

Это продолжение вот этой истории (Часть 1): Если вы тоже когда-то пытались начать с нуля

Мини-пост 2.

"Книга, Unity и момент, когда «одним глазком» затянуло"

Всё началось с подарка. Обычный день, ничего не предвещало беды, и вдруг в руках оказывается книга «Кровь, пот и пиксели».

Да и не совсем подарок - так, я почитал - на ты почитай. Честно, раньше читал много, ещё в школе. А вот во взрослом возрасте так чтобы прям книга, прям со страницами -

ну это во времена гаджетов уже редкость.

Если коротко - это истории о том, как делают видеоигры. Это не рекламные "истории про успешный успех", а честные настоящие истории о том,

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

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

Читаешь про то, как люди годами пытаются оживить свои миры, как бросают в них все свои силы, как у них всё рушится — и они всё равно продолжают.

Я тогда ещё не совсем понимал, что эта работа - уже и не работа вовсе в её стандартном понимании. Это уже часть тебя, но об этом позже.

Где-то между главами про проваленные дедлайны и чудом спасённые проекты мысль утвердилась на 100 %: «Я никогда не буду делать игры». Это что ещё такое?

Ни нормальной жизни, ни отдыха ни сна - каторга какая-то. 200% нет. 300% нет. Нет я сказал!

А вот интересно, может сделать просто человечка, чтобы бы ходил на экране моего смартфона ? А как? А что ? Блиинн....

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

Следи внимательно за своими мыслями друг-читатель. Они могут стать твоими действиями.

Итак игры.

Не сайты, не приложения, именно игры.

И тут вспоминается детская любовь к "мехам" - этим здоровенным боевым железякам, от которых дрожит земля. Желательно, чтобы они ещё и стреляли так, чтобы монитор вибрировал.

Ни крестики-нолики, ни шашки, а вот сразу МЕХИ. И ААА проект минимум.

Следующий шаг был логичным: если хочешь делать игры, нужен движок. Это я сейчас такой умный, вначале пытался что-то писать на чистом джаваскрипт !!!

Смотрю на варианты, и Unity выигрывает по простой причине: он реально доступен. Огромное количество документации, курсы, уроки — бери и пользуйся.

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

И денег.

Ладно, если будет интересно - спрашивайте в комментах, сейчас на этом не буду подробно останавливаться.

Нет остановлюсь. Знаете сколько стоит обучение Юнити разработчика? Нисколько. Обучение Юнити в самом Юнити. В самой программе. Ну или на сайте Unity Learn.

С видео инструкциями, с текстовыми инструкциями, с пет проектами. Всё что хочешь - иди и возьми.

Они мне не платили за рекламу если что. Они обо мне даже не знают. Платные и у них тоже есть, но это доп. База вся нахаляву.

Честно говоря, переходить с JavaScript на C# вообще не хотелось. Было ощущение, что меня опять окунают в новый океан, когда я только-только научился не тонуть в старом.

Но Unity сильно не спрашивает, на чём тебе удобнее — хочешь делать игру, учи C#.

И вот снова повторяется знакомый паттерн: я откладываю работу и сажусь учиться как на полноценную работу.

Не в формате «по вечерам», а именно: учебный день, задачи, дисциплина.

Официальные курсы на Unity, видеоуроки, документация — всё это превращается в новый рабочий стол. Вместо заявок и отчётов — туториалы и консоль с ошибками.

Со временем это обучение начало вытеснять все остальные увлечения:

Игры - только как референсы: «что они сделали с камерой, как у них двигается персонаж».

Сериалы - нет, спасибо, у меня тут код не компилируется.

Соцсети - пролистал пару минут, словил чувство вины и обратно в Unity.

Жизнь скукожилась до довольно простой схемы: сон, еда, Unity, редкие выходы в офлайн.

И да, это звучит не как «баланс», а как одержимость. Но без неё, кажется, далеко в такой истории не уедешь.

Unity оказался своей планетой. Сначала шарик, который катится по ровной площадке, потом примитивный персонаж, который еле-еле послушно ходит,

потом первая камера, которая почему-то смотрит куда угодно, только не на героя.

Тут нет нужды уходить в детали уровня `GetComponent<>` - просто представьте:

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

Ты сидишь, смотришь на всё это и задаёшься вопросом: «Кто вообще дал мне эту кнопку “Play”?» ... что? ChatGPT ну что ты написал? Люди так не говорят. Смотри как надо:

"У меня в голове вертелись только две мысли, сменяя друг друга: Блин, а чё так сложно! и Офигеть, а чё так круто?!" - вот, учись. Давай дальше.

Шучу.

Где-то тут вылезает философия.

Когда ты уже успел поработать в одной профессии и вдруг начинаешь всё заново, вопрос «а не поздно?» возникает сам собой.

В какой момент вообще становится *поздно*? После тридцати? После сорока? Когда ипотека? Когда собака и дача?

Со временем я для себя вытащил простую мысль:

"поздно - это когда внутренний голос “Хочууу…” окончательно заткнули и уговорили молчать".

Пока этот голос жив, возраст, стаж и все эти формальности - просто фон.

А, да, про обучение. А то отвлекаете меня постоянно своими вопросами )).

И в какой-то момент шариков и кубиков стало мало.

«Учебный Unity» перестал устраивать. Захотелось настоящего проекта, где вместо болванок будут "МЕХИ", песок, металл и взрывы.

С этого момента началась третья серия - самая весёлая и самая трудная одновременно.

Как я пытался начать с нуля. Часть 2: книга и одержимость
Показать полностью 1
4

Рад представить вам небольшое обновление для Gold for Retirement

Рад представить вам небольшое обновление для Gold for Retirement

Всем привет!
Рад представить вам небольшое обновление для Gold for Retirement.
В основном новые уровни состоят из идей, которые мы отложили в сторону, чтобы основная игра была более целостной.
Дополнительные уровни открываются только после прохождения основной игры. Для этого на последнем уровне нужно просто открыть дверь и зайти в портал.
В будущем мы посмотрим, как Steam будет продвигать игру, и решим, стоит ли делать ещё дополнительные уровни. Это наш первый проект, и наша команда очень благодарна всем, кто поддержал нас - будь то покупка игры или любая другая помощь.
Всем удачи и приятной игры!
Новый контент:
1.Пять дополнительных уровней, которые открываются после прохождения игры. Уровень 31 открывается через уровень END. Для этого нужно открыть дверь и зайти в портал, который находится за двумя дверьми.
2.Два новых саундтрека.
3.Новое видео в обновлённом стиле.
Исправления и улучшения:
Добавлено разрешение 1280x800 для Steam Deck.
Добавлено разрешение 2560x1600.
Исправлено исчезновение полоски топлива при смене разрешения.
На уровни 13, 14, 22, 26 добавлены новые саундтреки.
На некоторых уровнях добавлены дополнительные пузырьки с топливом.
На некоторых уровнях ускорено появление пузырьков.
У пузырьков с топливом увеличены хитбоксы.
Скорость регенерации топлива увеличена с 2.5 до 5.
Исправлены небольшие недоработки на различных уровнях.

Steam - https://store.steampowered.com/app/3513800/Gold_for_Retirement/

VK play - https://vkplay.ru/play/game/gold-for-retirement

Показать полностью
Отличная работа, все прочитано!