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

Вчера я наконец-то приступил к игровым доделкам, начал с первого пункта - "Добавить 6 оставшихся улучшений для пистолета"

Начал с Пронзающих Выстрелов, сделать их было очень просто, ведь я уже реализовал когда-то ранее систему прочности у пуль, переиспользовав компонент HealthComponent и создав ProjectileHurtboxComponent, ведь я знал что оно мне понадобится 🎩

Для пуль будет одна логика прочности, для стрел - другая

У пуль прочность/здоровье отвечает за кол-во максимально пораженных целей, после которых пуля исчезнет

У стрел же оно будет отвечать (в теории) одновременно и за наносимый урон и за кол-во прочности

Как будут работать стрелы:
1. У стрелы есть 6 прочности
2. Стрела летит в Кролика, который имеет 4хп
3. Стрела наносит Кролику 4хп, убивает его и летит дальше, НО у стрелы теперь урон = прочности = 2

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

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

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

На выходных планы наполеоновские:
1. Добавить все недостающие улучшения пистолету
2. Добавить лук (вряд-ли улучшения успею к нему запилить, так что главная цель - сделать второе играбельное оружие)

К слову в каждом оружии будут взаимоисключающие улучшения, для пистолета можно взять или Рикошет или Пронзающие Пули. Логику такого поведения уже продумал, если вкратце - то всё просто 👀

Всё просто - к каждому улучшению добавляется массив incompatible_uprades: Array[Id], который содержит улучшения, которые будут исключены из пула при подборе текущего

Также прикрепил микро-видео с наработками для пронзающих пуль

Всем хороших выходных, наконец-то отдых 🥲

#ritkarampage #разработка #godot
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥92🫡1
День 140-141

Снова двойной пост, но это последний (не обещаю)

Это будет небольшой пост, основная интересная визуальная часть связанная с улучшениями оружий будет сегодня/завтра

— Часть про график —

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

Приложение называется Sectograph, офигеть какое удобное. Я поставил виджет на главный рабочий стол на телефоне + добавил уведомления за 10 минут до начала какого-то "дела" и теперь времени просто нереально много

Пару скринов прикрепил с моего так называемого графика

Прокрастинация выходит на уровень "по графику" 🎩

— Разработка —

Сделать всё не успел за два дня, но вышло сделать самое главное - WeaponUpgradesPoolComponent, это компонент, который я подсоединяю к WeaponUpgradeManager и менеджер просто вызывает upgrades_pool.pick_upgrades() и всё, больше в менеджере нет логики по выбиранию нужного улучшения, удаления из пула улучшений, которых больше нельзя подобрать. Фильтрация всякая, дополнительная логика, например:
1. Эволюционные улучшения появляются только начиная с 3-й наковальни
2. Если игрок по любой причине не взял эволюционное улучшение для оружия, а уже поднято 5 или больше наковален, то при каждом подборе наковальни будет появляться как минимум одно эволюционное улучшение

В общем для баланса некоторые штуки накрутил, чтобы было всё честно

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

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

WeaponUpgradeManager почистил (коммит), а WeaponUpgradesPoolComponent создал (коммит) и перенёс туда всю логику пула улучшений

— Маркетинг на будущее —

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

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

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

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

Пост вышел небольшой, ведь я хозяин своего слова, слово дал - слово забрал 😎

#godot #ritkarampage #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍21
Media is too big
VIEW IN TELEGRAM
День 142

Сегодня финализировал улучшение PiercingShots и немного порефакторил логику пистолета и пули

— Апдейт по прогрессу —

Добавил уменьшение урона на 30% с каждым попаданием по врагу, уменьшение именно базового урона, а не текущего. Т.е. если урон был 10, то после 1-го врага будет 7, а после - 4. К слову на прикреплённом видео я еще это не пофиксил, и там урон отнимался от текущего, т.е. 10 => 7 => 4.9 (7 - 30% = 4.9)

