Используемые технологии¶
Примечание
Этот материал находится в состоянии наполнения информацией.
Основная информация¶
Реальный виртуальный мир Универсо на текущий момент имеет клиент-серверную архитектуру и идёт проработка возможности внедрения, хотя бы в отдельных частях децентрализованной / распределённой архитектуры. Для Универсо используется уже довольной большой перечень технологий и он постепенно увеличивается.
В рамках настоящей статьи, в первую очередь будут описаны ключевые технологии.
Django (бэкенд)¶
Вся основная логика Универсо реализована в бэкенде на Python-фреймворке Django. Использование Django обусловлено следующими причинами:
- Соответствие Django основным нашим требованиям по безопасности, в том числе использование открытой лицензии, которая не позволяет ограничить в дальнейшем использование этой технологии в результате возможной международной политической нестабильности, в том числе санкций и т.д.
- Наличие большого опыта использования Django у основных членов команды.
- Высокая скорость создания логики в том числе сложной логики.
- Перспектива использования PyPy. для JIT-компиляции и повышения производительности. Это будет возможно в новой версии в которой будет поддержка Python 3.7, разработчики объявили это одним из своих текущих приоритетов.
Техническая информация в статье: «Структура Django бэкенда».
GraphQL (API)¶
Взаимодействие бэкенда с внешним миром, на текущий момент в первую очередь с клиентским приложением, осуществляется через API на GraphQL. Используется его реализация для Python / Django - Graphene. Использование GraphQL / Graphene обусловлено следующими причинами:
- Как и в случае с Django, соответствие нашим основным требованиям по безопасности, в том числе использование открытой лицензии.
- Наличие большого опыта использования GraphQL у основных членов команды.
- Большая возможность для оптимизации запросов, что особенно важно в момент начальной разработки клиентского приложения, пока там не будет реализована своя локальная СУБД, в которой будет кэшироваться различная информация.
Godot Engine (клиентское приложение и тестовое серверное приложение)¶
Основное клиентское приложение реализуется на движке Godot. Использование Godot Engine обусловлено следующими причинами:
- Godot является на текущий момент по сути единственным в своём роде опенсоурсным движком, который активно нагоняет наиболее крупные движки UE4 и Unity, который соответствует основным нашим требованиям по безопасности, в том числе, как было выше уже упомянуто, использование открытой лицензии, которая в случае с игровыми движками, на наш взгляд очень актуальна в случае возможной международной политической нестабильности, в том числе тех самых санкций. Потому что игровые движки легко попадают по понятие «двойных технологий», так как в них возможна реализация локаций условного / перспективного противника и прохождения в них боевых тренировок в условиях максимально приближенных к реальным, в том числе с использованием технологий VR.
- Использование в качестве основного языка программирования специального питонообразного языка GDScript, так как у основных членов команды большой опыт работы с Python.
- Наличие поддержки создания Универсо от русскоязычного сообщества разработчиков на Godot.
- Перспектива использования JIT-компиляции у GDScript и повышения производительности. Возможность JIT-компиляции будет в Godot 4, который планируется к выпуску в стабильной версии в ближайшие месяцы. На развитие движка, в том числе на развитие GDScript, разработчиками был получен мегагрант. в размере 250 000 USD по программе Epic MegaGrant.
- Интеграция Godot через встроенную технологию GDNative с различными языками программирования. Разработчиками движка поддерживаются C и C++, которые возможно использовать для создания наиболее высокопроизводительных компонентов, если где-то будет не достаточно JIT-компиляции GDScript.
- Перспектива в рамках разработки Универсо создания на основе Godot своего шаблона / движка с более высокой абстракцией и привлечение к его развитию дополнительного сообщества.
- Перспектива использования для распространения информации различных ресурсов международного сообщества разработчиков Godot, как одного из наиболее амбициозных / крупных проектов на Godot.
Дополнительная информация в статье: «Клиентское приложение Универсо».
Техническая информация в статье: «Структура клиентского приложения».
На Godot так же реализуется тестовое серверное приложение, которое по плану будет частью бэкенда, для исполнения некоторых сценариев в Универсо, связанных в том числе с моментом когда пользователи отключены, но их объекты работают в автоматическом режиме.
Vue / Vuex / Nuxt (Веб-клиент)¶
Веб-клиент Универсо реализуется на JS-фреймворке Vue.js, точнее на фреймворках этого фреймворка Vuex / Nuxt. Использование Vue.js обусловлено следующими причинами:
- Это активно развивающий фреймворк со свободной лицензией.
- Наличие большого опыта использования Vue.js у основных членов команды.
- Низкий порог входа, в том числе потому что много качественной документации и обучающих материалов на разных языках.
- Проект на Godot Engine тоже можно экспортировать в веб-версию, но это будет слишком тяжелое решение для многих простых компьютеров, задача Веб-клиента предоставить менее требовательный к ресурсам способ использовать различный функционал Универсо, пока весь кроме игрового. Для этого хорошо подходит Vue.js.
NativeScript-Vue (Мобильное приложение)¶
Для кроссплатформенной реализации нативных мобильных приложений для Android и iOS, используется NativeScript-Vue. Использование NativeScript обусловлено следующими причинами:
- NativeScript, в том числе его плагин NativeScript-Vue это активно развивающиеся технологии со свободной лицензией.
- Возможность создавать по настоящему нативные приложения для двух основных на текущий момент мобильных платформ, для Android и iOS.
- Наличие большого опыта использования Vue.js у основных членов команды, позволивший легче освоить NativeScript-Vue.
Sphinx Documentation (Управление документацией)¶
Для управления документацией используется Sphinx Documentation, точнее его реализация на сервисе ReadTheDocs. Использование Sphinx Documentation / ReadTheDocs обусловлено следующими причинами:
- Популярное решение в среде разработчиков программного обеспечения и не только.
- Возможность версионирования документации и переключения между версиями.
- Возможность создания разных языковых версий и переключения между языками.