← Назад

УДК 004.42

ОСОБЕННОСТИ ПРОГРАММНОЙ РЕАЛИЗАЦИИ КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ «ШАХМАТЫ»

Особенности программной реализации клиент-серверного приложения «Шахматы» / Е.В. Кубасов, А.В. Чернышова // ИНФОРМАТИКА, УПРАВЛЯЮЩИЕ СИСТЕМЫ, МАТЕМАТИЧЕСКОЕ И КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ (ИУСМКМ-2024) : Материалы XV Международной научно-технической конференции в рамках X Международного научного форума Донецкой Народной Республики «Инновационные перспективы Донбасса», Донецк, 29–30 мая 2024 года / ФГБОУ ВО «ДонНТУ», Научно-образовательный институт компьютерных наук и технологий. – Донецк: Донецкий национальный технический университет, 2024. – Т. 2. – С. 334–341.

Донецкий национальный технический университет
Кафедра программной инженерии им. Фельдмана

E-mail: kubasov_jeny2002@mail.ru, chernyshova.alla@rambler.ru

Аннотация:

Кубасов Е.В., Чернышова А.В. Особенности программной реализации клиент-серверного приложения «Шахматы». Выполнен сравнительный анализ популярных сайтов для игры в шахматы, представлены основные требования к разработке приложения для игры в шахматы. В рамках статьи также рассмотрена специфика программной реализации приложений для игры в шахматы, выделены достоинства и недостатки существующих решений, а также приведён пример реализации основной функциональной части приложения.

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’а может помочь в создании эффективного и надёжного шахматного сайта для пользователей.

Таблица 2 — Реализация backend приложений «Шахматы»

Сайт Язык программирования База данных
Chess.comJava, MySQLMySQL
Lichess.orgScala, JavaScriptMongoDB
ChessKing.comPHP, MySQLMySQL

Для создания frontend рассматриваемых шахматных сайтов (см. таблицу 3) используются различные технологии и инструменты, такие как HTML, CSS, JavaScript, фреймворки и протоколы взаимодействия с backend-частью. Выбор конкретных средств зависит от требований к дизайну, интерактивности, производительности и функциональности пользовательского интерфейса. Использование современных технологий frontend-разработки поможет создать удобный и привлекательный интерфейс для пользователей шахматных сайтов.

Таблица 3 — Реализация frontend приложений «Шахматы»

Сайт Средства реализации
Chess.comAngular, Express, MongoDB
Lichess.orgReact, Redux, Node.js
ChessKing.comHTML, CSS, JavaScript

Основные требования к разработке клиент‑серверного приложения «Шахматы»

Бизнес‑требования:

Функциональные требования:

Нефункциональные требования:

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

Для обеспечения безопасности сайта можно выделить следующие требования:

Специфика шахматных движков

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 часов, генерироваться при использовании специального защищённого ключа, после чего пользователю необходимо будет вновь авторизоваться.

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

Наиболее важная задача после просмотра особенностей программной реализации шахматного сайта - продумать механизм реализации поиска, запуска и передачи данных по ходу игры, анализа и просмотра сыгранных шахматных матчей. При наличии большого количества известных решений, рассмотренных в этой статье и других ресурсах, задача проектирования и разработки собственного шахматного сайта не является простой, но при надлежащем анализе существующих решений, можно будет подобрать лучшее решение, которое повысит функциональную составляющую сайта по сравнения с другими.

Литература

1. Правила игры в шахматы ФИДЕ [Electronic resource] / Интернет‑ресурс. – Режим доступа: handbook / URL: https://handbook.fide.com/files/handbook/LawsOfChess2023Russian.pdf. – Загл. с экрана.

2. Documentation for Komodo [Electronic resource] / Интернет‑ресурс. – Режим доступа: komodochess / URL: https://komodochess.com/store/pages.php?cmsid=14. – Загл. с экрана.

3. Documentation for Stockfish [Electronic resource] / Интернет‑ресурс. – Режим доступа: disservin / URL: https://disservin.github.io/stockfish-docs/stockfish-wiki/Home.html. – Загл. с экрана.

4. Documentation for Houdini [Electronic resource] / Интернет‑ресурс. – Режим доступа: sidefx / URL: https://www.sidefx.com/docs/hengine/. – Загл. с экрана.

5. Documentation for PostgreSQL [Electronic resource] / Интернет‑ресурс. – Режим доступа: postgresql / URL: https://www.postgresql.org/docs/current/. – Загл. с экрана.