getLocus.io — онлайн-комнаты для групповых встреч

Сервис, который мы сделали, когда не смогли играть в офлайне по известным весенним причинам.

Всем привет! Наша команда до марта 2020 проектировала, тестировала и проводила деловые игры (иногда больше похожие на хакатоны), и разумеется с началом самоизоляции мы столкнулись с невозможностью проведения наших мероприятий.

Мы пробовали в Zoom, Slack, Discord с параллельными чатами в Telegram, но проблема была в том, что играющие не могли оперативно собираться вместе, расходиться по небольшим группам, потом опять собираться вместе, потом расходиться чуть в другом составе и так несколько раз.

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

Как мы работали

Нас вдохновили истории, когда школьные уроки и рабочие встречи начали проводить в Minecraft или Half-Life. Мы хотели сделать что-то подобное, только более доступное и простое. Посмотрев решения, которые так или иначе нам могут подходить, мы остановились на сервисе Tokbox: он обеспечивал потоковое видео и позволял регулировать громкость звука.

На базе сервиса Tokbox были сделаны spatial.chat, miro.com, remo.co, и нам показалось, что это показатель качества (спойлер: чуть позже мы поняли, что это не совсем так).

В самом начале нам было важно проверить, что:

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

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

getLocus.io — онлайн-комнаты для групповых встреч

Сначала мы боролись с ограничениями сервиса Tokbox

Во-первых, не удавалось настроить громкость звука на устройствах с iOS, что для нас было очень критично. Во-вторых, не было возможности отслеживать, сколько человек в онлайне в том или ином пространстве.

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

В-четвертых, и так очень недешевый сервис tokbox’а openTok почему-то насчитывал нам лишние минуты использования, причем настолько ощутимо, что мы приняли решение разрабатывать еще и свой собственный сервис для передачи видеопотока и полностью отказаться от Tokbox.

В начале мая стало понятно, что кажется у нас получается сделать сервис, в котором мы нуждаемся, и мы увеличили количество задач.

В мае мы занимались

  • разработкой сервиса для передачи видеопотока;
  • оптимизацией существующей системы: рефакторинг, снижение нагрузки на клиента;
  • добавлением новых фич: расширить список того, что пользователь может выложить (картинки, PDF, ссылки, видео), добавить «микрофон» и “mute” для Ведущего;
  • кастомным дизайном интерфейсов.

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

getLocus.io — онлайн-комнаты для групповых встреч

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

Итого, как выглядит работа в getLocus сейчас

  • ‎Под онлайн-встречу, через личный кабинет, организатор встречи создает пространство и рассылает ссылку-приглашение участникам.
  • ‎Для подключения к пространству достаточно ссылки-приглашения, она одинакова для всех гостей. Далее все как в обычных текстовых чатах — придумываешь себе ник и нажимаешь «войти», никаких лишних действий.
getLocus.io — онлайн-комнаты для групповых встреч
  • ‎К пространству можно подключиться с любого устройства, на котором есть браузер. Но, конечно, на планшетах и десктопах работать с пространством куда удобнее.
getLocus.io — онлайн-комнаты для групповых встреч
  • ‎Пространства реализованы как white board, на котором можно свободно размещать медиа-объекты, в том числе доступно свободное перемещение своего аватара с видеосвязью. При этом, чем дальше вы находитесь от других участников, тем меньше вы их слышите, а они вас.
getLocus.io — онлайн-комнаты для групповых встреч
  • Если вы являетесь создателем пространства, у вас есть возможность выдавать/забирать микрофоны всем участникам — эта функция позволяет обойти звуковой барьер, если вам важно, чтобы вас слышали на любом расстоянии.
getLocus.io — онлайн-комнаты для групповых встреч
  • ‎В пространство можно выкладывать изображения размером до 2 МБ, свободно их трансформировать и размещать по пространству. Картинки можно использовать просто как фон или же выкладывать важный контент. Например, размещение скриншотов с текстом для нас оказалось более удобным, чем просто выкладывание текстовых файлов в текстовый чат.
  • ‎Можно синхронно смотреть ролики/трансляции с YouTube — паузой и воспроизведением управляет выложивший ссылку на видео.
  • ‎Можно расшаривать экран, причем не только весь или конкретного приложения, но и даже отдельные вкладки браузера.
  • ‎В пространстве действует ограничение на число активных посетителей, до 50 человек единовременно, для организации более крупных мероприятий мы сделали инструмент для переходов между пространствами, по аналогии с комнатами в чатах. Чтобы перейти в другое пространство, надо «встать» на «переход». Помимо этого, тестируем увеличение лимита до 100 участников на одну комнату.
getLocus.io — онлайн-комнаты для групповых встреч
  • В пространстве также действует чат, в котором можно общаться и скидывать материалы, а также он может быть полезен, если у участников нет микрофона/камеры или слабое соединение с интернетом.
getLocus.io — онлайн-комнаты для групповых встреч

Итого

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

Спасибо команде за вовлеченность, а пользователям за фидбек, обратная связь помогает нам стать лучше.

22
28 комментариев