День 65
Сегодня занимался пиксель-артом, как и хотел. Думал взять размер 128х128 для логотипа - но я тупо потерялся в этом кол-ве пикселей, взял 64х64 и все равно было очень сложно, но я.. не смог. Ну да, вообще не получилось даже колодец сделать. Работать с артом более 32х32 размером уже гипер сложно, так что не буду пока что прям упарываться в ту идею, что сейчас есть (колодец с солнцем и ник под ним), а, вероятно, сделаю лого размером 32х32 или же вообще пока что забью на это и буду продолжать делать игру. Но тот огрызок-недоделок колодца прикреплю к посту, что уж тут
Я вот часто в конце дня думаю: "На что я вообще потратил время? Я же только час учился", так вот - на создание контента, ведение тг канала, монтаж видео и продумывание разных идей иногда уходит неимоверное кол-во времени, прикреплю скриншот с сегодняшней статой. Я ведь начал трекать время не только за разработкой, а и за тем, сколько я трачу времени на создание контента, я ведь хочу быть популярным🥳
Так вот - больше четырех часов ушло на все про все сегодня, теперь меня не мучает совесть вечером что я просто потерял день. Треканье лично для себя очень помогает отслеживать свое КПД, а вот на работе тайм-трекеры это зло без исключений, это так, просто к слову
Завтра (сегодня) начну работу над новым врагом и продолжу смотреть курс - на повестке дня увеличение сложности с течением времени и всякие микро улучшения
#pixelart #godot #ritkarampage #разработка
Сегодня занимался пиксель-артом, как и хотел. Думал взять размер 128х128 для логотипа - но я тупо потерялся в этом кол-ве пикселей, взял 64х64 и все равно было очень сложно, но я.. не смог. Ну да, вообще не получилось даже колодец сделать. Работать с артом более 32х32 размером уже гипер сложно, так что не буду пока что прям упарываться в ту идею, что сейчас есть (колодец с солнцем и ник под ним), а, вероятно, сделаю лого размером 32х32 или же вообще пока что забью на это и буду продолжать делать игру. Но тот огрызок-недоделок колодца прикреплю к посту, что уж тут
Я вот часто в конце дня думаю: "На что я вообще потратил время? Я же только час учился", так вот - на создание контента, ведение тг канала, монтаж видео и продумывание разных идей иногда уходит неимоверное кол-во времени, прикреплю скриншот с сегодняшней статой. Я ведь начал трекать время не только за разработкой, а и за тем, сколько я трачу времени на создание контента, я ведь хочу быть популярным
Так вот - больше четырех часов ушло на все про все сегодня, теперь меня не мучает совесть вечером что я просто потерял день. Треканье лично для себя очень помогает отслеживать свое КПД, а вот на работе тайм-трекеры это зло без исключений, это так, просто к слову
Завтра (сегодня) начну работу над новым врагом и продолжу смотреть курс - на повестке дня увеличение сложности с течением времени и всякие микро улучшения
#pixelart #godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
День 66
Вчера маловато времени вышло позаниматься разработкой, решал всякие важные и не очень дела
Глянул видео про увеличение сложности в течении времени - сделано прикольно, прям вот то, что нужно для такой игры
Есть ArenaTimeManager, в котором стоит тот таймер до конца игры (на данный момент 60 секунд), и мы туда добавляем данные про сложность и про то, как быстро сложность должна увеличиваться. На данный момент это каждые 5 секунд сложность увеличивается на 1. Эти единицы сложности это прям такие очень абстрактные единицы, т.е. будет не "easy", "medium", "hard", а просто число текущей сложности. Если локация будет длиться 10 минут, то максимальная сложность будет 120 (600 / 5)
Использовать это в принципе довольно легко, в курсе пока что показано только как увеличить скорость спавна врагов, но очевидно, что с течением сложности будут появляться новые враги, иногда прям слабые враги будут полностью исчезать (кролики например) и так далее. Я вот подглянул одним глазком что там дальше по курсу - и там есть видео "Using a Weighted Table for Enemy Spawning", то есть у каждого врага будет свой "вес" (без закладок). Тут все аналогично как и с тем умным построением тайлмапа - чем больше вес, тем больше шанс появления врага. На данный момент я это вижу как ренжи сложности и в зависимости от текущей сложности сетать веса всем врагам
Если сложность от 0 до 30 - то у всех врагов вес 0, а у Кролика - 1, т.е. 100% шанс на появление кролика. Если сложность от 31 до 60 - у Кролика вес 9, у Дикобраза - 1, а у всех остальных - 0. Значит шанс появления Кролика 9/10 = 90%, у Дикобраза 1/10 = 10%, ну и все в таком духе
Ну и таким же образом будет повышаться сложность самих врагов, если сложность от 0 до 30 - спавним Кроликов с "уровнем 1", от 31 до 60 - Кролики уже с "уровнем 2". С повышением уровня врагов будет повышаться только кол-во жизней и выпадаемого опыта. Мне кажется это в принципе все, что нужно, т.к. урон повышать будет не совсем логично, потому что у персонажа больше жизней не становится (ну возможно чуточку) и брони тоже (такой механики пока что в игре нет вообще). Может я это и пересмотрю, но пока что так
К слову - мне показалось странным, что препод запихнул "сложность" в ArenaTimeManager, т.к. это не совсем Single Responsibility, пошел в комменты читать - и там один чел уже спросил что-то типа: "А почему сложность в ArenaTimeManager? Может лучше будет сделать DifficultyManager?". Препод ответил что да, ты реально прав, так будет намного лучше и правильнее. В общем я доволен собой, уже начинаю "чувствовать" архитектуру🕺
#godot #разработка #ritkarampage
Вчера маловато времени вышло позаниматься разработкой, решал всякие важные и не очень дела
Глянул видео про увеличение сложности в течении времени - сделано прикольно, прям вот то, что нужно для такой игры
Есть ArenaTimeManager, в котором стоит тот таймер до конца игры (на данный момент 60 секунд), и мы туда добавляем данные про сложность и про то, как быстро сложность должна увеличиваться. На данный момент это каждые 5 секунд сложность увеличивается на 1. Эти единицы сложности это прям такие очень абстрактные единицы, т.е. будет не "easy", "medium", "hard", а просто число текущей сложности. Если локация будет длиться 10 минут, то максимальная сложность будет 120 (600 / 5)
Использовать это в принципе довольно легко, в курсе пока что показано только как увеличить скорость спавна врагов, но очевидно, что с течением сложности будут появляться новые враги, иногда прям слабые враги будут полностью исчезать (кролики например) и так далее. Я вот подглянул одним глазком что там дальше по курсу - и там есть видео "Using a Weighted Table for Enemy Spawning", то есть у каждого врага будет свой "вес" (без закладок). Тут все аналогично как и с тем умным построением тайлмапа - чем больше вес, тем больше шанс появления врага. На данный момент я это вижу как ренжи сложности и в зависимости от текущей сложности сетать веса всем врагам
Если сложность от 0 до 30 - то у всех врагов вес 0, а у Кролика - 1, т.е. 100% шанс на появление кролика. Если сложность от 31 до 60 - у Кролика вес 9, у Дикобраза - 1, а у всех остальных - 0. Значит шанс появления Кролика 9/10 = 90%, у Дикобраза 1/10 = 10%, ну и все в таком духе
Ну и таким же образом будет повышаться сложность самих врагов, если сложность от 0 до 30 - спавним Кроликов с "уровнем 1", от 31 до 60 - Кролики уже с "уровнем 2". С повышением уровня врагов будет повышаться только кол-во жизней и выпадаемого опыта. Мне кажется это в принципе все, что нужно, т.к. урон повышать будет не совсем логично, потому что у персонажа больше жизней не становится (ну возможно чуточку) и брони тоже (такой механики пока что в игре нет вообще). Может я это и пересмотрю, но пока что так
К слову - мне показалось странным, что препод запихнул "сложность" в ArenaTimeManager, т.к. это не совсем Single Responsibility, пошел в комменты читать - и там один чел уже спросил что-то типа: "А почему сложность в ArenaTimeManager? Может лучше будет сделать DifficultyManager?". Препод ответил что да, ты реально прав, так будет намного лучше и правильнее. В общем я доволен собой, уже начинаю "чувствовать" архитектуру
#godot #разработка #ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
День 67
Вчера (ну а когда-же) занимался пиксель-артом и обдумал еще раз врагов, какие у них способности будут, как будет выглядеть анимация и т.д.
Следил за тем опросником про следующего врага и в основном всегда побеждал дикобраз, но иногда счет с коровой был одинаковый, так что я сделал спрайты сразу для двух - и для коровы и для дикобраза (дикобразу сделал 2 почти одинаковые вариации, может буду использовать обе)
Про корову все так и осталось - будет медленно идти к персонажу, а раз в условных 5-10 секунд будет злобно топтаться на месте ибежать за пивом брать разгон в сторону персонажа. Во время рывка скорость будет быстрой, чтобы нельзя было просто в противоположную сторону отойти, а надо будет в стороны идти, ну и урона значительно больше будет наносить
Про дикобраза я пока что еще не решил как он будет именно стрелять - по одной игле или же (что более логично) сразу несколькими, но с разбросом. Второй вариант мне как-то больше нравится, обязательно попробую внедрить именно его. Иглы будут разной длины и будут лететь с разной изначальной скоростью и будут замедляться со временем
Изначально думал переиспользовать пулю (сделать общий компонент - ProjectileComponent) и уже от этого отталкиваться, но пока что не уверен. Возможно тут и не надо переиспользовать, а просто написать пару лишних строк похожих
Еще я думал выделять на игры по 30 дней, но 30й день уже через несколько дней, а игра еще супер недоделана, я не взял в учет то, что я вообще-то еще работаю и люблю поспать и заниматься ничегонеделаньем, так что реальное время чтобы полностью закончить текущую игру и чтобы это было не сыро - 50 дней
#pixelart #ritkarampage
Вчера (ну а когда-же) занимался пиксель-артом и обдумал еще раз врагов, какие у них способности будут, как будет выглядеть анимация и т.д.
Следил за тем опросником про следующего врага и в основном всегда побеждал дикобраз, но иногда счет с коровой был одинаковый, так что я сделал спрайты сразу для двух - и для коровы и для дикобраза (дикобразу сделал 2 почти одинаковые вариации, может буду использовать обе)
Про корову все так и осталось - будет медленно идти к персонажу, а раз в условных 5-10 секунд будет злобно топтаться на месте и
Про дикобраза я пока что еще не решил как он будет именно стрелять - по одной игле или же (что более логично) сразу несколькими, но с разбросом. Второй вариант мне как-то больше нравится, обязательно попробую внедрить именно его. Иглы будут разной длины и будут лететь с разной изначальной скоростью и будут замедляться со временем
Изначально думал переиспользовать пулю (сделать общий компонент - ProjectileComponent) и уже от этого отталкиваться, но пока что не уверен. Возможно тут и не надо переиспользовать, а просто написать пару лишних строк похожих
Еще я думал выделять на игры по 30 дней, но 30й день уже через несколько дней, а игра еще супер недоделана, я не взял в учет то, что я вообще-то еще работаю и люблю поспать и заниматься ничегонеделаньем, так что реальное время чтобы полностью закончить текущую игру и чтобы это было не сыро - 50 дней
#pixelart #ritkarampage
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
День 68
Вчера обдумывал (жесть, уже позавчера) как именно этот дикобраз будет себя вести и, в принципе, все обдумал
Дикобраз будет подходить к персонажу на определённую дистанцию и будет раз в 2+- секунды стрелять иглами, во время "перезарядки" он будет бродить вокруг персонажа, типа уворачиваясь. Сказать просто - реализовать думаю будет слегка сложнее
Самое главное что я сделал за 68 день это анимации для дикобраза - движение, атака (вообще бомба получилась) и кадр смерти, прикреплю видео к посту, а гифки закину в комменты
Сейчас занимаюсь анимациями для Упертой Коровы, а завтра (то есть 7 сентября, новый день же начинается когда просыпаешься, ну да) уже буду внедрять врагов и их логику, начну с дикобраза, т.к. он выиграл в голосовалке с небольшим отрывом
#pixelart #ritkarampage
Вчера обдумывал (жесть, уже позавчера) как именно этот дикобраз будет себя вести и, в принципе, все обдумал
Дикобраз будет подходить к персонажу на определённую дистанцию и будет раз в 2+- секунды стрелять иглами, во время "перезарядки" он будет бродить вокруг персонажа, типа уворачиваясь. Сказать просто - реализовать думаю будет слегка сложнее
Самое главное что я сделал за 68 день это анимации для дикобраза - движение, атака (вообще бомба получилась) и кадр смерти, прикреплю видео к посту, а гифки закину в комменты
Сейчас занимаюсь анимациями для Упертой Коровы, а завтра (то есть 7 сентября, новый день же начинается когда просыпаешься, ну да) уже буду внедрять врагов и их логику, начну с дикобраза, т.к. он выиграл в голосовалке с небольшим отрывом
#pixelart #ritkarampage
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
День 69
Сегодня сделал анимации для Упёртой Коровы, новостей не особо много 👀
Тут анимаций побольше - ходьба, "разгон на месте", сам бег и один кадр смэрти. Но пришлось немного попотеть, хотя я сначала думал будет проще чем дикобраз
Результатом в общем-то доволен, не идеально - но это и не цель. Друг сказал мне классную фразу: "Progress over perfection", что значит "важнее делать шаги вперёд и развиваться, даже если результат пока не идеален. Лучше продолжать учиться и развиваться, чем тратить слишком много времени на стремление к идеальному результату"
А, ну если что я не полностью из головы беру эти спрайты - это ну просто нереально нарисовать что-то с нуля, надо смотреть похожие спрайты, похожие анимации, срисовывать-списывать это все, а потом со временем уже что-то в голове да свое и появится. А пока что тихо срисовал и ушел называется нашел👀
Как обычно прикрепляю видео с результатом, а гифки закину в комменты
#pixelart #ritkarampage
Сегодня сделал анимации для Упёртой Коровы, новостей не особо много 👀
Тут анимаций побольше - ходьба, "разгон на месте", сам бег и один кадр смэрти. Но пришлось немного попотеть, хотя я сначала думал будет проще чем дикобраз
Результатом в общем-то доволен, не идеально - но это и не цель. Друг сказал мне классную фразу: "Progress over perfection", что значит "важнее делать шаги вперёд и развиваться, даже если результат пока не идеален. Лучше продолжать учиться и развиваться, чем тратить слишком много времени на стремление к идеальному результату"
А, ну если что я не полностью из головы беру эти спрайты - это ну просто нереально нарисовать что-то с нуля, надо смотреть похожие спрайты, похожие анимации, срисовывать-списывать это все, а потом со временем уже что-то в голове да свое и появится. А пока что тихо срисовал и ушел называется нашел
Как обычно прикрепляю видео с результатом, а гифки закину в комменты
#pixelart #ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
День 70
Сегодня разработка пошла прям очень хорошо, добавил в игру дикобраза, сделал ему логику атаки и передвижения, но перед этим доделав его страничку у себя в "дизайн-документе" (скрин прикреплю кстати)
Сейчас дикобраз двигается следующим образом - он преследует персонажа, пока не будет рядом с ним, после этого начинается чередование атака — блуждание. Каждые 2 секунды дикобраз атакует, если персонаж в зоне досягаемости, а в перерывах между атакой он блуждает туда-сюда (очень классно получилось, мне прям нравится) и каждые 0.6 секунд меняет своё направление. Иногда даже кажется, что дикобраз убегает от персонажа 😅
Кстати я сейчас подумал над этим - может реально сделать чтобы дикобраз убегал от персонажа, когда Ритка слишком близко приближается к нему🤔
Завтра потестирую этот вариант, возможно будет даже прикольнее чем сейчас. Будет это работать следующим образом - если дикобраз находится на расстоянии 150 условных единиц (у.е.) и меньше к персонажу - то чередует атаку и брождение туда-сюда, а если дистанция становится менее 50 у.е. - то дикобраз начинает двигаться в противоположную сторону от Ритки с увеличенной скоростью (типа убегает). А чтобы избежать дёрганий в движении когда будет 49-51 расстояние я добавлю задержку перед изменением направления и будет четко вообще
И к мысли про убегающего дикобраза - может ему имя поменять? Например на "Пугливый Дикобраз" / "Timid Porcupine". А то сейчас его имя какое-то слишком обычное что-ли ("Дикобраз Иглострел" / "Quill-Shot Porcupine")
С именами врагов я что-то придумаю точно, как минимум добавлю что-то типа бестиария, в котором будет показано сколько было убито тех или иных врагов, немного описания про врага и все такое, уверен будет полезно такое внедрить
Мне прям понравилось разрабатывать сейчас это все, так что завтра (сегодня, в воскресенье) я доделаю полностью дикобраза и приступлю к Упрямой Корове
#ritkarampage #godot #разработка
Сегодня разработка пошла прям очень хорошо, добавил в игру дикобраза, сделал ему логику атаки и передвижения, но перед этим доделав его страничку у себя в "дизайн-документе" (скрин прикреплю кстати)
Сейчас дикобраз двигается следующим образом - он преследует персонажа, пока не будет рядом с ним, после этого начинается чередование атака — блуждание. Каждые 2 секунды дикобраз атакует, если персонаж в зоне досягаемости, а в перерывах между атакой он блуждает туда-сюда (очень классно получилось, мне прям нравится) и каждые 0.6 секунд меняет своё направление. Иногда даже кажется, что дикобраз убегает от персонажа 😅
Кстати я сейчас подумал над этим - может реально сделать чтобы дикобраз убегал от персонажа, когда Ритка слишком близко приближается к нему
Завтра потестирую этот вариант, возможно будет даже прикольнее чем сейчас. Будет это работать следующим образом - если дикобраз находится на расстоянии 150 условных единиц (у.е.) и меньше к персонажу - то чередует атаку и брождение туда-сюда, а если дистанция становится менее 50 у.е. - то дикобраз начинает двигаться в противоположную сторону от Ритки с увеличенной скоростью (типа убегает). А чтобы избежать дёрганий в движении когда будет 49-51 расстояние я добавлю задержку перед изменением направления и будет четко вообще
И к мысли про убегающего дикобраза - может ему имя поменять? Например на "Пугливый Дикобраз" / "Timid Porcupine". А то сейчас его имя какое-то слишком обычное что-ли ("Дикобраз Иглострел" / "Quill-Shot Porcupine")
С именами врагов я что-то придумаю точно, как минимум добавлю что-то типа бестиария, в котором будет показано сколько было убито тех или иных врагов, немного описания про врага и все такое, уверен будет полезно такое внедрить
Мне прям понравилось разрабатывать сейчас это все, так что завтра (сегодня, в воскресенье) я доделаю полностью дикобраза и приступлю к Упрямой Корове
#ritkarampage #godot #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
День 71
Сегодня полностью доделал врага-дикобраза, теперь он стреляет от 1 до 3 игл с разбросом в 30 градусов в направлении игрока, а также убегает с увеличенной скоростью, когда Ритка слишком близко подходит. Под лапками у дикобраза во время "убегания" еще что-то типа пыли добавил, выглядит очень забавно 😅
Больше всего времени заняла разработка разброса для игл. Я хотел полностью сам все сделать и разобраться, а только потом уже гуглить готовое решение, поэтому долго тупил, зато теперь знаю, что в Godot все на радианах, а не на градусах.. знал бы я раньше, сэкономил бы пол часика как минимум точно😢
Я даже чет рисовал чтобы визуализировать это все дело, ну оно даже помогло
Еще иглы уменьшают свою скорость по мере "летения" вплоть до половины изначально скорости, это прям добавило динамичности, а то если иглы с одной скоростью летели бы, то это было бы слишком топорно
Вот кстати моё решение для разброса игл:
И решение с интернета (намного лаконичнее и лучше):
#ritkarampage #godot #разработка
Сегодня полностью доделал врага-дикобраза, теперь он стреляет от 1 до 3 игл с разбросом в 30 градусов в направлении игрока, а также убегает с увеличенной скоростью, когда Ритка слишком близко подходит. Под лапками у дикобраза во время "убегания" еще что-то типа пыли добавил, выглядит очень забавно 😅
Больше всего времени заняла разработка разброса для игл. Я хотел полностью сам все сделать и разобраться, а только потом уже гуглить готовое решение, поэтому долго тупил, зато теперь знаю, что в Godot все на радианах, а не на градусах.. знал бы я раньше, сэкономил бы пол часика как минимум точно
Я даже чет рисовал чтобы визуализировать это все дело, ну оно даже помогло
Еще иглы уменьшают свою скорость по мере "летения" вплоть до половины изначально скорости, это прям добавило динамичности, а то если иглы с одной скоростью летели бы, то это было бы слишком топорно
Вот кстати моё решение для разброса игл:
var direction_to_player: Vector2 = global_position.direction_to(player.global_position) # получаем нормализованный вектор направления к игроку, т.е. значения тут всегда от -1 до 1, но длинна равна 1
for index in quill_count:
var quill = quill_scene.instantiate() as Node2D
var cone_from: Vector2 = direction_to_player.rotated(deg_to_rad(30)) # определяем первую границу конуса
var cone_to: Vector2 = direction_to_player.rotated(deg_to_rad(-30)) # определяем вторую границу конуса
var cone_random_point = Vector2(
randf_range(cone_from.x, cone_to.x), # выбираем случайную точку по "X"
randf_range(cone_from.y, cone_to.y), # выбираем случайную точку по "Y"
)
quill.rotation = cone_random_point.angle() # тут задаём вращение, т.е. в какую сторону полетит игла (в радианах)
И решение с интернета (намного лаконичнее и лучше):
var direction_to_player: Vector2 = global_position.direction_to(player.global_position)
for index in quill_count:
for index in quill_count:
var quill = quill_scene.instantiate() as Node2D
var random_angle = deg_to_rad(randf_range(30, -30))
var random_direction = direction_to_player.rotated(random_angle)
quill.rotation = random_direction.angle()
#ritkarampage #godot #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
День 72
Вчера успел сделать только базовое передвижение для Упёртой Коровы и сделать документ для неё
Щас прям пару супер загруженных дней по работе и по потенциальной подработке
Планирую со временем расширять комьюнити, чтобы больше людей могли присоединиться к процессу и влиять на разработку. Это поможет сделать игры интереснее и учитывать мнения разных людейи чтобы все могли видеть как я каждый день пишу пост за вчера
К слову я реально серьёзно хочу подойти к телеграмм каналу и сообществу, мне прям нереально нравится этим заниматься, даже если моя цель в 1000 подписчиков когда-нибудь сбудется (жесть), тут никогда не будет рекламы. Это позволит сохранить искренность постов, а не просто писать ради того, чтобы впихнуть рекламу
Пока что я не находил похожих каналов, где каждый день постят именно вот прогресс с описанием и т.п. (может плохо искал?), т.к. если где-то и пишут, то раз в несколько дней или же недель и не так прям детально, что очень странно, мне было бы ну нереально интересно глянуть на то, как прогрессируют другие люди
#godot #разработка #ritkarampage
Вчера успел сделать только базовое передвижение для Упёртой Коровы и сделать документ для неё
Щас прям пару супер загруженных дней по работе и по потенциальной подработке
Планирую со временем расширять комьюнити, чтобы больше людей могли присоединиться к процессу и влиять на разработку. Это поможет сделать игры интереснее и учитывать мнения разных людей
К слову я реально серьёзно хочу подойти к телеграмм каналу и сообществу, мне прям нереально нравится этим заниматься, даже если моя цель в 1000 подписчиков когда-нибудь сбудется (жесть), тут никогда не будет рекламы. Это позволит сохранить искренность постов, а не просто писать ради того, чтобы впихнуть рекламу
Пока что я не находил похожих каналов, где каждый день постят именно вот прогресс с описанием и т.п. (может плохо искал?), т.к. если где-то и пишут, то раз в несколько дней или же недель и не так прям детально, что очень странно, мне было бы ну нереально интересно глянуть на то, как прогрессируют другие люди
#godot #разработка #ritkarampage
🔥3
День 73
Сегодня пришлось (реально пришлось) сделать практически выходной от геймдева, так что просто расскажу что-то интересное из личного опыта
Весь день созванивался, собеседовался насчет небольшой подработки на пару месяцев+, т.к. мало ли что может произойти с основной работой, хоть я в ней и уверен на все 100%, но дополнительная страховка и заначка не помешает
Как-то я остался без работы на пару месяцев, а жил я от зарплаты до зарплаты, хотя ставка даже на тот момент была ну более чем достойная, но моя финансовая грамотность мягко говоря желала лучшего и я делал часто импульсивные покупки, тратился на всякое и вообще не откладывал деньги, я вообще без понятия куда все средства уходили 😢
А потом в компании начались тяжелые времена, проекты закончились, урезали ставку до 70%, а потом и вовсе я решил уйти с компании, т.к. повышением и не пахло из-за финансовых проблем у компании (это всех касалось, не только меня 👀), а когда работы то мне и не осталось то я сидел на 70% ставки и практически не программировал, занимался непойми чем, ну и решил уйти
Нашел работу очень быстро, мне прям вот нереально повезло с ней. Продуктовая компания, я единственный фронтенд разработчик, команда небольшая, англоговорящая, ставка даже выше чем была в прошлой компании - ну мечта, просто мечта, я все еще в этой компании и вообще не планирую уходить, мы тут уже как семья
Да вот была проблемка - они только начинали работать с разработчиками из Украины и не совсем еще понимали как правильно отправлять средства на банковский счет ФОП.. и я почти три месяца работал без зарплаты, я просто уже не вывозил, денег не было вообще, я брал микрозаймы в разных конторах, т.к. там льготные проценты на первое взятие, продал дофига вещей типа робота-пылесоса, гитара, геймерское кресло, геймерский стол и т.д., очень тяжелое время было..
Но потом все наладилось, и я прям как только так сразу начал откладывать средства в наличке в долларах, т.к. чтобы их потратить это надо их взять, пойти обменять в выгодном обменнике, все равно потерять немного на курсе и процентах на снятии налички, а только потом потратить, так что как мне кажется это наилучший вариант хранить заначку (не считая акций/вкладов/крипты, но до этого еще рановато)
И теперь у меня какая-то травма после этой ситуации, и если у меня есть ощущение, что деньги заканчиваются - мне прям напряжно становится, нервничаю, сложно думать о чем-то, хотя переживаниями ничего же не исправишь, но так мозги работают, что поделать. Но когда есть отложенные средства - уже проще. Я стремлюсь к тому, чтобы у меня было отложенных средств на пол года жизни, пока что есть только на полтора месяца, но это уже прям неплохо, целое достижение для меня
Сейчас же с подработками я быстрее накоплю "капитал" на пол года параллельно откладывая на новый ноут, а то текущий уже на грани смерти
В общем к чему это я - откладывайте деньги, хоть на месяц-два минимальной жизни на мивине + жильё, а то блин в долгах жить это просто ужасно, особенно когда нет понимания когда это все закончится
Сегодня пришлось (реально пришлось) сделать практически выходной от геймдева, так что просто расскажу что-то интересное из личного опыта
Весь день созванивался, собеседовался насчет небольшой подработки на пару месяцев+, т.к. мало ли что может произойти с основной работой, хоть я в ней и уверен на все 100%, но дополнительная страховка и заначка не помешает
Как-то я остался без работы на пару месяцев, а жил я от зарплаты до зарплаты, хотя ставка даже на тот момент была ну более чем достойная, но моя финансовая грамотность мягко говоря желала лучшего и я делал часто импульсивные покупки, тратился на всякое и вообще не откладывал деньги, я вообще без понятия куда все средства уходили 😢
А потом в компании начались тяжелые времена, проекты закончились, урезали ставку до 70%, а потом и вовсе я решил уйти с компании, т.к. повышением и не пахло из-за финансовых проблем у компании (это всех касалось, не только меня 👀), а когда работы то мне и не осталось то я сидел на 70% ставки и практически не программировал, занимался непойми чем, ну и решил уйти
Нашел работу очень быстро, мне прям вот нереально повезло с ней. Продуктовая компания, я единственный фронтенд разработчик, команда небольшая, англоговорящая, ставка даже выше чем была в прошлой компании - ну мечта, просто мечта, я все еще в этой компании и вообще не планирую уходить, мы тут уже как семья
Да вот была проблемка - они только начинали работать с разработчиками из Украины и не совсем еще понимали как правильно отправлять средства на банковский счет ФОП.. и я почти три месяца работал без зарплаты, я просто уже не вывозил, денег не было вообще, я брал микрозаймы в разных конторах, т.к. там льготные проценты на первое взятие, продал дофига вещей типа робота-пылесоса, гитара, геймерское кресло, геймерский стол и т.д., очень тяжелое время было..
Но потом все наладилось, и я прям как только так сразу начал откладывать средства в наличке в долларах, т.к. чтобы их потратить это надо их взять, пойти обменять в выгодном обменнике, все равно потерять немного на курсе и процентах на снятии налички, а только потом потратить, так что как мне кажется это наилучший вариант хранить заначку (не считая акций/вкладов/крипты, но до этого еще рановато)
И теперь у меня какая-то травма после этой ситуации, и если у меня есть ощущение, что деньги заканчиваются - мне прям напряжно становится, нервничаю, сложно думать о чем-то, хотя переживаниями ничего же не исправишь, но так мозги работают, что поделать. Но когда есть отложенные средства - уже проще. Я стремлюсь к тому, чтобы у меня было отложенных средств на пол года жизни, пока что есть только на полтора месяца, но это уже прям неплохо, целое достижение для меня
Сейчас же с подработками я быстрее накоплю "капитал" на пол года параллельно откладывая на новый ноут, а то текущий уже на грани смерти
В общем к чему это я - откладывайте деньги, хоть на месяц-два минимальной жизни на мивине + жильё, а то блин в долгах жить это просто ужасно, особенно когда нет понимания когда это все закончится
❤2🔥2
Media is too big
VIEW IN TELEGRAM
День 74
Самый свежий вчерашний пост
Вчера доделал Упёртую Корову и внес некоторые правки в её логику (в основном числовые)
5 секунд перезарядки для рывка это ощущалось как-то много, так что уменьшил до 2 секунд
Увеличил минимальное расстояние для начала Bull Rush с 60 до 120 пикселей
Корова не останавливается при соприкосновении с персонажем, а проходит сквозь него, вероятно в будущем добавлю какие-то эффекты урона и особенный звук при соприкосновении с игроком во время рывка
Также обнаружил небольшой недочет - когда Корова подходит вплотную к игроку, то её начинает "штырить" туда-сюда, чтобы пофиксить это я сделал минимальное расстояние для изменения направления движения - теперь если Корова приближается к Ритке ближе, чем на 10 пикселей, то она идёт в соответствии с последним заданным направлением, таким образом она ходит туда-сюда на определённое расстояние (поведение очень похоже на Дикобраза, который держит дистанцию)
Прикреплю видео с финальным результатом на сейчас, а видео с прогрессом скоро залью на ютуб
#godot #ritkarampage #разработка
Самый свежий вчерашний пост
Вчера доделал Упёртую Корову и внес некоторые правки в её логику (в основном числовые)
5 секунд перезарядки для рывка это ощущалось как-то много, так что уменьшил до 2 секунд
Увеличил минимальное расстояние для начала Bull Rush с 60 до 120 пикселей
Корова не останавливается при соприкосновении с персонажем, а проходит сквозь него, вероятно в будущем добавлю какие-то эффекты урона и особенный звук при соприкосновении с игроком во время рывка
Также обнаружил небольшой недочет - когда Корова подходит вплотную к игроку, то её начинает "штырить" туда-сюда, чтобы пофиксить это я сделал минимальное расстояние для изменения направления движения - теперь если Корова приближается к Ритке ближе, чем на 10 пикселей, то она идёт в соответствии с последним заданным направлением, таким образом она ходит туда-сюда на определённое расстояние (поведение очень похоже на Дикобраза, который держит дистанцию)
Прикреплю видео с финальным результатом на сейчас, а видео с прогрессом скоро залью на ютуб
#godot #ritkarampage #разработка
🔥4👍2
Media is too big
VIEW IN TELEGRAM
День 75
Вчера занимался небольшими улучшениями
Первое что давно уже пора было исправить - это спавн мобов за границей арены, теперь они спавнятся только внутри арены. Решение было довольно.. простым, не надо было никаких дополнительных нод создавать, указывать где мобы могут спавнится (спавнеры расставить), а где нет
В общем логика спавна такая:
1. Берём случайную точку за экраном пользователя на круге, получается всего 360 градусов, и если упрощать, то всего 360 точек спавна есть
2. Допустим у нас выпал градус "42"
3. Мы создаем невидимую линию (рейкаст) от игрока к точке спавна, и если на этой линии встречается слой "мира" (вода в нашем случае), то мы добавляем к этой точке 90 градусов и так пока на линии между игроком и точкой спавна не будет препятствий
Если арена квадратная - то этот вариант подходит идеально, т.к. всегда как минимум будет 90 градусов свободных для появления врага
Потом подписчик предложил улучшить Дикобраза, а именно его атаку. Раньше как было - идёт 4 кадра анимации стрельбы иглами и в конце последнего кадра выпускаются иглы, теперь же иглы выпускаются на 2 кадре и выглядит это намного лучше и логичнее. Вместе с этим мне показалось хорошим вариантом сделать так, чтобы во время атаки Дикобраз всегда поворачивался спиной, т.к. иглы в основном на спине ведь, мне кажется получилось довольно прикольно
Также залил на ютуб канал видео с процессом добавления врага "Упёртой Коровы" в игру
#godot #ritkarampage #разработка
Вчера занимался небольшими улучшениями
Первое что давно уже пора было исправить - это спавн мобов за границей арены, теперь они спавнятся только внутри арены. Решение было довольно.. простым, не надо было никаких дополнительных нод создавать, указывать где мобы могут спавнится (спавнеры расставить), а где нет
В общем логика спавна такая:
1. Берём случайную точку за экраном пользователя на круге, получается всего 360 градусов, и если упрощать, то всего 360 точек спавна есть
2. Допустим у нас выпал градус "42"
3. Мы создаем невидимую линию (рейкаст) от игрока к точке спавна, и если на этой линии встречается слой "мира" (вода в нашем случае), то мы добавляем к этой точке 90 градусов и так пока на линии между игроком и точкой спавна не будет препятствий
Если арена квадратная - то этот вариант подходит идеально, т.к. всегда как минимум будет 90 градусов свободных для появления врага
Потом подписчик предложил улучшить Дикобраза, а именно его атаку. Раньше как было - идёт 4 кадра анимации стрельбы иглами и в конце последнего кадра выпускаются иглы, теперь же иглы выпускаются на 2 кадре и выглядит это намного лучше и логичнее. Вместе с этим мне показалось хорошим вариантом сделать так, чтобы во время атаки Дикобраз всегда поворачивался спиной, т.к. иглы в основном на спине ведь, мне кажется получилось довольно прикольно
Также залил на ютуб канал видео с процессом добавления врага "Упёртой Коровы" в игру
#godot #ritkarampage #разработка
🔥2🤔1
День 76
Сегодня ничего нового в игру не добавил, больше занимался теорией, тем более сейчас в курсе уроки идут по типу "Добавляем новую способность", "Добавляем анимацию персонажу/врагу" и т.п., это всё уже у меня готово, так что я сейчас смотрю эти уроки чтобы не пропустить ничего важного, всё-таки этот курс имеет прям нереальный кредит доверия у меня
Дальше по курсу с нетерпением жду очереди урока "Добавляем вес к врагам", я о нём уже рассказывал в этом посте, но еще не реализовывал. А дальше в основном пойдут всякие улучшения и так называемый "polishing" (полировка) игры, будем делать её красивее и сочнее. А, и еще мета-улучшения (это улучшения, которые остаются между игровыми сессиями, как в Vampire Survivors или любой roguelite игре)
Вообще основателем жанра игр Roguelike считается игра Rogue (отсюда и пошло название - roguelike, похожий на Rogue), а Roguelite это упрощенный жанр для широкой аудитории
Roguelike - часто хардкор с очень обычной графикой (даже из ASCII символов), где смерть означает начало с самого нуля, ничего нового не открывается, достижения ничего не дают нового. Весь прогресс это память игрока - увидел нового врага => умер => теперь знает, что враг опасный
Roguelite - часто имеет мета-прогрессию, то есть между каждой игровой сессией что-то да открывается. Например в Hades мы можем открывать новые божественные оружия и прокачивать самого персонажа, его жизни, урон, рывки и т.д. Даже тот же The Binding of Isaac это roguelite, потому что мы постоянно открываем новые предметы и игра становится так или иначе легче (если не брать соевое молоко на первом этаже, это рип ☠️)
Сейчас я делаю игру именно жанра Roguelite с мета-прогрессией (все-таки решил что она будет)
Также вот довольно наглядное видео, где показывается почему композиция удобнее наследования в ООП в разработке игр (и я считаю точно так же). Я супер доволен, что с каждым днём всё лучше и лучше понимаю архитектуру построения игр и композиция мне очень импонирует
#godot #разработка
Сегодня ничего нового в игру не добавил, больше занимался теорией, тем более сейчас в курсе уроки идут по типу "Добавляем новую способность", "Добавляем анимацию персонажу/врагу" и т.п., это всё уже у меня готово, так что я сейчас смотрю эти уроки чтобы не пропустить ничего важного, всё-таки этот курс имеет прям нереальный кредит доверия у меня
Дальше по курсу с нетерпением жду очереди урока "Добавляем вес к врагам", я о нём уже рассказывал в этом посте, но еще не реализовывал. А дальше в основном пойдут всякие улучшения и так называемый "polishing" (полировка) игры, будем делать её красивее и сочнее. А, и еще мета-улучшения (это улучшения, которые остаются между игровыми сессиями, как в Vampire Survivors или любой roguelite игре)
Вообще основателем жанра игр Roguelike считается игра Rogue (отсюда и пошло название - roguelike, похожий на Rogue), а Roguelite это упрощенный жанр для широкой аудитории
Roguelike - часто хардкор с очень обычной графикой (даже из ASCII символов), где смерть означает начало с самого нуля, ничего нового не открывается, достижения ничего не дают нового. Весь прогресс это память игрока - увидел нового врага => умер => теперь знает, что враг опасный
Roguelite - часто имеет мета-прогрессию, то есть между каждой игровой сессией что-то да открывается. Например в Hades мы можем открывать новые божественные оружия и прокачивать самого персонажа, его жизни, урон, рывки и т.д. Даже тот же The Binding of Isaac это roguelite, потому что мы постоянно открываем новые предметы и игра становится так или иначе легче (если не брать соевое молоко на первом этаже, это рип ☠️)
Сейчас я делаю игру именно жанра Roguelite с мета-прогрессией (все-таки решил что она будет)
Также вот довольно наглядное видео, где показывается почему композиция удобнее наследования в ООП в разработке игр (и я считаю точно так же). Я супер доволен, что с каждым днём всё лучше и лучше понимаю архитектуру построения игр и композиция мне очень импонирует
#godot #разработка
🔥3
Media is too big
VIEW IN TELEGRAM
День 77
Вчера сделал фундамент для прогрессии уровня сложности - каждые 5 секунд уровень сложности повышается на 1 единицу и, пока что, только скорость спавна врагов зависит от сложности, но не их тип/кол-во. Подробнее про сложность писал в этом посте
Я вот думал, как делать уникальные улучшения - решение оказалось довольно тривиальным - каждому улучшению указываем max_quantity (максимальное кол-во) и при выборе улучшений, если нужно, сужается круг возможных мутаций
Например ускорение стрельбы можно взять 5 раз, а вот новую мутацию "Беги и стреляй" - только один раз, что логично, ведь это уникальная способность
И да, первая адекватная мутация в деле - "Беги и стреляй", название говорит само за себя - теперь при стрельбе Ритка не медленно ходит, а бегает
Как же сильно я хочу нарисовать более сносную графику.. но все-таки нужно сосредоточиться на геймплее и сделать так, чтобы игру можно было пройти и, возможно, перепройти разок-другой чтобы весь тот небольшой контент открыть
К слову нас уже намного больше, чем неделю назад (больше чем +20, очень рад этому) и я хотел бы напомнить, что сейчас я занимаюсь разработкой мини-игр с механиками, которые будут (или не будут) в моей, на данный момент, финальной игре
Моя цель сделать игру в жанре top-down ARPG looter-shooter - в основном буду полагаться на Path of Exile и Диабло 2, обожаю ARPG c прокачкой и лутом🥳
Как всегда прикрепляю короткое превью того, что сейчас уже получилось (кстати баги спавна врагов присутствуют, надо фиксить)
#godot #ritkarampage #разработка
Вчера сделал фундамент для прогрессии уровня сложности - каждые 5 секунд уровень сложности повышается на 1 единицу и, пока что, только скорость спавна врагов зависит от сложности, но не их тип/кол-во. Подробнее про сложность писал в этом посте
Я вот думал, как делать уникальные улучшения - решение оказалось довольно тривиальным - каждому улучшению указываем max_quantity (максимальное кол-во) и при выборе улучшений, если нужно, сужается круг возможных мутаций
Например ускорение стрельбы можно взять 5 раз, а вот новую мутацию "Беги и стреляй" - только один раз, что логично, ведь это уникальная способность
И да, первая адекватная мутация в деле - "Беги и стреляй", название говорит само за себя - теперь при стрельбе Ритка не медленно ходит, а бегает
Как же сильно я хочу нарисовать более сносную графику.. но все-таки нужно сосредоточиться на геймплее и сделать так, чтобы игру можно было пройти и, возможно, перепройти разок-другой чтобы весь тот небольшой контент открыть
К слову нас уже намного больше, чем неделю назад (больше чем +20, очень рад этому) и я хотел бы напомнить, что сейчас я занимаюсь разработкой мини-игр с механиками, которые будут (или не будут) в моей, на данный момент, финальной игре
Моя цель сделать игру в жанре top-down ARPG looter-shooter - в основном буду полагаться на Path of Exile и Диабло 2, обожаю ARPG c прокачкой и лутом
Как всегда прикрепляю короткое превью того, что сейчас уже получилось (кстати баги спавна врагов присутствуют, надо фиксить)
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤔1
День 78
Вчера.. почему часто вчера? К сожалению (на самом деле к огромному счастью) я работаю, подрабатываю и учусь, поэтому очень часто (последнее время практически всегда), я заканчиваю учится именно уже ближе к ночи или даже ночью, подготавливаю все скриншоты и видео для поста, а вот сам пост писать уже сил вообще нет и, поэтому, к написанию поста я возвращаюсь уже на следующий день, когда освобождаюсь от работы и остальных бытовых дел, обычно это снова вечер-ночь🥲
В общем - вчера в игру я добавил.. фикс моего легендарного костыля про поворот "нестандартных" спрайтов, о котором я забыл рассказать
Есть враг Дикобраз-Иглострел и, фактически, его спрайт занимает около 16х16 пикселей, но та анимация с иглами требует места, поэтому я расширил спрайт до 32х32px, а Дикобраз остался в углу, поэтому если просто этому спрайту задавать "flip_h" (отразить по горизнотали) - то дикобраз перемещается с одного угла в другой - поэтому мне нужно было вместо с поворотом спрайта еще менять ему позицию, что казалось диким костылём (так и есть)
И, вчера, когда я смотрел как препод анимирует персонажа и врагов, он (препод) показал как отражать по горизонтали правильно - создавать родительский контейнер Node2D, пихать в этот контейнер спрайты и всякую визуальщину, которая привязана к объекту, а потом просто менять Scale (масштабирование) на -1 и спрайты тоже отражатся, но стоя на месте.. что нереально удобно. Конечно мне кажется что нет "серебряной пули" и это выглядит как слишком идеальное решение, так что спросил у сообщества (кстати это пример очень хорошо составленного вопроса, можете брать на заметку) и посмотрю, что они скажут насчет этого (P.S. ответ получен, все четко, так можно делать если только нода отвечает за визуал)
Прикрепил видео с моей реакцией, объяснением и фиксом к посту
Еще я задал пару вопросов преподавателю (довольно часто задаю вопросы и получаю очень полезные ответы), прикреплю скрины вопросов к посту тоже
Один с вопросов - "Как правильно проверять наличие постоянных улучшений?", т.к. у меня есть улучшение, которое меняет поведение скрипта, а не просто с циферками балуется, то мне нужно каждый раз проверять: "а есть ли улучшение? Ага, есть, тогда делаем так", и сейчас оно выглядит как-то очень-не-очень, каждый раз прописывать
Второй вопрос про пример кода стейт-машины на GDScript от преподавателя, я видел у него код на C#, но есть определённые трудности в переносе на GDScript, так что тоже жду ответа с нетерпением, а то просто на енамах далеко не уедешь
В первой игре я делал стейт машину отдельными нодами, как в этом видео, и мне казалось это очень удобным, но сейчас.. создание ноды на каждое состояние.. даже небольшое? Ну не знаю. Препод делал это все в скрипте игрока, и это вообще не было никак не нагроможденно, а все чистенько-аккуратненько
Кстати вот ссылка на репозиторий с игрой, может кому будет интересно/полезно глянуть - https://github.com/Sundwell/ritka-rampage
#godot #ritkarampage #разработка
Вчера.. почему часто вчера? К сожалению (на самом деле к огромному счастью) я работаю, подрабатываю и учусь, поэтому очень часто (последнее время практически всегда), я заканчиваю учится именно уже ближе к ночи или даже ночью, подготавливаю все скриншоты и видео для поста, а вот сам пост писать уже сил вообще нет и, поэтому, к написанию поста я возвращаюсь уже на следующий день, когда освобождаюсь от работы и остальных бытовых дел, обычно это снова вечер-ночь
В общем - вчера в игру я добавил.. фикс моего легендарного костыля про поворот "нестандартных" спрайтов, о котором я забыл рассказать
Есть враг Дикобраз-Иглострел и, фактически, его спрайт занимает около 16х16 пикселей, но та анимация с иглами требует места, поэтому я расширил спрайт до 32х32px, а Дикобраз остался в углу, поэтому если просто этому спрайту задавать "flip_h" (отразить по горизнотали) - то дикобраз перемещается с одного угла в другой - поэтому мне нужно было вместо с поворотом спрайта еще менять ему позицию, что казалось диким костылём (так и есть)
И, вчера, когда я смотрел как препод анимирует персонажа и врагов, он (препод) показал как отражать по горизонтали правильно - создавать родительский контейнер Node2D, пихать в этот контейнер спрайты и всякую визуальщину, которая привязана к объекту, а потом просто менять Scale (масштабирование) на -1 и спрайты тоже отражатся, но стоя на месте.. что нереально удобно. Конечно мне кажется что нет "серебряной пули" и это выглядит как слишком идеальное решение, так что спросил у сообщества (кстати это пример очень хорошо составленного вопроса, можете брать на заметку) и посмотрю, что они скажут насчет этого (P.S. ответ получен, все четко, так можно делать если только нода отвечает за визуал)
Прикрепил видео с моей реакцией, объяснением и фиксом к посту
Еще я задал пару вопросов преподавателю (довольно часто задаю вопросы и получаю очень полезные ответы), прикреплю скрины вопросов к посту тоже
Один с вопросов - "Как правильно проверять наличие постоянных улучшений?", т.к. у меня есть улучшение, которое меняет поведение скрипта, а не просто с циферками балуется, то мне нужно каждый раз проверять: "а есть ли улучшение? Ага, есть, тогда делаем так", и сейчас оно выглядит как-то очень-не-очень, каждый раз прописывать
mutations.has("some_mutation_id") - ну такое, но если даже сделать какой-то флаг типа var has_run_upgrade: bool и его обновлять когда улучшение было выбрана - это классно, но если мутаций будет довольно много, то очень быстро все превратится в бардак, так что интересно что ответит преподавательВторой вопрос про пример кода стейт-машины на GDScript от преподавателя, я видел у него код на C#, но есть определённые трудности в переносе на GDScript, так что тоже жду ответа с нетерпением, а то просто на енамах далеко не уедешь
В первой игре я делал стейт машину отдельными нодами, как в этом видео, и мне казалось это очень удобным, но сейчас.. создание ноды на каждое состояние.. даже небольшое? Ну не знаю. Препод делал это все в скрипте игрока, и это вообще не было никак не нагроможденно, а все чистенько-аккуратненько
Кстати вот ссылка на репозиторий с игрой, может кому будет интересно/полезно глянуть - https://github.com/Sundwell/ritka-rampage
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2