За последние 10 лет игровая индустрия сильно изменилась — появились новые площадки для дистрибуции игр и игровые сервера. Распределение пользователей по этим площадкам бросает новые вызовы разработчикам игр: они обладает уникальной авторизацией, API для доступа к функциям платформы (например, информация о пользователе, друзья, matchmaking) и требованиям к платежной системе. Поэтому возникла потребность создать собственный кроссплатформенный инструмент для публикации игр и универсального управления ими на разных площадках.
С конца 2019 года Xsolla занимается разработкой такого решения. Сейчас для ключевого продукта — Xsolla Launcher — нужно разработать новый функционал, чтобы создать конкурентные преимущества и заинтересовать разработчиков.
Launcher — это кроссплатформенное десктопное приложение, набор библиотек и веб-сервисов, которые обеспечивают дистрибуцию игры как standalone, так и на площадке, а также предоставляют единый платформ-независимый API для доступа к игровым серверам.
Основные языки:
Кросс платформенное приложение (Windows, MacOS, Linux), ядро пишется на C++/Qt, GUI - QML
SPA приложение на React+Redux
Техническая задача, которая значительно упрощает внутреннюю разработку продукта, интеграцию крупных клиентов, а также дает гибкие возможности для кастомизации продукта партнерами.
Суть задачи: разделение монолитной архитектуры Launcher Desktop на набор динамически загружаемых библиотек и исполняемых файлов для Win, macOS и Linux. Кроме того, задача енейблит все остальные задачи.
Продажа и дистрибуция загружаемого контента (DLC) внутри лаунчера. Включает в себя:
Синхронизация настроек и прогресса игры на разных устройствах пользователя. Прототип - Steam Cloud. Включает в себя:
Новый (либо старый) дизайн лаунчера на базе технологии Electron.js для интерфейса и ядро на базе Launcher Toolkit.
The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.