УДК 004

Разработка мобильного приложения на тематику настольных игр с использованием платформы Flutter

Косарев Глеб Станиславович – магистрант Уфимского университета науки и технологий

Аннотация: В статье рассматривается разработка клиент-серверного программного продукта на тематику настольных игр с клиентом виде мобильного приложения на базе платформы Flutter.

Ключевые слова: мобильная разработка, кроссплатформенная разработка, клиент-серверные приложения, Flutter.

Введение

Настольные игры набирают все большую и большую популярность, о чем свидетельствует предполагаемый рост мирового рынка настольных игр за период с 2017 по 2023 год на 167% [1], а также количество выпускаемых игр, которое увеличивается с каждым годом [2]. В связи с этим было принято решение о разработке программного продукта, который поможет актуальным и потенциальным игрокам с поиском игр и напарников.

Крупнейшие русскоязычные ресурсы на тематику настольных игр – сайты Tesera.ru и boardgamer.ru – содержат в себе информацию о настольных играх, но поиск напарников для игры на них можно осуществлять только посредством форума. Помимо этого, оба ресурса обладают устаревшим интерфейсом, что негативно сказывается на восприятии конечного продукта пользователями [3].

Программный продукт был реализован в виде мобильного приложения, поскольку уже сейчас доля траффика с мобильных устройств превосходит таковую с настольных компьютеров [4].

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

Для решения проблемы поиска напарников приложение позволяет пользователям организовывать свои оффлайн-мероприятия и принимать участие в чужих.

Разработка приложения состояла из трех основных этапов:

  1. Формирование архитектуры приложения;
  2. Построение модели данных;
  3. Программная реализация.

Формирование архитектуры приложения

Для упрощения масштабируемости и тестирования приложение использует принципы чистой архитектуры [5]. Основной идеей чистой архитектуры является разделение программы на слои, каждый из которых предназначен для выполнения определенной задачи. Минимальной задачей является отделение бизнес-логики от представления, что позволяет изолировано изменять или расширять отдельные части системы: так, например, имея мобильное приложение, мы можем разработать десктопное приложение, используя бизнес-логику, независимую от интерфейса.

Для следования принципам чистой архитектуры взаимодействие между клиентом и сервером организовано по протоколу REST: ответ сервера на запросы не зависит от типа клиента, что позволяет использовать одинаковый интерфейс взаимодействия на разных платформах.

Клиент приложения реализован в соответствии с архитектурным паттерном MVVM(Model-View-ViewModel), при использовании которого приложение подразделяется на 3 модуля:

  • Model, содержащий данные приложения в виде классов;
  • View, содержащий пользовательские представления;
  • ViewModel, содержащий бизнес-логику.

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

View представляет собой интерфейс приложения в виде совокупности страниц. Каждое отдельное View хранит ссылку на соответствующий ему ViewModel и содержит минимальное количество UI-логики (например, перехода на новую страницу или заполнения меню).

ViewModel является связующим звеном между данными и представлением. В отличии от Controller в паттерне MVC, ViewModel не должен хранить ссылку на View: обновление данных происходит путем технологии DataBinding, где изменения в представлении отражаются в соответствующей модели и наоборот. Однако, ViewModel хранит ссылки на Model.

ViewModel хранит основную бизнес-логику приложения и отвечает за обработку пользовательских действий с интерфейсом: например, при нажатии на кнопку вызывается соответствующий метод во ViewModel, который изменяет модель, после чего происходит обновление соответствующего View путем уведомления.

Построение модели данных

Для построения информационной модели были выделены основные сущности, которые предполагается использовать в приложении:

  1. Пользователи;
  2. Игры;
  3. Мероприятия.

Помимо этого, понадобятся отдельные сущности для решения вспомогательных задач:

  1. Оценки пользователей на игру;
  2. Заявки на участие в мероприятии;
  3. Заявки на добавление в друзья.

Описание сущностей приведено в таблице 1.

Таблица 1. Описание сущностей.

Наименование

Описание

Пользователи

Содержит информацию о пользователях (имя, город, логин и т.д.)

Игры

Содержит информацию о настольных играх (название, описание, год выхода и т.д.)

Мероприятия

Содержит основную информацию о мероприятиях (место проведения, выбранная игра, желаемое количество участников, время проведения и т.д.)

Оценки пользователей

Содержит информацию об оценках пользователя (ссылки на игру и пользователя и оценка)

Заявки на участие в мероприятии

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

Заявки на добавление в друзья

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

Для получения информации об играх был использован API ресурса boardgamegeek.com [6], хранящего крупнейшую в интернете базу знаний о настольных играх.

Структура базы данных на основе выделенных сущностей изображена на рисунке 1.

1

Рисунок 1. Структура базы данных.

Программная реализация

Серверная часть была разработана с использованием IDE PyCharm и языка программирования Python с фреймворком Django.

В качестве СУБД была выбрана PostgreSql.

Клиентская часть была реализована в IDE AndroidStudio с помощью фреймворка Flutter.

На рисунке 2 продемонстрированы страницы пользователя, игры и мероприятия.

2

Рисунок 2. Страницы пользователя, игры и мероприятия.

Заключение

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

Список литературы

  1. Global board games market value from 2017 to 2023: [Электронный ресурс] // Statista. – Режим доступа: https://www.statista.com/statistics/829285/global-board-games-marketvalue/.
  2. Number of games published by year: [Электронный ресурс] // BoardGameGeek, 9.12.2020. URL: https://boardgamegeek.com/thread/2556595/number-games-published-year.
  3. M A T Pratama, A T Cahyadi. Effect of User Interface and User Experience on Application Sales. 2020 IOP Conf. Ser// IOP Conf. Series: Materials Science and Engineering. 11.06.2020. № 879.
  4. Доля рынка мобильного трафика по сравнению с трафиком с настольных компьютеров: [Электронный ресурс] // SimilarWeb. – Режим доступа: https://www.similarweb.com/ru/platforms/russian-federation/.
  5. Robert C. Martin. The Clean Architecture: [Электронный ресурс] // Clean Coder Blog, 13.08.2013. Режим доступа: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html.
  6. BGG XML API2: [Электронный ресурс] // BoardGameGeek. – Режим доступа: https://boardgamegeek.com/wiki/page/BGG_XML_API

[social}