Сообщество - Свидетели Godot'овы

Свидетели Godot'овы

86 постов 320 подписчиков

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

Godot Engine. Библиотека новичка

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

Всем привет, дорогие товарищи! Как и было обещано, публикую подборку учебных материалов, которые помогли мне и моим товарищам освоить Godot Engine :)


В этом списке вы найдёте ссылки на материалы, которые можно охарактеризовать как Godot for beginners. Надеюсь, вам будет интересно :)


Если вы впервые слышите об этом движке, приглашаю ознакомиться с его описанием здесь:

Godot Engine. Обзор игрового движка



Официальная Документация


Несмотря на то, что меня постоянно забрасывают какахами, когда речь заходит о доках, я продолжу настаивать на своём: УЧИТЕСЬ РАБОТАТЬ С ДОКУМЕНТАЦИЕЙ! Почему? -- Никто лучше разработчика не знает, как устроен его продукт, так что к кому ещё обращаться, как ни к нему?


Godot Community не только постоянно улучшает и совершенствует движок, но также дописывает и детализирует официальную документацию. Здесь вы найдёте ответы на большинство вопросов, сталкиваясь с практическими проблемами. Да, вероятно, этой ссылке нечего делать в разделе "для новичков", но чем раньше вы освоите навык работы с доками, тем меньше набьёте шишек об углы движка (кстати, это касается любого программного продукта).


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

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


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


Официальная Документация Godot Engine



Подробный туториал о создании простой 2D игры


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


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

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

Ссылка для скачивания ассетов указана в одном из первх уроков туториала.


Туториал на deuga.me Создание простой игры шаг за шагом



Kids Can Code. Godot Recipes


Раздел, посвящённый Godot, в он-лайн школе Kids Can Code. Название школы говорит само за себя ;) Здесь вы найдёте открытые мини-уроки, посвещённые решению практических задач.

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


Godot Engine на Kids Can Code



GDQuest


Вообще-то это он-лайн школа с довольно демократичными ценниками на курсы, но речь пойдёт не о ней :)


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

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


Бонусом -- пачка учебных материалов по визуальному редактору Krita.


GDQuest на YouTube

Официальный сайт GDQuest



HeartBeast


YouTube канал пользователя под ником HeartBeast, где вы так же найдёте уроки по разработке простых коротких игр. У лектора прекрасная дикция, он довольно быстро говорит, но трудностей с пониманием, вроде бы, не возникает.

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

Материал несколько разрозненный, но здесь есть много интересного и познавательного :) Новые видео выходят довольно регулярно.


HeartBeast на YouTube



Angega Studios


YouTube канал пользователя под ником Angega Studios. Сразу скажу, что у него не очень хороший английский и плохой звук, но зато он медленно говорит и разжёвывает каждую мелочь. Вместе с автором контента вы сможете создать три простенькие игры.


Под своими видео автор даёт ссылки на ассеты.

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


Angega Studios на YouTube



Game Development Center


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


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

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


Game Development Center на YouTube



Game Endeavor


Личный блог одного из популяризаторов Godot. Канал специализируется на ретро-играх с пиксельной графикой. Строго говоря последнее обновление было год назад, но автор периодический проявляет активность в комментариях. Возможно, он просто нашёл работу и ему стало не до ютубчика :))

Godot Engine. Библиотека новичка Обучение, Программирование, Godot, Godot Engine, Gamedev, Разработка, Инди, Игровой движок, Видео, YouTube, Длиннопост

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


Game Endeavor на YouTube



Сообщества и взаимопомощь


За 8 лет вокруг Godot Engine сформировалось очень дружелюбное и интересное сообщество. Люди с удовольствием помогают друг другу, отвечают на вопросы, делятся опытом разработки и игровыми ассетами.


Официальный форум вопрос-ответ. Форум, предназначен для взаимопомощи пользователей (иногда его посещают и разработчики движка). Цель форума проста: свести друг с другом вопрошающего и отвечающего.


На форуме действует система голосований за воспросы и ответы (примерно как на пикабу). Если вы встретили какой-то вопрос, он вам актуален, но всё ещё без ответа, тыкаете плюс -- вопрос взлетает в рейтинге по актуальности. Просматривать сообщения пользователей без регистрации можно, закрытые разделы отсутствуют.


Godot на Reddit. Сообщество на Reddit -- живое и дружелюбное. Несколько раз на Reddit мне отвечали гораздо быстрее, чем на форуме вопрос-ответ. Времнами складывается впечатление, что некоторые товарищи там сидят специально, чтобы помогать новичкам.


Сообщество Godot на Steam. Здесь люди, в основном делятся своими поделками и обсуждают популярные проблемы, связанные с разработкой на Godot. Оно не очень полезное, но позалипать на демки в порядке прокрастинации очень приятно и весело.


Разумеется, мне бы хотелось, чтобы наше сообщество на Пикабу тоже расширялось и наполнялось контентом, поэтому не стесняйтесь показывать свои наработки, делиться опытом, задавать вопросы. Надеюсь, что придёт время и Godot Engine станет полпулярным в России!



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


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


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

Благодарю за внимание! Надесю вам было интересно! Если у вас остались какие-то вопросы, не стесняйтесь, спрашивайте в комментах. Если в моих силах будет помочь, я с удовольствием сделаю это :)


Всем хорошего вечера, успехов в изучении Godot и лёгкого старта в увлекательном игродельном мире! ^_^



P.S.: Годобот в заголовке нарисован мной. Картинка распространяется под Creative Commons Attribution 4.0 International License. Если вам нужна эта картинка, вы можете скачать её здесь:


Ссылка для скачивания Годобота


В архив входят 4 картинки с вариациями фона и *.PSD файл.



UPD by @Boogernator: Полезным может ещё оказаться канал, ролики маленькие, про небольшие полезные мелочи рассказывают.

https://youtube.com/c/PlayWithFurcifer



UPD by @captainperson: Еще для любопытных, Стим-куратор игр, сделанных на Godot. В основном любительские поделки на коленке, но уже имеются весьма успешные игры.

https://store.steampowered.com/curator/41324400-Is-it-made-w...



UPD by @MFSUS: тутор с которого я начал.

https://www.codingkaiju.com/tutorials/space-asteroid-arcade-...

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

Godot. NavigationServer2d. Начало

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

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


Сначала сделаем простенький тайлсет из двух тайлов, пол и стенка.

Godot. NavigationServer2d. Начало Gamedev, Godot Engine, Godot, Инди, Разработка, Видео, Без звука, Длиннопост

Быстренько намалюем "лабиринт"

Godot. NavigationServer2d. Начало Gamedev, Godot Engine, Godot, Инди, Разработка, Видео, Без звука, Длиннопост

Быстренько глянем на сцену персонажа

Godot. NavigationServer2d. Начало Gamedev, Godot Engine, Godot, Инди, Разработка, Видео, Без звука, Длиннопост

Поместим героя на сцену Game где так же присутствует Tilemap

Godot. NavigationServer2d. Начало Gamedev, Godot Engine, Godot, Инди, Разработка, Видео, Без звука, Длиннопост

И немножечко совсем кода

Godot. NavigationServer2d. Начало Gamedev, Godot Engine, Godot, Инди, Разработка, Видео, Без звука, Длиннопост

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


Дальше конечно у меня есть ещё сложности и некоторое непонимание, ну как разберусь и лениться перестану, так сразу напишу продолжение)


Спасибо за внимание.

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

Реальна ли крутая графика на годо?

Интересно, есть ли примеры 3д проектов на годоте, которые могут похвастаться хорошей графикой? Реально ли реализовать качественное освещение, используя инструменты данного движка? Есть ли у вас примеры реализации крутой графики при помощи годота?

Godot. Мотивации пост

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

Просто процитирую его напрямую.

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

Как Стетхем молвил.

Godot. Мотивации пост Gamedev, Инди, Godot, Godot Engine, Длиннопост

Были мысли начать делать тактику в 3D с 2Dтекстурками, с разбором всего, но теперь прям все окончательно решено, будем делать HOG(Hidden Object Game)всегда это пугало своим объемом по трудозатратам. Но тут объем пугал только благодаря пониманию всего процесса разработки, так то я на куче ХОГов поработал и на топовых в том числе, а другие жанры казались простыми.

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

