Voidtick devblog | дневник инди-разработчика
49 subscribers
11 photos
6 links
Тернистый путь соло инди-разработки на Godot.
Download Telegram
А вот и Steam-страничка текущего проекта Dicement - минималистичной sokoban-головоломки про толкание кубиков.

https://store.steampowered.com/app/4289710/Dicement

Какое-то время проект лежал просто как прототип, но решил по итогу довести до полноценного релиза, чтобы освоиться с Steam: подготовить материалы, интегрировать api и прочее.

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

Жанр пазла был выбран из тех соображений, что можно довольно точечно реализовывать механики и делать конечное количество небольших, но интересных уровней. Да и просто кор-механика показалась рабочей и довольно простой в реализации.

Релиз запланирован на середину марта 2026, сейчас активно допиливается контент и доделывается финальный полишинг.

#dicement #steam
11
Какие инструменты я использую?
Было бы круто, если бы можно было просто скачать движок, и он все бы делал за тебя. Но, даже для создания и выпуска небольшой игры (которой и является Dicement), приходится задействовать еще кучу всего - от редакторов для рисования и создания музыки до управления процессом разработки.

Вот мой минимальный список инструментов, которые я использую практически на ежедневной основе.

🛠 Godot [бесплатно]
Собственно, сам движок. Почему выбрал его, а не, например, Unity - тема для отдельного поста.

🛠 VS Code [бесплатно]
Как давнему фанату продуктов Jetbrains, было непривычно переползать на эту IDE. Но из-за ньансов работы тоже Jetbrains Raider, пришлось освоиться. На удивление оказалось, что VSCode очень неплохо работает с GDScript (собственный язык Godot) через плагин godot-tools. Немного пошаманив с плагинами и настройками, добился очень комфортной работы.

🎨 Aseprite [20 $ единоразово]
Лучший по моему мнению редактор для рисования и анимации пиксельарта. Очень удобный, пользуюсь уже много лет. Вся графика для Dicement сделана в нем (минималистичная, но все же).

🎨 Procreate [13 $ единоразово, только Ipad]
Классная прога для рисования, очень приятна в использовании. Использую для накидывания концептов и скетчей или первоначальных артов для последующей полировки на ПК.

🎨 Affinity Studio [бесплатно]
Недавнее открытие для меня - по сути, all-in-one замена Photoshop / Illistrator. В одной программе собраны и векторный и растровый редактора, активно использую для подготовки ассетов для того же Стима.
Как человеку, который всегда был с рисованием не то что на "вы", а на "ваше высочество", этот редактор сэкономил кучу времени и денег.

🎹 FL Studio [99 $ или 179$ единоразово]
Или называемый в народе "фрутик" - отличный редактор для создания и редактирования звуков и музыки. Куча встроенных инструментов, приятный интерфейс. Так как музыку пишу сам - классный инструмент за свои деньги.

🎬 Davinci Resolve [бесплатно]
Видеоредактор, использую для монтирования трейлеров. Никогда не занимался монтажом до этого, но Давинчи оказался очень дружелюбным и удобным.

📝 Goodnotes [сейчас много вариантов по цене, брал давно за 35$]
Личный топ-1 в качестве цифрового блокнота. Использую постоянно для быстрой записи идей, набросков и всего остального, что хочу быстро переложить из головы на бумагу.

📚 Notion [бесплатный план]
База знаний - в нем веду различную документацию: брейштормы, gd-доки, планирование и т.д. Долго у меня с ним не складывалось из-за очень большого опыта с Confluence, но в итоге мы смогли подружиться.

🗓 Hackplan [бесплатный план]
Компактный сервис для управления проектами, созданным специально для разработчиков игр. Для соло-разработчиков или небольших команд - отличный выбор вместо Jira, которая будет слишком перегруженной.
Использую для заведения задач и раскидывания их по доскам после декомпозиции.

#разработка
5🔥31
Сделал поддержку Dicement на Steam Deck.

Так как управление с геймпада уже заложено и реализовано, то особо ничего дополнительно делать не пришлось. Запускается обычный windows-билд через Proton на деке.

Единственный момент - не забывать форсить запуск игры в borderless режиме окна и протестировать на разрешение 1280x800 (нативное для Стимдека).
🔥103
Как меняется игра со временем.

Интересно было оглянуться и посмотреть, как постепенно изменялся графический стиль Dicement. Даже у небольшой игры он может пройти через несколько итераций.

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

Так как рисование вообще не мой конек, решил сделать пару шагов назад и, выбросив все наработки, за очень короткое время сделал максимальный минимализм (каков каламбур), который сразу же решил все проблемы с читаемостью и позволил двигаться дальше.
🔥125
Как подружить Godot и VSCode.

Хорошо настроенная среда разработки - залог сохранения нервных клеток. Вот мой рецепт приготовления тандема Godot + VSCode.

🟢 Плагины для VSCode
godot-tools - основной плагин для интеграции Godot с VSCode. Поддержка синтаксиса, автодополнение, переход к документации и многое другое. Must have.
godot-vscode-theme - тема для редактора VSCode, повторяющая тему встроенного редактора Godot. Очень приятная цветовая схема.
vscode-icons - классные иконки файлов в дереве explorer’а. Сразу повышает скорость навигации в проекте.
IntelliJ IDEA Keybindings - если переходите с IDE от Jenbrains (как я), то этот плагин возвращает привычные шорткаты, забитые уже в мышечную память. После этого плагина мы с VSCode наконец подружились)
Edit CSV и/или Rainbow CSV - плагины для удобной работы с .csv-файлами, например файлами локализации.

🟢 Настройка отображения файлов в VSCode
Чтобы убрать из explorer’а файлы сцен, ресурсов и прочие не относящиеся непосредственно к коду:
• Зайти в настройки File → Preferences → Settings
• Вбить в поиске files.exclude
• Добавить в exclude паттерны: **/*.tscn, **/*.uid, **/*.tres, **/*.import

🟢 Указание VSCode как внешнего редактора для Godot
В разделе настроек Editor Settings → Text Editor → External:
☑️ Use External Editor
Exec Flags{project} --goto {file}:{line}:{col}
Exec Path → пусть к экзешнику VSCode.

🟢 Автоматическое подхватывание изменений в Godot
В Editor Settings → Text Editor → Behavior → Files:
☑️ Auto Reload Scripts on External Change

В Editor Settings → Interface → Editor:
☑️ Save on Focus Loss
☑️ Import Resources When Unfocused
👍5🔥321
Обновил страницу и демку на itch.

С момента ноябрьской демки в игру заехало много изменений и решил перед выпуском на Steam привести в порядок страничку и web-билд на итче - https://voidtick.itch.io/dicement.

Помимо большого количества полишинга и багфиксов, самое главное в обновлении - это 4 новых уровня с новыми механиками.
8👍21
Как я выстраиваю прогрессию уровней для пазла.

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

Чтобы самому не запутаться и визуализировать игровую прогрессию, я решил описывать все уровни несколькими простыми параметрами ⬇️

🎯 Цель - зачем этот уровень вообще в игре.
Если не получается сформулировать простыми словами этот пункт, уровень не нужен или требует пересмотра. Тут же описывается, какие механики используются на уровне.

🥊 Сложность - сколько примерно времени и усилий должен потратить игрок на уровень.
• Тривиальная (очевидное решение, используется для демонстрации новой механики)
• Простая
• Средняя
• Сложная

🧩 Назначение - что уровень дает игроку с точки зрения прогресса?
• Научить
• Закрепить
• Озадачить

💡Тип - на чем фокусируется идея уровня
• Ввод новой механики
• Точный повтор шагов
• Математический
• Внезапный поворот (неочевидное использование механики)
• Забавная геометрия уровня
• Ограниченное пространство
• Усложненный повтор

Положив все это в табличку, стало намного легче замечать слабые места в прогрессии и проще миксовать типы и сложность уровней.
🔥8
Маленькая заметка о подготовке web-билда на Godot для Itch.

❗️Управление
Если планируется работа игры в полноэкранном режиме, то необходимо переназначить клавишу ESC для веб-билда на какую-нибудь другую. В противном случае, игра будет всегда сворачиваться в окно при, например, вызове меню. Жертвуем UX, но а че поделать, можно сделать отдельную подсказку в интерфейсе.

❗️Сборка
Стоит собирать веб-билд в single-thread режиме. Для этого нужно не ставить галочку Thread support при экспорте. Иначе придется в самом itch для проекта врубать SharedArrayBuffer support, что, внезапно, ломает проигрывание любых видео на странице игры и не получится прикрепить трейлер с Youtube. Можно конечно обойтись только гифками, но полноценное видео как-то попривлекательнее.

❗️Использование фиче-тегов
В Godot есть система строковых feature-тегов, по которым можно определять, в каком окружении работает игра.
С помощью них можно делать отдельные ветки в коде, чтобы сделать поддержку той или иной платформы: переназначить управление, показать/скрыть элементы UI и так далее.
Для это используется условие вида:
if OS.has_feature("web"):
# Переназначаем ESC на клавишу X
🔥42
Наконец-то закончил все уровни (50 штук) для Dicement и отправил билд на финальное ревью в Steam.

Хоть игра и была в практически финальном состоянии (все заявленные в описании фичи и контент) , Стим все же позволяет после окончания ревью вносить небольшие изменения.

В оставшееся время нужно будет еще дописать несколько недостающих музыкальных треков и поправить найденные баги и баланс. Но все же приятно видеть, как игра постепенно шаг за шагом приближается к своему релизу.
🔥8🎉63👍2💋1
Все пишут про аишку, ну и я напишу.

Мне нравится писать код и придумывать решения, но в соло-разработке ищешь все способы, как сэкономить время и силы.

Признаться, я был сначала довольно скептично настроен в отношении AI для работы с Godot. Связано это было с тем, что в годоте свой язык GDScript и в целом движок сильно меньше распространен, чем то же Unity. Но, все же решил попровать использовать Github Copilot, встроенный в VS Code.
К моему приятному удивлению, он начал выдавать даже не полную чушь, а вполне рабочие решения на разных моделях. Полноценные сложные фичи он все же не очень осиливает, и чаще мне было просто быстрее написать самому, чем придумывать точный промт и потом допиливать. Думаю, это поправимо постепенным обучением агента, созданием скиллов и прочим, планирую добраться до этого в будущем.

Пока я нашел для себя как минимум 3 кейса использования, которые сильно экономят мне время:

🛠 Инструментарий
Тут аишка просто шикарна - быстро создать какое-нибудь дебажное окно, создать инструмент для работы с контентом, сделать утилитарный скрипт. Обычно нужно минимум контекста и очень просто поставить агенту задачу. Например, так сгенерил внутриигрове окно для переключения и тестирования локализации, создал скрипт для сброса ачивок в Стиме и всякую другую девелоперскую мелочевку. В общем сюда попадает все, что знаешь как сам сделать, но просто лень тратить много времени.

🖥 Шейдеры
Немного другая ветка разработки, которую я все обещаю себе полноценно освоить, но никак не дойдут руки. Так как шейдеры это мини-программы сами в себе, очень просто описать, что ты хочешь - “сделай обводку спрайта с настраиваемой толщиной”, “сделай шейдер для глитч-эффекта” и т.д. Тут AI стал незаменимым помощником.

🐞Баги
Когда быстро не получается найти источник неочевидного бага, я просто обращюсь к Copilot и в 80% случаев он подсказывает реальную причину. При разработке глаз постепенно замыливается и всякие штуки на поверхности легко пропустить и сидеть тупить часами. Так я например долго не мог понять, почему не срабатывает один таймер, а я его просто выставил больше, чем длительность игрового тика. Агент мне указал на это за 10 секунд, а я потратил до этого 20 минут на поиск.

Все это конечно далеко не популярный сейчас вайбкодинг (к нему и не стремлюсь), но отличный инструмент экономии время на рутине.
🔥92
Audio
🎹 Люблю писать музыку, хоть и не всегда есть вдохновение.

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

Чтобы опять же сэкономить время, все треки (кроме трейлера) используют одни и те же 4 основных инструмента, но в разных вариациях. В целом, результатом я доволен.
🔥14