Также добавил уменьшение скорости пули, единоразовое замедление пули на 20% при подборе PiercingShots

И перенёс ответственность за кол-во наносимого урона из сцены пистолета в сцену пули, а то раньше в скрипте пистолета было что-то такое:
var bullet = bullet_scene.instantiate()
...
bullet.hitbox_component.damage = 2.0


Теперь же пуля сама решает, сколько урона ей наносить, сильная и независимая 😎

Завтра в планах добавить рикошет и взрывопули

Да вот только я никак не могу придумать пятое улучшение для пистолета типа "Механика", которое добавляло бы еще какой-то эффект пистолету/пуле, может кто идею подкинет? 👀

— Технические детали —

Я познал небольшую боль типизации в GDScript - тут нет дженериков. И мне их уже начинает не хватать

У меня есть универсальный класс - WeightedTable, и в функции pick_random_items и pick_random_item я возвращаю заранее неизвестный тип данных, вот к примеру возьмём pick_random_items - он возвращает массив.. чего-то, чего-угодно. Во многих языках я могу ему сказать что: "Тут я ожидаю от тебя Array[WeaponUpgrade], а тут я ожидаю от тебя Array[int]", делается это примерно таким образом:
var picked_items = pick_random_items<Array[WeaponUpgrade]>()
# или так
var picked_items = pick_random_items<Array[int]>()


Но так нельзя, и приходится лопатить костыли (как мне кажется) для точной типизации. Я делаю это таким образом:
var random_picked_upgrades = upgrade_pool.pick_random_items(3)

var picked_upgrades: Array[WeaponUpgrade] = []

for upgrade in random_picked_upgrades:
if upgrade is WeaponUpgrade:
picked_upgrades.append(upgrade)
else:
push_error("Picked item is not WeaponUpgrade")


Еще мне ответил добрый человек в чатике насчет использования Array.assign, я еще не тестировал, но должно работать, в доке есть упоминание про типы "... Performs type conversions if the array is typed.". Если это будет работать корректно - то это просто спасение

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

Когда игра уже будет примерно законченной (через пару недель (верим)), то я добавлю возможность давать фидбек из самой игры (почти), может будет кнопка "Нашел баг / Есть идея?" и по нажатию скорее всего будет открываться форма гугловская, где можно будет и видосик с скриншотами прикрепить и может идеи расписать

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

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

Сделал улучшение "Рикошет"

— Улучшение "Рикошет" —

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

В общем угол я искал постоянно не тот, пробовал global_position.angle_to(enemy.global_position) и дебажил что тут не так, потом Vector2.RIGHT.angle_to(enemy.global_position) и снова дебаггинг, принты в консоль и всё такое

Почему-то пристал я к этому angle_to, хотя решение оказалось очень простым - global_position.direction_to(enemy.global_position).angle()

— Красные враги —

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

До этого я пару раз искал "А как же мне переиспользовать Tween?" - ответ почти всегда был однозначный: "Никак. Их не нужно переиспользовать". В общем-то так и есть, но все-таки надо будет найти способ переиспользовать анимации появления/затухания/и т.п., ведь AnimationPlayer нельзя нормально переиспользовать для разных нод (а часто вообще невозможно)

Пока что идеи как решить это две:
1. Создать функции-аниматоры в каком-то синглтоне под названием TweenEffector, где каждая функция будет принимать настройки для анимации (длительность, элемент), а первым аргументов будет tween, который создается перед вызовом этой функции, но самое главное создавать этот твин в той ноде, где будет происходить анимация, иначе не сработает (они привязаны к текущей ноде походу)
2. Похожий вариант на первый, но с одним отличием - это будет метод для анимации, а использовать его нужно будет как-то так:
var tween := create_tween()

tween.tween_method(TweenEffector.fade_in.bind(panel_element), 0, 1, 0.3)

...
#TweenEffector

