sundwell.dev | Хроники инди-разработки – Telegram
sundwell.dev | Хроники инди-разработки
694 subscribers
224 photos
105 videos
136 links
Всё про инди от реального человека - девлоги, процесс маркетинга, геймдизайн, разработка и пиксель-арт
Download Telegram
День 1️⃣2️⃣0⃣

Юбилейно-числовой пост 💃

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

Нас уже ❗️141 ❗️, это в полтора раза больше чем 30 дней назад, нас стало больше на 45 человек.. я очень рад этому 🥰

А еще частенько бывает, что под постами кто-то что-то пишет приятное, задаёт вопросы или советует/помогает - если я встаю утром и вижу комменты в телеге и сообщения по работе, я сначала иду в телегу и заряжаюсь на весь день 🥳

И реакций под постами стало так много, как никогда - вы даже не представляете, как меня это всё радует, все мы люди, и мне тоже приятно одобрение сообщества 👀

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

Пока я учился (и учусь) всем "менеджерским" вещам я не так уж и активно разрабатывал, в этом месяце много времени ушло именно на менеджерские вещи (уверен это было заметно по постам), но всё уже настроено и налажено, было сложно и долго - но я справился, ноябрь обещает быть продуктивным (может даже игру R.I.T.K.A. Rampage закончу 👀)

Ну, а теперь к статистике

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

Некоторые "именования" затраченного времени я поменял:
Брейншторминг => Геймдизайн
Менеджмент => Бренд Менеджмент (монтирование видео, написание постов, общение с всякими разными людьми 👀)

Числа:

Программирование - 17 часов 36 минут
Пиксель арт - 3 часа 24 минуты
Геймдизайн - 11 часов 33 минуты
Бренд-Менеджмент - ...24 часа 17 минут
Проджект менеджмент - 7 часов

Проджект менеджмент - это общение с командой, созвоны, написание заданий в HacknPlan, настройка того же HacknPlan и гугл диска и все такое

В этом месяце было больше "пропусков" - целых 10 дней (не ну реально тяжелый месяц был). Каждый день, за исключением 28 сентября, а также 2, 4, 5, 7, 13, 15, 17, 23, и 25 октября я так или иначе уделял время разработке игр

Минимально уделённое время за день - 30 минут, уделённых на разработку

Максимальное - 4 часа 38 минут 20 секунд (это рекорд кста) из которых 4 часа 3 минуты 14 секунд на проджект менеджмент и 35 минут 6 секунд на разработку

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

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

P.S. про UI штуки (тем, чем я вчера занимался) напишу уже за 121-й день (сегодня тоже), как раз когда добавлю все эти анимации и красивые карточки к мутациям
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👏2😱1💯1
День 121-122

Слово не воробей - можно и забрать

Вчера юайку не доделал 🥺, все делал видос с отчетом за 30 дней (все еще делаю кстати), вероятно будет качественный контент 🎩

Раньше же я монтировал видео в CapCut, а вчера решил внезапно перейти на DaVinci Resolve - бесплатный, удобный (хотя поначалу страшно), можно и со звуком работать полноценно, миллиард удобных готовых анимаций-переходов. А еще им пользуются в Голливуде 😎

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

В общем завтра (среда) я просто обязан доделать видео + юайку и, наконец-то, сосредоточиться на доделывании игры и заполнением контента, а то чет мои "30 дней на игру" подзатянулись 😳
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👏1
День 123

Вчера доделывал визуальщину для карточек улучшений

Теперь карточки мутаций имеют те же анимации, что и карточки для оружий, стилизация пока что одна - серая карточка (мутации то еще не закончены)

Также немного обновил улучшения для оружия - теперь для карточек Mechanic и Transformation (которой пока что нет 👀) будет показываться текст-подсказка-незнаючто, например в улучшении "Больше пуль" добавлен текст "Скажи "НЕТ" точности"

И еще пара небольших апдейтов:
- Изменил везде шрифт на другой, который кратный "5px". Ссылка на QuinqueFive
- Нашел баг в WeightedTable. Коммит
- Вкусно покушал, снова худать 😢

Добавить звуков, музыки, наполнить контентом + задать нормальную прогрессию сложности - и уже игра готова (читать как "еще 20 дней разработки")

