События за месяц в Rust GameDev # 8 - Март 2020 (Часть 2)

События за месяц в Rust GameDev # 8 - Март 2020 (Часть 2)

Rust Lang Сообщество - Николай Калугин

Продолжение первой части ежемесячной информационной подборки Rust GameDev Workgroup.

Обновления библиотек и инструментов

bracket-lib

bracket-lib (ранее rltk_rs) от @blackfuture является реализацией C++ Roguelike Toolkit на языке Rust.

Некоторые из обновлений этого месяца:

  • API ввода;
  • bracket-color теперь поддерживает поддоны и RGBA;
  • Графические (OpenGL, WASM, Amethyst) цели визуализации теперь поддерживают альфа-канал;
  • Произвольное отсечение окна на любом слое;
  • Новая система VirtualConsole;
  • Новые функции для правого выравнивания печатного текста;
  • Шрифты и размеры в терминальных слоях теперь можно переключать во время выполнения;
  • Новый тип слоя, который позволяет вам указывать положение глифа как плавающее;
  • Новый спрайт-слой;
  • Обновленные примеры.

Что произошло за месяц в rustsim №10 (Март 2020)

Основные обновления:

  • simba - пакет, который определяет набор признаков для написания кода, который может быть общим для числа дорожек входного числового значения. Эти черты реализованы с помощью f32, u32, i16, bool, а также SIMD-типов, таких как f32x4, u32x8, i16x2 и т.д.
  • Тесты: «SIMD Array-of-Structures-of-Arrays в nalgebra и сравнение с ultraviolet».
  • alga - пакет абстрактной алгебры переключен в режим пассивного обслуживания.

gfx-rs и wgpu

gfx-hal-0.5 был выпущен! Улучшения, сделанные в марте:

  • Отладочные маркеры. Теперь пользователи могут отлаживать и аннотировать части визуализированного фрейма, так что проверка его в отладчике графического процессора становится более приятной.
  • Параметры общего диапазона удалены в пользу простых структур. Это движение к более простому низкоуровневому API.
  • Добавлены функции физического устройства для NDC Y-flip и зеркального зажима сэмплера.
  • Введены советы по производительности физического устройства. Первый намек на поддержку базовой вершины/экземпляра.
  • SmallVec удален из API, он изменен, чтобы избежать выделения кучи. Раньше ему приходилось касаться кучи в нескольких наборах дескрипторов или командных буферов.
  • DX12 получил истинную поддержку привязок хранилища только для чтения. Это одно из дополнительных решений от Vulkan, которое позволяет лучше сопоставить логику пользователей с не-Vulkan бэкэндами, также используемыми WebGPU.
  • Наконец, что не менее важно, @zicklag боролся с бэкэндом OpenGL, чтобы согласовать его API с остальной частью множества, вооруженный surfman. Мы скрещиваем пальцы, чтобы добавить поддержку OpenGL в wgpu-rs.

Изменения wgpu и wgpu-rs в марте:

  • @grovesNL достиг эпической вехи в компиляции под веб, показав первый треугольник. Вскоре пользователи смогут легко компиляции под веб с помощью существующих приложений wgpu-rs. 🚀
  • Пакет wgpu-types создан для обмена типами между веб версией и нативной.
  • @lachlansneff немного улучшил положение дел с async, мы также преобразовали больше методов в асинхронные.
  • Поддержка отладочных меток.
  • История управления идентификаторами для браузеров с графическим процессором была полностью переработана и теперь работает хорошо.
  • Все объекты должным образом уничтожаются и при необходимости отслеживаются графическим процессором.
  • Возможность предоставить поверхность, чтобы выбранный адаптер мог представить ее.
  • Новый "mailbox" в настоящем режиме.

Сопутствующие проекты:

  • naga - новый собственный шейдер-переводчик достиг вехи успешной загрузки примера WGSL boids и создания для него действующего исходника Metal. 🎉
  • metal-rs получил большой вклад от @adamnemecek. Косвенное кодирование команд особенно интересно!
  • gfx-extras - это новая библиотека, которая разветвлена ​​из rendy-memory/descriptor.
  • gfx-ocean был перемещен в организацию gfx-rs и обновлен до gfx-hal-0.5.
  • gfx-portability также была обновлена.

miniquad

miniquad от @fedor_games - это безопасная библиотека кроссплатформенного рендеринга, ориентированная на мобильность и поддержку устаревших платформ. Некоторые из обновлений этого месяца:

  • пример проекта @PonasKovas, иллюстрирующий конфигурацию, зависящую от android и веб-платформы: mandelbrot.
  • первый прототип для встроенного отладочного фрейма: introspection.

Nannou v0.13

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

В этом месяце был выпущен Nannou v0.13. Некоторые из обновлений:

Миграция в wgpu-rs.

Хороший опыт работы с macOS.

Захват кадров и текстур.

Также ознакомьтесь со множеством интересных набросков сообщества: тег #nannou в Twitter.

Quest Engine Part 2: Deploying a Rust App On Android

Опубликована вторая часть серии блогов Никиты Крупицкаса по разработке игрового движка для Oculus Quest.

В этой части серии описывается, как можно создать простой проект Rust для Android - полезно, даже если вы не ориентированы на аппаратное обеспечение Oculus!

const-tweaker

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

Обсуждение: /r/rust

assets_manager

