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

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

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

А когда мне нечего рассказывать про разработку, я рассказываю о себе 🎩

Расскажу про свой путь становления "айтишником"

Вообще-то я хотел стать стоматологом, они ж рубят бабло, но преподша по химии/биологии была сущим злом, так что не сложилось ☹️

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

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

После школы я пошел в универ - НТУ ХПИ (харьковский политехник) на "Системы Искусственного Интеллекта", даже на бюджет прошел, пахал 11й класс нереально чтобы сдать экзамены достойно (вышло кста, не без помощи еще одного друга, жаль что поссорились)

Ну и я ж такой амбициозный молодой человек, думаю: "Ох чичас я тут попраграммирую, стану прям нереальным писателем нейронок" - ага, фиг там.. история и культура Украины? Спасибо. ДЕЛОВОЙ Украинский язык для программистов? Офигеть. Дякую. Программирование.. да, было, НА ЛИСТОЧКАХ 😡

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

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

В конце первого курса (когда я был супер расстроен) мне стукнуло 18 лет и я пошел к одногруппнику, живущему напротив в комнате, и заявил: "Го в Польшу на завод на всё лето бабки заработать?", и этот чел сразу согласился, мы сразу позвали еще одного - и он тоже согласился, через пару недель мы уже были в Польше на заводе IKEA 😎

Деньги на поездку я занял у родителей, это было что-то около 10-15к грн, точно не помню

Это было сложно, там я начал учиться ценить деньги по-настоящему и распоряжаться ими, т.к. до этого у меня было 2400грн на месяц, а там ЗПшка капала по 25000грн, тратил я конечно на всякий треш, но домой привёз часть и потратил её.. на курсы по программированию. Мне их посоветовал мой друг Богдан, тот натолкнул меня на программирование в школе, ну я и пошел сразу на те курсы бекенд-разработчика (много деталей упускаю). По итогу я пахал как конь на курсах, активничал и спустя.. две недели меня пригласил на работу преподаватель того курса - Лёша, он же и был Тех/Тим лидом в компании и искал потенциальных разработчиков. Меня не просто так пригласили - мне помог мой друг - снова Богдан, он уже работал там и его взяли так же как и меня, но раньше и, что отличало нас - он полностью сам заработал эту работу (спустя 2 месяца кажется его позвали), а меня он порекомендовал Лёше и этим очень сильно помог

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

Прикреплю к посту еще видосик с Польши, где работяги с завода зарабатывают деньги тяжелым трудом, а не какие-то женские кнопочки клацают на клавитуре, прямо как я сейчас ⌨️
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3👍1
Media is too big
VIEW IN TELEGRAM
День 108-109

Результат за два дня

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

Система улучшений работает похожим образом как и система мутаций, но в системе улучшений добавлен тип улучшения (фактически это редкость) и использована весовая таблица (WeightedTable)

У меня была проблема с айдишниками, потому что есть "абстрактный" класс WeaponUpgrade, где нет поля id и есть уже реально используемые классы такие как PistolUpgrade, где есть айдишник. Но я везде с улучшениями работаю как с WeaponUpgrade и как-то нужно было типизировать это всё дело, чтобы были подсказки ну и типа безопасность - я сделал метод get_id внутри WeaponUpgrade

func get_id() -> int:
push_error("get_id() must be overriden in subclass")
return -1


Таким образом я обязан в каждом подклассе реализовать этот метод, иначе будет ошибка. Ну и собственно везде вместо upgrade.id я пишу upgrade.get_id() (конечно я заранее кладу айдишник в переменную, но это не столь важно)

get_id банально возвращает поле id:
# pistol_upgrade.gd
...
enum Id { ... }

@export var id: Id

func get_id() -> int:
return id


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

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

Завтра наконец-то подсоединю улучшения к пистолету и обновлю страничку на itch.io, чтобы можно было поклацать в обновлённую версию +- полноценной игры

Проект полностью открытый, глянуть можно тут - https://github.com/Sundwell/ritka-rampage

Именно про систему улучшений вот тут можно глянуть - ссылка на коммиты

И как обычно прикрепляю видосик с результатом

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

В четверг (позавчера) подключил улучшения к пистолету (и к пулям)

Вчера под вечер чет поплохело, так что посты не успел написать, так что щас будет сразу за два дня

Про улучшения

Во-первых - я их сделал (спустя 20 тыщ лет) 👀

