s&box
Not enough ratings
[News] Январь 2025
By Titanovsky and 1 collaborators
🤯 Скоро выйдет s&box? Игры можно экспортировать в Steam, монетизация, шейдеры, VR, оптимизация, Movie Maker (аналог SFM) и новый сайт

   
Award
Favorite
Favorited
Unfavorite
🤖 Deathmatch
Автор: Гарри

• Планируя режим "Песочница" (Garry's Mod 2), я начал думать обо всех вещах, которые мы должны сделать правильно, чтобы достичь этого. Движение игрока, инвентарь, здоровье, смерть, оружие и т. д.

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

Мы занимались этим, и это привело к появлению некоторых вещей, описанных ниже.
👨‍💻 Standalone игры
Автор: Гарри

• Наша цель - позволить людям создавать игры с помощью s&box и экспортировать их как самостоятельные игры (standalone), которые затем можно будет распространять в Steam и т.д.

Чтобы это стало возможным, нам нужно разрешение Valve - ведь игра построена на их движке. Это означает, что они должны обновить лицензионное соглашение, которое мы заключили с ними. Они уже сделали это и сейчас находятся на завершающей стадии проверки. Я надеюсь, что мы получим его в этом месяце.

После подписания этого документа нам нужно будет поработать с нашими юристами, чтобы составить лицензию. Это должно быть просто, поскольку она дает вам разрешение делать все, что вы хотите, при условии, что вы не будете обвинять нас во всем, что пойдет не так.
⭐ Улучшения в экспорте игр
Автор: Алекс

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

Брендинг
Мы добавили возможность выбора пользовательской иконки и стартового изображения (заставки). Мы проявляем гибкость в этом вопросе и не заставляем вас использовать наш брендинг - вы можете выбрать то, что хотите, хотя по умолчанию будет использоваться иконка s&box.

Размер билда
Мы уменьшили базовый размер экспортируемого файла в 4 раза (с 2 ГБ до 500 МБ). Это улучшение произошло за счет нацеленности на конкретные файлы - мы экспортируем именно те файлы, которые нужны вашей игре, а не используем подход "дробовика" и копируем кучу лишнего. Мы рассчитываем сделать его еще меньше, но, очевидно, существуют некоторые практические ограничения.



Магические улучшения
Магия экспорта была оптимизирована для повышения удобства использования - мы добавили пресеты, что особенно полезно, если у вас есть несколько игровых веток (например, staging и stable ветки). Мы также изменили дизайн этапов обзора и сборки, чтобы уменьшить беспорядок и сделать их более функциональными.

💵 Монетизация
Автор: Гарри

• Одно из моих больших сожалений по поводу Garry's Mod - то, что мы не позволили создателям монетизировать игру. Урок, который я получил от Valve, заключается в том, что мы больше всего преуспеваем, когда преуспевает наше сообщество. Это то, что мы применили к рынку скинов в Rust.

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

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

Я уже говорил об этом, но я хочу делать все медленно и постепенно. Если мы сможем найти такой способ монетизации для контент мейкеров, при котором каждый сможет выиграть, то так и надо поступить. Если это превратится в систему, где в каждой игре рядом с кнопкой ОТКРЫТЬ МЕНЮ будет кнопка UPGRADE TO VIP, то мы обосрались.
🚂 Steam Workshop
Автор: devultj

• Что касается выплат разработчикам, то мы работаем над тем, чтобы разработчики могли добавлять свою одежду в магазин наряду с нашими товарами, подобно тому, как мы делаем это в Rust.

Вы можете публиковать предметы одежды в нашем бэкенде, а также публиковать свою одежду в steam workshop, чтобы мы могли заплатить вам, если ваша одежда будет добавлена в наш магазин.



Вот несколько пунктов, над которыми уже работает сообщество!
👔 Документация по созданию одежды
Автор: Danduw

• Мы работаем над документацией по созданию одежды[sbox.game]. Объясняем процесс создания и отправки.

Мы объясняем и показываем определенные требования / наш уровень стандартов, что нужно для того, чтобы ваша одежда была принята в магазин.



Мы выпустили страницы с описанием процесса создания определенных предметов[sbox.game], где подробно рассказывается о настройке и соответствии нашей планке качества. Со временем будет выпущено больше страниц, посвященных различным группам одежды, так что следите за ними.



Вслед за публикацией в Steam Workshop мы создали эти документы, чтобы у художников было больше шансов на то, что их одежда будет принята и использована в нашем магазине. Это позволит создателям заработать на S&box еще одну возможность.
👨‍💻 Сеть
Автор: Конна

• Выделенные серверы (дедики) сейчас находятся в очень хорошем положении. Когда мы работали над Deathmatch, мы запускали его на выделенном сервере, чтобы улучшить ситуацию. Мы сделали так, чтобы выделенные серверы передавали клиентам статистику FPS и пропускной способности, чтобы клиенты могли видеть ее в своей консоли. Я сделал подключение к серверам более надежным в целом, и мы сделали так, что вы можете изменить карту и заставить клиентов автоматически переподключаться к серверу, а сервер при этом будет обновлять игру.

Мы добавили систему прав доступа для пользователей. Владельцы выделенных серверов могут изменять разрешения отдельных учетных записей Steam в файле, а разрешения пользователя могут быть проверены в коде. В будущем мы будем использовать это, чтобы ограничить определенные действия, такие как кик или бан, только пользователями с такими правами.

Мультипоточность
Я перевел весь сетевой код на многопоточность, что улучшило общую производительность и предотвратило некоторые проблемы с производительностью сети Steam и голоданием потоков.

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

Интерполяция Sync Var
Мы добавили новый флаг для Sync Vars, который будет интерполировать значение этой переменной для удаленных клиентов за несколько тиков. Один из вариантов использования этого флага - углы обзора игрока, так что если он очень быстро перемещает свои углы обзора локально, это не будет выглядеть джиттером и будет плавно отображаться и для других клиентов.

Фикс главных багов
Я добавил способ локальной проверки потери пакетов с помощью команды `net_fakepacketloss`, а также возможность изменить этот параметр в редакторе вместе с настройкой Fake Lag. Это помогло мне решить кучу редких проблем, особенно с Sync Vars, которые могли возникнуть, если пользователь испытывал необычную потерю пакетов.

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

В ближайшие месяцы мы займемся оптимизацией использования полосы пропускания.
🗺️ Map Editor
Автор: Лейла

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

Если вы маппер и вас это беспокоит, помните, что я не планирую делать что-то сильно отличающееся от того, что уже есть в hammer. Я просто переношу редактирование сетки из hammer в scene.

Вот еще несколько операций с сеткой, которые я недавно добавил.

Видео 1[cdn.sbox.game]
Видео 2[cdn.sbox.game]
Видео 3[cdn.sbox.game]
📐 Игровые настройки
Автор: devultj

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



Любой ConVar, отмеченный ConVarFlags.GameSetting, теперь будет добавлен в качестве метаданных к игровому проекту при публикации - это позволит нам перейти и показать настройки в списке игр s&box.
🖼️ Генераторы текстурок
Автор: Гарри

• У нас была проблема с текстурами. Если вы хотели выбрать изображение для использования в качестве текстуры, вам нужно было сначала преобразовать его в vtex. Это было очень неприятно, поэтому я начал думать, как это можно исправить, и в итоге переписал кучу кода.

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



Но это еще не все. Я понял, что, поскольку мы генерируем текстуры из изображений на диске, мы можем генерировать их из других материалов. Например, цвета, радиальные градиенты, линейные градиенты, случайный шум, шум Перлина, текст, эмодзи и svgs.


И это еще не все. Вы можете создавать свои собственные генераторы текстур[sbox.game], и это действительно до глупости просто.
💡 IES Light Profiles
Автор: Сэм

• Данные IES содержат фотометрическую информацию о том, как конкретный источник света отбрасывает свой луч по радиусу и оси, например, прожектор имеет крутой круг и так далее.

Знаете, как есть аудиофилы, так есть и те, кто любит свет.

💮 Forward+ Декали
Автор: Мэтт

• Я внедрил в движок еще один рендерер декалей, но он устаревает все остальные способы создания декалей, существовавшие ранее (projected_decals, static_overlay, decal shaders).



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

Они невероятно производительны, и вы можете использовать 1000 украшений геометрии вашей сцены без дополнительных вызовов рисования и без заметного падения производительности.

Это не традиционные материалы, а текстуры. К счастью, Гэрри только что закончил генераторы текстур, так что вы можете выбрать любой png без создания материала или vtex. Или вы можете использовать генераторы текстур и использовать текст, svgs или что-то еще.



Я написал документацию о том, как начать работу, здесь[sbox.game].
🏆 Bindless Lightmaps
Автор: Сэм

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

Теперь ваши шейдеры вдвое меньше и компилируются в два раза быстрее.

📊 Обновлённый ShaderGraph
Автор: Carson

• В этом месяце ShaderGraph получил столь необходимую модернизацию, взяв многое из недавних разработок ActionGraph.

Некоторые узлы теперь имеют пользовательские визуальные эффекты, например, сэмплеры текстур, бинарные операции и т. д. Значения по умолчанию также отображаются на неподключенном входе (если есть значение по умолчанию).



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

Видео 1[cdn.sbox.game]

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

📧 Под графы для ShaderGraph
Автор: Carson

• Теперь вы можете создавать собственные пользовательские узлы ShaderGraph без необходимости знания C# или HLSL. На видео ниже показано, как я добавляю созданный мной пользовательский узел, подключаю его, а затем открываю содержащий его граф, чтобы показать, как он работает (а затем открываю граф внутри этого графа)

Видео 1[cdn.sbox.game]

Вы можете мгновенно создать функцию шейдера из существующих узлов простым щелчком правой кнопки мыши.

Или создайте новую пустую шейдерную функцию через приглашение New Asset (Новый актив).

Входы определяются с помощью узлов Constant (как и сами ShaderGraphs), а выходы - на узле Result с помощью инспектора Properties.

Более технически подкованные люди также могут создавать свои собственные узлы на C# и HLSL, используя GraphCompiler.RegisterFunction (больше не нужно редактировать базовый аддон).
😎 VR
Автор: Алекс

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

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

Меню
Теперь у VR есть собственная система меню, основанная на системе меню плоского экрана; мы все еще работаем над этим, особенно когда дело доходит до добавления системы наложения для таких вещей, как меню паузы. В конце концов, мы получим идеальный нативный VR-опыт при навигации по играм и игровым опциям.
◀️ Система отмены для редактора
Автор: lolleko

• Наша предыдущая система отмены сцен была медленной и частично сломанной. Это было исправлено, новая система стала быстрее, надежнее и должна привести к более плавной работе редактора.

Если вы хотите добавить пользовательские действия, которые можно отменить, в свои инструменты редактора, ознакомьтесь с документацией по новой системе отмены здесь[sbox.game].
🖇️ Spline
Автор: lolleko

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

Видео 1[cdn.sbox.game]

Вы можете взять текущую версию инструментов из scene staging[github.com] . В течение следующих месяцев я перенесу функции сплайнов в основной движок.
🥰 Nav Mesh
Автор: lolleko

• Мы перенесли большую часть нашего навигационного кода с C++ на C#. Функциональность осталась прежней, а производительность, как ни странно, тоже.

Наличие кода навигации на C# значительно упростит в будущем работу над такими функциями Navmesh, как Nav Links и Nav Areas.
🚄 Ускорения клонирования
Автор: lolleko

• Мы улучшили производительность при клонировании GameObjects.

Клонирование GameObejcts теперь происходит в 6 раз, клонирование Prefabs - в 3 раза быстрее.

📔 Рендер линий
Автор: Лейла

• Линейные рендеры теперь поддерживают освещение и туман, так же как спрайты и частицы.

Видео 1[cdn.sbox.game]

🐜 Исправления редактора
Автор: solwllms

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



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



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

Мы добавили поддержку пользовательских кикеров для каждого типа ресурсов, а вскоре добавим специализированные кикеры для общих типов, чтобы вы могли быстрее находить нужные вещи. Следите за новостями.
🏂 Compute Skinning
• Современные движки уже давно перешли на расчет скинов в compute shader вместо vertex shader, что имеет несколько преимуществ.

  • Скиннинг вычисляется только один раз за кадр вместо каждого прохода рендеринга.
  • Вершины после скининга сохраняются в GpuBuffer, который затем можно использовать или
  • даже изменять.
    Размытие движения для рендеринга со скинингом

👾 GpuBuffer
Автор: Мэтт

• GpuBuffer - это новый класс C#, позволяющий создавать, читать и записывать произвольные данные на GPU. Его можно передавать любому типу шейдеров, как вычислительных, так и рендерных.

Это различные флаги, которые можно использовать и сочетать друг с другом:
  • Вершина
  • Индекс
  • Адрес байта
  • Структурирование
  • Добавление
  • IndirectDrawArguments

У GpuBuffers также есть общий вариант, который автоматически вычисляет необходимые значения stride.



Структурированные буферы поддерживают API HLSL IncrementCounter(), к которому можно получить доступ и манипулировать им в C# с помощью методов:

  1. GpuBuffer.CopyStructureCount
  2. GpuBuffer.SetCounterValue
👾 GpuBuffer рисование
Автор: Лейла

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

Вот пример волнистой плоскости, рассчитанной в compute shader и отрисованной с помощью Graphics.Draw.



Он также может разблокировать возможность излучать билборд-квады в compute shader и рендерить их с любым материалом. В настоящее время, когда мы хотим рендерить спрайты с билбордами, это нужно делать с помощью спрайтового шейдера, который имеет только текстуру. Если бы мы хотели поддерживать спрайты и частицы с любым материалом, это было бы возможно сделать именно так.
🎚️ Расположения памяти шейдеров
Автор: Мэтт

• Source 2 использовал схему OpenGL (std140/std430) для размещения шейдерной памяти для совместимости со старыми рендерами.

Основная проблема с этой компоновкой заключалась в принудительной подстановке, все подставлялось в 16 байт, что затрудняло согласование компоновки в C++/C# без добавления подстановки, и вообще приводило к неэффективности памяти, где подстановка не использовалась.

Мы перешли на скалярную блочную раскладку Vulkan[registry.khronos.org], которая выстраивает память в виде C-подобной структуры, что более эффективно.
🌋 Vulkan 1.2
Автор: Мэтт

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

Основными особенностями Vulkan 1.2, которые мы используем, являются:

  • Поддержка Shader Model 6.2
  • Бессвязные (bindless) ресурсы
  • Скалярная компоновка блоков

Поддержка устройств должна быть одинаковой, это абсолютный минимум устройств, поддерживающих Vulkan 1.2:

  • NVIDIA GTX 600 series
  • AMD RX 500 series
🍪 Анимированное Light Cookies
Автор: Лейла

• Light Cookie не поддерживали анимированные текстурные листы (sheets), теперь они поддерживают. Если мы разрешим новым генераторам текстур создавать анимированные листы, это можно будет использовать для некоторых крутых эффектов.

🎥 Movie Maker (аналог SFM)
Автор: ziks

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



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



Когда базовый набор функций будет завершен, мы перенесем его в движок. Вы можете поиграть с тем, что у нас есть на данный момент, в нашем testbed[github.com].
🧾 Выводы
Автор: Гарри

• Чувствуется, что у нас что-то получается. Нам предстоит еще много работы, но мы чувствуем, что добились потрясающего прогресса в самых разных областях.

В нашем будущем еще много неизвестного, но с каждым месяцем все становится яснее, поскольку мы продолжаем продвигаться вперед. Мне еще рано думать о датах релиза, но это уже немыслимо.
💙 Русскоязычное сообщество s&box


Перевод сделан благодаря: