День 103
Решение для простого и удобного менеджмента найдено✔️
После долгих (реально долгих) поисков я выбрал HacknPlan - прога для менеджмента игровых проектов
Требований у меня было несколько:
1. Удобное распределение заданий для тиммейтов (звуки в одном месте, графика в другом и т.д.)
2. Возможность в этом же приложении каким-то образом делать геймдизайн документ (диздок) и, что самое главное, ссылаться в документе на задания, а в заданиях на определённые части в документе
3. Чтобы можно было видеть действия друг-друга в live режиме без перезагрузки страницы, ну и собственно чтобы синхронизация была моментальная
4. Хранение файлов или удобное подключение к облаку типа гугл диска или дропбокса
5. Это всё🤝 🤝 (классные эмодзи кста)
И это было.. сложно, нереально сложно найти что-то в меру простое, не перегруженное фичами, миллиардом кнопок и всяким разным, чтобы был прям моментальный порог входа, а не надо было учиться 10 тыщ лет работы с инструментом
Рассматривал:
1. Notion
Сложна, многа учить, разбираться.. и это в основном же для заметок, хоть и тулза мощнейшая, но мимо из-за большого порога входа
—
2. Obsidian
Нету хранения файлов удобного, синхронизация платная и порог входа огромный, надо очень много что настраивать через плагины чтобы отслеживать таски и все такое
—
3. Штуки от Atlassian - Jira / Trello (таски) + Confluence (документация)
Jira - это безумие, давайте без этого.. на работе хватает этого лагающего комбайна
Trello - мало всего, слишком мало и нету хранения файлов или интеграции с облаком
Confluence - если не юзать вместе с Jira / Trello толку мало от этого комбайна для документации
—
4. Anytype
Это смесь Obsidian + Notion, классная вещь, но порог входа тоже большой и тоже больше для заметок, хоть и база данных есть.. но сложно, не хватало еще другим копаться в чем-то сложном и отвлекаться на сложный интерфейс вместо полезного занятия
5. Github через GUI (графический интерфейс, не через терминал, например такое) + LFS (large file storage)
Неудобно для команды будет, гит это такая вещь.. в общем не подходит, это отдельный мир даже учитывая работу визуально, а не через терминал
—
6. ..гугл документы, гугл штуки и гугл диск?
Не удобно, не красиво, но просто и мощно. Не подходит👀
Но гугл диск как вариант для хранения ассетов еще на рассмотрении (надо будет сравнить с dropbox будет потом)
—
В общем я магическим образом наткнулся на HacknPlan, увидел что им пользовались для создания некоторых знакомых мне игр, например тот же Blasphemous и решил попробовать:
1. Удобный менеджмент тасок✔️
Даже по категориям можно и нужно разбивать - рисовка, звуки, разработка и т.д. Художнику не надо заходить в общую доску и смотреть на 10 тыщ заданий для других
2. Что-то для геймдизайна и ссылок между тасками и диздоком✔️
Есть Design Model, в котором мы добавляем предопределённые типы сущностей, например Enemy, Folder, Mechanics, Player, Locations и т.д. А после уже добавляем описание в формате Markdown - очень удобно. Можно файлы прикреплять, ссылаться на задания и на любой другой пункт в диздоке - очень удобно, прям как в Obsidian, только более юзер френдли
3. Live синхронизация для всей команды✔️
Есть, работает четко, даже сказать нечего
4. Хранение файлов или удобное подключение к облаку✔️
И внутреннее хранилище есть на 15гб бесплатное, а потом если что, то можно расширить за десяток шекелей в месяц, НО тут есть удобное подключение к тому же гугл диску, дропбоксу, гитхабу и еще много к чему, что позволяет хранить огромные файлы спрайтов 16х16 пикселей размером в 100кб😎
5. Превью вложений в тасках? Ого🐸
Очень классная фича - даже не заходя в таску можно видеть предпросмотр файла (на скринах видно будет там где "Рисовка" в колонке "Completed")
В общем пока что меня это более чем устраивает, надеюсь эта приложуха будет удобной и дальше (обычно минусы и недостатки открываются позже)
Последние дни (или даже неделю) реально очень много времени на менеджмент тратил, но теперь всё +- настроено и я наконец-то попишу код
Спасибо всем, кто накидывал идей❤️
Решение для простого и удобного менеджмента найдено
После долгих (реально долгих) поисков я выбрал HacknPlan - прога для менеджмента игровых проектов
Требований у меня было несколько:
1. Удобное распределение заданий для тиммейтов (звуки в одном месте, графика в другом и т.д.)
2. Возможность в этом же приложении каким-то образом делать геймдизайн документ (диздок) и, что самое главное, ссылаться в документе на задания, а в заданиях на определённые части в документе
3. Чтобы можно было видеть действия друг-друга в live режиме без перезагрузки страницы, ну и собственно чтобы синхронизация была моментальная
4. Хранение файлов или удобное подключение к облаку типа гугл диска или дропбокса
5. Это всё
И это было.. сложно, нереально сложно найти что-то в меру простое, не перегруженное фичами, миллиардом кнопок и всяким разным, чтобы был прям моментальный порог входа, а не надо было учиться 10 тыщ лет работы с инструментом
Рассматривал:
1. Notion
Сложна, многа учить, разбираться.. и это в основном же для заметок, хоть и тулза мощнейшая, но мимо из-за большого порога входа
—
2. Obsidian
Нету хранения файлов удобного, синхронизация платная и порог входа огромный, надо очень много что настраивать через плагины чтобы отслеживать таски и все такое
—
3. Штуки от Atlassian - Jira / Trello (таски) + Confluence (документация)
Jira - это безумие, давайте без этого.. на работе хватает этого лагающего комбайна
Trello - мало всего, слишком мало и нету хранения файлов или интеграции с облаком
Confluence - если не юзать вместе с Jira / Trello толку мало от этого комбайна для документации
—
4. Anytype
Это смесь Obsidian + Notion, классная вещь, но порог входа тоже большой и тоже больше для заметок, хоть и база данных есть.. но сложно, не хватало еще другим копаться в чем-то сложном и отвлекаться на сложный интерфейс вместо полезного занятия
5. Github через GUI (графический интерфейс, не через терминал, например такое) + LFS (large file storage)
Неудобно для команды будет, гит это такая вещь.. в общем не подходит, это отдельный мир даже учитывая работу визуально, а не через терминал
—
6. ..гугл документы, гугл штуки и гугл диск?
Не удобно, не красиво, но просто и мощно. Не подходит
Но гугл диск как вариант для хранения ассетов еще на рассмотрении (надо будет сравнить с dropbox будет потом)
—
В общем я магическим образом наткнулся на HacknPlan, увидел что им пользовались для создания некоторых знакомых мне игр, например тот же Blasphemous и решил попробовать:
1. Удобный менеджмент тасок
Даже по категориям можно и нужно разбивать - рисовка, звуки, разработка и т.д. Художнику не надо заходить в общую доску и смотреть на 10 тыщ заданий для других
2. Что-то для геймдизайна и ссылок между тасками и диздоком
Есть Design Model, в котором мы добавляем предопределённые типы сущностей, например Enemy, Folder, Mechanics, Player, Locations и т.д. А после уже добавляем описание в формате Markdown - очень удобно. Можно файлы прикреплять, ссылаться на задания и на любой другой пункт в диздоке - очень удобно, прям как в Obsidian, только более юзер френдли
3. Live синхронизация для всей команды
Есть, работает четко, даже сказать нечего
4. Хранение файлов или удобное подключение к облаку
И внутреннее хранилище есть на 15гб бесплатное, а потом если что, то можно расширить за десяток шекелей в месяц, НО тут есть удобное подключение к тому же гугл диску, дропбоксу, гитхабу и еще много к чему, что позволяет хранить огромные файлы спрайтов 16х16 пикселей размером в 100кб
5. Превью вложений в тасках? Ого
Очень классная фича - даже не заходя в таску можно видеть предпросмотр файла (на скринах видно будет там где "Рисовка" в колонке "Completed")
В общем пока что меня это более чем устраивает, надеюсь эта приложуха будет удобной и дальше (обычно минусы и недостатки открываются позже)
Последние дни (или даже неделю) реально очень много времени на менеджмент тратил, но теперь всё +- настроено и я наконец-то попишу код
Спасибо всем, кто накидывал идей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
День 104
Вчера (пятница) продолжил разработку улучшений, в общем и целом система улучшений для оружий состоит из 4х пунктов (как минимум):
1. Настройка и подготовка ресурсов (айдишник, тип, принадлежность к оружию и т.п.)
2. Спавн наковален
3. Логика в WeaponUpgradeManager чтобы отсылать сигналы про взятое улучшение и все оружейные улучшения
4. Визуальная часть - сам экран выбора и карточки для отображения улучшений
Пока что успел сделать только первый пункт полностью и приступил к спавну наковален
Вообще я решил же что не буду использовать наследование вообще, но.. пришлось, всё-таки в некоторых местах это очень полезно, особенно, когда это касается чего-то "абстрактного", например у меня есть абстрактный скрипт weapon_upgrade.gd с основными свойствами такими как "тип", "заголовок", "описание" и т.д., а есть уже суженный скрипт pistol_upgrade.gd, который наследуется от weapon_upgrade.gd, но дополнительно описывает какие улучшения могут быть у пистолета (фактически айдишники в моём случае)
Так же (уже как обычно) приводил в порядок рабочее пространство для команды, еще далеко к чему-то стабильному и нормальному, но хоть таски уже начал расписывать и как-то отслеживать прогресс, энивей уже лучше чем было
#ritkarampage #godot #разработка
Вчера (пятница) продолжил разработку улучшений, в общем и целом система улучшений для оружий состоит из 4х пунктов (как минимум):
1. Настройка и подготовка ресурсов (айдишник, тип, принадлежность к оружию и т.п.)
2. Спавн наковален
3. Логика в WeaponUpgradeManager чтобы отсылать сигналы про взятое улучшение и все оружейные улучшения
4. Визуальная часть - сам экран выбора и карточки для отображения улучшений
Пока что успел сделать только первый пункт полностью и приступил к спавну наковален
Вообще я решил же что не буду использовать наследование вообще, но.. пришлось, всё-таки в некоторых местах это очень полезно, особенно, когда это касается чего-то "абстрактного", например у меня есть абстрактный скрипт weapon_upgrade.gd с основными свойствами такими как "тип", "заголовок", "описание" и т.д., а есть уже суженный скрипт pistol_upgrade.gd, который наследуется от weapon_upgrade.gd, но дополнительно описывает какие улучшения могут быть у пистолета (фактически айдишники в моём случае)
Так же (уже как обычно) приводил в порядок рабочее пространство для команды, еще далеко к чему-то стабильному и нормальному, но хоть таски уже начал расписывать и как-то отслеживать прогресс, энивей уже лучше чем было
#ritkarampage #godot #разработка
🔥3
День 105
Сегодня (суббота) по разработке апдейтов нету, пару часов сидели с саунд-дизайнером и занимались звуками, здесь вариант "нам нужен звук [такой-то], ты делай, а потом покажешь что получилось" вообще не подходит, тут надо прям вместе сидеть и принимать решения
Было очень сложно, т.к. я там напридумывал звуков на каждый чих, но, фактически, из условных 20 звуков осталось только меньше половины, иначе будет просто помойка звуковая в игре, где всё смешалось и непонятно что и где происходит
Сделали звуки (вероятно, пока что не финальные варианты):
1. Спавн наковальни
2. Поедание апельсина
3. Повышение уровня
4. Выстрел с пистолета
5. Взрыв взрывной пули
6. Попадание по врагу (универсальный звук)
Убрали звуки (список неполный)
1. Все звуки Дикобраза (стрельба иглами, ходьба, попадание по игроку иглой, смерть)
2. Звук прыжка для зайца
3. Звук рикошета пули от врага
4. Звук попадания пулей по врагу
5. Звук ходьбы для Коровы
И так далее
В общем главное, что я понял - звуков не должно быть много и не каждый враг должен издавать звуки, особенно когда их толпа, как в текущей игре
А еще очень важная вещь это перед созвоном с звукарем подумать хорошенько что я хочу (обязательно с примерами/семплами звуков)
Кстати про звуки - вот тут прям большой сборник звуков и музыки, но поиск конечно хромает у них
Попробовал я подключить гугл диск к HacknPlan и, как оказалось, это не интеграция, а тупо копирование файлов с гугл диска в хранилище проекта HacknPlan, поэтому гугл диск отлетает, будем всё хранить в HacknPlan, но надо посоздавать дизайн-элементы (грубо говоря папки) к которым мы будем прикреплять графику, звуки и прочие ассеты
У меня уже душа болит от того, что я не могу доделать эти улучшения😢 , так что завтра (в воскресенье) надо уже серьёзный прогресс сделать, а то это вообще не дело
После улучшений я займусь досматриванием курса на юдеми и параллельно буду заполнять дизайн-документ для R.I.T.K.A. Rampage. Для этой игры он не так уж и нужен объективно, но именно для практики это надо обязательно, чтобы потом структурирование диздока не вызывало проблем и не замедляло работу в будущем
#ritkarampage
Сегодня (суббота) по разработке апдейтов нету, пару часов сидели с саунд-дизайнером и занимались звуками, здесь вариант "нам нужен звук [такой-то], ты делай, а потом покажешь что получилось" вообще не подходит, тут надо прям вместе сидеть и принимать решения
Было очень сложно, т.к. я там напридумывал звуков на каждый чих, но, фактически, из условных 20 звуков осталось только меньше половины, иначе будет просто помойка звуковая в игре, где всё смешалось и непонятно что и где происходит
Сделали звуки (вероятно, пока что не финальные варианты):
1. Спавн наковальни
2. Поедание апельсина
3. Повышение уровня
4. Выстрел с пистолета
5. Взрыв взрывной пули
6. Попадание по врагу (универсальный звук)
Убрали звуки (список неполный)
1. Все звуки Дикобраза (стрельба иглами, ходьба, попадание по игроку иглой, смерть)
2. Звук прыжка для зайца
3. Звук рикошета пули от врага
4. Звук попадания пулей по врагу
5. Звук ходьбы для Коровы
И так далее
В общем главное, что я понял - звуков не должно быть много и не каждый враг должен издавать звуки, особенно когда их толпа, как в текущей игре
А еще очень важная вещь это перед созвоном с звукарем подумать хорошенько что я хочу (обязательно с примерами/семплами звуков)
Кстати про звуки - вот тут прям большой сборник звуков и музыки, но поиск конечно хромает у них
Попробовал я подключить гугл диск к HacknPlan и, как оказалось, это не интеграция, а тупо копирование файлов с гугл диска в хранилище проекта HacknPlan, поэтому гугл диск отлетает, будем всё хранить в HacknPlan, но надо посоздавать дизайн-элементы (грубо говоря папки) к которым мы будем прикреплять графику, звуки и прочие ассеты
У меня уже душа болит от того, что я не могу доделать эти улучшения
После улучшений я займусь досматриванием курса на юдеми и параллельно буду заполнять дизайн-документ для R.I.T.K.A. Rampage. Для этой игры он не так уж и нужен объективно, но именно для практики это надо обязательно, чтобы потом структурирование диздока не вызывало проблем и не замедляло работу в будущем
#ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
День 106
Наковальня готова🔧
Теперь каждые 60 секунд (первая наковальня) и 120 секунд (все последующие) рядом с игроком будет появляться супер полезная наковальня, к которой можно подойти и она пропадёт, ничего не дав взамен🎩
Изначально я хотел чтобы наковальня спавнилась за пределом видимости игрока в случайном месте на арене, но в конце-концов решил упростить это поведение и спавнить наковальню рядом с игроком в радиусе 90px в случайном направлении (радиус спавна мобов 180px к слову)
При спавне наковальни происходит характерный звук удара молотом по наковальне (тавтология это моё второе имя), что даёт игроку понять что есть возможность улучшить оружие и как бы "вот я, наковальня, услышь меня". В придачу к этому хотел включать "навигатор" в виде стрелочки, которая указывала бы в сторону наковальни, но.. так как я упростил спавн наковальни (наковальня, наковальня, наковальня ), то толку от стрелочки примерно как от моих обещаний (от стрелочки даже больше). Та и как игрок увидит прекрасную анимацию спавна наковальни (еще не добавил), если она будет появляться за пределами видимости персонажа 🤨
Еще сделаю "дебаг" сцену, где я не буду бояться забыть изменить время спавна наковальни с 5/10 секунд на 60/120, или там не забыть убрать врагов и т.д., а то тестировать и проверять всякие штуки каждый раз на реальной игровой сцене это неудобно и, как минимум, неприлично😦
Еще минут 20 потратил на понимание статической типизации в Godot - теперь я понимаю что делает аннотация ": Type" и приведение к типу "as Type", но я так и не нашел ответ на свой вопрос "В чем разница между этими тремя записями?" (задал вопрос в чатике по годоту, мб кто-то ответит)
Может кто знает разницу? Щас 4 утра и этот вопрос не покидает мою бедную голову😱
upd: ответ найден от доброго человека, в комменты закину своё супер-краткое объяснение
Прикрепил видео с результатом и процессом подлиннее
#godot #ritkarampage #разработка
Наковальня готова
Теперь каждые 60 секунд (первая наковальня) и 120 секунд (все последующие) рядом с игроком будет появляться супер полезная наковальня, к которой можно подойти и она пропадёт, ничего не дав взамен
Изначально я хотел чтобы наковальня спавнилась за пределом видимости игрока в случайном месте на арене, но в конце-концов решил упростить это поведение и спавнить наковальню рядом с игроком в радиусе 90px в случайном направлении (радиус спавна мобов 180px к слову)
При спавне наковальни происходит характерный звук удара молотом по наковальне (тавтология это моё второе имя), что даёт игроку понять что есть возможность улучшить оружие и как бы "вот я, наковальня, услышь меня". В придачу к этому хотел включать "навигатор" в виде стрелочки, которая указывала бы в сторону наковальни, но.. так как я упростил спавн наковальни (
Еще сделаю "дебаг" сцену, где я не буду бояться забыть изменить время спавна наковальни с 5/10 секунд на 60/120, или там не забыть убрать врагов и т.д., а то тестировать и проверять всякие штуки каждый раз на реальной игровой сцене это неудобно и, как минимум, неприлично
Еще минут 20 потратил на понимание статической типизации в Godot - теперь я понимаю что делает аннотация ": Type" и приведение к типу "as Type", но я так и не нашел ответ на свой вопрос "В чем разница между этими тремя записями?" (задал вопрос в чатике по годоту, мб кто-то ответит)
var anvil = anvil_scene.instantiate() as Node2D
var anvil: Node2D = anvil_scene.instantiate()
var anvil := anvil_scene.instantiate() as Node2D
Может кто знает разницу? Щас 4 утра и этот вопрос не покидает мою бедную голову
upd: ответ найден от доброго человека, в комменты закину своё супер-краткое объяснение
Прикрепил видео с результатом и процессом подлиннее
#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Media is too big
VIEW IN TELEGRAM
День 107
Сегодня пришлось сделать себе выходной от геймдева по причине "недостаточно часов в сутках"😨
Очень загруженный день был с самого утра, много работы, много созвонов, в магазин сходи, в тиктоке посиди (в туалете офк) и так далее, ну вы понимаете
А когда мне нечего рассказывать про разработку, я рассказываю о себе🎩
Расскажу про свой путь становления "айтишником"
Вообще-то я хотел стать стоматологом, они ж рубят бабло, но преподша по химии/биологии была сущим злом, так что не сложилось☹️
В конце 9го класса (16 лет) мой друг предложил мне походить на доп. занятия по программированию к преподу по информатике, типа я играю с 4х лет и с компьютером на "ты", почему бы и не попробовать, а вообще я уже тогда хотел игры разрабатывать, уверен такое желание у многих было
Походил я, поучился, ну и мне зашло. Следующие два школьных года я ездил на олимпиады по программированию и достигал +- неплохих успехов, хоть в олимпиаде в Харькове я придумывал алгоритмы не для фактического решения задач, а просто чтобы как-то баллы набрать, рандомайзер чисел какой-то, чтобы 50 из 100 тестов прошло и мне половину баллов засчитало за задание, хитрый жук был
После школы я пошел в универ - НТУ ХПИ (харьковский политехник) на "Системы Искусственного Интеллекта", даже на бюджет прошел, пахал 11й класс нереально чтобы сдать экзамены достойно (вышло кста, не без помощи еще одного друга, жаль что поссорились)
Ну и я ж такой амбициозный молодой человек, думаю: "Ох чичас я тут попраграммирую, стану прям нереальным писателем нейронок" - ага, фиг там.. история и культура Украины? Спасибо. ДЕЛОВОЙ Украинский язык для программистов? Офигеть. Дякую. Программирование.. да, было, НА ЛИСТОЧКАХ😡
Ок - не буду гореть, думаю тут понятно уже что я мягко говоря очень сильно расстроился и.. разочаровался, а я такие надежды подавал на учебу😪
Нет, я не забил на неё.. я все проплатил, все 6 лет я платил бабки, и за дипломы тоже, а вместо учебы я работал начиная со второго курса, об этом дальше расскажу. Никому не рекомендую так делать, но, если бы я вернулся в тот момент - я бы ничего не менял, универ дал мне отсрочку от армии и халявное жильё за 520грн в месяц (на тот момент 20 баксов, дешево). Я знал, что универ мне даёт самое главное - время, поэтому я его использовал по-максимуму
В конце первого курса (когда я был супер расстроен) мне стукнуло 18 лет и я пошел к одногруппнику, живущему напротив в комнате, и заявил: "Го в Польшу на завод на всё лето бабки заработать?", и этот чел сразу согласился, мы сразу позвали еще одного - и он тоже согласился, через пару недель мы уже были в Польше на заводе IKEA😎
Деньги на поездку я занял у родителей, это было что-то около 10-15к грн, точно не помню
Это было сложно, там я начал учиться ценить деньги по-настоящему и распоряжаться ими, т.к. до этого у меня было 2400грн на месяц, а там ЗПшка капала по 25000грн, тратил я конечно на всякий треш, но домой привёз часть и потратил её.. на курсы по программированию. Мне их посоветовал мой друг Богдан, тот натолкнул меня на программирование в школе, ну я и пошел сразу на те курсы бекенд-разработчика (много деталей упускаю). По итогу я пахал как конь на курсах, активничал и спустя.. две недели меня пригласил на работу преподаватель того курса - Лёша, он же и был Тех/Тим лидом в компании и искал потенциальных разработчиков. Меня не просто так пригласили - мне помог мой друг - снова Богдан, он уже работал там и его взяли так же как и меня, но раньше и, что отличало нас - он полностью сам заработал эту работу (спустя 2 месяца кажется его позвали), а меня он порекомендовал Лёше и этим очень сильно помог
Так я и начал работать сначала бекенд-разработчиком, а потом пошел во фронтенд, так и работаю уже шестой год. Я пропустил очень много вещей подростковых, но деньги были очень сильно нужны, и я в принципе не жалею об упущенном (почти).
Прикреплю к посту еще видосик с Польши, где работяги с завода зарабатывают деньги тяжелым трудом, а не какие-то женские кнопочки клацают на клавитуре, прямо как я сейчас⌨️
Сегодня пришлось сделать себе выходной от геймдева по причине "недостаточно часов в сутках"
Очень загруженный день был с самого утра, много работы, много созвонов, в магазин сходи, в тиктоке посиди (в туалете офк) и так далее, ну вы понимаете
А когда мне нечего рассказывать про разработку, я рассказываю о себе
Расскажу про свой путь становления "айтишником"
Вообще-то я хотел стать стоматологом, они ж рубят бабло, но преподша по химии/биологии была сущим злом, так что не сложилось
В конце 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
Таким образом я обязан в каждом подклассе реализовать этот метод, иначе будет ошибка. Ну и собственно везде вместо upgrade.id я пишу upgrade.get_id() (конечно я заранее кладу айдишник в переменную, но это не столь важно)
get_id банально возвращает поле id:
Теперь у меня два менеджера улучшений - WeaponUpgradeManager и MutationUpgradeManager, они выполняют ну очень похожие функции, но сейчас я грубо говоря скопипастил код с менеджера мутаций в менеджер улучшений оружий, они хоть и отличаются, но прям минимально, так что я уже создал таску чтобы отрефакторить это в ближайшем будущем. Создам просто "абстрактный" класс UpgradeManager где реализую общую функциональность
Хотелось конечно избегать наследования - но тут не выйдет, ведь это ресурсы/менеджеры, которые грубо говоря "ноды-пустышки" и тут намного проще отнаследоваться, чем городить компоненты с композицией (они тут не в тему)
Завтра наконец-то подсоединю улучшения к пистолету и обновлю страничку на itch.io, чтобы можно было поклацать в обновлённую версию +- полноценной игры
Проект полностью открытый, глянуть можно тут - https://github.com/Sundwell/ritka-rampage
Именно про систему улучшений вот тут можно глянуть - ссылка на коммиты
И как обычно прикрепляю видосик с результатом
#ritkarampage #godot #разработка
Результат за два дня
Наконец-то система улучшений для оружия готова, пришлось немного повозиться с этим всем, было пару проблем архитектурных и все они решены
Система улучшений работает похожим образом как и система мутаций, но в системе улучшений добавлен тип улучшения (фактически это редкость) и использована весовая таблица (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 тыщ лет)👀
Вместе с улучшениями я удалил все предыдущие мутации, т.к. большинство из них влияли напрямую на оружие, что не есть хорошо. "бег во время стрельбы" тоже убрал. Оставил одну символическую мутацию "ускоренное движение" и немного подкорректировал сам скрипт
Этот базовый класс мне понадобится для того, чтобы правильно сделать базовый класс 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 #разработка
В четверг (позавчера) подключил улучшения к пистолету (и к пулям)
Вчера под вечер чет поплохело, так что посты не успел написать, так что щас будет сразу за два дня
Про улучшения
Во-первых - я их сделал (спустя 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
🔥3❤1👀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 #разработка
Вчера занимался двумя вещами - обновление спрайтов + загрузка всего в гугл диск и продумывание мутаций
По спрайтам:
1. Пистолет - цвета с палитры + анимация выстрела
2. Персонаж - анимация ходьбы.. наконец-то добавил
3. Наковальная - анимация падения + анимация "стояния" с молотком
4. Апельсин - 3 новых спрайта (пока что виден только один) + звук поедания
По мутациям вчера внезапно созвонились под ночь с другом и обсуждали как бы их сделать интересными, всё прям рассказывать не буду сейчас, но вот основные пункты:
1. У всех мутаций будет "Класс/Специализация"
2 Мутации дают бонусы и способности в зависимости от класса и всегда будут иметь негативную сторону
3. Мутации будут делится на три типа:
Passive:
- пассивный бонус, приближенный к классу
- например у танка это будет реген хп, у оружейника скорость бега и т.п.
- доступен в пуле мутаций всегда
Skill:
- пассивно-активный навык
- например у призывателя это будет собака, которая будет помогать убивать врагов, поднимать апельсины
- Изначальный шанс появления в пуле одинаковый (например если тип мутации выпал "Skill" и у нас три класса - то сначала будет выбран класс мутации с 33% шансом, а потом уже сам навык из пула классовых навыков)
- При первом выборе навыка персонаж "выбирает" эту специализацию
- Когда специализация выбрана, шанс на получение мутации своего класса становится равен 80%, остальных - поровну на 20%
Evolution:
- Мутация-эволюция, может быть взята единожды
- При взятии эволюции другие эволюции становятся заблокированы
- Меняется внешний вид персонажа
- Улучшаются навыки из пула класса. Например у оружейника будет вторая пушка, у призывателя - собака "родит" щенят, которые будут грызть врагов и т.п.
Поиграть в обновлённую версию можно тут - https://sundwell.itch.io/ritka-rampage, там можно скачать .exe'шник чтобы на виндовсе запустить
#godot #ritkarampage #разработка
🔥4❤1
This media is not supported in your browser
VIEW IN TELEGRAM
День 112
Наконец-то я продолжил досматривать курс
Вчера успел глянуть только одно видео - "Добавляем Улучшения", но.. у меня проект уже на голову выше по улучшениям и по логике и даже учитывая это я порефакторил свой код и вдохновился на пару разумных решений
Во-первых - я переработал логику пула улучшений для оружия, раньше у меня был UpgradePool - изначальный ресурс с улучшениями (там есть поле upgrades) и уже то, что реально использовалось upgrades_weighted_table: WeightedTable - то есть фактически у меня UpgradePool ничего не делал, только как какая-то константа работал
Что изменилось:
- UpgradePool полностью убран из WeaponUpgradeManager, взамен сделана функция
- Сигнал
- В самом оружии есть сама логика оружия и UpgradePool для этого оружия, т.е. ресурс с полем
- Сигнал
Может быть еще что-то, но это основное. Когда я это всё сделал, то понял - мне надо инкапсулировать логику выбора улучшений в UpgradePool, а не использовать напрямую сырую WeightedTable. Потому что если я поменяю оружие на "эволюционное", например дробовик - то у него будут свои улучшения + все улучшения для пистолета, но по моей логике останутся только улучшения дробовика И вся информация про предыдущие улучшения сотрется, т.е. сколько и каких улучшений набрал игрок
Щас думаю сделать следующее:
- Вернуть UpgradePool в WeaponUpgradeManager
- Добавить функции-пустышки в базовый класс UpgradePool, которые нужно будет перезаписать в условном PistolUpgradePool. Типа вот я беру улучшение скорость стрельбы - ничего не происходит, а если я возьму улучшение "Эволюция - Дробовик" - то мне надо будет закинуть в апгрейд пул новые улучшения для дробовика, а старые все сохранить. Таким образом у меня будет один источник правды и один объект, который отвечает только за улучшения - офигенно, прям кайфую от такого решения
- Когда игра начинается и игрок выбирает оружие - посылать условный сигнал
- Вероятно сигнал
Пока что я сам не до конца понимаю всю логику, которую нужно сделать (надо порисовать, будет понятнее), но одно точно понятно - похожая логика UpgradePool будет и в мутациях, т.к. при взятии классовых улучшений в пуле будут открываться новые улучшения. И это будет два разных пула - абстрактный WeaponUpgradePool и "реальный" MutationUpgradePool
Еще как только я начал смотреть видос - увидел какое-то знакомое решение с WeightedTable у препода в видео, оказалось, что я до этого сам догнал😎 (прикреплю видос с реакцией)
#ritkarampage #godot #разработка
Наконец-то я продолжил досматривать курс
Вчера успел глянуть только одно видео - "Добавляем Улучшения", но.. у меня проект уже на голову выше по улучшениям и по логике и даже учитывая это я порефакторил свой код и вдохновился на пару разумных решений
Во-первых - я переработал логику пула улучшений для оружия, раньше у меня был 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
Вчера начал делать дизайн-документ с помощью 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 и кладу внутрь папки. Например:
10. Document - Документ. Пока что ни одного элемента-документа не создал, но предполагается что это будет просто какое-то описание игры что-ли, типа "Document: Game Overview"
Таймлапс написания диздока - https://youtu.be/WhP_YQ5UFog
Мой подход к созданию диздока (15 минут шизы от меня) - https://youtu.be/oxNU_iseH3s
Также как и обещал - в комментарии закину .html и .docx файлы с дизайн-документом (выглядят не так классно как в HacknPlan, но хоть что-то)
#ritkarampage
Вчера засиделся почти до утра, но зато закончил заполнять диздок (всё что было я туда вписал и добавил много разных описаний), а посты не успел написать
Пост за 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 - если да, то работает с ним
Например:
Есть много разных подходов в программировании, но использую я ООП + композицию вместо наследования
Мой подход в общем-то напоминает тот же ECS выше, да только мои "компоненты" это не просто контейнеры с данными, а это и системы сами по себе. Т.е. мой
Пример подхода на ООП с наследованием:
Пример моего подхода на ООП с композицией:
В использовании ООП с наследованием есть большая проблема - нету гибкости и грозит Inheritance Hell (а еще я просто кайфую от композиции, поэтому наследование идёт мимо😎 )
Еще задал пару вопросов преподу насчет того, как правильно вынести общую логику с моих двух систем улучшений (мутации и оружия) и насчет целесообразности использования наследования в ресурсах
Прикреплю скриншоты вопросов и в каком-то из следующих постов напишу что ответит препод и как я решу эту "проблему"
Моя шиза к "идеальной" архитектуре прогрессирует не по дням, а по часам, но мне нравится - люблю порядок (а еще я люблю повторяться, альцгеймеры "+" в чай)
#godot #ritkarampage
Вчера продолжил читать документацию 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 лет работы мне дали премию.. как же я был рад, это было супер неожиданно и прям вовремя 🥲 (денюжки всегда нужны - часть маме, часть на больницы, кредитный лимит закрою почти полностью)
Еще я очень сильно хочу смонтировать вам видео про свой новый велотренажёр, на выходных думаю смонтирую и, может, сразу же и напишу о нем в отдельном посте
Мечтал о нем уже больше года и, наконец-то, смог его купить в этом месяце, но кататься каждый день не выходит.. просто не хватает времени
Но на эти выходные у меня грандиозные планы - отдых + отдых (геймдев + велотренажер👀 )
Почти никогда на выходных я не отдыхаю от работы, но в последние пару недель все стало значительно лучше в этом плане и, походу, теперь так будет всегда☺️
Не смотря на то, что я очень быстро делаю свою работу - это только добавляет сложностей, потому что я почти всегда знаю, что и где мне надо сделать, и поэтому откладываю всё до последней секунды. Я ж типа знаю что и как надо сделать и знаю точно сколько времени на это уйдет, но я вообще не догоняю зачем я это откладываю на потом, какая-то магия с мозгами
В общем, не запускайте себя как я, а то я прям гигант-прокрастинатор (не горжусь этим😳 )
Пост без кода
Четверг и пятница были тяжелыми рабочими днями и времени на геймдев, к сожалению, вообще не было (только пост успел написать)
Сейчас уже ночь, собираюсь потихоньку спать, чтобы до утра не сидеть, так что впервые будет пост ни о чем
Единственное что - так это очень хочется поделиться тем, что впервые за почти 6 лет работы мне дали премию.. как же я был рад, это было супер неожиданно и прям вовремя 🥲 (денюжки всегда нужны - часть маме, часть на больницы, кредитный лимит закрою почти полностью)
Еще я очень сильно хочу смонтировать вам видео про свой новый велотренажёр, на выходных думаю смонтирую и, может, сразу же и напишу о нем в отдельном посте
Мечтал о нем уже больше года и, наконец-то, смог его купить в этом месяце, но кататься каждый день не выходит.. просто не хватает времени
Но на эти выходные у меня грандиозные планы - отдых + отдых (геймдев + велотренажер
Почти никогда на выходных я не отдыхаю от работы, но в последние пару недель все стало значительно лучше в этом плане и, походу, теперь так будет всегда
Не смотря на то, что я очень быстро делаю свою работу - это только добавляет сложностей, потому что я почти всегда знаю, что и где мне надо сделать, и поэтому откладываю всё до последней секунды. Я ж типа знаю что и как надо сделать и знаю точно сколько времени на это уйдет, но я вообще не догоняю зачем я это откладываю на потом, какая-то магия с мозгами
В общем, не запускайте себя как я, а то я прям гигант-прокрастинатор (не горжусь этим
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤2👏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 #разработка
Вчера наконец-то дошел до 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