func fade_in(value: float, item: CanvasItem):
item.modulate.a = 1 * value


Пока писал это всё то решил сделать вариант №2, потому что вариант №1 у меня уже реализован и он мне не нравится 👀

— Дебаг Сцена —

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

Прикрепил видео с процессом моих страданий с поиском угла для рикошета и сам результат

#godot #ritkarampage #разработка
👍2🔥21
Как-то я уже делал опросник насчет частоты постов, так вот спустя 2 месяца решил провести еще один

Суть при каждом варианте останется та же - я буду писать результат за какое-то кол-во дней (ака двойные посты, только тройные или больше 👀)

Скорее всего теперь посты о девлоге будут каждые 3-5 дней, в зависимости от опросника. На посты и некий монтаж микровидео уходит час-два в день (или раз в два дня 👀👀👀👀👀), а это время я могу уделять другим аспектам разработки игр:
- Сама разработка
- Проджект менеджмент (поговорить с звукарем, посоздавать и поперетаскивать тасочки на борде)
- Изучение гейм-дизайна. Придётся все-таки читать книги по гейм-дизайну, а технические книги неинтересно читать, там нет картинок 😢
- Сам процесс геймдизайна как текущей игры, так и следующих

А еще я прям кайфую от монтажа видосов, мне кажется еще месяц-два практики и монтаж будет уже на таком уровне, чтобы более активно и серьёзно вести ютуб канал и, может, тикток 🎩

Также время от времени буду писать про какие-то интересные технические вещи + записывать про это видео, а не просто голым полотном текста это писать. Например сейчас на очереди такие вещи:
- Проблемы со шрифтами в Godot. Почему в редакторе шрифт пиксельный, а при запуске все хорошо? Хотя сам шрифт подключен векторный и не bitmap (пиксельный)
- Метод уточки. Как правильно задавать вопрос, чтобы получить ответ? Как получить ответ на вопрос даже не успев отправить сообщение?
- Видео про стейт-машину и разные подходы. У меня это очень болело вначале, разные подходы для состояний, то просто енамы внутри скрипта, то отдельные ноды для каждого состояния. Зачем нужен enter, process и exit в состояниях с реальным примером, а не каким-то абстрактным. Ну и конечно же расскажу про свой подход (фактически подход с курса на юдеми от Firebelley)
- Видео про архитектуру проекта. Как и что организовывать, как и что между собой связывать. Это тоже очень сильно болело у меня, потому что множество гайдов даже с англоязычного ютуба просто отвратительного качества, и я не про качество звука, ведь нам интересна сама польза материала - она перегружена и, чаще всего, просто нулевая. На русскоязычном ютубе про архитектуру почти ни слова 🫡

В общем такие дела, ща закину опросник
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
День 144-145

Я еще живой если что 😉

— Маркетинговые и менеджерские штучки —

Вчера пообщался с топовым маркетологом, конечно же предварительно подготовив перед этим вопросы

Записал всю консультацию, чтобы ничего не упустить полезного, а завтра "обработаю" всё и напишу пост про вопросы-ответы, а пока что прикреплю скрин-затравку о том, какой минимум вопросов был на консультации

— Про посты —

Голоса из опросника выше разделились почти поровну, чего я вообще ожидал если честно 🤔

Но, как я понимаю, очень много кто не против постов пореже

Как я пока планирую делать следующее

Разделить посты на разные типы


Теперь не будет "полотен" текста, в которых смешан и девлог и технические части и еще что-то. Теперь будет как минимум 2 типа постов:

Девлог

Короткий пост-результат с видео каждые 5 дней (для зумеров, как и заказывали 🤝🤝)

Технические вещи и не только

Я частенько встречаю/сталкиваюсь с какими-то сложностями (надуманными в том числе) или с интересными решениями проблем, может какие-то мысли и/или полезные материалы

Такие посты будут с неопределённым графиком, но у меня каждый день было что рассказывать, так что я буду сжимать информацию и раз в несколько дней рассказывать что-то для разработчиков тоже