Godot. Мотивации пост Gamedev, Инди, Godot, Godot Engine, Длиннопост

Вот собственно и рефер первой комнаты. Игра будет за детектива-медиума, который в нарколептических снах видит глазами маньяка и ищет улики) Легко, казуально и ненапряжно, в роль геймдиза у меня вжиться не получается, а вот в маньяка легчайше) Надо свои отклонения, на пользу применять)

Godot. Мотивации пост Gamedev, Инди, Godot, Godot Engine, Длиннопост

И котика, на фоне крипового пикачу надо добавить)

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

Godot. AnimationPlayer. Вызов метода с таймлайна

День добрый, всем любителям Godot. Небольшой будет постик, но это удобная штука, про которую оказывается не все знают.

Небольшая видяшечка обозначающая так сказать суть решаемой задачи.

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

Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост

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

Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост

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

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

Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост
Godot. AnimationPlayer. Вызов метода с таймлайна Gamedev, Godot, Разработка, Мат, Видео, Длиннопост

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

Все просто.


Спасибо за внимание.


p.s. Разбор текстовый по AnimationPlayer будет ещё и не один, в течении этого года буду им часто пользоваться, это настолько мощный и удобный инструмент что грех им не пользоваться, по сути это Flash и Spine и DragonBones в одном флаконе и даже больше. Искренне верю, что все больше и больше людей попробуют для себя Godot и мы увидим новую эпоху флеш-игр, только быстро-работающих и без проблем с безопасностью. А после заявлений CEO Unity, хочется только плевать в их сторону, уверен что именно Godot станет следующим народным движком.

Всем Godot.

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема

День добрый, всем любителям Godot. Бомбил опять спьяну, вообще без оснований причем, так-то все по делу. Ну ладно, для сообщества буду писать трезвый, а там ну прорывается личное, хрен с ним. Предыдущий пост по ссылке ниже.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2


А теперь перейду к возникшей проблеме, вообще она возникла не только сейчас, она была изначально, так что рано я радовался, просто в силу слабого понимания я её пропустил))

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема Gamedev, Инди, Godot, Godot Engine, Разработка, Баги в играх, Видео, Без звука, Мат, Длиннопост

На картинке ниже её будет наглядно видно. Хотя это тот же самый шейдер.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема Gamedev, Инди, Godot, Godot Engine, Разработка, Баги в играх, Видео, Без звука, Мат, Длиннопост

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема Gamedev, Инди, Godot, Godot Engine, Разработка, Баги в играх, Видео, Без звука, Мат, Длиннопост

Ну собственно, все как официальном туториале.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема Gamedev, Инди, Godot, Godot Engine, Разработка, Баги в играх, Видео, Без звука, Мат, Длиннопост

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

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


https://godotshaders.com/?s=outline

Можете посмотреть варианты выложенные, даже довольно полный Colorful Outline

https://godotshaders.com/shader/colorful-outline/

Godot. Путь к основам VFX. Пишем свой outline shader. Ч3. Первая проблема Gamedev, Инди, Godot, Godot Engine, Разработка, Баги в играх, Видео, Без звука, Мат, Длиннопост

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

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

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



Если надолго залипну, то переключусь на партиклы в Godot4 пока, а может на TileMap, охуенно сделано в отличии от Godot3, но ещё очень сырой прототип пока стыдно показывать) Клон Into the Breach начал делать, кайфово все в ней, кроме геймплея, бомбит с него, сюжетку бы на этой механике и сеттинге, я бы все dlc покупал)


Спасибо за внимание, всем Godot.


P.S. Скоро будет джем на сониккон, если что ищу команду, но больничный всё, выхожу завтра на работу, так что не смогу трое суток фултайм, но приобщиться хотелось бы, кто в теме пишите
в личку. Естественно только на Godot)
https://t.me/JunkyRoach

или в DS, но там я редко проверяю

Boogernator#5177

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2

День добрый, уважаемые любители Godot'a. Продолжу мучать шейдер. Начало тут
Godot. Путь к основам VFX. Пишем свой outline shader. Ч1

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


Вот как получается на больших значениях.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

