top of page
Технологии
Технические статьи о Unity, мультиплеере, серверах, собственном хостинге, открытом коде, сборках и инструментах разработки.
Почему новая версия называется 2026.7.19, а не 0.9.2 🗓️
Тот, кто обновляется сегодня, перепрыгивает с версии 0.9.1 на 2026.7.19. Это выглядит как опечатка, но это осознанное решение: мы изменили схему версионирования, перейдя от «семантических» версий к версиям по дате (год.месяц.счётчик). Вот почему. Старая схема отвечала на вопросы, которые никто не задаёт. Семантическое версионирование (0.9.1, 1.2.3 …) пришло из мира программных библиотек. Там оно великолепно: первое число обещает «ничего не сломается», второе «только добавлени
Marcel Dütscher
28 июл.2 мин. чтения
Навели порядок: как мы наконец-то правильно используем кэш GitHub 🧹
В прошлом техническом посте мы измерили, чего на самом деле стоит наш конвейер сборки и проверок, и выяснили: не денег, а времени ожидания и места. Та статья закончилась словами «уборка запланирована, но ещё не сделана». Оказалось, что она пошла быстрее, чем ожидалось: с полудня сегодняшнего дня она в главной ветке. Вот цифры. Сначала результат. Занятое кэшем место в нашем репозитории сократилось с 5,32 ГБ в 63 записях до 2,46 ГБ в 13. Анализ безопасности C#, который раньше з
Marcel Dütscher
27 июл.4 мин. чтения
Тысяча запусков сборки в месяц, и ни один не стоит ни копейки ⚙️
Сначала поправка. В первой версии этой статьи утверждалось, что у нас закончились минуты сборки на GitHub и из-за этого пришлось перейти на аккаунт Pro. Это было неверно, и достаточно было одного взгляда в документацию: для публичных репозиториев минуты сборки на GitHub бесплатны. Артефакты и кеши тоже. Наш репозиторий публичный с конца мая, так что мы ни разу не заплатили за минуту и не заплатим. Вместо того чтобы тихо поправить текст, мы решили переписать его и рассказать,
Marcel Dütscher
26 июл.3 мин. чтения
SignPath сказал «нет»: наши сборки для Windows пока остаются неподписанными
Несколько дней назад мы рассказали вам здесь, в блоге, что подали заявку в бесплатную программу для открытого ПО от SignPath Foundation на сертификат подписи кода для наших установщиков под Windows. Теперь ответ пришёл, и это «нет». Поскольку этот девблог нужен не только для того, чтобы праздновать победы, но и чтобы честно рассказывать, как на самом деле идёт жизнь такого проекта, эта новость тоже должна быть здесь. Напомним коротко: о чём шла речь? Неподписанные программы д
Marcel Dütscher
15 июл.2 мин. чтения
Наш GitHub заговорил: автоматический подкаст разработчиков 🎙️
Разработка Blocks Beyond the Stars идёт совершенно открыто на GitHub: каждый коммит, каждый pull request, каждый релиз можно прочитать. Но давайте честно: кто вечером листает список коммитов? Теперь есть вариант удобнее: новости проекта можно просто послушать. У нашего GitHub появился собственный подкаст. Что такое Podlog? Podlog — это сервис, который следит за репозиторием на GitHub и автоматически превращает его в аудиоподкаст. Вы подключаете свой проект, а дальше ИИ переск
Marcel Dütscher
13 июл.1 мин. чтения
Бесплатная подпись кода для открытого ПО: наша заявка в SignPath 🔏
Кто устанавливал нашу игру на Windows, возможно, знает этот момент: «Windows защитила ваш компьютер» — SmartScreen предупреждает о «неизвестном издателе», и сначала нужно нажать «Подробнее → Выполнить в любом случае». Это не вирус, просто наши установщики пока не подписаны. Мы хотим убрать это предупреждение, не покупая дорогой сертификат. Проблема сертификатов подписи кода. Сертификат издателя для Windows (OV или EV) стоит денег каждый год, часто требует проверки компании и
Marcel Dütscher
12 июл.2 мин. чтения
От git-тега до живого сервера: наш конвейер релизов
Релиз Blocks Beyond The Stars сегодня сводится к одной команде: отправить git-тег. Всё остальное делает машина. В этой статье я покажу наш конвейер CI/CD — и почему усилия окупаются даже в хобби-проекте. Релизный рабочий процесс. Как только отправлен тег вроде v0.7.4, GitHub Actions собирает полный пакет: установщики для Windows (setup, portable, MSI), сборку для Linux, сборку WebGL для браузера и образ Docker для сервера — шесть артефактов из одного тега. Номер версии берётс
Marcel Dütscher
7 июл.1 мин. чтения
Обслуживание сервера без выкидывания игроков
Что на самом деле происходит с игроками, когда нам нужно обновить сервер? Простой ответ был бы: выдернуть вилку из розетки. Мы сделали ответ получше — и это одна из моих любимых функций, хотя в идеале её почти не замечаешь. Объявление. Сервер может разослать сообщение об обслуживании во все работающие миры. В игре тогда появляется баннер с обратным отсчётом: «Перезапуск сервера через 10 минут». Сообщение нужно закрыть самому — но только через несколько секунд, чтобы никто слу
Marcel Dütscher
6 июл.1 мин. чтения
Пароли, ограничения запросов и аккаунты без электронной почты
В Blocks Beyond The Stars играют и дети. Это определяет не только дизайн игры, но и безопасность за ней. Три примера. Аккаунты без электронной почты — намеренно. Для аккаунта игрока у нас не нужен адрес электронной почты. Это не недостающая функция, а решение: мы хотим как можно меньше личных данных, особенно от юных игроков. Что мы не храним, то не может потеряться. (Честная обратная сторона: из-за этого нет «забыл пароль» по почте — об этом мы говорим открыто.) Пароли миров
Marcel Dütscher
6 июл.1 мин. чтения
Маленький VPS как флот игровых серверов
Все наши онлайн-миры — портал, официальные миры, миры, созданные игроками — работают на одном арендованном Linux-сервере (VPS). Никакого дата-центра, никаких пятизначных счетов за облако. В этой статье я покажу, как устроен сервер и чему мы по пути научились. Сначала защита. Прежде чем игре разрешили выйти на сервер, на первом месте была базовая безопасность: файрвол (ufw), который открывает только нужные порты, fail2ban против автоматических попыток входа и SSH только по клю
Marcel Dütscher
5 июл.1 мин. чтения
Как работают наши хостируемые миры
Твой собственный мир в интернете, куда друзья могут зайти в любой момент — и никому не нужно поднимать сервер. В этом идея наших Hosted Worlds, а в этой статье я покажу тебе, что на самом деле происходит за кнопкой «Играть» в портале. Сердце всего — WorldHost: небольшой сервис на нашем сервере, который управляет мирами. Каждый мир работает в собственном Docker-контейнере — полностью изолированно, со своим файлом сохранения, своим лимитом памяти и своим ограничением процессора
Marcel Dütscher
5 июл.1 мин. чтения
Закулисье: как мы сделали 28 видео для YouTube за 30 минут 🎬
Как папа, ребёнок и ИИ превратили кучу сырых записей игры в два полных плейлиста — без единого часа в видеоредакторе. Наконец-то у Blocks Beyond the Stars есть свой YouTube: 22 Shorts и 6 длинных видео — летсплеи и обучалки. И знаете что? История о том, как они появились, стоит того, чтобы её рассказать, ведь сам «монтаж» занял около получаса. Вот весь наш конвейер. Шаг 1: Justus нажимает запись 🎮 Любое хорошее игровое видео начинается с того, что кто-то реально играет, и эт
Marcel Dütscher
2 июл.3 мин. чтения
Больше 1000 тестов для хобби-игры — напрасный труд?
В нашем проекте теперь заметно больше тысячи автоматических тестов: около 990 на стороне сервера и около 120 в клиенте Unity. Для семейного проекта это звучит как перебор. На самом деле всё наоборот — вот почему. Тесты — наш второй разработчик. В одиночном проекте некому сказать на код-ревью: «Подожди, это ломает крафт». Эту роль выполняют тесты. У каждой игровой механики — рецептов, кислорода, голода, поведения существ, паролей миров — есть тесты, которые запускаются при каж
Marcel Dütscher
2 июл.1 мин. чтения
Воксельная игра в браузере
Blocks Beyond The Stars работает не только как программа для Windows и Linux, но и прямо в браузере — без установки, достаточно одного клика на портале. Путь к этому оказался поучительнее, чем мы ожидали. Unity WebGL — это отдельный мир. Unity давно умеет экспортировать для веба, но дьявол кроется в деталях. Наш самый большой камень преткновения: в браузере нет настоящих фоновых потоков, как в нативной сборке. Наша система рельефа обычно строит сетки ландшафта асинхронно в фо
Marcel Dütscher
30 июн.1 мин. чтения
День, когда наши шейдеры пропали из сборки
В редакторе Unity всё выглядело идеально. В готовой сборке — розовые поверхности и пропавшие эффекты. Добро пожаловать в одну из самых коварных ловушек Unity — и в пару её родственниц. Вырезание шейдеров (shader stripping). При сборке Unity выбрасывает всё, что, по его мнению, не нужно, — включая шейдеры. Проблема: если загружать шейдеры во время работы через Shader.Find() (как мы делаем с более чем 20 собственными шейдерами для воды, атмосферы, голограмм и не только), Unity
Marcel Dütscher
27 июн.1 мин. чтения
Свет в воксельном мире: настоящие источники или заливка?
Игрок ставит лампу в своей базе. Что происходит технически? Этот невинный вопрос привёл нас к принципиальному решению — а ответ хорошо показывает, что «более современное» решение не всегда лучшее. Вариант А: настоящие источники света Unity. Каждый светящийся блок становится точечным источником, движок всё считает сам. Выглядит здорово — но не масштабируется. В воксельном мире в поле зрения могут быть сотни светящихся блоков; точечные источники в реальном времени в таком колич
Marcel Dütscher
27 июн.1 мин. чтения
На 100% создано ИИ: наш рабочий процесс с Unity 6, .NET 8 и Python
Один из самых частых вопросов к нам: как именно строят сложную многопользовательскую воксельную игру полностью с помощью ИИ? Короткий ответ: по очень строгим правилам. ИИ прекрасно пишет код, но быстро теряет архитектурную перспективу. Поэтому с первого дня я ввёл строгую архитектуру клиент/сервер. Наш технологический стек вкратце: Клиент: Unity 6 для рендеринга, ввода и воксельной сетки. Сервер: выделенный сервер на .NET 8 для генерации чанков и серверно-авторитетной UDP-сет
Marcel Dütscher
26 июн.1 мин. чтения
Графическая переделка: больше красоты без смены движка
В какой-то момент на стол лёг честный диагноз: игра хорошо играется, но выглядит как прототип. Вместо того чтобы присматриваться к другому конвейеру рендеринга или вовсе к другому движку, мы задали себе один вопрос: сколько красоты ещё скрывается в URP Unity, если выжать из него максимум? Ответ: поразительно много. Сглаживание (SMAA). Блочные миры состоят из рёбер — а мерцающие рёбра портят любой скриншот. SMAA сглаживает их, не превращая картинку в кашу. Затенение окружения
Marcel Dütscher
26 июн.1 мин. чтения
От MIT к AGPL: почему мы сменили лицензию
Blocks Beyond The Stars — это открытый код, и так было с самого начала. Но вот под какой лицензией — это мы по ходу дела кардинально изменили: с либеральной лицензии MIT на AGPL-3.0. Расскажем почему. Что значила бы MIT: по лицензии MIT любой может взять наш код, изменить его и продавать как закрытый продукт — ничего не отдавая взамен. Для библиотек это часто именно то, что нужно. Для целой игры с серверами это казалось неправильным: кто-то мог бы взять нашу работу, сделать и
Marcel Dütscher
25 июн.1 мин. чтения
ИИ-текстуры и ИИ-звуки в конвейере ассетов
В Blocks Beyond The Stars нет ни художника, ни звукорежиссёра. И всё же у каждого нового блока есть своя текстура, а у каждой новой функции — свой звук. Наш инструмент для этого — генеративный ИИ, с чётким рабочим процессом вокруг него. Текстуры. Новые тайлы блоков создаются моделями изображений OpenAI. Запрос описывает материал, стиль и воксельную эстетику игры; результат уменьшается до размера тайла и раскладывается в наш атлас блоков — одну большую текстуру, где у каждого
Marcel Dütscher
23 июн.1 мин. чтения
bottom of page