По планам именно на этот телеграм-канал - здесь будет уникальный контент, а не только девлоги и тех. штуки

Буду максимально открыто говорить про все мои действия, успехи/неудачи, суммы, стратегию маркетинга и так далее, уверен это будет полезно - мне можно будет оглянуться и увидеть условные ошибки, а вам можно будет учиться на моих ошибках (я так предпочитаю тоже делать, но не всегда есть возможность)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥3🎉1💯1🫡1
Пост про консультацию с маркетологом #1

Пост будет в стиле "Вопрос-Ответ", где мой вопрос будет слегка упрощён, а ответ будет содержать больше информации, чем в вопросе (так мне кажется будет лучше восприниматься информация)

Все умещу в один пост, так что разобью на парочку частей

Q: Как лучше собирать фидбек с игроков? Критика, баги, идеи и т.п.
A: Пока нет странички в Стиме - собирать его в других соцсетях, например реддит/твиттер/тикток/Ютуб/itch.io. Насчёт опросников-анкет в тех же гугл формах - ну вот ты сам такое любишь? Представь - ты играешь, нажимаешь на кнопку в игре и тебя выкидывает на сайт и/или же тебя просит где-то разработчик заполнить форму, удобно? Такое никто не любит. Фидбек идёт "автоматически". Какой-то небольшой процент людей сами будут писать критику (поливать говном), хвалить или же предлагать что-то добавить. И это все на страничках с играми люди делают, но не в гугл формах и подобном


Q: Стоит ли мне сосредоточиться на телеграмме именно как на площадке по продвижению моих игр?
A: Нет. Телеграмм популярен в основном в СНГ, а основная платежеспособная аудитория идёт именно с Европы/США и других стран, а там телеграмм мягко говоря не распространен


Q: Стоит ли рассчитывать на СНГ аудиторию или лучше метить в Европу/США и т.п.?
A: Не стоит рассчитывать на СНГ, основной доход идёт от зарубежных стран


Q: Как правильно анализировать рынок по играм моего жанра?
A: Есть два основных показателя - кол-во денег к кол-ву игр
1. Если игр много, а денег мало - жанр не стоит выбирать как основной (он почти мертв)
2. Если игр мало, а денег много - это либо специфичный жанр (можно забуриться и залутать денег), либо что-то "оккупированное" ААА-проектами/компаниями, туда не стоит соваться
3. Если игр средне и денег средне - практически идеальный вариант, на это и рассчитываем

Вот тут хороший пост об этом от STEAMиздат

P.S. если ссылка на STEAMиздат не открывается (канал по инвайтам только) - то вот инвайт https://news.1rj.ru/str/+qWcZc4g1arRhMGY6

Q: Как понять, какую цену ставить за игру?
А: Есть три основных диапазона - $4.99, $9.99 и $14.99. Назначать стоит отталкиваясь от комплексности игры, её контента, качества и так далее


Q: ^ Дополнительный вопрос - Стоит ли выпускать Early Access/альфа/бета версии игр?
A: Нет, забудь про это всё. Выпускай только готовый продукт. Негативные отзывы тебе не нужны


Q: Когда стоит начинать маркетинговую кампанию?
А: За год до релиза


Пишу вторую часть 🫡

#маркетинг
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥165👍3
Пост про консультацию с маркетологом #2

Q: Стоит ли развивать ютуб и/или тикток? Если да - то какой контент туда лучше заливать?
А: Да, стоит. Стоит развивать вообще ВСË, куда руки дотянутся, нужно всё трогать и всё прокачивать. Насчет контента:
1. Я работаю над игрой, в которой можно то и то (гифка), что думаете?
2. У меня сломалась игра, когда я добавил ...
3. Девлоги
4. Поначалу можно и всякие технические штуки, чтобы набрать начальную аудиторию
В идеале нужно нанять комьюнити-менеджера, чтобы он за всем самостоятельно следил, выкладывал и развивал соц. сети. Он будет приходить к тебе, запрашивать какие-то футажи или информацию и потом будет делать контент и развивать аккаунты

Я спросил про этот тикток-аккаунт: "Вот как-то так это всё делать?", маркетолог ответил: "Да, очень хороший пример, даже себе сохраню"

Q: ^ Дополнительный вопрос - Что развивать, какие соц-сети?
А: Основное твоё пристанище - это реддит. Помимо него нужно как минимум развивать твиттер, ютуб, тикток и itch.io


Q: Какой бюджет мне потребуется для продвижения?
А: Я бы не советовал для первой игры тратить больше $5000


Q: ^ Дополнительный вопрос - Стоит ли покупать рекламу от самих площадок? Например реклама от тиктока/ютуба
А: Нет, не стоит. Когда будешь уже приближаться к релизу и заниматься серьёзно маркетингом то нужно связываться с прессой и игровыми изданиями, чтобы они продвигали/обсуждали твой проект


Q: Какую роль играет локализация? Нужно ли переводить на 20тыщ языков или есть какие-то несколько основных?
А: Зависит от игры, но вот основные - Английский, Китайский (упрощённый), Испанский, Немецкий, Французский и Русский. Чаще всего их достаточно


Q: ^ Дополнительный вопрос - С помощью чего переводить? Это на каждый язык нанимать переводчика?
А: Есть специальные агенства по переводу игр


И сейчас будет третья часть - заключительная

#маркетинг
🔥111
Пост про консультацию с маркетологом #3

Заключительный пост

Q: Сколько людей в небольшой команде должно быть?
А: Пятеро - разработчик, геймдизайнер, звукарь и два артиста (художника). Один художник занимается рисовкой чего-то сложного-большого, типа заставок, сложных спрайтов и т.д., а второй должен быть экспертом в анимировании


Q: ^ Дополнительный вопрос - А что если я буду и разработчиком и геймдизайнером? У меня большой опыт в разработке и я могу выучить геймдизайн и тоже этим заниматься на хорошем уровне
А: На двух стульях не усидишь. Документацию надо писать, плейтестить игру постоянно, менеджить проект и общаться с художниками и звукарями, и, что основное - заниматься самим геймдизайном, балансировка, проработка механик и так далее. Всё упирается во время, его просто не хватит чтобы двумя направлениями заниматься и приносить пользу


Q: ^ Дополнительный вопрос - Как лучше делать звуки? Это так сложно даётся, я не всегда могу сам понять что я хочу от звукаря
А: Все звуки и музыку делает звукарь, он вкладывает свой стиль, эмоции и душу в свои звуки и музыку, так что просто скидывай ему референсы, а там уже он пусть сам решает как он видит. И да, как ты упомянул - настроить проект для звукаря это распространённое решение. Он самостоятельно сможет вставлять и тестировать звуки и сразу же смотреть как они будут в игре


Q: Какие инструменты/платформы лучше использовать для управления проектом и командой?
А: Однозначно Notion. Придется с ним разобраться, да, но оно того стоит. С ним можно сделать что-угодно и как-угодно


Q: На каком языке вести соц. сети?
А: Полностью на английском


Полезные материалы:
- Группа STEAMиздат. Обсуждение маркетинга в стиме и не только, огромное кол-во полезных материалов и постоянные обсуждения того же маркетинга и стратегий (реально полезно, прямо кладезь знаний). P.S. отдельное спасибо @repindevelop за наводку и инвайт в эту группу
- Тот самый маркетолог Daniel Stone, основатель группы STEAMиздат. К слову недавно он создал личный блог Уставший Паблишинг с статистиками, личными мыслями и полезными статьями

#маркетинг
🔥121
Media is too big
VIEW IN TELEGRAM
День 146-150. Девлог

Всем подготовиться к трём постам подряд товарищи 🫡

Первый зумерский пост как и заказывали (одобряю такое)

Добавил улучшение "Взрывопули"

- Наносят 15/30% от текущего урона пули врагам в среднем радиусе
- Взрыв считается отдельным источником урона, а это значит что урон наносится дважды, первый раз - от пули, второй - от самого взрыва
- Взрыв наносит урон персонажу
- Взрыв появляется только при первом контакте с врагом (с трансформацией Zenith - при первых двух)

Продумал пятое улучшение

Пятое улучшения типа "Механика" для пистолета - Bloody Burden / Кровавое Бремя
- При попадании по врагу вызывает кровотечение
- Максимум 3 стака кровотечения (с трансформацией Zenith - 5 стаков)
- Персонаж двигается на 20% медленнее

Числа урона/длительности еще не продумал

По планам на ближайшие дни

Переработать улучшение More Bullets - уж какое-то дисбалансное оно щас, +1 пуля за улучшение это слишком сильно. Будет 40/80% шанс на дополнительную пулю, а вместо случайного разброса в 90° будет "стабильный" разброс в 30°, одна пуля летит с поворотом в -15°, вторая с поворотом в 15°

Также теперь каждые 5 дней буду вместе с девлогом обновлять версию игры на itch.io - https://sundwell.itch.io/ritka-rampage

Код игры полностью открыт - https://github.com/Sundwell/ritka-rampage

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

P.P.S пока тестил игру в браузере увидел что иглы от Дикобраза не пропадают при попаданию по персонажу, видимо чет я сломал, буду фиксить


#девлог #ritkarampage
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
🔤🔤🔤🔤 1⃣5⃣0⃣ #⃣1️⃣

Отчет за прошедшие 30 дней 🗓️

В этот раз без видео, зато всё по плану 🤝🤝

Апдейты по пунктам

Интерфейс
- Сделал UI для карточек улучшения, включая анимации
- Добавил главное меню, настройки и паузу

Механики игры
- Добавил улучшения Piercing Shots, Ricochet, Explosive Impact
- Продумал 5-ое улучшение "Механика" для пистолета - Bloody Burden / Кровавое Бремя. Пули разрывают врагов и у них появляется кровотечение, но все движения персонажа замедлены
- Начал работу над системой "Статусов", грубо говоря бафов и дебафов

Техническая часть
- Изучил систему сохранений
- Разобрался (в каком-то смысле) с кешированием и загрузочным экраном
- Пофиксил пару багов связанных с спавном врагов (не до конца как оказалось) и с вечно красными врагами

Звуки и музыка
- Добавили саундтрек для главного меню
- Подготовили звуки: Проигрыш, Победа, Нанесение урона врагам, Обновлённый звук выстрела пистолета, Выбор и наведение на карточки улучшения, звук нанесения урона персонажу

В общих чертах узнал основные вещи про маркетинг

И, самое главное - теперь у нас в команде есть геймдизайнер 🎉

По совету маркетолога решил заполнить последний пробел в команде, теперь разработка будет идти еще более серьёзно 🤙

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

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥32
🔤🔤🔤🔤 1⃣5⃣0⃣ #⃣2️⃣

Числовой пост 📊

За 30 дней нас стало больше на.. в почти 4 раза 🐸

Нас уже ❗️497❗️, месяц назад нас было 141, и я всё еще не догадываюсь почему сообщество выросло 👀

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

Эти 30 дней были наименее продуктивными со стороны разработки игр, слишком много времени уделял монтажу видео и написанию постов, но теперь есть геймдизайнер и монтажер (есть догадки чей монтажер будет мне помогать? 👀) и я смогу на 80% сосредоточиться на разработке, а 20% времени останется на прокрастинацию 🤝🤝

К числам:

Программирование - 23 часа 26 минут
Пиксель-арт - 1 час 32 минуты
Геймдизайн - 1 час 28 минут
Бренд-Менеджмент - 39 часов 26 минут.. да, много, часов 20+ ушло на монтаж одного видео 🫣
Проджект менеджмент - 2 часа 30 минут

Это ж скока я мог разрабатывать если бы не монтаж 🥴

В этом месяце было тоже много пропусков - снова 10 дней (подработки и всякие рабочие штуки). Каждый день, за исключением 29 и 30 Октября, а также 2, 5, 8, 11, 20-22 и 26 Ноября я так или иначе уделял время геймдеву

Минимально уделённое время за день - 11 минут (🤷‍♂️🤷‍♂️🤷‍♂️) на проджект менеджмент

Максимальное - 3 часа 2 минуты на разработку

В общем нужно удалить пункт про бренд-менеджмент и времени станет больше в 3 раза 😎

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥5👍2👏1
Развиваю свой Reddit 📱

Начал потихоньку делать посты в реддит - простые, короткие и интересные (по возможности)

Недавно художник закончил арт для главного меню - вот я решил его выставить как пост и подписал "Making first big pixel art for my Capybara game main menu was really tough" в сабреддите r/indiegames, я хотел изначально запостить это в r/pixelart, но там надо 100 общей кармы чтобы постить что-то по их правилам

Этот пост набрал уже 13 апвоутов (лайков), а это значит что карма потихоньку повышается 😎

Я даже не думал что там вот так легко набирать просмотры и апвоуты, уже 900+ просмотров, 4 коммента (фактически 2) и 3 раза кто-то поделился постом, это прям подняло мне настроение, я вообще не ожидал никакой активности там

Буду и дальше время от времени что-то постить в разные сабреддиты, сохранил себе список из основных и теперь буду в них активничать (иногда)

Вот кстати список из сабреддитов, которые мне подходят:
r/gaming
r/games
r/IndieDev
r/IndieGames
r/IndieGaming
r/gamedev
r/pcgaming
r/PlayMyGame
r/godot
r/pixelart

#маркетинг #reddit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥143👍2
Media is too big
VIEW IN TELEGRAM
День 151-155. Девлог

Лучше поздно (на пару дней), чем никогда

Апдейты за период 27 Ноября - 1 Декабря

Переделал улучшение "Больше Пуль"

Как и говорил - оно было дисбалансным и уродливым (разброс пуль), так что теперь оно переделано
- Шанс на дополнительную пулю 15/30% по мере выбора улучшения
- Теперь разброс статический и равен 5° * кол-во пуль отклонения для каждой пули поочередно, если их 2 и больше, например:
- 1 пуля - летит по прямой
- 2 пули - первая имеет вращение/отклонение -5°, вторая . Т.е. летят по диагонали
- 3 пули - первая -5°, вторая , третья -10°

Переработал летающий текст

- Теперь текст имеет "разброс" и не накладывается друг на друга, например если две пули попали одновременно во врага
- Если тип текста = "Урон", то его размер зависит от нанесённого урона, но если урон меньше 2х единиц, то размер текста будет минимальный

Про технические штуки не особо буду рассказывать, но если вкратце - всё-таки сделал глобальную сцену для спавна текста, и теперь просто обращаюсь к ней и говорю "создай летающий текст в том месте, значение вот такое, и тип текста Урон|Опыт|Лечение

Пофиксил баг с взрывами

Если взять улучшение "Взрывопули" и подойти впритык к двум+ врагам и выстрелить между них - пуля взорвется дважды, хотя должна только единожды. Проблема была в отложенном вызове "exploded_count += 1"

Версия v0.0.10 уже на itch.io - https://sundwell.itch.io/ritka-rampage
И девлоги тож туда начал добавлять - https://sundwell.itch.io/ritka-rampage/devlog

#девлог #ritkarampage
👍6🔥42
Рейтинг в играх 😱 #1

