Клиент
В этом проекте заказчиком выступило частное лицо, изобретатель, который разрабатывает технические новшества, получает на них патент и тиражирует с целью получения прибыли.
У заказчика было программное обеспечение для AR очков, которое позволяет прицеливаться при игре на бильярде. Разработка была выполнена другим подрядчиком, и к нам попала, когда потребовалось сделать доработку ПО.
Ситуация до начала проекта
- Очки дополненной реальности Nreal Air — это высокотехнологичная разработка, которая позволяет подключиться к смартфонам на Android и iOS, планшетам, ноутбукам и игровым консолям. AR очки нового поколения можно использовать в повседневной жизни благодаря удобной и легкой конструкции. При этом каждая линза-дисплей обладает разрешением 1920×1080, что обеспечивает высокое качество изображения.
- Заказчик предоставил приложение для очков Nreal Air, которое позволяло воспроизводить прицел для игры на бильярде. Приложение написано на языке c# с применением комплекта для разработки программного обеспечения NSDK. Интерфейс приложения состоял из дефолтных кнопок управления функционалом и двух видов прицельной сетки.
- После анализа исходного кода стало понятно, что он плохо оптимизирован: на 2 вида прицельной сетки порядка полутора тысяч строк кода. Также наши разработчики выявили большое количество устаревших функций, которые больше не поддерживаются в библиотеке.
Цель и задачи проекта
Цель проекта — оптимизация исходного кода и доработка функционала приложения для очков дополненной реальности Nreal Air.
Задачи:
-
добавить новые виды прицельной сетки
(точка и Т-линия), -
сохранить имеющийся функционал
приложения, - добавить возможность стабилизации прицельной сетки во время наклонов головы.
Реализация проекта
В первую очередь, мы решили переделать интерфейс программы и оптимизировать код, чтобы обеспечить условия для поддержки и доработки ПО. Без рефакторинга кода процесс разработки мог затянуться на несколько месяцев, что противоречило договоренностям с клиентом. После оптимизации количество строк кода уменьшилось практически вдвое.
Завершив этап с оптимизацией кода приступили к доработкам. Взяв за основу функционал уже существующего и оптимизированного кода добавили необходимые прицельные сетки (точка и Т-линия).
После изучения особенностей работы NSDK стало понятно, что исходный код и дописанный нами требует огромных доработок для возможности включения и отключения стабилизации изображения.
Особенность работы камеры внутри NSDK заключается в том, что режим работы камеры определяется в момент запуска программы. Для переключения режима необходимо выйти из программы, включить другой режим камеры и заново запустить программу. В момент работы стабилизации меняется и режим взаимодействия с прицельной сеткой, поэтому нами было принято решение дописать новые методы для взаимодействия в разных режимах работы программы.
Результаты проекта
Заказчик остался доволен организацией взаимодействия с командой в процессе доработки ПО и качеством выполненной работы. В дальнейшем заказчиком планируется добавление новых прицельных сеток, что благодаря оптимизированному коду займет минимум времени.
Для самописных продуктов оптимизация кода может стать обязательным подготовительным этапом, который решит сразу несколько задач: улучшит скорость загрузки, скорость ответа сервера или скорость работы с кодом, повысит стабильность, уменьшит объем кода.