Используемые технологии

Примечание

Этот материал находится в состоянии наполнения информацией.

Основная информация

Реальный виртуальный мир Универсо на текущий момент имеет клиент-серверную архитектуру и идёт проработка возможности внедрения, хотя бы в отдельных частях децентрализованной / распределённой архитектуры. Для Универсо используется уже довольной большой перечень технологий и он постепенно увеличивается.

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

Django (бэкенд)

Вся основная логика Универсо реализована в бэкенде на Python-фреймворке Django. Использование Django обусловлено следующими причинами:

  1. Соответствие Django основным нашим требованиям по безопасности, в том числе использование открытой лицензии, которая не позволяет ограничить в дальнейшем использование этой технологии в результате возможной международной политической нестабильности, в том числе санкций и т.д.
  2. Наличие большого опыта использования Django у основных членов команды.
  3. Высокая скорость создания логики в том числе сложной логики.
  4. Перспектива использования PyPy. для JIT-компиляции и повышения производительности. Это будет возможно в новой версии в которой будет поддержка Python 3.7, разработчики объявили это одним из своих текущих приоритетов.

Техническая информация в статье: «Структура Django бэкенда».

GraphQL (API)

Взаимодействие бэкенда с внешним миром, на текущий момент в первую очередь с клиентским приложением, осуществляется через API на GraphQL. Используется его реализация для Python / Django - Graphene. Использование GraphQL / Graphene обусловлено следующими причинами:

  1. Как и в случае с Django, соответствие нашим основным требованиям по безопасности, в том числе использование открытой лицензии.
  2. Наличие большого опыта использования GraphQL у основных членов команды.
  3. Большая возможность для оптимизации запросов, что особенно важно в момент начальной разработки клиентского приложения, пока там не будет реализована своя локальная СУБД, в которой будет кэшироваться различная информация.

Godot Engine (клиентское приложение и тестовое серверное приложение)

Основное клиентское приложение реализуется на движке Godot. Использование Godot Engine обусловлено следующими причинами:

  1. Godot является на текущий момент по сути единственным в своём роде опенсоурсным движком, который активно нагоняет наиболее крупные движки UE4 и Unity, который соответствует основным нашим требованиям по безопасности, в том числе, как было выше уже упомянуто, использование открытой лицензии, которая в случае с игровыми движками, на наш взгляд очень актуальна в случае возможной международной политической нестабильности, в том числе тех самых санкций. Потому что игровые движки легко попадают по понятие «двойных технологий», так как в них возможна реализация локаций условного / перспективного противника и прохождения в них боевых тренировок в условиях максимально приближенных к реальным, в том числе с использованием технологий VR.
  2. Использование в качестве основного языка программирования специального питонообразного языка GDScript, так как у основных членов команды большой опыт работы с Python.
  3. Наличие поддержки создания Универсо от русскоязычного сообщества разработчиков на Godot.
  4. Перспектива использования JIT-компиляции у GDScript и повышения производительности. Возможность JIT-компиляции будет в Godot 4, который планируется к выпуску в стабильной версии в ближайшие месяцы. На развитие движка, в том числе на развитие GDScript, разработчиками был получен мегагрант. в размере 250 000 USD по программе Epic MegaGrant.
  5. Интеграция Godot через встроенную технологию GDNative с различными языками программирования. Разработчиками движка поддерживаются C и C++, которые возможно использовать для создания наиболее высокопроизводительных компонентов, если где-то будет не достаточно JIT-компиляции GDScript.
  6. Перспектива в рамках разработки Универсо создания на основе Godot своего шаблона / движка с более высокой абстракцией и привлечение к его развитию дополнительного сообщества.
  7. Перспектива использования для распространения информации различных ресурсов международного сообщества разработчиков Godot, как одного из наиболее амбициозных / крупных проектов на Godot.

Дополнительная информация в статье: «Клиентское приложение Универсо».

Техническая информация в статье: «Структура клиентского приложения».

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

Vue / Vuex / Nuxt (Веб-клиент)

Веб-клиент Универсо реализуется на JS-фреймворке Vue.js, точнее на фреймворках этого фреймворка Vuex / Nuxt. Использование Vue.js обусловлено следующими причинами:

  1. Это активно развивающий фреймворк со свободной лицензией.
  2. Наличие большого опыта использования Vue.js у основных членов команды.
  3. Низкий порог входа, в том числе потому что много качественной документации и обучающих материалов на разных языках.
  4. Проект на Godot Engine тоже можно экспортировать в веб-версию, но это будет слишком тяжелое решение для многих простых компьютеров, задача Веб-клиента предоставить менее требовательный к ресурсам способ использовать различный функционал Универсо, пока весь кроме игрового. Для этого хорошо подходит Vue.js.

NativeScript-Vue (Мобильное приложение)

Для кроссплатформенной реализации нативных мобильных приложений для Android и iOS, используется NativeScript-Vue. Использование NativeScript обусловлено следующими причинами:

  1. NativeScript, в том числе его плагин NativeScript-Vue это активно развивающиеся технологии со свободной лицензией.
  2. Возможность создавать по настоящему нативные приложения для двух основных на текущий момент мобильных платформ, для Android и iOS.
  3. Наличие большого опыта использования Vue.js у основных членов команды, позволивший легче освоить NativeScript-Vue.

Sphinx Documentation (Управление документацией)

Для управления документацией используется Sphinx Documentation, точнее его реализация на сервисе ReadTheDocs. Использование Sphinx Documentation / ReadTheDocs обусловлено следующими причинами:

  1. Популярное решение в среде разработчиков программного обеспечения и не только.
  2. Возможность версионирования документации и переключения между версиями.
  3. Возможность создания разных языковых версий и переключения между языками.