Программа для генерации арта к текстовой игре, потому что ComfyUI только для технарей
Мы с женой делаем текстовую игру по её фэнтези-вселенной. Совместное хобби: она пишет, я программирую. Рисовать не умеем оба, а картинки в игре нужны — без них текст сухой.
Как всё началось
Первый порыв — Midjourney, DALL-E и прочие облака. Быстро, красиво, дорого. Для пет-проекта, который вряд ли принесёт деньги, тратить по $10–30 в месяц на генерацию сотен картинок — сомнительная идея.
Пошёл в Stable Diffusion. Поставил Automatic1111, сгенерировал — получил что-то непонятное. Начал разбираться: модели, LoRA, самплеры, шаги, CFG, промпты из тегов. Пошло-поехало: masterpiece, best quality, 1girl, fantasy, detailed background, dramatic lighting... — и это только начало. Одна картинка занимает 20–30 минут подбора параметров.
Для игры нужны десятки артов. Для одного локации — фон, NPC, предметы. Перемножаем — получаем часы ковыряния в тегах вместо собственно разработки.
Первая попытка автоматизации
В админке игры (Symfony) я сделал два провайдера: один общается с локальной LLM и генерирует промпт на основе лора игры, второй отправляет это всё в SD с нужными настройками модели. Стало быстрее. Но захотел другой стиль, другую модель — и всё, переписывай. Захотел третье — снова переписывай.
Тут я, как человек ленивый, описал проблему ИИ. После брейншторма решили: вынести код в отдельный инструмент. Так появилась SD Studio.
Что получилось
Десктоп-приложение, которое связывает твой локальный Stable Diffusion с локальной LLM (Ollama, llama.cpp, LM Studio). Всё работает на твоём железе, без облака.
Пишешь текстом — получаешь арт
Выбираешь пресет — это готовый набор: модель, LoRA, параметры генерации, базовый промпт. Пишешь описание обычным языком: «девушка-маг стоит у входа в подземелье, факелы, мрачная атмосфера». LLM превращает это в правильный SD-промпт с тегами и негативным промптом. Жмёшь Generate — получаешь картинку в стиле пресета (аниме, реалистичное, кино — смотря какой выбрал).
Не знаешь, какой пресет взять? Есть кнопка рекомендации — LLM знает все твои пресеты и подскажет.
Пайплайны — комбинируй модели
Это то, ради чего я вообще начал это делать. Проблема знакомая: одна модель отлично рисует людей и кожу, но фантазии ноль. Другая — Pony, например — придумывает шикарные сцены, но выдаёт анимешный результат. В SD Studio можно объединить их в пайплайн: первый пресет генерирует основу, второй дорабатывает в нужном стиле. На выходе — богатая на детали и красивая картинка.
Удаление объектов одной маской
Понадобилось убрать лишний элемент с арта. Раньше: открываешь Photoshop, аккуратно вырезаешь, закрашиваешь. В SD Studio рисуешь маску поверх объекта — программа сама отправляет в LLM, та анализирует контекст и подбирает фон, затем делает inpaint. Не всегда идеально, но в 7 из 10 случаев — достаточно.
Похожим образом работает замена деталей или объектов.
Мульти-сценовая генерация
Это была моя главная боль. Нужно изображение с тремя персонажами: девушка-маг, воин и медведь. Stable Diffusion выдаёт что угодно: женщина-медведь, три медведя, медведь с топором. SD пытается впихнуть всё описание в одну сцену.
В SD Studio Multi-Scene работает иначе: описываешь сцену, LLM выделяет фон и каждого персонажа отдельно. Дальше генерируется фон, потом каждый персонаж по отдельности. Rembg вырезает персонажа и ставит на фон. Финальный проход пресетом — чтобы не было видно склейки. Результат не идеальный, но это единственный рабочий способ получить нескольких персонажей на одной картинке.
Сессии
В процессе работы набрал: загрузил фото, перерисовал, удалил лишнее, перегенерировал — и случайно затёр хороший вариант. Без отката. Поэтому добавил сессии: все шаги сохраняются, можно вернуться к любому и продолжить. Для генерации контента игры — просто необходимо.
Почему не ComfyUI
ComfyUI мощный — но это конструктор для тех, кто готов собирать графы из нод. Чтобы удалить объект, нужно собрать цепочку нод с маской, InpaintModel, настроить denoising. Для мульти-сцены — ещё сложнее. Я пытался. Потратил вечер, собрал рабочий граф, на следующий день забыл, что куда подключено.
SD Studio — про другое: описал задачу, нажал кнопку, получил результат. Меньше контроля, но 90% задач покрывается без графов.
Технически
Go + Wails v2 на бэкенде, Vue 3 на фронтенде. Не Electron — бинарник компактный, запускается быстро. Работает на macOS, Linux, Windows. LLM и SD крутятся на игровом ПК с Windows, я подключаюсь с макбука и Linux — не проблема.
Open source, AGPL v3.
GitHub: https://github.com/Zazza/sd-ai