У меня столько идей на видео - полезные и не очень, интересные и так себе. А еще больше мыслей по поводу разных вещей в разработке, о которых я очень сильно хочу поделиться, но вот руки не доходят. Вот некоторые пункты:
- Проблемы с отображением шрифтов в Godot. Почему в превью редактора шрифт отображается криво-косо-размыто, а как запускаю игру - все отлично, что не так, как чинить?
- Как запускаю игру, то на каждый новый эффект/партикл/шейдер игра подзависает ненадолго, но это очень заметно, как пофиксить и почему так происходит?
- Как поменять масштабирование у ноды Control? Почему некоторые масштабируются нормально даже через редактор, а некоторые и код игнорируют (т.е. my_control.scale = Vector2(x, y)? Как чинить и почему так?
- Метод утёнка без разговоров с утёнком (я утка?)

И так далее (это весь список (нет))

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

Прикрепил видео процесса и результата работы с визуальщиной для карточек

#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🎉1
День 124

Вчера продолжил смотреть курс, сейчас заканчиваю часть с визуальщиной (но не с вчерашними постами 👀)

Препод застилизовал шкалу опыта (прогресс бар снизу), потом добавил анимаций и стилей к Lose/Win экранам и в третьем видео добавил стилизации к кнопкам

Шкала опыта у меня уже была готова давным-давно, так что я экспериментировал с цветами для кнопок, всё-таки иногда хочется самому порисовать что-то супер простое в пиксель арте, в кнопке всего-то три цвета, один для обводки, другой для обычного состояния и третий для наведённого (наверное стоит еще добавить для нажатого состояния отдельный, еще думаю 🤔), но эти цвета подобрать под цвет панели из палитры это конечно та еще задача.. видимо для других игр надо или СИЛЬНО ограничивать палитру, или же делать её самому (моим художникам 🤝🎨🤝)

Стили для кнопок нарисовал, осталось их "внедрить" в саму игру, но это после того, как добавлю анимацию и стили к Lose/Win экранам, т.к. кнопки в них находятся и нужно сначала привести два экрана "в порядок"

Прикреплю скрин с моими "наработками" и таймлапс с процессом рисовки

P.S. Остановился на варианте кнопок, которые на панели (это был самый первый вариант к слову). Сверху обычное состояние, снизу при наводке

P.P.S. Монтаж видео в процессе и.. там такое проектище нереальное. Я уже часов 20 на него потратил (видео меньше двух минут будет..), столько всего научился, скорость монтажа уже выросла раза в 4, так еще и материалов насобирал просто жуть, очень нравится монтажЫровать видосики, особенно чтобы с всякими смешнявками было + динамично, я ж зумер 🎩

Побольше мне часов в сутках, аминь 🙏

#ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63💯2
Привет, это я - твой единственный зритель (1), я на протяжении 120+ дней создавал иллюзию того, что нас становится больше. Сейчас подпишусь со всех аккаунтов.

Сегодня посты уже не в силах буду написать, пойду сейчас уже спать (щас только 19:00, но я уже "всё")

Завтра напишу про вчерашний результат с стилизацией кнопок и менюшек и еще про мой вчерашний поход в горы

Вкратце - я, почти что ходячий центнер + комнатное растение поехал в горы (не первый раз конечно, но всё же). Мы вышли в 7 утра и думали уже к 17:00 быть дома. В итоге в 18:00 мы только дошли на вершину горы (2000 метров вершина вроде) и уже было полностью темно и вся группа уже на нервах была, т.к. последний автобус/маршрутка от парковки был в 17-18:00, а мы к парковке дошли только к 21:45. А я то думал: "Эх, как хорошо, дома будем в 17:00, это я и работу успею доделать и поучиться и посты написать", ну, а получилось как всегда 👀

Сейчас ощущения будто меня били палками за вчерашние посты и переехал грузовик (два раза)

Прикреплю скрин моих наработок с кнопками (результат в игре не буду спойлерить, эт уже завтра будет) и еще пару видео с горы и статистику "горного итога"
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3😱21
День 125

Юайная часть закончена ✔️ (на данный момент)

Переделал стилизацию кнопок - сделал их объемными. Спасибо wrongath за совет, это реально то, чего не хватало этим кнопкам. Еще добавил стилизацию для состояния "Pressed" (когда кнопка нажата)

Доделал Win/Lose экран - теперь они выглядят не ущербно и появляются с небольшой "упругой" анимацией

К слову про кнопки и вообще визуальщину - для этого в том же вебе есть отдельный человек (или даже несколько):
- UI => User Interface => То, что видит пользователь. Грубо говоря это просто раскраска кнопочек
- UX => User Experience => Удобство пользователя. "Кнопку поставить слева или справа? Где будет удобнее? А надо ли эта кнопка вообще?"

Это прям реально серьёзная вещь, которой в идеале должен будет заниматься отдельный человек в будущем. UX дизайнер применяет лучшие практики, которые привычны пользователю, проводит разные исследования, A/B тесты и так далее

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

Про кнопки - у них есть много состояний, но вот основные:
1. Default - обычное состояние, допустим цвет "оранжевый". То, как выглядит кнопка в свою обычную кнопочную жизнь
2. Hover - состояния при наведении. Кнопка должна быть светлее на +- один тон от основного цвета (оранжевого)
3. Active/Pressed - состояние при нажатии. Кнопка должна быть темнее на +- один тон от основного цвета
4. Focus - состояние при фокусировке на кнопке. Это состояние вы можете наблюдать на консолях/приставках/стимдеках/геймпадах и т.д., когда вы клацаете вверх-вниз в менюшке, то какой-то элемент подсвечивается/выделяется, и это даёт вам понять что если вы нажмёте кнопку [кнопка_действия], то вы нажмёте именно на то, что хотите. Обычно цвет не меняется, чаще всего делается какая-то обводка поверх кнопки (outline)
5. Disabled - неактивная кнопка. Обычно просто серая полностью

Конечно еще есть несколько состояний, но это основные. Это конечно же UI, но он напрямую влияет на UX, т.к. пользователь/игрок видит отзывчивость - навёл на кнопку и она посветлела, значит, можно клацнуть и так далее

Прикрепил видео с процессом разработки UI и коротким конечным результатом

И также обновил версию игры на itch.io, поиграть и скачать разные версии можно тут - https://sundwell.itch.io/ritka-rampage

#ritkarampage #разработка #godot
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
День 126-127

Горные истории 🌄

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

Началось всё в субботу - проснулись в 6:30, в 7+- вышли, пошли в кафешку, покушали и попили кофе и поехали на маршрутке к чекпоинту (эх, если бы так и было). К паркингу в общем приехали, потому что дальше уже только пешком

Последняя маршрутка оттуда в 18:00, ну это так, на будущее..

Где-то около 9 утра уже шли по тропе, поднимались в горы. Мы рассчитывали где-то уже в 17:00 быть ДОМА (ага)

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

Красиво было это точно, да только на гору мы взобрались к.. 17:00. Т.е. путь в одну сторону забрал как минимум 7-8 часов. Конечно мы фотографировались еще и всё такое, но был один человек, который тормозил всех последние 25% пути (да я 🎩)

И у водопада побывали, и в тучках тоже, и на вершине 2200м+ побывали, а потом.. нам же спускаться, назад идти минимум 3 часа (до паркинга самого), а последняя маршрутка уходит в 18:00. В общем уже думали ночевать в горах, типа сделать какой-то шалаш с хвои и всё такое, но нет - всё-таки пошли дальше

Если при подъёме я тормозил всех каждые 5-10 минут чтобы мой пульс не убежал раньше меня, то при спуске всё было гораздо хуже - у меня тупо схватила судорога на ноге.. и на второй тоже. И это было всю дорогу назад (~18км), приходилось постоянно отдыхать первые 4км+-, потом попроще стало. Везде камни, неровности, супер сложно было неподготовленному кожаному мешку идти вот так. Конечно же тяжело было всем, но дайте поныть про себя, ну 👀

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

В общем пришли мы к "хостелу" где-то в 19:00, а от него еще 10км к паркингу идти, но это хоть по асфальту уже ровному +-. Собрались с силами и вышли в 19:30 к паркингу, пришли в 21:45, нам очень повезло вызвать туда такси, ну так мы и поехали домой

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

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

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

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

Прикреплю пару фоточек, результат и видосик смонтированный
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👏1
День 128

Вчера продолжил смотреть курс, ничего особо нового там не было - преподаватель доделывает визуальные эффекты, добавляет улучшения и все то, что я уже сделал ранее. Но я не пропускаю ни одного видео, ведь случайно могу упустить какую-то важную деталь, за свои 5+ лет разработки и обучения я в этом удостоверился на все 100% (не пропускать ни одного видео)

И конечно же мне есть о чем рассказать интересного, в том числе про "загрузочный экран" (но о нём в следующем посте 👀)

Но сперва про другие не менее важные вещи

Первое - я задал вопрос и получил ответ (ого). Я уже вскользь упоминал про проблему с изменением размеров дочерним Control нодам. Снова вкратце про проблему - если у нас есть контейнер, то только он может отвечать за ширину, высоту, масштабирование и всякое такое, те, кто внутри контейнера - уже не могут сами себе это менять, и в этом есть большая проблема - как мне изначально задать условной панели scale = 0, а потом сделать так, чтобы панелька появилась с анимацией scale 0 => 1 за 300мс условно. Ответ - через костыли.. В общем официального способа нет, но все пользуются Tween или интерполяцией, но чаще Tween (инфа раз, два, три, четыре), как-то запишу об этом видео или напишу пост, тема то важная все-таки

Второе - пофиксил пару багов

Спавн врагов

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

Минутка математики. Размер viewport'а (видимое пространство для игры) у меня 640х360px, а радиус спавна был почему-то... 180px. Враги спавнились почти всегда в поле зрения игрока, и было только две "невидимые" точки (из сотен вариантов) - 0 по горизонтали и 180px или -180px по вертикали. Ведь если враг заспавнится слева, это будет расстояние 180px от игрока, а игрок видит влево и вправо по 320px, т.е. враги появлялись на полпути к Ритке

Как вычислить правильный радиус для спавна - очень легко, нам нужно просто найти диагональ нашего viewport'а и это будет диаметром нашего круга, а радиус = диаметр/2

Диагональ вьюпорта = √(a^2 + b^2), где a и b - стороны прямоугольника. В нашем случае это √(640^2 + 360^2) = √(409000 + 129600) ≈ 734px, добавим еще немного для надёжности и будет 740px диагональ, берём половину = 370px - это и есть наш реальный радиус спавна врагов, чтобы мы не видели их появление

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

#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👏2
Media is too big
VIEW IN TELEGRAM
Так вот зачем загрузочный экран 😱

И, наконец-то, про экран загрузки. Зачем экран загрузки, если игра уже скачана то?

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

Например у меня в игре есть эффект поедания апельсина, при первом поедании апельсина есть микро-фриз (это называется stutter), а во всех последующих - всё идеально-плавно. Это всё потому, что этот эффект использует шейдер под капотом, а шейдеры сами по себе "ленивые", то есть пока их не используют хотя бы раз - они не загрузятся в память и не закешируются. А при загрузке чего-то в память может произойти статтер/фриз/подлаг - каждый по-разному называет, но болит у всех одинаково 😢

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

Первый подход подразумевает компиляцию всех шейдеров до начала игры. Например в The Last of Us или.. Genshin Impact шейдеры комплириуются перед первым началом игры (в Геншине вроде в лаунчере вообще) и потом при каждом обновлении. Это занимает какое-то время, иногда даже очень большое время, в зависимости от мощности пекарни (компьютера/PC). Т.е. игру можно скачать за пару часов, а шейдеры будут билдится часа 4, но, думаю, это редкость (или нет?)

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

Минусы и плюсы:

Предварительная компиляция/билд шейдеров (1)
+ Плавная игра без статтеров, т.к. всё уже заранее подготовлено
+ Оптимизированный кеш. При билде всех шейдеров они более эффективно сохраняются и используются в памяти, т.к. заранее структурируются. И стабильность тоже из-за этого лучше (вряд-ли будут графические артефакты)

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

Компиляция/билд нужных шейдеров на лету (во время загрузочного экрана) (2)
+ Скачал и сразу играешь, не надо каждую обнову билдить все шейдеры (покрывает минус первого подхода)
+ Все шейдеры не хранятся в кеше, а подгружаются туда когда надо = меньше нагрузка на комп

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

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

Вот интересное видео как чел решал проблему с статтерами - https://youtu.be/oG-H-IfXUqI?t=438. Он сам лично проходил весь уровень, записывал все движения и потом во время загрузочного экрана очень быстро проигрывал эту сцену за кадром, таким образом загружая все (имхо вряд-ли все) шейдеры в кеш

Я же решил проблему проще - создал сцену, где будут все эффекты, и я их один раз запущу перед началом игры во время экрана загрузки. Прикреплю видео с моим решением
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍21