К содержимому

Документация

  • Скачайте игру, откройте список уровней и пройдите любой. Чтобы собрать свой, создайте уровень в редакторе и положите в его папку трек на 1-2 минуты

  • Ошибки в игре - в issues releases, вопросы - в Discord. Приложите строку версии из настроек и шаги, после которых появляется ошибка

  • Ещё до запуска игра показывает, насколько уровень тяжёлый для вашего устройства, шкалой из пяти полосок: чем больше полосок горит, тем легче уровень. Зелёные полоски - идёт плавно, жёлтые - впритык, к

  • Редактор встроен в игру, отдельно ставить ничего не нужно. Уровень в нём - это папка с треком и файлами, которую вы ведёте от пустой до готовой к публикации

  • Уровень - это папка с файлами, первый собирается за шесть шагов, а весь редактор держится на шести понятиях: объект, кадр, промежуток, слой, родитель, ключ

  • Уровень - это обычная папка на диске: файл уровня, метаданные и всё, что он использует. Делайте его в Json, а передавайте копией папки, устанавливать ничего не нужно

  • Шесть шагов до первого плей-теста: создать уровень, добавить трек, разметить ритм, поставить объекты, запустить плей-тест, сохранить

  • Объект, кадр, промежуток, слой, родитель, ключ - шесть понятий, на которых держится весь редактор

  • Уровень считает время в своих кадрах, а не в кадрах экрана, поэтому играется одинаково на любом железе. Длину уровня задаёте вы, а fps лучше оставить по умолчанию, 60

  • Ключ - это значение на одном кадре одной дорожки плюс сглаживание, с которым к нему приходят. Всё, что в уровне движется, меняет цвет или включается и выключается, - это список ключей

  • Минимальный уровень - это один трек. Картинки и шрифты вы приносите сами, и всё это лежит в папке уровня

  • Минимум - это трек. Всё остальное необязательно, и почти всё вы приносите сами

  • Конвертируйте трек в ogg: он весит в 8-10 раз меньше wav и, в отличие от mp3, не дописывает тишину в начало файла. Кроме ogg читаются только mp3 и wav

  • Если можно обойтись фигурой, берите фигуру: у неё нет файла, расхода памяти и вопроса о правах. Картинку делайте размером с её место на экране, не больше 2048 для мобильного уровня и 4096 вообще

  • Уровень лежит в своей папке в levels внутри папки игры. Файлы, которые он использует, не переименовывайте, а полный бэкап - это копия папки уровня

  • В уровень, который вы публикуете, можно класть только файлы с открытой лицензией не строже CC BY-NC или с разрешением автора. Уровень для себя можно собирать из чего угодно

  • Трек можно взять, если у него открытая лицензия не строже CC BY-NC или автор прямо разрешил взять его в уровень. Трек с YouTube, SoundCloud или Spotify без разрешения автора брать нельзя

  • Ресурс годится, если у него подходящая лицензия или разрешение правообладателя. Третьего способа нет

  • Безопасно по умолчанию: музыка с ccMixter, Freesound и Kenney, картинки с Poly Haven, Pexels и Unsplash, шрифты с Google Fonts. С YouTube, SoundCloud и Spotify брать нельзя

  • Карточка записывает, откуда ресурс и на каких условиях: ссылку, лицензию, разрешения, авторов. Пустое поле лицензии значит "никто не проверял", и такой ресурс отклоняется

  • Каждый сервис проверяет уровень по своим правилам, поэтому один может его принять, а другой отклонить. Блокирует публикацию только ошибка, предупреждение отправляет уровень на модерацию

  • Напишите автору по шаблону, не вычёркивая пункты 1-3, и сохраните ответ. Годится только разрешение, которое прямо разрешает распространять уровень, а не только личное использование

  • Хороший уровень - это когда игрок понимает, за что умер, движется вместе с музыкой и хочет попробовать ещё раз

  • Игрок должен понимать, за что умер. Показывайте опасность до того, как она станет опасной, давайте на реакцию не меньше 12 кадров и делайте опасное контрастнее декора

  • Сначала разметьте сетку ритма: темп, потом смещение, потом размер такта. Пик уровня ставьте на пик трека, а в брейках давайте игроку передышку

  • Проектируйте под числа самого игрока - все они на 6_avatar и 7_damage - и под реакцию человека в 12-15 кадров. Новый паттерн сначала показывайте в безопасном виде

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

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

  • Тема - это палитра из 64 цветов, на которые объекты ссылаются по номеру слота. Поменяйте тему, и всё, что на неё ссылается, поменяется вместе с ней

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

  • Привычки, а не дизайн: в каком порядке строить уровень, как не делать работу дважды и не терять её, как проверить его ботом, передать и строить вместе с ИИ-ассистентом. Начните с порядка работы

  • Сначала трек, fps, разметка ритма и маркеры, затем скелет из голых фигур и его плей-тест. Декор, тема и эффекты - в конце

  • Объекты, которые потом придётся менять все сразу, - префаб, сколько бы их ни было. Содержимое, которое описывается правилом, - генератор. В остальных случаях просто копируйте

  • Больше всего времени экономят палитра команд (Ctrl+Shift+P), поиск по содержимому (Ctrl+F), кнопка "Показать" и стрелки на таймлайне. Любую клавишу можно переназначить в настройках

  • Работу страхуют автосохранение, отмена и копия папки уровня. Полный снимок уровня - только копия папки. Смену формата файла и удаление уровня отменить нельзя

  • Бот проходит уровень тем же управлением, что и у вас, и проверяет читаемость, а не сложность. Прохождение он не гарантирует

  • Упакуйте папку уровня в zip или tar.gz, а для пароля зашифруйте её gpg. На другой машине распакованный уровень сразу играется, и игра сама читает такие архивы

  • ИИ-клиент с поддержкой MCP может править уровень, открытый в редакторе, у вас на глазах. Каждый пакет ИИ - один шаг отмены, а публиковать, удалять файлы и писать поверх другого уровня ИИ не может

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

  • Телефон нормально держит около 1000 фигур в одном кадре, слабый ПК 5000-10000. Дороже количества обходится перерисовка: полупрозрачное во весь экран, слой на слое

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

  • Что делает конкретное поле или кнопка редактора, по странице на панель, окно или вкладку. Справочник не читают подряд: сюда приходят из поиска или по ссылке из статьи

  • Основной список терминов проекта. Интерфейс игры, эта документация и любые другие тексты о Bullet Hero используют эти слова, а новый термин сначала добавляется сюда

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

  • Таймлайны показывают уровень во времени: объекты, ключи выделенного объекта, шаблон префаба, аудио и события. Сетка долей помогает класть всё это на музыку

  • Иерархия - дерево объектов текущего кадра по родителю. У каждого таймлайна свой буфер обмена, а палитра команд находит любое действие редактора по имени

  • Инспектор объекта правит поля выделенного объекта, инспектор ключа - выделенные ключи, сразу на всех дорожках, которых касается выделение

  • Эффект - это частицы VFX Graph, параметры которых разбиты на модули: сколько частиц, откуда вылетают, как двигаются, какого цвета и размера. Править их можно в инспекторе или в редакторе эффектов

  • Звук аудиодорожки проходит цепочку эффектов: их 11, от нормализации и компрессора до эха и реверберации. Цепочка, скорость и громкость задаются в инспекторе аудиодорожки

  • Генератор создаёт контент и применяет его к уровню одной операцией, которую можно отменить одним шагом. Все генераторы запускаются из окна "Генераторы" на панели инструментов

  • Модификатор меняет то, что уже есть в уровне: удаляет, пересчитывает fps, сплющивает префабы, квантует ключи, подгоняет и сдвигает отрезки. Запуск отменяется одним шагом

  • Здесь задаётся всё, что принадлежит самому уровню: длина, fps, сид, ориентация, метаданные, публикация. Отсюда же уровень запускают, проверяют правилами и восстанавливают из копии

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

  • В режиме префаба вы правите шаблон, и сохранение переносит правку во все его установки. Войти можно кнопкой "Править префаб" в инспекторе установки, вернуться в уровень - Ctrl+Shift+E

  • Экспорт сохраняет уровень вне игры папкой или архивом вместе со всеми файлами, которые он использует. Пароль шифрует содержимое уровня на диске, а забытый пароль восстановить нельзя

  • Здесь настраиваются автосохранение, сетка, выделение, гизмо и заготовки нового уровня. Автосохранение по умолчанию включено и срабатывает через 60 секунд после правки

  • Иерархия, инспекторы и таймлайны пристыкованы вокруг вьюпорта. Клик по ручке на краю панели открывает или закрывает её, перетаскивание меняет ширину

  • Коллекции хранят ресурсы, которые вы переиспользуете между уровнями. Уровень никогда не ссылается на коллекцию: импорт копирует ресурс внутрь, и уровень играется где угодно

  • Уровень отправляется только с вкладки "Публикация" в настройках уровня: архивом или в Мастерскую Steam. Отчёт проверяет уровень сам, и ошибки в нём блокируют отправку

  • Редактор рендерит открытый уровень в видеофайл через ffmpeg, установленный на вашем компьютере. Рендер идёт офлайн, кадр за кадром, поэтому видео точное, как бы медленно ни работал компьютер

  • SDK - формат уровня Bullet Hero в виде открытой библиотеки на C#. Игра читает и пишет уровни через неё, и ваша программа может делать то же самое

  • SDK - это пакет BulletHero.SDK на nuget.org или сборка из исходников. В Unity он подключается как git submodule, а пример ConsoleSmoke проверяет, что ваши уровни читаются

  • Уровень - это папка: содержимое в level.json или level.blob, метаданные в metadata.json или metadata.blob, обложка и медиафайлы. Бэкапы, рекорды и настройки игрока остаются на устройстве

  • Уровень экспортируется папкой, tar.gz или zip, по желанию под паролем: zip с AES-256 или OpenPGP. Формат присланного файла SDK определяет по первым байтам, а не по имени

  • Версий три: gv - игра, sv - SDK, mg - поколение формата моделей. По mg SDK мигрирует старый файл, а файл с поколением новее сборки отказывается читать

  • Валидацию вы вызываете сами через ValidationFacade, в сохранение и загрузку она не встроена. Находки делятся на Error, Warning и Advice, а ValidateAndFix чинит то, что можно

  • Сервис описывает, какие уровни принимает, файлом PublishProfile: лицензии, источники ресурсов, обязательные поля, пределы размера. Добавить сервис - значит написать файл, а не править анализатор

  • Bullet Hero - бесплатный гибрид ритм-игры и bullet hell. Аккаунт не нужен, сервера пока нет. Уровни делают игроки во встроенном редакторе и передают друг другу папкой или архивом

Заметки