Всем привет, давно ничего не постил, вечно некогда) Странное название, но я хз как это назвать ещё, но вот пример, это по работе делал анимашку пока идет поиск противника, про партиклы тут вроде особо нечего рассказывать, уже и так эти моменты пояснял, а вот фон на заднем плане, раньше не знал как сделать подобное, долго голову ломал)) Но нашел решение)
Ну в целом, мне кажется можно проще решение найти, но не хочется покадровую анимацию, не знаю, думаю ещё пока, но в целом этот задник сделан шейдером. И кому интересно я записал видос, как подобного плана делать эффекты, можно и лучше сделать конечно, я ещё только учусь, но базовой концепцией поделюсь) Может пригодится кому)
Может не все хорошо получилось, вернусь ещё к этой теме, можно и партиклами добиться примерно такого-же эффекта. Посмотрим ещё.
Всем привет, возник спор за работу курьером и почему геймдев лучше, а мне тут есть что сказать и потому напишу свое мнение. Заголовок не бейт, это реально так и есть, щас попробую кратенько объяснить почему.
@LeonIlich, беседа с тобой надоумила написать пост, продолжу тут если ты не против)
За Геймдев: Плюсы: Неплохо платят, учишься новому, в целом интересно. Минусы: Забудь, что есть что-то остальное, ты всецело на одном проекте, особенно в предрелизе. Даже играть уже некогда будет. Кранчи, Кранчи, Кранчи!!! Я два года даже не загорал, на рыбалке не был ещё больше)
За Курьера: Голова всегда свободна!
Много чего хочется написать, но когда я работал продавцом и курьером, я делал игру своей мечты. Мой странный микс MOO2, космических рейнджеров и моей любимой Eve Online, тут и суть астероиды копать. Это примерно месяц разработки фултайм в одно лицо.
Сейчас я на работе пытаюсь сделать стилизованные трейлы и они суммарно у меня съели больше времени, чем предыдущая разработка, хотя опытные юнитисты, скажут, что тут делов-то на две копейки, в целом так, но мне надо на Godot) И у меня мало ещё опыта в VFX)
Вот как думаете интересно мне это делать вместо своих космических корабликов? В целом мне тоже нравится, интересно.
Вот GameArtTeaser c работы, на 50 секунде два моих эффекта попали в ролик даже)
Это прикольно, занятный проект, играется интересно, скоро будет альфатест, что интереснее всего для моих подписчиков и этой группы, это проект на Godot версия 4.1.1, много было сложностей, но много интересных решений, Godot походу годен не только для индиков на коленке собранных.
Все офигенно, но есть один минус! Последний коммит в своей разработке, я сделал в июне, аккурат перед тем, как перейти на фултайм в студию, да я работаю удаленно, но у меня нету сил и энергии сидеть на двух стульях, я или там или там, потому мне любопытен был вариант подработки курьером, но подработкой, там и 20к не заработаешь, там потеть и пыхтеть надо. Лучше сосредоточится на чем-то одном, я на пятом десятке решил начать специализироваться на VFX, не успеваю я за программистами, но мне хватает бекграунда, чтобы с ними нормально сотрудничать) Собаки лают, караван идет, со временем все лучше и лучше получается уже. Вот вам и путь из продавца, три года назад кажись я писал первый пост про шейдеры, и на пятом десятке обрел новую профессию с шестизначным окладом в не самом популярном пока движке)
Ругайте, критикуйте, ну я старался делиться всем чем мог и писал о чуть ли не каждом шаге, иногда срывало и бухал и дичал, но ровная дорога редко бывает. Может мне чаще надо было писать, о том, как не получалось то или другое, может действительно чаще буду писать теперь, не о конкретных реализациях, а больше о концепциях, чтобы на мысль верную навести, мои реализации далеки от идеала, меня тут много хейтили за них, но концепции были верные, а реализации, это дело наживное) Вопрос опыта, всего-лишь)
Спасибо за внимание, всем удачи!! Осилит дорогу идущий!
Всем привет, давно кроме дичи ничего не постил, нечего было, был творческий застой, нового делать не учился, работал работу, на том что умел до этого.
Небольшой прорыв для меня случился за три месяца, я понял, как могу сделать годную, нетормозящую цепную молнию, без всяких шейдеров и тд, будет работать шустро и в вебе и на гавномобилках. Снег пикабушный может мотивировал, а может просто допер наконец-то, про фаерболл уже писал, это для меня этапы. Сначала научится делать фаербол, вроде ок получаются) С молниями было сложно)
Такая была, но это простая, это просто покадровая анимация, жена нарисовала я добавил, а вот чтобы била откуда надо и куда надо и не была покадровой или партиклы использовала, ну вот первый видос, к ней конечно добавлю ещё искр партиклами при касании, но тут она технически другая и так просто на самом деле.
Я все одно наверное заморочусь и запишу видос, да наверное и сюда тоже выложу не только на ютюб, просто захотелось поделиться, что наконец-то это случилось и молнии, тоже скоро походу научусь делать годные)
Всем удачи, с наступающим. Сорян за зехера мои периодические, когда долго что-то не получается, в уныние впадаю(
P.S. Эта молния не будет тормозить, как снег на пикабу, это вообще по сути Line2D простой)
Их есть у нас! Красивая карта, целых три уровня и много жителей, которых надо осчастливить быстрым интернетом. Для этого придется немножко подумать, но оно того стоит: ведь тем, кто дойдет до конца, выдадим красивую награду в профиль!
Всем привет! Пару дней назад я опубликовал пост о своей радости от завершения работы над игрой и долгожданным релизом и получил (я посчитал) 46 вопросов о том, как игра делалась.
Что ж, как минимум, я отвечу этим людям, и как максимум - привлеку внимание к проекту.
В чём его суть?
Это приключение с видом от первого лица. Игра с элементами хоррора, шутера, текстовой новеллы и головоломками.
Сюжет вкратце таков: главный герой в лице простого русского Ивана получает сообщение от сестры, которая просит приехать к ней на помощь, а после исчезает не выходя на связь. Иван отправляется на поиски сестры, и проходит через самые разные ловушки, загадки, врагов, и так далее.
Игра доступна на всех [почти] платформах: PC, Android, iOS, ссылки будут в самом низу поста.
А теперь, вся история разработки.
Я постараюсь собрать все материалы за всё время разработки, но если чего-то не найду, простите, на тот момент я не закладывал никаких перспектив на публикацию.
28 октября 2022
Работа над проектом началась примерно в октябре 2022 года. На тот момент всё было шатко в жизни, события, происходящие в стране и за её пределами очень сильно ударили по эмоциональному состоянию, и нужно было чем-то себя занять помимо основной работы. Банально - чтобы не сойти с ума.
Я решил, что нужно делать игру в той же вселенной, где прежде я уже сделал игру "Бункер 21".
Причины:
Аудитория уже есть
Интересный мир
Возможность развивать вселенную
Мой просчёт на тот момент: аудитория Бункер 21, это аудитория другой игры. Хоть игровая вселенная и одна, чтобы люди узнали о новой игре, им придётся пройти предыдущую. Путь сложный. Группа и сама игра уже переданы другой студии, а значит пиариться на прошлом уже не выйдет.
Первый видео анонс игры. Я решил делать игру простую, небольшую, на полчаса прохождения, чтобы быстро её закончить. На тот момент я думал, что на разработку уйдёт максимум пара месяцев. Но нет.
В процессе написания сюжета, в игре была мистическая атмосфера, но без элементов хоррора. Однако, когда я перешёл к моделированию уровней, появились локации, в которых можно было бы добавить элементы пугающей атмосферы.
И, пока я моделировал, атмосфера становилась всё мрачнее и темнее. А изначально это должно было быть приключение.
Вторая моя ошибка - я не занимался прототипированием локаций, чтобы проработать механики. Делая локации сразу целиком, большой проблемой потом было пере-моделировать их заново.
Важно! При работе над игрой обязательно нужно делать прототип локации, хоть на кубах, чтобы тестировать логику уровня.
И вот, 6 ноября была выложена демо-версия игры.
Первое название игры
Началась оценка аудитории, полировка первых локаций, проработка механик. Я получил небольшой отклик от людей.
Органика по установка пошла в Google Play и App Store.
Через какое-то время я решил сменить у игры название, на более близкое к сюжету и лору.
И тут возникла проблема. По какой-то причине игра резко пропала из поиска в Google Play. Я очень долго искал причины, и никак не мог понять, в чём дело.
Оказалось, что при смене названия, описания, и любых мета данных в сторе происходит переучёт поисковой выдачи. И да, на несколько дней игра, если у неё не закрепились предыдущие поисковые метки, пропадает из поисковой выдачи.
Спустя месяц я полностью переоформил первые локации, и приступил к новой главе игры.
Попутно, в процессе создания новой главы, я начал продумывать интерактивные элементы.
Так в игре появился сбор дисков, компьютеры, рычаги, разные механизмы, с помощью которых стало возможным делать головоломки.
По отзывам к демке я понял, что игра получалась очень мрачной, тёмной, и это нифига не про атмосферу. Тупо ничего не видно.
Я отправился на переоформление локаций.
Помимо переоформления локаций, я решил, что наверное стоит отказаться от мистики, и перейти к научной фантастике. Это и мне ближе, и вообще я пришёл тогда к выводу, что решение мистифицировать происходящее было странным.
После перехода к научной составляющей и осветлению локаций, я подумал, что путешествие героя могло бы составлять разные временные промежутки, а это ведёт и к смене погоды.
А то получается, что, движение сюжета есть, время идёт, а на дворе всё время лето.
Так появились переходы между сезонами года.
Когда была готова вторая глава, я решил добавить поддержку геймпада. Это оказалось довольно сложной задачей, когда ты изначально про это не думаешь, а потом такой "а чёб и нет". И начинается...
Постепенно история становилась глубже. На тот момент я понял, что начинается долгострой. Конечно, я делаю игру один, все этапы не распараллелить, приходится бороться с усталостью, пракрастинацией, сложно соблюдать график сна.
В декабре 2022 года я решил, что делать игру в срок - плохая идея, когда ты раздолбай в плане самоорганизации.
А в январе меня уволили с работы. Точнее вынудили уволиться.
Моральный дух упал ниже плинтуса.
Пришлось и искать работу, и делать игру, так как бросить делать игру я не мог, потому что если я остаюсь без дела, накатывает такая безнадёга... появились долги.
Какое-то время после я не делал в игре ничего нового, а просто до бесконечности экспериментировал с тем, что было.
Третью главу игры я начал делать, бегая по собеседованиям. И это отразилось на геймплее. Теперь игра стала сложнее, появились стреляющие враги, охранники, разные препятствия, постоянно мешающие проходить игру.
От классических медлительных "зомби" игроку в новой главе противостоят быстрые, стреляющие, догоняющие и моментально атакующие враги.
Всем привет, редко пишу, зашиваюсь на работе, при том что эффективность моей работы довольно низкая, потерял интерес к VFX, ну как потерял, просто понимаю, что мой уровень не скоро ещё выйдет на достойный. Ну короче несколько людей интересуются этим, проводил опрос, на какую тему лучше сделать видосик. В опросе победил 2D FireBall и без шейдеров чтобы, месяц почти не мог собраться, но на днях разродился.
Вот такой у меня получился для своего проекта
Ну плюс-минус с нуля я почти все объяснил как сделать похожий, с пустого проекта, включая и где взять пак партиклов и немножко кода, чтобы он летел и тд. Честно не очень хотелось сюда выкладывать, на ютубе уже и так нормально просмотров собрал по моим меркам, но для сообщества выложу, может кому и будет полезно.
Да, это не шедевр анимации, + не затронута тема освещения, ну и как бы делайте скидку, что я программист, а VFX только учусь ещё) Так что сами докручивайте до вменяемого качества)
Всем спасибо за внимание, удачи на этом нелегком поприще)
Для тех кто первый раз читает мой гоблинский блог - расскажу кратко что тут происходит. Я сам являюсь зеленым новичком в разработке игр и в своем блоге описываю этапы изучения столь сложного дела. На данный момент - это работа с движком Godot 4.
Чтобы не мучать вас длинными статьями, я разбиваю этот путь на кучу мелких блоков. Один пост - одна механика движка. Все гоблинские заумные слова расшифровываются на человеческий, так что даже пациент из Кащенко поймет о чем речь. Погнали!
● Создание сцены с персонажем:
В прошлой статье мы создали редактор карт с автоматическим заполнением, кто не читал - почитайте, будет полезно. Теперь нам нужно сделать персонажа, которым мы будем бегать по данной карте. Для этого нам нужен узел типа "CharacterBody2D", на основе которого мы и создаем новую сцену. Сделать это можно выбрав вкладку "Другой узел".
Как выглядит узел "CharacterBody2D"
● Визуальное изображение персонажа:
Узел это конечно хорошо, но мы пока ни черта не видим - нам нужен визуальный образ. Добавляем дочерний узел "Sprite2D". В его настройках находим вкладку текстуры и добавляем иконку Godot. В будущем мы заменим спрайт на анимацию, но пока нам хватит такой затычки.
Узел "Sprite" -> Texture -> Быстро загрузить
● Настройка зоны столкновения:
Чтобы наш персонаж не проваливался в текстуры и реагировал на поверхности мы должны настроить зоны столкновения. В прошлом уроке мы работали со слоем Collision в нашем TileMap. Тут же мы добавляем узел "CollisionShape2D", который представляет из себя выделение зоны столкновения в виде простой геометрической фигуры. Вид этой фигуры мы выбираем во вкладке "Shape".
Узел "CollisionShape2D" -> Shape -> Новый RectangleShape2D
● Начальные данные для физики и управления:
Создаем скрипт для нашей сцены и первым делом зададим константы. Константа - это постоянное значение, которое не будет меняться в ходе работы программы.
Чтобы создать константу мы пишем: const название_константы = значение
Переменные же создаются по другому: var название_переменной = значение
Давайте разберемся за что отвечают указанные нами значения:
speed и acceleration - от этих значений будет зависеть скорость передвижения по оси X (влево-вправо)
jump_velocity - это значение влияющее на высоту прыжка. Ось Y в Godot перевернута с ног на голову и отрицательное значение означает вверх.
friction - значение влияющее на скорость остановки при прекращении передвижения.
Так выглядят наши константы в коде
Так же мы добавляем значение гравитации, однако оно выставляется из внутренних настроек проекта.
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
● Общая функция для управления персонажем:
Задав исходные данные мы можем приступать к настройкам функций нашего персонажа. Для этого мы пишем стандартную функцию Godot:
func _physics_process(delta):
Для тех кто не знает - эта функция вызывается перед каждым физическим кадром, который привязан к физическому fps, он по умолчанию равен 60 раз в секунду.
var input_axis = Input.get_axis("ui_left","ui_right")
Get_axis - это функция которая присваивает переменной одно из двух значений при нажатии одной из двух кнопок. Первое значение равно -1 и задается при нажатии клавиши "влево". Второе же равно 1 и задается при нажатии клавиши "вправо". Если на момент кадра не нажата ни одна из этих кнопок, значение равно 0. Это позволяет нам определить нужное направление для изменения координат персонажа.
Влево = -1 | Вправо = 1 | Стоим на месте = 0
● Движение по оси X (влево-вправо), создаем новую функцию:
handle_acceleration (input_axis, delta)
В нее мы добавляем условие, что должна быть нажата одна из клавиш - влево или вправо.
if input_axis !=0:
Если данное условие выполнено, то мы совершаем перемещение в заданном направлении. Для этого используется функция move_toward.
velocity.x - это переменная отвечающая за перемещение по оси X.
В move_toward мы задаем три параметра через запятую. Изначальная точка, точка в которую мы должны прийти, шаг в сторону нужной точки за один кадр.
Каждый кадр мы двигаемся в выбранную сторону, начальная точка меняется и это создает замкнутый круг движения. А чтобы его запустить, мы добавляем нашу функцию под physics_process и в конце пишем move_and_slide().
move_toward ( начальная точка, точка прибытия, расстояние шага за один кадр )
▸ А где тормоза то !?
● Как сделать остановку?
Мы начали двигаться и если не нажмем кнопку в противоположную сторону - улетим за край карты. Чтобы разорвать наш круг постоянного движения мы должны сделать функцию тормоза.
Копируем нашу прошлую функцию и переименовываем ее:
handle_friction (input_axis, delta):
Так же меняем заданное условие, input_axis должен быть равен нулю. Главное помнить, что знак равенства при сравнении выглядит вот так "==".
if input_axis == 0:
В функции move_toward заменяем значения. Первое остается прежним, на втором ставим ноль, а на третьем стираем acceleration и пишем friction. Все это в сумме обеспечит нам быструю остановку.
Функции обратные друг другу
● Движение по оси Y (прыжок, гравитация), создаем новую функцию:
aplay_gravity(delta):
Если мы не на земле, то бишь в воздухе - нас должно тянуть вниз.
if not is_on_floor():
velocity.y += gravity * delta
Ставим именно "+=", так как это сделает плавное падение с нарастающим ускорением. Не забудьте умножить на delta, иначе все произойдет за долю секонды.
● Следующая функция для прыжка:
handle_jump(delta):
Для нас важны два условия - нахождение на земле в момент прыжка и нажатие нужной клавиши.
if is_on_floor() and Input.is_action_just_pressed("ui_accept"):
Если данное условие соблюдено мы приравниваем параметр оси Y к значению высоты прыжка.
velocity.y = jump_velocity
Добавляем эти функции под physics_process, а после переходим на сцену "world". Туда из общего списка ресурсов перетаскиваем сцену "player".
.tscn - это формат сцены в Godot
Как выглядит наш блок с функциями
● Что у нас получилось в итоге?
✓ Если вы нажимаем клавишу влево или вправо - персонаж двигается в выбранном направлении.
✓ Если ни одна из клавиш направления не нажата - мы останавливаемся.
✓ Если мы находимся в воздухе - нас тянет вниз с каждой секундой все сильнее.
✓ Если находясь на земле, мы жмем прыжок - нас подкинет вверх.
▸ Оно живое!
Вот так при помощи четырех простых функций мы создали основу физики и управление персонажем. Надеюсь разобрал каждый шаг максимально подробно и понятно.
✓ Зеленые новички - крепитесь и подписывайтесь, скоро новая статья. На очереди две темы - "анимация персонажа" или "двойные прыжки и прыжки от стены".
✓ Опытные шаманы - запасайтесь успокоительным, ибо дальше будет еще куча попыток освоить gamedev.
✓ Ну и все кто имеет свое мнение, поддержку или усмешку - пишите комменты!
Привет подписчикам. Было дело исполнял, просил отписаться, пара человек отписалась, но внезапно ещё подписалось. Ну немножко расскажу.
Для случайных читателей, краткий экскурс. 12 лет опыта программистом в игровой индустрии, сейчас примерно полтора-месяца работаю Junior Technical VFX Artist, сначала я прям на воодушевлении не считал себя Junior, сейчас осознаю что скорее даже Trainee. Не пройду скорее всего испытательный, но профессия мне прям нравится теперь) Буду в ней развиваться)
Что хочу сказать, Godot для 3D ну просто забудьте, это помоечная сырая помойка, все сложно, криво неудобно, пздц полный. Люблю Godot, для 2D, для прототипов идеальное, 3D нет, реферы-туторы использую для UE и Unity, ну небо и земля. VFXGraph, ShaderGraph офигенные, на Godot, ну просто базовый GradientMap, во всех редакторах есть базовая вещь, на Godot пришлось писать свой шейдер под него, а у меня всего опыта-то кот наплакал в этой сфере и просто понимаю, насколько мой шейдер выдает гавенный результат в отличии от базового инструментария в SubstanceDesigner например. Прям боль каждый день. Картиночкой хоть разбавлю, ну вот практикуюсь рисую такие текстурки, не кистями конечно, нодами, но процесс идет, через годик прям удивитесь, гарантирую это. Это одна из текстурок, которая для эффекта EarthCrack нужна.
Никогда бы подобное в фотошопе не нарисовал, а тут мне объяснили, подсказали, есть короче софт где и программист может рисовать нормальные прикольные штуки)
Вот например, текстурка мне для партиклов, анимашку с ней не покажу, нельзя) А вот для первой сырую наработку пожалуй выложу
Согласен профи VFXер засмеет, но я нормально к критике отношусь, мне главное что базу понимать начал, сам могу и текстурку сделать и маску к ней для шейдера, а динамику потом подтюню, ну и с партиклами, да с объектом оно гармоничнее смотрится.
Что ещё сказать, ебало мне набили крепко с неделю назад, нос сломали, все лицо синеё, так что если раздражаю кого, не переживайте мне все прилетело стократ, как говорится))
В телеге у меня было голосование, будет видосик как сделать простенький фаербол в 2D и без шейдеров, прям немудренный будет чисто на партиклах, суперкрасоты не ждите, суть постараюсь донести, но немножко откладывается. Губа верхняя не работает пока, говорить трудно. Посттравматическая нейропатия второй ветви тройничного нерва, а мне ещё казалось что я очень длинные названия для классов пишу иногда, вот как надо писать)))
Не знаю чего и написал-то, что приняли, то выкладывать нельзя, NDA, а что выложил ну вот согласен, я и сам думаю, хуевый я VFXер и взяли-то меня, только за то, что более менее с Godot знаком и могу интрегрировать все эффекты не сильно обременяя программистов, в конце концов зп у меня существенно меньше. Надеюсь, что не кикнут, задумывался о том чтобы попросится и перевестись в программисты, но чувствую, что вот текущее это и есть моё призвание, надо просто задержаться немножко, базу уже нормально начинаю понимать, а красивости придут с опытом, время надо.
Так что закончу на позитивной ноте, заниматься надо, если развиваться, учиться, практиковаться, то все получится. Верить надо в себя и возраст не причина для отмазок, мне через 3 дня 40 лет исполнится, ну вот решил сменить профиль, возможно ещё пожалею, но в любом случае буду в этом направлении двигаться, единственное что возможно с Godot на UE переключусь, ну это если для 3D. А для инди 2D Godot топчик!!!!
2 года назад я как раз написал первый пост, про свой первый шейдер, где хоть немножко понял суть) И вуаля, я вошел в IT)) Мечты сбываются) Надеюсь задержусь. Даже скромно попросил, но все одно это втрое больше чем продавцом в Магните у меня было)))
p.s. По релизам на Яндексе, организационные моменты возникли, но Борщ как копейки приносил ожидаемо, так и приносит рублей 30 что-ли)) хотя фичеринг прошли CTR иконки адекватный, ну проверили попробовали, любопытный опыт) Вот этот шедевр игровой индустрии, ну показательный вариант, что если в голове народился треш и кажется, что он интересен будет людям, скорее всего это не так)) https://yandex.ru/games/app/240717
Зато мы теперь сработались хоть, полноценная команда из 5 программистов, во всем есть плюсы, жаль что из-за работы теперь вообще нет времени на инди свое, но все ещё будет) Теперь зато я уже точно решил, что следующая моя игра это будет хардкорная тактика, по выходным иногда дописываю базу, боевка аля BattleBrothers будет, логика у меня почти вся готова, движение по гексам осталось допилить, никак решиться не могу)
Пардон, что отнял время, захотелось что-то пографоманить о бытие) Всем удачи!
Выспаться, провести генеральную уборку, посмотреть все новые сериалы и позаниматься спортом. Потом расстроиться, что время прошло зря. Есть альтернатива: сесть за руль и махнуть в путешествие. Как минимум, его вы всегда будете вспоминать с улыбкой. Собрали несколько нестандартных маршрутов.