a1phyr создал пакет с именем assets_manager, который предоставляет удобный способ загрузки и кэширования внешних ресурсов. Он абстрагируется от логики файловой системы и предоставляет различные встроенные загрузчики для распространенных форматов Serde (например, TOML, JSON). Поддержка горячей перезагрузки также планируется в будущем.

Обсуждение: /r/rust

netstack v0.3.0

netstack - это пакет для игр. Требующий обмена секретом и токенами соединения. На данный момент транспорт UDP, управление соединением, сигнализация пакетов и подтверждение пакетов уже реализованы. Примеры для начала работы приведены на странице crates.io.

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

Проблемы и вклады могут быть внесены в репозиторий Netstack github. Незавершенная документация доступна на сайте Netstack docs.rs.

three-d v0.1

three-d - это средство визуализации, предназначенное как для настольных компьютеров (OpenGL), так и для веб-сайтов (WebAssembly + WebGL2), что позволяет разрабатывать 3D-приложения для desktop и легко развертывать их в Web.

В этом месяце вышел three-d v0.1. Основные функции:

  • Тонкий и низкоуровневый слой графической абстракции, который отображается один к одному с помощью API OpenGL / WebGL2.
  • Модульные абстракции среднего уровня общих графических концепций.
  • Отложенный рендер с компонентами высокого уровня.
  • Окна по умолчанию для легкой настройки.

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

Смотрите, эти примеры.

Что произошло за месяц в Mun

Mun - это язык сценариев для gamedev, ориентированный на быстрое время итерации, который написан на Rust.

Команда Mun объявила, что они получили грант в размере $ 15 тыс. В рамках программы MOSS Mission Partners для дальнейшей разработки структур данных с возможностью горячей перезагрузки.

Их мартовские обновления включают в себя:

  • сортировка ценностных структур;
  • внешние функции;
  • сборщик мусора (по умолчанию для маркировки и очистки);
  • показатели производительности;
  • исправлены ошибки и улучшено тестовое покрытие.

Oxygengine

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

Отслеживание хода проекта можно найти здесь.

Кроме того, @PsichiX начал работать над модульным редактором игр (расширяемым с помощью пользовательских плагинов) под названием Ignite, который облегчит создание игр с движком. Вы можете посмотреть на первый модуль редактора - Asset Browser:

Amethyst

Amethyst 0.15.0 был выпущен:

  • Улучшены панические сообщения на стабильной Rust.
  • Поддержка настройки уровней журнала из конфигурации.
  • Исправление рендеринга текстового поля.
  • Выбирайте несколько перекрывающихся объектов пользовательского интерфейса с помощью событий.

specs - это базовая ECS, которая поддерживает Amethyst, но существует постоянная перспектива перехода на legion. @csherratt написал отличный пост, сравнивая обе библиотеки. Также на форуме состоялась углубленная дискуссия об архетипическом и групповом дизайне ECS.

Atelier - это фреймворк для игр, управляющий ресурсами и производящий их обработку. В сочетании с legion @aclysma и @kabergstrom создали прототип редактора, демонстрирующий следующие возможности:

  • Загрузка префабов, сохранение и горячая перезагрузка;
  • Создание/удаление объекта;
  • Добавление/удаление компонентов;
  • Отменить и повторить;

Посмотрите демонстрационное видео и обсуждение на форуме.

Предпринимаются постоянные усилия по поддержки WASM в Amethyst. Проверьте руководство по вкладу и проектную доску для текущего статуса.

@ToferC поделились своим опытом использования Amethyst для создания космической боевой игры Paladin. Проверьте обзор на YouTube.

ash v0.30

ash - легкая обертка вокруг Вулкана. Последняя версия поставляется с поддержкой Vulkan 1.2 и следующих расширений:

  • VK_KHR_timeline_semaphore
  • VK_KHR_ray_tracing
  • VK_KHR_external_memory_fd

Rectangle Pack v0.1.5

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

Версия 0.1.5 добавляет реализацию для обработки ошибок для RectanglePackError.

Руководство по началу работы доступно на домашней странице проекта. Полная документация доступна в разделе rectangle-pack docs.rs.

Bonus

Просто интересная Rust gamedev ссылка из прошлого.

2019.07.16 После двух лет разработки вышла игра-головоломка «Robo Instructus» Алекса Батлера: Steam/itch.io (демоверсия доступна).

Инженер по спасению, у вас есть новое задание в далеком мире ... Robo Instructus - игра-головоломка, в которой игроки маневрируют роботом, выполняя инструкции на простом языке программирования. По мере прохождения игры игроки открывают новые функции для преодоления новых головоломок, каждую из которых можно решить несколькими способами. Чем больше вы овладеете роботом, тем более элегантными и мощными будут ваши решения. Возьмите на себя роль инженера по спасению, отправленного через космос. Используйте остроумие и упорство, чтобы раскрыть секреты этого изолированного, замороженного мира.

Проверьте вышедший трейлер. Игра написана с использованием gfx-rs (pre-ll), winit и opengl. Вы можете прочитать больше о её разработке в удивительном блоге, в котором есть много интересных постов, таких как «Robo Instructus: Behind The Scenes».

Обсуждения: /r/rust


Это все новости на сегодня, спасибо за чтение! Подпишитесь на @rust_gamedev в Twitter или /r/rust_gamedev subreddit, если вы хотите получать свежие новости!

Обсуждения этого поста: /r/rust, twitter.


Статья была переведена специально для сообщества "rust_lang_ru".

Подпишись на нас в Telegram и YouTube!