День 86
Прогрессивная сложность - готово✔️
Теперь можно гибко настраивать повышение сложности, как я описывал в предыдущем посте. Реализовал всё, кроме "spawn_count", враги все еще спавнятся только по одному, но когда я добавлю птичек в игру, то займусь этим "spawn_count" тоже, но сейчас все работает как часы (кроме места спавна - за ареной все еще появляются враги😢
Я настолько довизуализировался, что понял - описывать что-то общее, накидывать логику и всякое такое простенькое это вот реально офигенно рисовать в каком-то блокнотике или в том же Excalidraw, да вот только когда я подошел к проработке таблиц.. вручную это нереально делать, так что я потратил добрых пару часов на изучение основ Excel (вообще Google Spreadsheets, но не столь важно) и сделал документ для построения уровней сложности - я прям очень горжусь тем, что я сделал
Вот ссылка на таблицу (будет обновлятся, я им пользуюсь) - https://docs.google.com/spreadsheets/d/1h0yJn5iCdGbwNw9AluOc30mQPv30KUZ34NJrTOjpJzE/edit?usp=sharing, она ридонли, так что просто скопируйте её и можете редактировать и поиграться с ней
Что я вообще сделал в таблице:
1. Автоматический рассчет Difficulty start time, Spawn Chance и Total Difficulty Level Weight, где:
1.1 Difficulty start time - время начала сложности в секундах =>
1.2 Spawn Chance - шанс спавна врага в процентах =>
1.3 Total Difficulty Level Weight - общий вес всех врагов в пределах этой сложности =>
Честно сказать - после добавления этой прогрессивной сложности и накатывания пары уровней той самой сложности игра.. стала играться😶
То есть до этого это все было не особо интересно, а вот когда минимальное разнообразие появилось - совсем другое дело, уже руки чешутся доделать это все дело и приступить к следующей игре, я уже набрал огромное кол-во опыта, а игра еще даже не закончена, очень мотивирует
Прикрепил пару видео - первое это короткое превью с результатом (хоть и мемное), второе более полное со всем процессом разработки системы сложности
И да, я всё усложняю для такой маленькой игры, это объективно, но это всё задел на будущее - в следующих играх я уже буду знать что к чему, как, где и какими инструментами пользоваться, где лучше наброски делать, а где чет более сложное, спешки ведь нету - все идёт как надо
#godot #ritkarampage #разработка
Прогрессивная сложность - готово
Теперь можно гибко настраивать повышение сложности, как я описывал в предыдущем посте. Реализовал всё, кроме "spawn_count", враги все еще спавнятся только по одному, но когда я добавлю птичек в игру, то займусь этим "spawn_count" тоже, но сейчас все работает как часы (кроме места спавна - за ареной все еще появляются враги
Я настолько довизуализировался, что понял - описывать что-то общее, накидывать логику и всякое такое простенькое это вот реально офигенно рисовать в каком-то блокнотике или в том же Excalidraw, да вот только когда я подошел к проработке таблиц.. вручную это нереально делать, так что я потратил добрых пару часов на изучение основ Excel (вообще Google Spreadsheets, но не столь важно) и сделал документ для построения уровней сложности - я прям очень горжусь тем, что я сделал
Вот ссылка на таблицу (будет обновлятся, я им пользуюсь) - https://docs.google.com/spreadsheets/d/1h0yJn5iCdGbwNw9AluOc30mQPv30KUZ34NJrTOjpJzE/edit?usp=sharing, она ридонли, так что просто скопируйте её и можете редактировать и поиграться с ней
Что я вообще сделал в таблице:
1. Автоматический рассчет Difficulty start time, Spawn Chance и Total Difficulty Level Weight, где:
1.1 Difficulty start time - время начала сложности в секундах =>
Difficulty Level * 5 (каждые 5 секунд сложность увеличивается на 1)1.2 Spawn Chance - шанс спавна врага в процентах =>
Enemy Weight / Total Difficulty Level Weight1.3 Total Difficulty Level Weight - общий вес всех врагов в пределах этой сложности =>
СУММА(Enemy Weight ГДЕ Difficulty Level ОДИНАКОВЫЙ)Честно сказать - после добавления этой прогрессивной сложности и накатывания пары уровней той самой сложности игра.. стала играться
То есть до этого это все было не особо интересно, а вот когда минимальное разнообразие появилось - совсем другое дело, уже руки чешутся доделать это все дело и приступить к следующей игре, я уже набрал огромное кол-во опыта, а игра еще даже не закончена, очень мотивирует
Прикрепил пару видео - первое это короткое превью с результатом (хоть и мемное), второе более полное со всем процессом разработки системы сложности
И да, я всё усложняю для такой маленькой игры, это объективно, но это всё задел на будущее - в следующих играх я уже буду знать что к чему, как, где и какими инструментами пользоваться, где лучше наброски делать, а где чет более сложное, спешки ведь нету - все идёт как надо
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
День 87
Поднятие апельсинов (aka Orange Energy) было плоским, так что сегодня я очень даже хорошо и детально разобрался с Tween, как и где их использовать (т.к. есть AnimationPlayer, но он не всегда подходит)
Поднятие опыта я заанимировал и теперь апельсины немного отлетают в противоположную сторону от персонажа, а потом летят к нему и в этом время крутятся, а на полпути начинают резко уменьшаться в размере, а при подборе опыта появляются визуальные эффекты "разлетающихся апельсинов"
В конце я как-то более 3х минут плейтестил (играл) и.. макбук видимо не вывез и годот умер, видео отчет прикрепляю👀
Сейчас занимаюсь добавлением летающих чисел урона, а завтра уже буду заниматься или улучшением "улучшений" или же визуальной составляющей (чтобы менюшки и карточки были красивыми)
Костяк игры уже на 90% готов - осталось только добавить сохранения и мета-прогрессию и, можно сказать, будет полноценная игра (ну, "полноценная"🥲 )
Три видео в посте:
1. Короткое превью результата
2. Видос где все залагало и умерло (конец видео постанова есчо (нет))
3. Полный прогресс анимации подбора апельсинов
#godot #ritkarampage #разработка
Поднятие апельсинов (aka Orange Energy) было плоским, так что сегодня я очень даже хорошо и детально разобрался с Tween, как и где их использовать (т.к. есть AnimationPlayer, но он не всегда подходит)
Поднятие опыта я заанимировал и теперь апельсины немного отлетают в противоположную сторону от персонажа, а потом летят к нему и в этом время крутятся, а на полпути начинают резко уменьшаться в размере, а при подборе опыта появляются визуальные эффекты "разлетающихся апельсинов"
В конце я как-то более 3х минут плейтестил (играл) и.. макбук видимо не вывез и годот умер, видео отчет прикрепляю
Сейчас занимаюсь добавлением летающих чисел урона, а завтра уже буду заниматься или улучшением "улучшений" или же визуальной составляющей (чтобы менюшки и карточки были красивыми)
Костяк игры уже на 90% готов - осталось только добавить сохранения и мета-прогрессию и, можно сказать, будет полноценная игра (ну, "полноценная"
Три видео в посте:
1. Короткое превью результата
2. Видос где все залагало и умерло (конец видео постанова есчо (нет))
3. Полный прогресс анимации подбора апельсинов
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Я вот уже грубо говоря три месяца пишу посты, они почти все прям длиннющие, и, фактически, не очень-то и насыщенные (по большому счету это мои мысли)
Так вот - я думаю делать еженедельные посты с описанием прогресса за прошедшую неделю и нормально смонтированное видео с футажами с игры и.. поменьше кода и всякава программирования, а больше чего-то приближенного к "человеческому"
Если много кому нравятся ежедневные посты - в теории могу создать отдельный канал "sundwell.dev | Девлог" и туда постить посты больше про техническую часть и каждодневные апдейты, как и раньше
P.S. Если будет что-то интересное, то буду делать небольшой пост об этом тоже, так что не будет "недельного" затишья передбурей постом 👀
Так вот - я думаю делать еженедельные посты с описанием прогресса за прошедшую неделю и нормально смонтированное видео с футажами с игры и.. поменьше кода и всякава программирования, а больше чего-то приближенного к "человеческому"
Если много кому нравятся ежедневные посты - в теории могу создать отдельный канал "sundwell.dev | Девлог" и туда постить посты больше про техническую часть и каждодневные апдейты, как и раньше
P.S. Если будет что-то интересное, то буду делать небольшой пост об этом тоже, так что не будет "недельного" затишья перед
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Какой формат девлога вам больше нравится?
Final Results
39%
61%
This media is not supported in your browser
VIEW IN TELEGRAM
День 88
Летающие числа - это классно1️⃣
Вчера занимался настройкой темы для проекта и летающими числами (урона и не только)
Пока что в моей мега уникальной теме только шрифт👀
А насчет чисел поинтереснее, препод напрямую создавал числа в компоненте HurtboxComponent, но мне показалось, что это не совсем корректно, ведь Hurtbox отвечает за получение урона, а не за отображение чисел🤔
Создал два компонента - первый с коротким названием FloatingTextSpawnerComponent и второй с еще более коротким названием HealthChangedTextSpawnerComponent
FloatingTextSpawnerComponent отвечает за спавн чисел, в него передаю сам текст и тип текста - "урон | лечение | поднятие апельсина". Этот компонент я напрямую добавил к сцене апельсина и вызываю
А вот чтобы показывать изменение жизней (урон или лечение) - мне надо было персонажу и всем врагам добавлять этот компонент и прописывать так же само вручную в каждом скрипте спавн текста, вместо этого я сделал еще один компонент - HealthChangedTextSpawnerComponent, к нему я просто подключаю HealthComponent и этот новый спавнер слушает сигнал "damaged" или "healed" (еще нет такого, но будет) и спавнит текст с подходящим типом, обожаю компоненты и композицию - проект превращается в супер-гибкий конструктор💃
Еще вот по мере роста этого огрызка недоигры у меня появился вопрос: "А как дебажить игры побольше? Мне уже неприятно"
Мне ж когда надо протестить будет поднятие сорока апельсинов мне надо будет их вручную создавать, а потом удалять. Когда надо врага потестить я отключаю спавнер врагов и добавляю нужного врага, и так далее абсолютно со всем
Но мне уже это как бы не очень приятно делать - я часто забываю что-то вернуть на место. Например при тестировании системы опыта и уровней я захардкодил значение "experience_to_next_level = 1", то есть мне надо только один апельсин поднять для нового уровня (для легкости дебага), но там должна быть цифра "5", а я забываю о таких вещах бывает (да-да, надо смотреть ченжи перед пушем в репозиторий, но епт) и это уже причиняет некоторую попаболь, поэтому мне прям интересно - как же тестируют/добавляют что-то в огромные игры?
#godot #ritkarampage #разработка
Летающие числа - это классно
Вчера занимался настройкой темы для проекта и летающими числами (урона и не только)
Пока что в моей мега уникальной теме только шрифт
А насчет чисел поинтереснее, препод напрямую создавал числа в компоненте HurtboxComponent, но мне показалось, что это не совсем корректно, ведь Hurtbox отвечает за получение урона, а не за отображение чисел
Создал два компонента - первый с коротким названием FloatingTextSpawnerComponent и второй с еще более коротким названием HealthChangedTextSpawnerComponent
FloatingTextSpawnerComponent отвечает за спавн чисел, в него передаю сам текст и тип текста - "урон | лечение | поднятие апельсина". Этот компонент я напрямую добавил к сцене апельсина и вызываю
spawn_text("+1", FloatingText.Type.ORANGE_PICK_UP) при поднятии последнегоА вот чтобы показывать изменение жизней (урон или лечение) - мне надо было персонажу и всем врагам добавлять этот компонент и прописывать так же само вручную в каждом скрипте спавн текста, вместо этого я сделал еще один компонент - HealthChangedTextSpawnerComponent, к нему я просто подключаю HealthComponent и этот новый спавнер слушает сигнал "damaged" или "healed" (еще нет такого, но будет) и спавнит текст с подходящим типом, обожаю компоненты и композицию - проект превращается в супер-гибкий конструктор
Еще вот по мере роста этого огрызка недоигры у меня появился вопрос: "А как дебажить игры побольше? Мне уже неприятно"
Мне ж когда надо протестить будет поднятие сорока апельсинов мне надо будет их вручную создавать, а потом удалять. Когда надо врага потестить я отключаю спавнер врагов и добавляю нужного врага, и так далее абсолютно со всем
Но мне уже это как бы не очень приятно делать - я часто забываю что-то вернуть на место. Например при тестировании системы опыта и уровней я захардкодил значение "experience_to_next_level = 1", то есть мне надо только один апельсин поднять для нового уровня (для легкости дебага), но там должна быть цифра "5", а я забываю о таких вещах бывает (да-да, надо смотреть ченжи перед пушем в репозиторий, но епт) и это уже причиняет некоторую попаболь, поэтому мне прям интересно - как же тестируют/добавляют что-то в огромные игры?
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Вы даж не представляете как я радуюсь, когда вижу уведомление "вы получили ответ на вопрос ..." с юдеми или же уведомляшки с каналов в телеге, где я тоже бывает задаю вопросы
Но этот Firebelley (препод с курса) - он прям монстр, я реально за 5 лет веб-разработки просмотрел ну просто миллиарды платных и бесплатных курсов, некоторые с них были в основном абстрактными, некоторые теоретическими, некоторые чисто прикладными (практическими) без даже минимального объяснения деталей
А в этом курсе просто все бомба, мне даже не верится в то, что мне так повезло на него наткнутся и бустануть своё обучение настолько сильно
Я уже говорил что за курс я прохожу, но вот еще разочек линка на курс по Godot 4, оно на английском, но даже если вы слабенько понимаете на слух, то там есть субтитры, оно того стоит
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
День 89
Спустя три месяца я считаю уже пора начать.. читать документацию по Godot и GDScript😎
Не, ну а шо, три месяца (почти) написания кода без нормального изучения синтаксиса и движка это тот подход, который мы все уважаем
Когда-то там пару месяцев назад я говорил: "С понедельника я начну читать документацию по самому Godot...", ну да, у меня своё время, слегка иначе идёт, затянулось начало
Вчера просто сидел и читал доку годота, поузнавал некоторые полезные вещи (еще бы я не узнал) и заодно наткнулся на демо-игры от комьюнити, которые сделаны на годоте и их даже можно поклацать в браузере - https://godotengine.github.io/godot-demo-projects/
А вот сама ссылка на репозиторий с демками - https://github.com/godotengine/godot-demo-projects, некоторые вещи в теории можно оттуда подсмотреть, так что как-то выделю время на просмотр кода демок
P.S. Демку с названием "Saving and Loading (Serialization)" не открывайте.. у меня браузер и комп умер, я даже словил не синий экран смерти, а красный (чет новое), видосик записал с телефона, потому что.. комп же умер👀
#godot
Спустя три месяца я считаю уже пора начать.. читать документацию по Godot и GDScript
Не, ну а шо, три месяца (почти) написания кода без нормального изучения синтаксиса и движка это тот подход, который мы все уважаем
Когда-то там пару месяцев назад я говорил: "С понедельника я начну читать документацию по самому Godot...", ну да, у меня своё время, слегка иначе идёт, затянулось начало
Вчера просто сидел и читал доку годота, поузнавал некоторые полезные вещи (еще бы я не узнал) и заодно наткнулся на демо-игры от комьюнити, которые сделаны на годоте и их даже можно поклацать в браузере - https://godotengine.github.io/godot-demo-projects/
А вот сама ссылка на репозиторий с демками - https://github.com/godotengine/godot-demo-projects, некоторые вещи в теории можно оттуда подсмотреть, так что как-то выделю время на просмотр кода демок
P.S. Демку с названием "Saving and Loading (Serialization)" не открывайте.. у меня браузер и комп умер, я даже словил не синий экран смерти, а красный (чет новое), видосик записал с телефона, потому что.. комп же умер
#godot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
День 9️⃣ 0️⃣
Числовой пост и юбилей
Три месяца разработки игр и занятием любимым делом - а когда-то я был простоганяным гражданским веб-разработчиком (ну и щас конечно являюсь им, но упустим этот момент)
Даже не знаю что написать такого - я просто сейчас искренне рад, что я не сдался из-за проблем и тупняков в первые недели, отношусь серьёзно к этому и получаю прям нееральное удовольствие от того, когда у меня что-то получается, например спавн кроликов за ареной, которых я все еще не пофиксил😳
Даже мурашки по коже пошли пока пост писал и думал о прошедших 3х месяцах (мб просто холодно, ну не важно)
Нас уже ❗️96 ❗️, а это практически в два раза больше чем 30 дней назад, сообщество стало больше на 43 человека.. я в приятном шоке, ведь несколько лет назад вся моя писанина ограничивалась всеми известными карикатурами на стенах в заброшках
Ну ладно, не будем о буквах, будем о числах:
В этом месяце почти все время я уделял разработке, в основном прохождению курса на юдеми и разработку мини-игры R.I.T.K.A. Rampage
Временные циферки:
Программирование - 26 часов 58 минут
Пиксель арт - 4 часа 37 минут
Брейншторминг - 3 часа 7 минут
...и новый пунктик
Менеджмент - 22 часа 26 минут...+, даже сейчас время тикает
Менеджмент это время, которое я уделял монтажу видео и написанию постов
Каждый день, за исключением 31 августа, а также 3, 10 и 22 сентября я так или иначе уделял время разработке игр (кстати могут быть погрешности, т.к. частенько я ночью работаю, так что сужу только по графику)
Минимально уделённое время за день - 6 минут 55 секунд 15 сентября, которое я уделил на разработку, абсолютный рекорд в тяжелом весе по разработке😎
Максимальное - 3 часа 15 минут 8 сентября, тоже разработка
Менеджмент идёт как отдельная штука, так что я её в статистику выше не включаю, а просто добавлю графиком
Теперь в конце каждого месяца будет два поста - первый со статистикой, юбилейный, вот такой как этот, а второй с прогрессом за прошлые 30 дней в виде смонтированного видосика + коротенький текст
Т.к. раньше не было постов с видосиками с результатом за долгий период - в этот раз я соберувсю фигню в одно видео все 90 дней прогресса, думаю выйдет четко вообще
Числовой пост и юбилей
Три месяца разработки игр и занятием любимым делом - а когда-то я был просто
Даже не знаю что написать такого - я просто сейчас искренне рад, что я не сдался из-за проблем и тупняков в первые недели, отношусь серьёзно к этому и получаю прям нееральное удовольствие от того, когда у меня что-то получается, например спавн кроликов за ареной, которых я все еще не пофиксил
Даже мурашки по коже пошли пока пост писал и думал о прошедших 3х месяцах (мб просто холодно, ну не важно)
Нас уже ❗️96 ❗️, а это практически в два раза больше чем 30 дней назад, сообщество стало больше на 43 человека.. я в приятном шоке, ведь несколько лет назад вся моя писанина ограничивалась всеми известными карикатурами на стенах в заброшках
Ну ладно, не будем о буквах, будем о числах:
В этом месяце почти все время я уделял разработке, в основном прохождению курса на юдеми и разработку мини-игры R.I.T.K.A. Rampage
Временные циферки:
Программирование - 26 часов 58 минут
Пиксель арт - 4 часа 37 минут
Брейншторминг - 3 часа 7 минут
...и новый пунктик
Менеджмент - 22 часа 26 минут...+, даже сейчас время тикает
Менеджмент это время, которое я уделял монтажу видео и написанию постов
Каждый день, за исключением 31 августа, а также 3, 10 и 22 сентября я так или иначе уделял время разработке игр (кстати могут быть погрешности, т.к. частенько я ночью работаю, так что сужу только по графику)
Минимально уделённое время за день - 6 минут 55 секунд 15 сентября, которое я уделил на разработку, абсолютный рекорд в тяжелом весе по разработке
Максимальное - 3 часа 15 минут 8 сентября, тоже разработка
Менеджмент идёт как отдельная штука, так что я её в статистику выше не включаю, а просто добавлю графиком
Теперь в конце каждого месяца будет два поста - первый со статистикой, юбилейный, вот такой как этот, а второй с прогрессом за прошлые 30 дней в виде смонтированного видосика + коротенький текст
Т.к. раньше не было постов с видосиками с результатом за долгий период - в этот раз я соберу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Media is too big
VIEW IN TELEGRAM
Как и обещал - пост с видосом за результат 3х месяцев геймдева (и на ютуб тоже залил)
Ну и текстом немножко
Моей целью все еще является ARPG игра с прокачкой, навыками и лутом - как в Diablo 2 / Path of Exile / Titan Quest
Сейчас заканчиваю разработку игры R.I.T.K.A. Rampage в жанре игр Vampire Survivors + 20 Minutes Till Dawn
После этой игры буду делать следующую мини игру в жанре ARPG с двумя-тремя локациями, базовой прокачкой, парой навыком и так далее, эдакая диабла на минималках
За 90 дней я успел:
1. Порадоваться, что начал заниматься любимым делом
2. Захотеть дропнуть это дело (сложности возникли, ну да)
3. Наговнокодить по-дикому в первом проекте и стать счастливым
4. Снова порадоваться, что не дропнул геймдев и щас уже идёт все как по маслу
5. Попробовать себя в пиксель арте и даже сделать что-то сносное (нечлен )
6. Написать 20 тыщ самых свежих вчерашних постов
Ну и текстом немножко
Моей целью все еще является ARPG игра с прокачкой, навыками и лутом - как в Diablo 2 / Path of Exile / Titan Quest
Сейчас заканчиваю разработку игры R.I.T.K.A. Rampage в жанре игр Vampire Survivors + 20 Minutes Till Dawn
После этой игры буду делать следующую мини игру в жанре ARPG с двумя-тремя локациями, базовой прокачкой, парой навыком и так далее, эдакая диабла на минималках
За 90 дней я успел:
1. Порадоваться, что начал заниматься любимым делом
2. Захотеть дропнуть это дело (сложности возникли, ну да)
3. Наговнокодить по-дикому в первом проекте и стать счастливым
4. Снова порадоваться, что не дропнул геймдев и щас уже идёт все как по маслу
5. Попробовать себя в пиксель арте и даже сделать что-то сносное (не
6. Написать 20 тыщ самых свежих вчерашних постов
🔥20👍1
This media is not supported in your browser
VIEW IN TELEGRAM
День 91
Наконец-то добрался до написания поста, хоть и не очень информативного🦤
Исходя из недавнего опросника я понял, что посты каждый день это то, что нравится большинству, так что оставляем все как было (любимые вчерашние посты как этот тоже)
Вчера (в субботу) я немного потыкал шейдеры - препод использует их для "мигания" врагов белым при получении ими урона, у меня же эта функциональность готова и вынесена в отдельный компонент без использования шейдеров.. да и шейдеры в этой игре я не буду использовать
Шейдеры - это "графика в коде", т.е. тени, свет, цвет, всякие визуальные эффекты типа ветра для деревьев (кстати недавно чел, за которым я слежу, выложил видео с примером шейдеров, ещё прикреплю к посту это видео) - в общем они прям делают графику очень интересной
Да только есть проблемка - в годот в вебе шейдеры нагружают страничку сильно, если верить ребятам из чата, условно какая-то игра на 9мб грузится 10+ секунд, хотя могла бы почти моментально*
*И.. я не проверял это лично, потому что мне шейдеры щас точно не нужны, к шейдерам я активно подойду позже, а сейчас нужно сосредоточиться на другом (я просто ленивый, а клацнуть экспорт и проверить работает ли всё - это выше моих сил)
#godot #разработка
Наконец-то добрался до написания поста, хоть и не очень информативного
Исходя из недавнего опросника я понял, что посты каждый день это то, что нравится большинству, так что оставляем все как было (любимые вчерашние посты как этот тоже)
Вчера (в субботу) я немного потыкал шейдеры - препод использует их для "мигания" врагов белым при получении ими урона, у меня же эта функциональность готова и вынесена в отдельный компонент без использования шейдеров.. да и шейдеры в этой игре я не буду использовать
Шейдеры - это "графика в коде", т.е. тени, свет, цвет, всякие визуальные эффекты типа ветра для деревьев (кстати недавно чел, за которым я слежу, выложил видео с примером шейдеров, ещё прикреплю к посту это видео) - в общем они прям делают графику очень интересной
Да только есть проблемка - в годот в вебе шейдеры нагружают страничку сильно, если верить ребятам из чата, условно какая-то игра на 9мб грузится 10+ секунд, хотя могла бы почти моментально*
*И.. я не проверял это лично, потому что мне шейдеры щас точно не нужны, к шейдерам я активно подойду позже, а сейчас нужно сосредоточиться на другом (я просто ленивый, а клацнуть экспорт и проверить работает ли всё - это выше моих сил)
#godot #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🫡1
День 92
Спавн мобов пофикшен✅
Как у меня спавн мобов вообще работает:
1. Выбирается точка за пределом зрения игрока (точки на краю круга с радиусом около 355px)
2. Если точка находится за ареной - перемещаем эту точку на 90°, если снова за ареной - еще раз, и так 4 раза максимум, какая-то точка 100% должна быть на арене (ага, расскажите это кроликам за ареной)
Определение "находится ли точка спавна за ареной" делается следующим образом - я провожу невидимый физический луч, который идёт от игрока до потенциальной точки спавна моба, если этот луч соприкасается с границами арены (спрайты воды) - то перемещаем точку на 90°
Звучит как что-то, что должно работать как часы, оно то так и есть.. только арена была настолько маленькой, а радиус спавна был настолько большой, что появились баги со спавном. Если коротко - я перепутал радиус с диагональю, и все время думал, что круг спавна значительно меньше, чем было на самом деле
Когда Ритка стояла посередине арены и по бокам было видно воду - это значило что точка спавна может быть прям на воде, что является нормальным, но если арена небольшая и "круг спавна" больше самой арены, то все 4 точки потенциальные были на позициях 0, 90, 180 и 270 градусов и все они были на воде и враг спавнился на последней
Решение простое (easy yet powerful) - увеличить арену
Пока увеличивал арену разобрался с автотайлингом в Godot 4 и теперь мне не надо каждый квадратик или уголок вручную тыкать - ведь можно просто использовать инструмент "прямоугольник" (заливка выделенной области тайлами) и подходящий тайл ставится автоматически (ведь угол может быть только в углу, а не где-то слева или в середине арены)
Забыл в одном из прошлых постов показать неплохой и бесплатный набор пиксельных шрифтов, я использую "KarenFat", препод использует "Rockboxcond12", но мне он не очень зашел - слишком высокие/длинные символы
Прикрепил пару видео - короткое с результатом пофикшенного спавна и минутку ускоренного "брейншторминга" где я выяснял что не так со спавном (на 33 секунде до меня дошло где была собака зарыта, я там четыре точки нарисовал еще🥳 )
И наконец-то залил обновлённую версию на itch.io и вы можете потыкать игру прямо в браузере - https://sundwell.itch.io/ritka-rampage
И еще в комменты закину билд для виндовса - можно запустить exe'шник имайнер на месте можно будет поиграть, надеюсь оно рабочее 👀
#godot #ritkarampage #разработка
Спавн мобов пофикшен
Как у меня спавн мобов вообще работает:
1. Выбирается точка за пределом зрения игрока (точки на краю круга с радиусом около 355px)
2. Если точка находится за ареной - перемещаем эту точку на 90°, если снова за ареной - еще раз, и так 4 раза максимум, какая-то точка 100% должна быть на арене (ага, расскажите это кроликам за ареной)
Определение "находится ли точка спавна за ареной" делается следующим образом - я провожу невидимый физический луч, который идёт от игрока до потенциальной точки спавна моба, если этот луч соприкасается с границами арены (спрайты воды) - то перемещаем точку на 90°
Звучит как что-то, что должно работать как часы, оно то так и есть.. только арена была настолько маленькой, а радиус спавна был настолько большой, что появились баги со спавном. Если коротко - я перепутал радиус с диагональю, и все время думал, что круг спавна значительно меньше, чем было на самом деле
Когда Ритка стояла посередине арены и по бокам было видно воду - это значило что точка спавна может быть прям на воде, что является нормальным, но если арена небольшая и "круг спавна" больше самой арены, то все 4 точки потенциальные были на позициях 0, 90, 180 и 270 градусов и все они были на воде и враг спавнился на последней
Решение простое (easy yet powerful) - увеличить арену
Пока увеличивал арену разобрался с автотайлингом в Godot 4 и теперь мне не надо каждый квадратик или уголок вручную тыкать - ведь можно просто использовать инструмент "прямоугольник" (заливка выделенной области тайлами) и подходящий тайл ставится автоматически (ведь угол может быть только в углу, а не где-то слева или в середине арены)
Забыл в одном из прошлых постов показать неплохой и бесплатный набор пиксельных шрифтов, я использую "KarenFat", препод использует "Rockboxcond12", но мне он не очень зашел - слишком высокие/длинные символы
Прикрепил пару видео - короткое с результатом пофикшенного спавна и минутку ускоренного "брейншторминга" где я выяснял что не так со спавном (на 33 секунде до меня дошло где была собака зарыта, я там четыре точки нарисовал еще
И наконец-то залил обновлённую версию на itch.io и вы можете потыкать игру прямо в браузере - https://sundwell.itch.io/ritka-rampage
И еще в комменты закину билд для виндовса - можно запустить exe'шник и
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
День 93
Вчера был день рефакторинга⌨️
Во первых - меня мучали два вопроса:
1. Как дебажить игру, когда она станет побольше? (детали на скриншотах с вопросами и ответами)
2. Как бороться с "магическими строками"
Насчет дебага вкратце - можно и нужно делать отдельные инструменты для дебага. Например сделать сцену, где будет несколько кнопок на экране, например "Заспавнить случайного моба" или "+100" опыта и так далее, звучит как план и мне он нравится. Конечно же сейчас прям мне это не надо, но на скриншоте я описал пару проблем, с которыми уже сталкиваюсь (например оставил "опыт до след. уровня = 1" и забыл вернуть в исходное состояние)
Насчет магических строк - сделать константы. Вариант бомбезный, препод подсказал как это правильно сделать - создать скрипт с константами, загрузить его как синглтон (иначе не сработает) и использовать глобально - уже всё переписал на константы, теперь доволен как слон💃
Переписал логику выбора случайного врага, а точнее сделал "таблицу весов" универсальной, а не прям хардкодно привязанную к EnemyManager, прикреплю скриншот с ДО и ПОСЛЕ и сам скрипт WeightedTable тоже. Сделал я это из-за того, что скоро буду добавлять новый тип улучшений - апгрейды для оружия (пока что оно одно, но будет еще как минимум два) и для них я сделаю "редкость", впрочем как и для "мутаций"
Еще я очень часто ищу ноду игрока с помощью😎 , а вообще - функции get_player() я добавил аннотацию возвращаемого типа как
На очереди рефакторинг оружия, потому что это единственная вещь, которая написана в проекте максимально ущербно.. мне даже стыдно за это, я даже не выносил оружие как отдельную ноду, а скрипт для оружия лежит вообще в папке с синглтонами😳
Ну и улучшение для оружия тоже завезу, пора бы уже, но для начала надо сделать логику выпадения наковальни (тут подробнее о ней). Вкратце - иногда будет выпадать наковальня, с помощью которой можно будет улучшить оружие. Это будут не просто числовые значения, а будет изменение геймплея, прям как в Hades это сделано с помощью молота Дейдалуса
Подумать только надо будет хорошо, какие улучшения делать для оружия.. может "эволюционировать" оружие, типа пистолет превращается или в дробовик или в узишку. Я сначала хотел сделать именно дробовик и/или узишку как второе и третье оружие, но я подумал, что это супер неинтересно, суть та же - пули и зажатая клавиша. Теперь вот думаю насчет.. лука, его можно будет натягивать (неоднозначно звучит), и чем больше натяжение - тем быстрее и дальше летит стрела и тем больше у неё урона, а еще стрела будет пронзать врагов, только еще не знаю какую логику туда запихнуть, пока что два варианта есть:
1. У стрелы "10 урона", у зайца "5 хп", стрела наносит зайцу "5 урона" и летит дальше, только уже с "5 урона"
2. У стрелы "4 урона", у зайца "5 хп", стрела наносит зайцу "4 урона" и пробивает его насквозь с тем же "4 урона"
Столько думать - но мне реально в кайф
#godot #ritkarampage #разработка
Вчера был день рефакторинга
Во первых - меня мучали два вопроса:
1. Как дебажить игру, когда она станет побольше? (детали на скриншотах с вопросами и ответами)
2. Как бороться с "магическими строками"
Насчет дебага вкратце - можно и нужно делать отдельные инструменты для дебага. Например сделать сцену, где будет несколько кнопок на экране, например "Заспавнить случайного моба" или "+100" опыта и так далее, звучит как план и мне он нравится. Конечно же сейчас прям мне это не надо, но на скриншоте я описал пару проблем, с которыми уже сталкиваюсь (например оставил "опыт до след. уровня = 1" и забыл вернуть в исходное состояние)
Насчет магических строк - сделать константы. Вариант бомбезный, препод подсказал как это правильно сделать - создать скрипт с константами, загрузить его как синглтон (иначе не сработает) и использовать глобально - уже всё переписал на константы, теперь доволен как слон
Переписал логику выбора случайного врага, а точнее сделал "таблицу весов" универсальной, а не прям хардкодно привязанную к EnemyManager, прикреплю скриншот с ДО и ПОСЛЕ и сам скрипт WeightedTable тоже. Сделал я это из-за того, что скоро буду добавлять новый тип улучшений - апгрейды для оружия (пока что оно одно, но будет еще как минимум два) и для них я сделаю "редкость", впрочем как и для "мутаций"
Еще я очень часто ищу ноду игрока с помощью
get_tree().get_first_node_in_group("player") и я решил упростить себе жизнь - сделал хелпер-функции глобальным объектом "Utils", теперь вместо var player = get_tree().get_first_node_in_group("player") as Node2D я пишу var player = Utils.get_player(). Аннотацию типа тут опустил, чтобы показать насколько класснючий подход func get_player() -> Node2D так что автокомплит работает и жизнь налажена, но аннотация не помешает - так легче читать кодНа очереди рефакторинг оружия, потому что это единственная вещь, которая написана в проекте максимально ущербно.. мне даже стыдно за это, я даже не выносил оружие как отдельную ноду, а скрипт для оружия лежит вообще в папке с синглтонами
Ну и улучшение для оружия тоже завезу, пора бы уже, но для начала надо сделать логику выпадения наковальни (тут подробнее о ней). Вкратце - иногда будет выпадать наковальня, с помощью которой можно будет улучшить оружие. Это будут не просто числовые значения, а будет изменение геймплея, прям как в Hades это сделано с помощью молота Дейдалуса
Подумать только надо будет хорошо, какие улучшения делать для оружия.. может "эволюционировать" оружие, типа пистолет превращается или в дробовик или в узишку. Я сначала хотел сделать именно дробовик и/или узишку как второе и третье оружие, но я подумал, что это супер неинтересно, суть та же - пули и зажатая клавиша. Теперь вот думаю насчет.. лука, его можно будет натягивать (неоднозначно звучит), и чем больше натяжение - тем быстрее и дальше летит стрела и тем больше у неё урона, а еще стрела будет пронзать врагов, только еще не знаю какую логику туда запихнуть, пока что два варианта есть:
1. У стрелы "10 урона", у зайца "5 хп", стрела наносит зайцу "5 урона" и летит дальше, только уже с "5 урона"
2. У стрелы "4 урона", у зайца "5 хп", стрела наносит зайцу "4 урона" и пробивает его насквозь с тем же "4 урона"
Столько думать - но мне реально в кайф
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1