Godot путь новичка. Анимируем выделенную область. Ч-1

Добрый вечер, мои дорогие подписчики. Не самая тривиальная задачка у меня сейчас, сам не знаю, что получится по итогу и получится-ли) Но почему-то подумалось, что это может быть интересно, а кому-то и полезно. Немножко в другом формате попробую, ну а дальше видно будет надо или нет.
Краткий план серии:
1. Собираем нужные координаты и рисуем линию для отладки.
2.Добавляем партиклы капелек из нужной области.
3. Накладываем на область(или спрайты под ней) шейдер, имитирующий воду.
4++ Придумываем варианты и делаем их для 4-х остальных стихий(хз сколько тут частей)
99-- Оптимизируем и полируем.

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

Картиночкой суть проблемы.

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Кратко ТЗ: Надо чтобы выделенные руны, светились под пальцем, ну типа ты кастуешь какбы: по красным проводишь, чтобы огнем гореть все начинало, по синим, чтобы капли из под пальца капать начинали и тд,  ну как в Arx Fatalis, типа жестом ты кастуешь что-то, а не просто елозишь по одинаковым.
Краткая выжимка из пары десятков сообщений.

*** Да мы пытаемся вести документацию в Miro(Ну я пытаюсь, братан там реально навертел делов, я как "настоящий погроммист" ничего ни читаю) Но все одно приходим к тому, что самая удобная постановка задачи это в чатиках попереписываться и тупых вопросов позадавать. В малых коллективах это на самом деле лучший вариант, нет смысла жиру разворачивать на команду из 2-5человек.
***
Но документация дико важна, хоть и редко захожу, а там бац и ответ на вопрос который задать хотел) Ну и мы разрастемся, документация пригодится всегда, да и самому себе напомнить, соберусь как-нибудь напишу, что сам должен, вжился опять в программиста, документация мне по барабану))

Мозги мне не еби, поясни на пальцах, что конкретно сделать надо)
Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

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

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

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Это весь код, чтобы показать желтый квадратик)

Не переживайте,  если вас пугает лишний код, он не важен для текущей задачи, в целом и есть мысль, чтобы скопипастить потом и вынести в отдельный репозиторий и его можно будет использовать чтобы рисовать жесты, как в выше упомянутом Arx Fatalis или Black and White если это вам ближе)) На match механике, оно просто все проще и понятнее, хотя сейчас уже понимаю что вообще разницы нету) главное иметь список точек по которым рисовать и паттерн для соответствий магии(увлекся сорян, постепенно к этому придем)

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

Если есть линия, по ней мы потом можем нарисовать любой полигон или область, линия основа основ в 2D, не столько вам пишу, сколько себе напоминаю, блять 600 строк гавнокода налепил, почему??? Потому что дебил и сам не следую тому что писал ранее. Такого навертел стыдно))
Kiss - делай проще тупица.
Но линия не базовая единица в геометрии, базовая - точка. Линия это всего лишь массив из точек. не цепляйтесь к словам, для игры нам мало интересна прямая палка, нам интересна именно линия, кривая косая это уже как сделаете. Прямоугольник это линия из 4-х точек, круг это просто дохера точек, чем менее угловатый, тем больше точек. Так что приходим к очень полезному типу данных в Godot, а именно к PoolVector2Array.

PoolVector2Array - строго типизированный массив.
https://docs.godotengine.org/ru/stable/classes/class_poolvec...
Мне в комментариях написал как-то умный человек я прислушался, сам же когда ещё на флешике кодил максимально старался использовать Vector(Там так назывались типизированные массивы) По факту к этому надо придти, динамическая типизация, она очень удобна когда ты что-то пробуешь, гавнокодишь, прототипируешь, изучаешь. Потом ты перестаешь плавать и уже начинаешь изучать нюансы, прототипы становятся сложнее, начинают порой безумно тормозить, кода становится больше - читать написанное пару месяцев назад уже сложнее, в голове все не держится и на помощь приходит она))

Статическая типизация.

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

Как это касается линий и прочего, все очень просто. Базовая нода для отрисовки линий Line2D в качестве входного параметра имеет именно PoolVector2Array. Список точек если по простому.
Научитесь перфектно работать со списками, с алгоритмами и тд, в ваших списках начнут появляться не только точки и данные, а начнет расти список сочных телочек(девочки любят умных и ITшников)

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Вот просто пример для наглядности.

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Напишите этот код и сцена Line2D у вас и отрисуется.

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Ну у меня толстая линия просто, ширина для неё 128 стоит, но суть отражает.

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

Для наглядности, как сделано у нас в проекте пока. Вот список точек, по которым отрисовалась сочная линия, за худыми линиями не ко мне. Я за отмену "отмены" Джины Карано:"Толстый, худой, лишь бы сочная". Это Сочная линия!!! Хоть и бледная, но этом кому как - даешь средний RGB не ниже среднего IQ!!!!

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

Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост
Godot путь новичка. Анимируем выделенную область. Ч-1 Gamedev, Программирование, Godot Engine, Godot, VFX, Мат, Неадекват, Алкоголь, Видео, Длиннопост

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

Спасибо за внимание.
Если что-то не понятно пишите в комментариях, если вы раньше не читали моих постов, то можете попросить, запилю отдельным постом, с голого проекта как рисовать линию мышкой и тачем или по координатам. Ориентируюсь пока на тех 5-7 человек, которые читают регулярно, а они и так понимают уже, как добавить новую ноду, потому совсем элементарные вещи опускаю иначе это растянется на хз сколько времени, сконцентрировался на важном, где у меня были затыки)

В следующем части серии, будем использовать эту линию для создания области эмиттера, чтобы капало с конца, у лихого молодца. Деталей не будет, пойду сразу по сложностям. Основы партиклов в своем понимании уже излагал, все будет по сложности как и в том посте, немножко поменяются нюансы и заложимся(возможно под следующие стихии).
Для ознакомления Godot Путь новичка. Particles2D стремный снегопад

Godot Тащит, Тащит и Прёт.

p.s. Если соберу -20, а у меня выходит частенько, тогда не буду продолжать, усредненное побеждает. Но если лично вам захочется следующей части, то пишите коммент, что вам нужно. Я старичок, я скучаю по концепции VOD'ов(Video on Demand), лучшие у меня получались только по просьбе. А лайки и подписки мне допизды, комментами подправлю, рейтинга вон наросло пздц, 400+ за сутки, посты бы так писать)) Спасибо за внимание, удачи бро!

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

84 поста287 подписчиков

Добавить пост

Правила сообщества

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