Вместе с улучшениями я удалил все предыдущие мутации, т.к. большинство из них влияли напрямую на оружие, что не есть хорошо. "бег во время стрельбы" тоже убрал. Оставил одну символическую мутацию "ускоренное движение" и немного подкорректировал сам скрипт mutation_upgrade.gd, теперь там тоже поле называется "id", а не "type", как в weapon_upgrade.gd - подготавливаю фундамент для класса base_upgrade.gd, в котором будет та самая функция get_id() -> int, а также заголовок, описание и максимальное количество взятий улучшения

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

Пока что улучшения добавил следующие:
- SHOOT_RATE (stat)
- DAMAGE_UP (stat)
- IMPROVED_BALLISTICS (stat)
- MORE_BULLETS (mechanic)

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

Щас разрабатываю на версии Godot 4.3, но думаю перейти на 4.4, потому что там есть типизация диктов.. как же мне её не хватает 😢

Некоторые интересные штуки показал в прикреплённых скриншотах и в видосе с результатом

В след посте уже закину ссылку на обновлённую версию игры на itch.io

#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👀1
This media is not supported in your browser
VIEW IN TELEGRAM
День 111

Вчера занимался двумя вещами - обновление спрайтов + загрузка всего в гугл диск и продумывание мутаций

По спрайтам:
1. Пистолет - цвета с палитры + анимация выстрела
2. Персонаж - анимация ходьбы.. наконец-то добавил
3. Наковальная - анимация падения + анимация "стояния" с молотком
4. Апельсин - 3 новых спрайта (пока что виден только один) + звук поедания

По мутациям вчера внезапно созвонились под ночь с другом и обсуждали как бы их сделать интересными, всё прям рассказывать не буду сейчас, но вот основные пункты:
1. У всех мутаций будет "Класс/Специализация"
2 Мутации дают бонусы и способности в зависимости от класса и всегда будут иметь негативную сторону
3. Мутации будут делится на три типа:

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

Skill:
- пассивно-активный навык
- например у призывателя это будет собака, которая будет помогать убивать врагов, поднимать апельсины
- Изначальный шанс появления в пуле одинаковый (например если тип мутации выпал "Skill" и у нас три класса - то сначала будет выбран класс мутации с 33% шансом, а потом уже сам навык из пула классовых навыков)
- При первом выборе навыка персонаж "выбирает" эту специализацию
- Когда специализация выбрана, шанс на получение мутации своего класса становится равен 80%, остальных - поровну на 20%

Evolution:
- Мутация-эволюция, может быть взята единожды
- При взятии эволюции другие эволюции становятся заблокированы
- Меняется внешний вид персонажа
- Улучшаются навыки из пула класса. Например у оружейника будет вторая пушка, у призывателя - собака "родит" щенят, которые будут грызть врагов и т.п.

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

#godot #ritkarampage #разработка
🔥41
This media is not supported in your browser
VIEW IN TELEGRAM
День 112

Наконец-то я продолжил досматривать курс

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

Во-первых - я переработал логику пула улучшений для оружия, раньше у меня был UpgradePool - изначальный ресурс с улучшениями (там есть поле upgrades) и уже то, что реально использовалось upgrades_weighted_table: WeightedTable - то есть фактически у меня UpgradePool ничего не делал, только как какая-то константа работал

Что изменилось:
- UpgradePool полностью убран из WeaponUpgradeManager, взамен сделана функция set_upgrades_pool, которая вызывается по сигналу weapon_changed
- Сигнал weapon_changed посылает WeaponController, в котором есть функция set_weapon
- В самом оружии есть сама логика оружия и UpgradePool для этого оружия, т.е. ресурс с полем upgrades: Array[WeaponUpgrade]
- Сигнал weapon_changed передаёт новое оружие, с которого можно взять этот апгрейд пул и сделать его основным в WeaponUpgradeManager

Может быть еще что-то, но это основное. Когда я это всё сделал, то понял - мне надо инкапсулировать логику выбора улучшений в UpgradePool, а не использовать напрямую сырую WeightedTable. Потому что если я поменяю оружие на "эволюционное", например дробовик - то у него будут свои улучшения + все улучшения для пистолета, но по моей логике останутся только улучшения дробовика И вся информация про предыдущие улучшения сотрется, т.е. сколько и каких улучшений набрал игрок

Щас думаю сделать следующее:
- Вернуть UpgradePool в WeaponUpgradeManager
- Добавить функции-пустышки в базовый класс UpgradePool, которые нужно будет перезаписать в условном PistolUpgradePool. Типа вот я беру улучшение скорость стрельбы - ничего не происходит, а если я возьму улучшение "Эволюция - Дробовик" - то мне надо будет закинуть в апгрейд пул новые улучшения для дробовика, а старые все сохранить. Таким образом у меня будет один источник правды и один объект, который отвечает только за улучшения - офигенно, прям кайфую от такого решения
- Когда игра начинается и игрок выбирает оружие - посылать условный сигнал initial_weapon_selected и у этого оружия уже брать апгрейд пул изначальный
- Вероятно сигнал weapon_changed останется и его будет посылать тот самый UpgradePool при выборе улучшения для оружия с типом "Evolution", ну и всякие доделки туда же

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

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

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

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

Т.е. вот сама их дизайн система это фактически просто папки с папками, где каждую папку можно подробно описать, добавить ей тег (Папка, Механика, Система итд), прикрепить к ней задания. В каждой папке (элемент) можно ссылаться на любой другой элемент и по клику моментально переходить в нужный элемент - супер удобно, что-то типа Obsidian'а

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

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

Всё это создание папочек/элементов простое, нажал "плюсик" и готово, а вот самая сложная часть это организация этих всех "папок" и их описание, но мне нравится такое, люблю когда везде порядок 😊

Сейчас ещё доделываю этот диздок, потом смонтирую видосик как я это все делал (ускоренный в 20 тыщ раз), а пока что прикреплю скрин того, что сейчас готово

Есть свои минусы в HacknPlan'е - но свои функции он выполняет и, пока что, меня это более чем устраивает, всё очень удобное для работы в команде, интерфейс супер простой и понятный (в сравнении со всем остальным что я пробовал), так что буду его обкатывать и в следующих играх

Еще тут можно экспортировать дизайн-документ в HTML страничку или в .docx, так что как допишу всё то закину готовый документ в комменты

#ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2
День 114-115

Вчера засиделся почти до утра, но зато закончил заполнять диздок (всё что было я туда вписал и добавил много разных описаний), а посты не успел написать 🤝🤝

Пост за 21 и 22 октября (вчера и позавчера (позавчера и поза-позавчера 🫣))

А теперь про дизайн-документ (конкретно в HacknPlan)

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

Распишу всё в текстовом формате на сколько хватит символов в одном посте (к сожалению есть ограничение в телеге), а детали и таймлапс закину в видео формате

Какие у меня есть элементы:
1. System - Игровая система. например "Оружия", "Мутации" или "Арены". Описывает в общих чертах о чем эта система и как она работает (по крайней мере должна 👀) и какие "подсистемы" в них используются
2. Enemy - Враг. например "Enemy: Bunny" или "Enemy: Porcupine". Описывает про врага всё - как выглядит, как ходит-бегает, какие навыки, на какой арене можно стретить, какая "редкость" и т.д.
3. Player - Игровой персонаж. фактически он сейчас один и файл пустой, но ссылаться на что-то нужно поэтому я создал "Player: Ritka" 😎
4. Arena - Арена/Локация. Например "Arena: Meadow" или "Arena: [без спойлеров]". Описывает то, как выглядит арена, какое у неё "настроение", какие враги там есть, размер арены, длительность и т.д.
5. Weapon - Оружие. Например "Weapon: Pistol". Описывает ключевые особенности оружия, улучшения и в общих чертах то, как оружие должно выглядеть и звучать
6. Template - Шаблон для создания элементов. Вот есть 10 врагов, и у всех них одинаковые пункты информации, которые нужно заполнить. Шаблон это просто текст, который можно скопировать и вставить в новосозданный пустой элемент, чтобы всё было одинаково и консистентно
7. Folder - Папка / Элемент-пустышка. Никакого описания не содержит, но создан чтобы в него пихать любые другие элементы. Обычная папка в общем
8. Mechanic - Игровая механика. Описывает какую-ту специфическую игровую механику, например "Mechanic: Anvil" (наковальня). Кладётся внутрь системы. Например "System: Weapon Upgrades -> Mechanic: Anvil". Система это что-то большое-обобщенное, а механика это что-то целенаправленное и описывает одну вещь из системы
9. Element - Элемент чего-угодно. Чтобы не плодить дизайн-элементы типа "Mutation Upgrade", "Weapon Upgrade", "Enemy Rarity" и миллион других - я просто тегаю их как Element и кладу внутрь папки. Например:
System: Weapon Upgrades
-> Folder: Upgrade Types
—> Element: Stat Upgrades
—> Element: Mechanic Upgrades
...

10. Document - Документ. Пока что ни одного элемента-документа не создал, но предполагается что это будет просто какое-то описание игры что-ли, типа "Document: Game Overview"

Таймлапс написания диздока - https://youtu.be/WhP_YQ5UFog

Мой подход к созданию диздока (15 минут шизы от меня) - https://youtu.be/oxNU_iseH3s

Также как и обещал - в комментарии закину .html и .docx файлы с дизайн-документом (выглядят не так классно как в HacknPlan, но хоть что-то)

#ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
День 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