2025-03-23   2025-08-18   #article

Web-доски

Сервис временно отключен

Давно просили сделать приложение на телефон или что-то подобное для моих игр. Изначально я планировал оставить свои наборы только в физическом виде, но решил создать цифровую версию — хотя бы как макетный стол для себя, чтобы отлаживать баланс, расстановку и другие детали. Широко распространять и слишком развивать не планирую. Во многом сделано в рамках улучшения своих навыков Vue.js и построению веб-приложений.

Я не занимаюсь мобильными приложениями, и эта сфера мне не интересна. Моя основная специальность — веб-разработка, поэтому я выбрал знакомый и подходящий стек: Vue.js + PHP. Формат данных — не JSON, а собственная разработка для ускорения обмена и минимизации трафика.

Выберите игру, отправьте полученную ссылку другу и начинайте перетаскивать фигурки. Обычно этого достаточно для большинства игр.

На данный момент готовы:

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

Сервер

Простой stateful сервис на PHP, выполняющий только запись и выдачу определённых структур данных. Поддерживает методы:

Формат данных — собственный, достаточный для всех игр, которые я планировал реализовать. Всё поле хранится в одном текстовом файле построчно. Изменения синхронизируются через файл очереди, содержащий последние 10 операций. Синхронизация изменений происходит через посекундный AJAX, а полная синхронизация поля — раз в минуту для коррекции возможных неточностей обмена.

Клиент

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

По возможности реализованы все особенности всех и удобное управление как с компьютера, так и с телефона.

Обычно управление выглядит так:

Подробности управления смотрите в инструкциях к играм. На компьютере и телефоне оно может отличаться.

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

Ассеты

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