Я не планирую делать мультиплеерные игры, но вот очень захотел поделиться с вами тем, как работает матчмейкинг в играх и какие проблемы/особенности с этим есть

Инфы много, разбил на три поста, но я постарался сделать её интересной 😎

Для начала возьмём несколько популярных игр для будущего мини-разбора. Нам нужны игры, в которых за рейтинг мать родную готовы продать надо попотеть
1. Шахматы (удивительно, но это тоже игра 🤷‍♂️🤷‍♂️🤷‍♂️)
2. Dota 2 - Игра, в которой ты всегда играешь 1vs9 и твои тиммейты знают про твою семью больше, чем ты сам
3. CS:GO / CS2 - Игра, в которой у врагов есть стратегия, а у вас 5 челов с AWP на миду
4. World of Tanks - игра для серьёзных людей
5. PUBG - Игра, после которой появляется боязнь кустов в ирл

Сначала разберём общие проблемы, присущие для всех игр

Справедливость матчей
- Подбор игроков с одинаковым уровнем скилла, при этом учитывая другие факторы: пинг, время ожидания, регион
- Долгое ожидание матчей. Чем более сложная и реально честная система матчмейкинга, тем больше нужно ждать
- Токсичность. Та самая ситуация, когда в игре 5vs5 играешь 1vs9, т.е. ломается баланс игры
- Твинки/Смурфы. Это не синие мультяшные человечки, а голубые (если вы понимаете о чем я). Смурфы ломают баланс матчей
- Манипуляции с рейтингом. "Ща солью свой ммрчик на пару тыщ чтобы нубиков поунижать"
- Пинг и регионы. Даже если вам в команду залетел сын маминой подруги, но у него пинг под 300, то считайте что у вас на 1 игрока меньше

Теперь, когда есть общая база, разберём специфичные для каждой игры проблемы

Уникальные проблемы и особенности для каждой игры

Сразу скажу за читы - они есть везде, будь то ИИшка в шахматах (Stockfish или Lc0), скрипты в доте, где можно видеть действия за туманом войны или аимбот и вх в кске. Алгоритмы рейтинга всегда считают, что игрок честный. Если у него читы и он постоянно побеждает - для алгоритма этот игрок просто смурф либо очень эффективный игрок. В CS2 есть Trust Factor (скрытый рейтинг доверия), доверие низкое - тебя кидают к таким же, в основном это читеры и токсики, грубо говоря тоже скрытый пул как и в доте

Шахматы
Суть - рейтинг
Алгоритм - Elo или Glicko/Glicko-2

Алгоритм зависит от платформы. На Chess.com и Lichess.org используется Glicko-2. Эти алгоритмы рассчитаны на игры 1vs1, и, если очень упростить, работают по следующему принципу:
- Проигрыш. Враг был сильнее? Теряешь меньше очков. Враг слабее? Теряешь больше очков. Враг такой же? Теряешь N очков
- Победа. Аналогично с проигрышем
- Ничья. Игрок с рейтингом выше теряет немного очков, а другой получает немного. Если рейтинг одинаковый, то рейтинг не меняется (Elo алгоритм) или меняется минимально (Glicko/Glicko-2)

Отличие Elo от Glicko только в RD (Rating Deviation), грубо говоря это уверенность алгоритма в рейтинге игрока. Если ты только зашел в шахматы, то Glicko даёт тебе условных 1500 очков, но уверенность у него почти нулевая в твоём рейтинге (он думает что твой рейтинг находится в пределах от 500 до 2500 очков). Elo завязан чисто на победах и поражениях

В настоящих "мужских" шахматах на соревнованиях FIDE (international chess federation) используется старый алгоритм Elo, т.к. оч давно когда соревнования только появились был только этот алгоритм. А еще шахматы это первая игра, которая внедрила алгоритмы системы рейтингов

Чего-то уникального из особенностей/проблем как таковых не могу назвать, мб гроссмейстеры подскажут?

#геймдизайн #интересное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31