// Мобильные приложения
// Мобильные приложения
Discord — проприетарное приложение, созданное полностью на открытых технологиях. Сегодня Discord не просто voip с элементами мессенджера по типу Whatsapp — это полноценная социальная сеть с поддержкой кросс платформы, и большим функционалом.
Начиная с «платформы для общения геймеров», Discord смогли расширить свой функционал и стать полноценной платформой для общения, включающей преимущества минимализма мессенджеров, с большим многообразием надстроек.
Перед переходом к техническим деталям разработки, рассмотрим целесообразность занятия ниши продукта похожего на Discord. Через следующие тезисы.
Изначально Discord разрабатывался как структура для геймеров: Следовательно, его современный функционал, имеет не до конца приветливый интерфейс, и многие вещи опираются на Api. Что делает его не настолько удобным для рядового пользователя, не пользовавшегося раньше схожим инструменталом с /bash командами для управления клиентом.
Discord — очень тяжеловесное приложение: Чем больший функционал он реализует, тем более тяжеловесным становиться клиент. Уже сейчас практически невозможно пользоваться Discord на ПК, ноутбуках и нетбуках с малым кол-вом ОЗУ и небольшой тактовой частотой процессора. И на более мощных машинах, тоже существуют проблемы с запуском и оптимизацией клиента. В целом Discord страдает болезнью «Chrome» — когда изначально компактное и быстрое приложение, в течение разработки становиться значительно более тяжеловесным чем приложение, которое оно должно было изначально заменить.
Для создания конкурента, не нужно реализовывать сразу все функции: можно и нужно сфокусироваться на чем-то одном. Либо на VoIP и IRC. Либо на реализации всего остального функционала, превращающего Discord из корпоративного мессенджера в социальную сеть.
Протоколы оптимизации передачи аудио и видеоданных шагнули далеко вперед: Не обязательно разрабатывать с нуля свой протокол передачи данных, для обеспечения конфиденциальности и быстроты одновременно. Можно воспользоваться готовыми протоколами, обеспечив себе скорость, дешевизну и отказоустойчивость готового ПО. Как пример. В качестве альтернативы можно использовать децентрализованный протокол Matrix, который не нуждается в создании ряда серверов, для хранения переписки. Тоже касается и протоколов оптимизации передачи аудио и видеоданных.
Для обеспечения множества IRC-серверов, не обязательно иметь физические сервера: на изначальном этапе, можно арендовать облачные мощности, или используя протоколы по типу Matrix — организовать передачу данных по системе P2P.
Неудобство навигации среди пользователей и мелкие недочеты: несмотря на то, что Discord значительно упрощает интерфейс, многий функционал остается непривычен для большинства пользователей. Можно взять за основы стандарты, используемые в более популярных альтернативах приложений как telegram в качестве базы для собственного GUI.
Переходя от теории к практике, что нужно для того чтобы разработать минимально работоспособный клон Discord.
Для этого разработайте базовый функционал, на основе которого будете в дальнейшем проводить модернизацию. И речь идет не о банальном «создайте мессенджер с видеосвязью, добавьте сложную иерархию и натяните Gui», а о вещах, которые позволят создать действительно конкурента Discord и предложить пользователям УПП (уникальное продуктовое предложение).
Определите подходящий алгоритм для передачи текста, звука и видео. Основная сложность между выбором простоты и оптимизации. Не всегда то, что хорошо оптимизировано использует трафик, легко декодируется на клиентском ПК.
Определите подходящий контейнер для всего контента. Discord в качестве контейнера использует собственные выделенные сервера. Альтернативой этому может послужить P2P, когда ничего из передаваемого не храниться на серверах. При этом важно обеспечить механизмы, чтобы данные не терялись какое-то время.
Проработайте Api. Никто не сможет улучшить программный продукт лучше, чем это сделают энтузиасты. Тот же Discord большей частью ботов и функционалом обеспечен именно коммьюнити. Даже самые знаменитые боты, отвечающие за возможность легально прослушивать лицензионный контент без рекламы.
Оптимизируйте Gui. Маневрируя между гибкостью настроек, и удобством базового пресета. Проще всего воспользоваться стандартами дизайна, и не выдумывать велосипед.
Заложите основы кроссплатформенности на раннем этапе разработки. Подберите фреймворки, языки программирования и другие средства разработки таким образом, чтобы код минимально отличался на всех устройствах. Хороший пример «виртуальная машина Java» или её более оптимальный вариант для разработки — elixir.
И уже имея эти наработки, приступайте к разработке своего MVP.
Перед определением подхода к монетизации продукта — рассмотрим какую аудиторию смог под себя подмять Discord, какие доходы у него, и как соотноситься общее кол-во пользователей к подписчикам и платежеспособной аудитории
Все данные предоставлены статистическим агрегатором.
При этом цифра резко возросла в 2021-ом году с введением платной кастомизации серверов Discord.
Монетизация продукта по типу Discord отнюдь не такая очевидная. Имея раскрученный бренд — компания смогла привлечь всего 4% подписчиков. Что подразумевает, что люди не готовы платить за продукт по типу Discord. Боты и Api по большей части распространяются на donationware модели.
Следовательно, к продукту нужен другой подход.
Здесь важно соблюсти баланс. Приложение должно оставаться комфортным для использования, и при этом мотивировать к подписке, или другим денежным вливаниям. Совсем другая бизнес модель внедряется при построении приложения для такси. Модель оплаты за комиссию можно внедрить в Дискорд при условии открытия внутреннего интернет-магазина.
Поэтому сразу отметаем рекламу, которая будет скорей раздражать, и технические ограничения (качество стриминга, качество связи, ограничения по конференциям).
И остаётся довольно нетривиальная, но при этом рабочая схема мягкой монетизации — Услуги кастомизации.
Кастомизация IRC серверов, на которых пользователь будет проводить время. Кастомизация его собственного аккаунта. При этом всё должно быть без ущемления основному функционалу. Учитывая, что Discord изначально был ориентирован на аудиторию геймеров, то и для монетизации можно применять методы геймификации из маркетинга.
Главное не увлечься, и не превратить коммуникатор, в продукт с battlepass и гачи механиками.
Чтобы разработать клон Discord — нужно разбираться в технической составляющей программирования такого гиганта.
В основе программы находится базовое трио — C++; Js; Python. В дополнении к этому используется модуль React для создания GUI. Elixir с его виртуальной машиной, в качестве альтернативы Java. За счет Elixir во многом обеспечивается кроссплатформенность.
Rust — специфический язык программирования, с улучшенным менеджментом ресурсов памяти. Во многом базируется на синтаксисе C.
Итого имеем:
Если рассматривать продукт в режиме базового запуска. То есть базовый минимум, который нужно учесть с поправкой на все сказанное относительно оптимизации протоколов. А именно.
База, без которой нельзя создать социальную сеть. А именно средства для доставки сообщений. В дискорд это выделено через бесчисленные выделенные сервера. Где каждый сервер — это отдельный канал (отдельный чат).
В качестве работоспособной альтернативы, может выступить IRC с использованием P2P сетей. В этом случае доставка сообщений целиком ляжет на пользователей самой системы, а это очень важно при разработке приложения доставки еды. Каждый из пользователей чата будет его локальным хранилищем данных. Будь то аудио, видео, текст или файлы.
Пожалуй, главная функция и камень преткновения. Сегодня на рынке VoIP существует большое количество готовых протоколов и оптимальных решений.
Воспользоваться готовым, или разрабатывать свой протокол данных. Рассчитывать на мощные устройства, или на старые ноутбуки и смартфоны. Как поступать с передачей данных при плохой связи. Вот минимальный список проблем, которые нужно решить, занимаясь реализацией этой функции.
Для клона Discord недостаточно просто реализовать функцию трансляции экрана другим пользователям. Оптимальным решением станет подключение уже существующих сервисом стриминга и программ захвата экрана — Н-Р интеграция OBS.
Хранение данных в стиле Discord можно сделать несколькими путями. Через аренду серверов для хранения данных. Через создание собственных серверов. Или оформить все через P2P при помощи принудительного копирования информации всем участникам «сервера/канала/комнаты/чата».
У каждого из подходов есть свои преимущества и недостатки, как на этапе эксплуатации, так и на этапе разработки.
Одной из слабых сторон современного Discord — называют его gui. Он потерял большую часть гибкости, при этом обрел «попсовость» следуя стандартам. При разработке клона Slack или Discord, чтобы сделать его конкурентоспособным, необходимо оптимизировать интерфейс, сделать его легким, читаемым, и при этом оставить возможность для модернизации.
Подход можно взять у бесплатного аудиопроигрывателя Aimp, который предлагает пользователям кардинально менять интерфейс при помощи готовых скин паков, или написать свой GUI
Лучше озаботиться внутренним скриптовым языком на этапе ядра будущего приложения. Как уже упоминалось ранее. Возможности для самостоятельной модернизации позволят значительно расширить функционал за счет коммьюнити уже на ранних этапах.
Помимо самой разработки API, необходимо озаботиться и SDK для функционала.
Discord приложение имеет богатый набор функция для корпоративного использования, особенно в гейм индустрии. Команда разработчиков продолжают его обновлять. Каждый месяц выходят новые функции, которые делают приложение более интересным для пользователей. Стоимость мобильной разработки приложения как Discord составит от 200,000 до 500,000 долл и займет более 6 месяц. Одним из самых сложны модулей это протокол взаимодействия между пользователями. Данное решение позволит отправлять сотни тысяч сообщений в день. Стоит заметить, реализация этого модуля займет около 3-4 недель работы. Конечно, учитывая ограниченный бюджет можно начать с МВП версии за 40,000 – 80,000 долл. В этом случае ваше приложение будет иметь ограниченный набор функций с потенциалом масштабирования.