перейти к основному контенту
Главная | zeronumbers
This page in english

Все проекты

упорядочены по дате (сначала новые)

Клиентская часть шахматной WebRTC игры. WebSocket сервер можно посмотреть тут.

Клиентская часть включает в себя frontend и саму игру.

Сделано на vite с использованием react, prettier, eslint, aribnb style guide, BEM css методология.

Визуальная часть доски сделана с использованием SVG.

Signaling через WebSocket или вручную, также возможна игра в одном окне по очереди (hotseat).

История ходов показана с использованием react-window.

react-router используется чтобы дифференцировать тип игры:

  • hotseat
  • WebSocket signaling
  • ручной signaling

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

Есть возможность:

  • сохранить/загрузить игру
  • отменить ход
  • развернуть доску

Для решения проблемы с потерянными сообщениями (two generals problem) когда игрок делает действие которое должно быть послано оппоненту, создается interval который посылает сообщение с типом действия и id, interval удаляется только когда acknowledgement message принят с тем же id. Принимающая сторона знает последний принятый id и сравнивает его с только что принятым.

В результате на посылающей стороне: если сообщение потеряно, новое будет послано. На принимающей стороне: из всех сообщений с одинаковым id обработано будет только одно (idempotence).

перейти проекту на github