Кубасов Е.В., Чернышова А.В. Особенности программной реализации клиент-серверного приложения «Шахматы».
Выполнен сравнительный анализ популярных сайтов для игры в шахматы, представлены основные требования к разработке приложения для игры в шахматы.
В рамках статьи также рассмотрена специфика программной реализации приложений для игры в шахматы, выделены достоинства и недостатки существующих решений,
а также приведён пример реализации основной функциональной части приложения.
Annotation:
Kubasov E.V., Chernyshova A.V. Features of the software implementation of the client-server application “Chess”.
A comparative analysis of popular sites for playing chess has been carried out, and the basic requirements for developing an application for playing chess have been presented.
The article also examines the specifics of software implementation of applications for playing chess, highlighting the advantages and disadvantages of existing solutions,
and also provides an example of the implementation of the main functional part of the application.
Ключевые слова: игра «Шахматы», Houdini, Stockfish Komodo, анализ требований, база данных.
Keywords: game «Chess», Houdini, Stockfish Komodo, requirements analysis, database.
Введение
Для современного человека доступ в интернет стал неотъемлемой частью и уникальным инструментом в повседневной жизни.
Он стремительно заменил книги, предложив доступность разнообразной информации, всевозможные игры, инструменты, помогающие в повседневной жизни.
Игра «Шахматы» [1] является одной из самых популярных игр во всём мире, суть игры заключается в том, что игроки поочерёдно делают ходы.
Первый ход делают белые. За исключением взятия на переходе и рокировки. Ход заключается в том, что игрок перемещает одну из своих фигур на другое поле по определённым правилам.
Игра «Шахматы» по сети Internet как раз одна из тех самых всевозможных игр, в которую можно играть при помощи разнообразных веб-сайтов или приложений.
Сетевая игра «Шахматы» предоставляет возможность с особым удовольствием и комфортом играть с пользователями со всего мира, без необходимости находиться рядом с соперником,
достаточно быть поблизости от устройства с выходом в сеть Internet.
Чтобы обеспечить сетевую игру в «Шахматы» необходимо разработать клиент-серверное приложение с регистрацией пользователей, аутентификацией, сохранением хода матча, результата матча,
сохранением статистики игр и т.д. Такое приложение может быть представлено в виде сайта, может быть мобильным приложением для игры на смартфоне или планшете.
Повышенный интерес к сайтам для игры в «Шахматы» обеспечивает высокую актуальность темы исследования. Чтобы оценить особенности программной реализации такого приложения необходимо
сделать сравнительный анализ популярных программных решений игры «Шахматы», которые сейчас представлены для пользователей на рынке бесплатных или платных программ.
Сравнительный анализ реализации популярных шахматных сайтов
Для проведения сравнительного анализа следует выбрать 3 популярных шахматных сайта: “Chess.com”, “Lichess.org”, “ChessKing.org”.
Для анализа партий Chess.com использует движок Komodo [2] — это шахматный движок, который является одним из сильнейших движков,
наряду со Stockfish [3] и Houdini [4], занимает лидирующие позиции в известных рейтинговых
списках движков.
Каждый рассматриваемый сайт имеет свои преимущества и недостатки (см. таблицу 1).
К примеру, сайт Lichess.org предлагает бесплатный доступ и простой интерфейс.
В то время, как ChessKing.com является платным, но обладает более удобным интерфейсом и возможностью получить оценку своего игрового уровня.
Chess.com также предлагает интересные возможности для обучения и проведения онлайн турниров, но его недостатком является сложный интерфейс.
Таблица 1 — Сравнительный анализ рассмотренных сайтов
Сайт
Chess.com
Lichess.org
ChessKing.org
Бесплатный доступ
Частично
Да
Нет
Рейтинговая система
Есть
Есть
Есть
Онлайн турниры
Есть
Есть
Есть
Обучающие материалы
Есть
Есть
Есть
Количество пользователей
Высокое
Высокое
Среднее
Интерфейс
Сложный
Простой
Удобный
Техническая поддержка
Да
Да
Да
Каждый из рассматриваемых сайтов использует различные средства реализации backend-серверов (см. таблицу 2).
Выбор конкретных средств зависит от потребностей сайтов, масштаба проекта, требований к производительности и предпочтению разработчиков.
Использование различных средств реализации backend’а может помочь в создании эффективного и надёжного шахматного сайта для пользователей.
Для создания frontend рассматриваемых шахматных сайтов (см. таблицу 3) используются различные технологии и инструменты, такие как HTML, CSS, JavaScript, фреймворки и
протоколы взаимодействия с backend-частью. Выбор конкретных средств зависит от требований к дизайну, интерактивности, производительности и функциональности пользовательского
интерфейса. Использование современных технологий frontend-разработки поможет создать удобный и привлекательный интерфейс для пользователей шахматных сайтов.
Основные требования к разработке клиент‑серверного приложения «Шахматы»
Бизнес‑требования:
сайт должен обеспечивать безопасную регистрацию новых пользователей и аутентификацию зарегистрированных пользователей;
пользовательские профили должны содержать минимально необходимую функциональность для аутентификации и обеспечения безопасности;
сайт должен обеспечивать надёжное и безопасное хранение всех данных пользователей;
база данных сайта должна обеспечивать высокую доступность и отказоустойчивость;
сайт должен иметь механизмы обработки сыгранных матчей для нахождения лучших ходов;
сайт должен эффективно использовать память устройства для минимизации потребления ресурсов и повышения производительности;
сайт должен предоставлять возможность выбора языка интерфейса для удовлетворения потребностей пользователей разных стран и культур;
система мультиязычной поддержки должна быть гибкой и легко масштабируемой для добавления новых языков в будущем;
серверная часть приложения должна обеспечивать высокий уровень безопасности для пользовательских аккаунтов, чтобы предотвратить несанкционированный доступ к личной информации;
сайт должен иметь возможность выбрать тип игры по сети или против ботов.
Функциональные требования:
сайт должен обеспечить возможность регистрации новых пользователей с использованием электронной почты или номера телефона;
для безопасной аутентификации пользователей должны использоваться сильные алгоритмы хеширования паролей;
сайт должен использовать алгоритмы машинного обучения и анализа игр для обнаружения лучших ходов;
обновления должны происходить автоматически и прозрачно для пользователя, без необходимости его участия;
сайт должен предоставлять выбор языка интерфейса при первом входе на сайт и в настройках профиля;
система мультиязычной поддержки должна автоматически переводить текстовые элементы интерфейса на выбранный язык;
сервер сайта должен реализовывать механизмы двухфакторной аутентификации, блокировки аккаунта при подозрительной активности и уведомления об изменениях в аккаунте.
Нефункциональные требования:
безопасность: система должна быть защищена от несанкционированного доступа;
производительность: система должна быть способна обслуживать необходимое количество пользователей без снижения производительности;
техническое обслуживание: система должна быть проста в обслуживании и обновлении;
надёжность: система должна быть надёжна и соответствовать требованиям пользователей;
юзабилити: система должна быть проста в использовании;
юридические вопросы: система должна соответствовать всем применимым законам и правилам;
локализация: система должна быть доступна и понятна любому пользователю вне зависимости от их языков.
Сервер сайта должен осуществлять бесперебойную работу при различных входных данных вне зависимости от полученного результата.
Для обеспечения безопасности сайта можно выделить следующие требования:
безопасная аутентификация;
авторизация: управление правами доступа к данным в базе данных в СУБД PostgreSQL с использованием ролей и привилегий, ограничение доступа к конфиденциальной информации.
Специфика шахматных движков
Stockfish - один из самых популярнейших и передовых шахматных движков в мире.
Находится в свободном доступе, что позволяет любому желающему использовать его, участвуя при этом в его развитии и улучшении.
Рассматриваемый движок использует передовые алгоритмы, технологии и постоянно обновляется сообществом, тем самым оставаясь всё время популярным.
Глубокий поиск и высокая скорость обработки шахматного матча позволяет ему анализировать всевозможные позиции за короткий промежуток времени, тем самым делая его одним из
самых лучших шахматных движков.
Также существуют такие шахматных движки, как Komodo и Houdini.
Komodo и Houdini - два популярных шахматных движка, которые также, как и Stockfish отличаются высокой эффективностью и сильной игрой.
Движок Komodo использует многоядерность процессора для более быстрого и эффективного анализа позиций, тем самым ускоряя обработку шахматного матча и нахождения лучших ходов.
Houdini же популярен благодаря своим вычислительным способностям и анализом матча.
Также имеется интересный факт, что данный движок весьма популярен на соревнованиях, где используются компьютерные программы по шахматам, и официально признан одним из лучших
шахматных движков в мире.
Рассмотренные движки являются одними из самых популярных в мире и каждый из них имеет свои преимущества и недостатки (см. таблицу 4).
При выборе шахматного движка следует рассматривать пользовательские потребности и предпочтения.
Таблица 4 — Шахматные движки
Движок
Преимущества
Недостатки
Stockfish
Высокая скорость, что позволяет быстрее находить лучших ходы.
Хорошая оценка позиций, помогает лучше оценить текущее положение на шахматном столе,
тем самым принимая решения в ходе игры.
Играет слишком агрессивно, что не позволяет эффективно сосредоточиться на обороне.
Игнорирует опасность, в том случае, если при расчёте посчитает, что это выгодно для достижения лучшего результата
Komodo
Хорошо понимает планы, этот шахматный движок способен глубоко анализировать позиции, тем самым позволяет себе просматривать ходы, которые возможны в будущем.
Может проводить качественный и глубокий анализ матча.
Не может быстро анализировать, в играх, где присутствует ограниченное время, он может показать себя менее сильно.
Потребляет намного больше других шахматных движков памяти для анализа матча.
Houdini
Хорошая оценка позиции, выбирает ходы, которые могут привести к лучшему результату в партии.
Большая база данных, что позволяет проводить более глубокий и качественный анализ матча при принятии решений.
Не всегда предсказуемый, может совершать невероятные ходы, которые противник мог не предусмотреть.
Консервативен, предпочитает использовать безопасные ходы, тем самым избегая рискованных ходов.
Реализация авторского клиент‑серверного приложения «Шахматы» на базе Stockfish
При разработке собственного клиент-серверного приложения «Шахматы» стоит отметить, что важно учесть такие ключевые аспекты как:
хранение игр и данных клиентов в базе данных;
клиент‑серверное взаимодействие;
выбор шахматного движка;
обеспечение безопасности подключения на сайте для пользователей.
База данных приложения реализована в СУБД PostgreSQL [5],
так как эта СУБД удобна в использовании, а также является одной из самых продвинутых и актуальных.
В ходе проектирования были определены все основные таблицы, таблицы - справочники, связи между ними, что
позволяет составить реляционную модель данных (см. рис. 1).
Рис. 1 — Реляционная модель данных приложения «Шахматы»
Также, в ходе реализации проекта были разработаны несколько модулей, которые позволяют пользователям взаимодействовать с сайтом.
Разработаны такие модули как: авторизация, регистрация и восстановление пароля.
Страница авторизации (см. рис. 2) предоставляет пользователям возможность войти в свой аккаунт на сайте, обеспечивая безопасный доступ
к личным данным и возможностям сайта. Авторизация позволяет пользователям получить персонализированный опыт использования сайта, сохраняя
настройки и данные между сеансами использования.
Рис. 2 — Авторизация
Страница регистрации (см. рис. 3) представляет возможность новым пользователям пройти регистрацию для создания учётной записи и получения
доступа к другим функциональным возможностям сайта. Регистрация позволяет сайту собирать информацию о пользователе, установить связь с
пользователем и обеспечить персонализированный опыт использования сайта.
Рис. 3 — Регистрация
Страница восстановления пароля (см. рис. 4) представляет возможность зарегистрированным пользователям восстановить утерянный пароль для
получения доступа к учётной записи в случае его утери. Это важная страница для функциональной части сайта, которая позволяет обеспечивать
безопасность данных пользователей и предоставляет удобство пользования сайтом. При помощи данной страницы пользователю с лёгкостью можно
быстро вернуть доступ к аккаунту.
Рис. 4 — Восстановление пароля
Для реализации данного проекта был выбран шахматный движок - Stockfish. Данный движок имеет такие преимущества помимо выше рассмотренных:
гибкость и настраиваемость: движок предоставляет возможность выбора различных параметров и настроек, что позволяет уникально настраивать движок под различные потребности пользователей;
быстрая обработка: способен быстро анализировать позиции и предлагать оптимальные ходы, что позволяет использовать данный движок для реализации игр против бота;
высокий уровень игры: движок выполняет высокий уровень анализа, что позволяет пользователям улучшать свои навыки при игре;
надёжность и стабильность: так как он всё время обновляется, тем самым улучшается при этом его возможности, он всё время тестируется при помощи тщательных проверок на большом количестве всевозможных шахматных партий.
Выводы
В рамках статьи выполнен анализ существующих приложений для игры в шахматы.
Оценены достоинства и недостатки существующих решений.
Рассмотрены популярные движки, которые можно использовать для реализации собственного клиент-серверного приложения для игры в шахматы.
Представлен анализ требований к программному продукту.
Выполнено проектирование и создание базы данных для хранения информации по пользователям и матчам.
В целом, при разработке приложения для игры в шахматы, стоит учитывать всевозможные аспекты, которые могут как-либо затронуть процесс в дальнейшем.
Наиболее простой и эффективный способ проверки подлинности пользователей – аутентификация посредством пароля.
Однако, в данном случае, необходимо создавать сложные и уникальные пароли, ставить требования сложности для повышения уровня безопасности.
При разработке собственного шахматного сайта необходимо также использовать хранение шахматных партий и возможность извлечения их из базы данных.
Стоит также отметить, что для авторизации стоит разработать функционал, который позволит в дальнейшем определять авторизован или не авторизован
пользователь на сайте. На разрабатываемом сайте будет использоваться технология JWT токена, который будет храниться в течении 24 часов,
генерироваться при использовании специального защищённого ключа, после чего пользователю необходимо будет вновь авторизоваться.
К тому же, при авторизации на шахматном сайте стоит использовать двухфакторную аутентификацию, отправляя письмо с кодом доступа пользователю, тем
самым обеспечивая защиту от входа для посторонних пользователей, злоумышленников.
Наиболее важная задача после просмотра особенностей программной реализации шахматного сайта - продумать механизм реализации поиска, запуска и передачи
данных по ходу игры, анализа и просмотра сыгранных шахматных матчей. При наличии большого количества известных решений, рассмотренных в этой статье и
других ресурсах, задача проектирования и разработки собственного шахматного сайта не является простой, но при надлежащем анализе существующих решений,
можно будет подобрать лучшее решение, которое повысит функциональную составляющую сайта по сравнения с другими.