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

Вчера продолжил читать документацию Godot, особо ничего нового не узнал, но.. мне снова и снова попадалось какое-то "ECS" (Entity Component System) и я решил разузнать поподробнее об этом

Скажу сразу что полностью в этом я еще не разобрался - но тот подход, который я использую (ООП + Композиция) очень даже похож на ECS, в чем суть ECS:
1. Entity - контейнер для компонентов
2. Component - данные, просто данные без логики, контейнер с данными
3. System - берёт Entity, смотрит есть ли у него Component - если да, то работает с ним

Например:
Entities (наш корень проекта)
├── Player (Entity)
│ ├── HealthComponent - кол-во хп
│ └── VelocityComponent - позиция и скорость
└── Enemy (Entity)
└── HealthComponent - кол-во хп

Systems
├── HealthSystem - если есть HealthComponent то в Entity можем вызывать "apply_damage"
└── MovementSystem - если есть VelocityComponent то в Entity можем вызывать "move"


Есть много разных подходов в программировании, но использую я ООП + композицию вместо наследования

Мой подход в общем-то напоминает тот же ECS выше, да только мои "компоненты" это не просто контейнеры с данными, а это и системы сами по себе. Т.е. мой HealthComponent может и данные хранить про кол-во хп и метод apply_damage хранит, и сигнал может послать и даже борщ сварить, а вот Player (главная нода-контейнер) - берет и "дёргает" методы компонента

Пример подхода на ООП с наследованием:
BaseEntity (Базовый Класс)
└── Player (Наследник)
├── max_health: float = 10.0
├── current_health: float
├── damage(damage_amount: float)
├── get_health_percent()
└── check_death()


Пример моего подхода на ООП с композицией:
Player (Сущность, просто контейнер, который вызывает методы из компонентов)
├── HealthComponent
│ ├── max_health: float = 10.0
│ ├── current_health: float
│ ├── damage(damage_amount: float)
│ ├── get_health_percent()
│ └── check_death()
└── Другие компоненты...


В использовании ООП с наследованием есть большая проблема - нету гибкости и грозит Inheritance Hell (а еще я просто кайфую от композиции, поэтому наследование идёт мимо 😎)

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

Прикреплю скриншоты вопросов и в каком-то из следующих постов напишу что ответит препод и как я решу эту "проблему"

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

#godot #ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1👏1
День 117-118

Пост без кода

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

Сейчас уже ночь, собираюсь потихоньку спать, чтобы до утра не сидеть, так что впервые будет пост ни о чем

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

Еще я очень сильно хочу смонтировать вам видео про свой новый велотренажёр, на выходных думаю смонтирую и, может, сразу же и напишу о нем в отдельном посте

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

Но на эти выходные у меня грандиозные планы - отдых + отдых (геймдев + велотренажер 👀)

Почти никогда на выходных я не отдыхаю от работы, но в последние пару недель все стало значительно лучше в этом плане и, походу, теперь так будет всегда ☺️

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

В общем, не запускайте себя как я, а то я прям гигант-прокрастинатор (не горжусь этим 😳)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👏1💯1
День 119

Вчера наконец-то дошел до UI части в курсе

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

К слову про курс - на прошлый вопрос я получил ответ и прикреплю его как и обещал

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

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

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

Курс еще не досмотрел, а деньги за него уже отбил 20 раз (из-за ценных ответов от препода)

В курсе рассказывалось как делать панели с помощью подхода 9-slice scaling, то есть любая панель состоит из 9 частей:
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

Где 1, 3, 7, 9 - углы (один раз используются)

2, 4, 6, 8 - боковые стороны, которые просто повторяются сколько нужно чтобы заполнить пространство

5 - центральное наполнение, работает аналогично боковым сторонам

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

1 | 2 | 2 | 2 | 3
4 | 5 | 5 | 5 | 6
4 | 5 | 5 | 5 | 6
7 | 8 | 8 | 8 | 9

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

#ritkarampage #godot #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Полноценный пост не успеваю написать - но уже на радостях хочу поделиться результатом работы с UI 🥳

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

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

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

#ritkarampage #godot #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍21👏1🎉1
День 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