Почему так происходит и что это за хрень вообще, на самом деле все очень просто)

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

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

Как видите мы вполне научились делать копию картинки с помощью шейдера, а этого знания уже достаточно чтобы запилить например аналог reflected image из Baldurs Gate

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

Ну или например для какого-нибудь блинка или фазового смещения можно оставлять шлейф за персонажем, после резкого перемещения. Конечно это можно сделать и создавая копии картинки с помощью gdscript, но зачем нагружать ЦП и память, если можно это переложить на видяху, да и кода будет существенно меньше)

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


Вернемся к аутлайну, уже видно что текущий вариант совершенно не годится, если значения превышают какие-то лимиты, да и смещение идет только по горизонтали и вертикали. Все варианты которые я смотрел, так или иначе схожие по смыслу, хоть и разные по реализации. Ну и посетила голову мысль случайная, зачем вообще все это городить, если по сути можно отскейлить картинку до нужного размера, вычесть из отскейленной текущие цвета и получим нужный результат по сути. Так и поступлю пожалуй).
В снипетах есть готовый код скейла его и возьму.
https://godotshaders.com/snippet/scale/


Вставим это дело в шейдер и вычтем исходную картинку.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч2 Gamedev, Инди, Godot Engine, Godot, Шейдеры, Видео, Без звука, Длиннопост

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

Спасибо за внимание.

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1

День добрый, уважаемые любители Godot'a. Хотел вроде разобрать вариант предложенный создателями самого Godot, но у меня как всегда семь пятниц на неделе и почему-то подумалось, что лучше написать этот велосипед с нуля и самостоятельно, по своему разумению. А потом уже сравнить с нормальным вариантом, попутно по возможности выяснив, а как правильнее и лучше. Может кто подскажет заодно, как вообще это выяснить, наверняка должен быть какой-нибудь профайлер для шейдеров)


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

Godot путь новичка. Первый Enemy и первый Шейдер

Вот ссылки на документацию
https://docs.godotengine.org/ru/stable/tutorials/shaders/ind...
https://docs.godotengine.org/ru/stable/tutorials/shaders/sha...


Ну ладно хватит с деталями. Стартуем.

Что-то придумывать не стал, обрезал стандартную иконку, на ней и буду практиковаться.
Это думаю надо уточнить, потому что она идет на синем фоне, который совсем даже не нужен.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

Теперь создадим новый шейдер и проверим что все идет как надо.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

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

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

Можно это все конечно сократить очень сильно в плане количества кода, сразу будет выглядеть по "шейдерному"(в смысле что нихуя не понятно что происходит), но мне пока больше нравится так, нормальный такой рабочий, джуновский код, пока высшее дао не откроется, буду писать подобным образом) Ну и мне кажется так проще для понимания + когда перейду к доработкам шейдера, очень наглядно будет видно что писать подобным образом, это обрекать себя на переписывание больших кусков кода))

Ну и теперь осталось только добавить настраиваемую ширину каемочки.

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

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

Во-первых мы использовали 4-Way для определения соседей вместо 8-way, что сразу порождает кучищу проблем, ну да ладно, это всего лишь первая часть, чтобы было что исправлять, надо чего-то и наговнякать же сначала, отправная точка хотя бы имеется)

Godot. Путь к основам VFX. Пишем свой outline shader. Ч1 Gamedev, Godot Engine, Godot, Инди, Мат, Длиннопост

Ну кому лень делать, в следующей части тогда наглядно покажу.
Спасибо за внимание, всем Godot.

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

Шарите в мировой мифологии?

Проверьте себя, пройдя испытание мудрости. Самые достойные получат приз — награду в профиль на Пикабу.

Godot. Путь к основам VFX. Smooth Outline Shader

День добрый, дорогие подписчики. Все я точно определился, чем буду заниматься следующий год, это будет изучение шейдеров, партиклов и начну потихоньку осваивать 3D, ну если точнее это будет 2D в 3D окружении, люблю 2D, но и тащусь от возможностей 3D в плане эффектов)
Сразу уточню дабы избежать лишних вопросов, я нихрена не понимаю в этом всем, все что делаю полагаюсь на интуицию и метод "Тыка", но очень хочется разобраться.

Теперь к теме поста. Написала мне в комментариях пикабушница @wolchy, ну пообщались познакомились, специалист в UI/UX, отлично рисует, любит и умеет в Godot, разбирается в шейдерах, мечта поэта короче) Суть проблемы: Для активных предметов в инвентаре, нужна каемочка по краю предмета разного цвета и с градиентной заливкой, ну и не только в инвентаре, а где пригодится. Чуете подход? Художник не хочет тратить свое время и силы, чтобы рисовать для каждого предмета отдельные рамочки, а хочет универсальный способ эту рамочку получить без лишних напрягов, при том что сама написала практически полностью устраивающий её шейдер, проблема одна, рамочка получается не ровная и без сглаживания. На картинке ниже это наглядно показано.
UPD: Важное и полезное уточнение #comment_243392931

Godot. Путь к основам VFX. Smooth Outline Shader Godot Engine, Godot, Gamedev, Инди, Длиннопост

Ну мне конечно же стало интересно помочь, тут же в голове возникла куча идей по применению и в своем проекте. Вооружившись гуглом тут же был найден походящий шейдер на godotshaders, но результат был не совсем тот, который требовался по ТЗ, пришлось пару дней потратить чтобы разобраться что и как там в нем работает, чтобы внести пару строчек измений до подходящего))
Реально 1 день на 1 строчку кода, ну я говорил, что я тупой и новичок в этом всем ещё))

Собственно результат.

Godot. Путь к основам VFX. Smooth Outline Shader Godot Engine, Godot, Gamedev, Инди, Длиннопост

Да ещё есть огрехи и по функциональности есть ещё что доработать, чем займусь в ближайшее время, но уже довольно неплохо получилось) Пофигу что основной код не мой, любым способом надо получать нужный результат с минимальными трудозатратами, хотя стыдно, что не сам с нуля написал)
Ссылка на исходный шейдер https://godotshaders.com/shader/smooth-outline-2d/


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

https://t.me/boogernator/123

Для совсем ненавистников телеги, вот код копипастой, ну отступы придется ручками тогда)


shader_type canvas_item;

render_mode unshaded;

uniform bool Smooth = true;

uniform float width : hint_range(0.0, 64) = 1.0;

uniform vec4 outline_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0);

uniform vec4 outline_color_second : hint_color = vec4(0.0, 0.0, 0.0, 1.0);

uniform int pixel_size : hint_range(1, 10) = 4;

void fragment()

{

vec4 col = texture(TEXTURE, UV);

vec2 ps = TEXTURE_PIXEL_SIZE;

float _width = width;

vec2 unit = (1.0/float(pixel_size) ) / vec2(textureSize(TEXTURE, 0));

vec4 pixel_color = texture(TEXTURE, UV);

if (pixel_color.a <= 0.25) {

pixel_color = mix(outline_color,outline_color_second, UV.y);

pixel_color.a = 0.0;

for (float x = -ceil(_width); x <= ceil(_width); x++) {

for (float y = -ceil(_width); y <= ceil(_width); y++) {

if (texture(TEXTURE, UV + vec2(x*unit.x, y*unit.y)).a == 0.0 || (x==0.0 && y==0.0)) {

continue;

}

float gradient_k = outline_color.a / (pow(x,2)+pow(y,2)) * (1.0-pow(2.0, -_width));

if (Smooth) {

pixel_color.a += gradient_k;

if (pixel_color.a > 1.0) {

pixel_color.a = 1.0;

}

} else {

pixel_color.a = outline_color.a;

return

}

}

}

}

COLOR = pixel_color;

}

Godot. Путь к основам VFX. Smooth Outline Shader Godot Engine, Godot, Gamedev, Инди, Длиннопост

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


По разбору кода самого шейдера, тут думаю надо сначала начать с простого, с разбора аутлайншейдера предложеного авторами Godot. Но это уже в следующем посте. Спасибо за внимание.


p.s. Если нужна кому какая помощь по Godot, то не стесняйтесь писать, я так-то простой человек и никому не отказываю, что не умею, так как раз вместе и разберемся, оба получим чуть больше опыта)

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