Мы скрестили Wordle с мультиплеером: одно слово на двоих, побеждает тот, кто угадал первый

Привет, VC. Я Анастасия, веб-разработчик, и сегодня расскажу про свой небольшой проект, который задумывался «на пару выходных», а растянулся на месяцы. Это «Буквы» — русский Wordle с дуэлями, играется прямо в браузере.

Стартовый экран
Стартовый экран

Началось всё банально: мы с друзьями играли в различные клоны Wordle, 5 букв и подобные и спорили, кто угадывает быстрее. Проверить это было негде — все существующие версии строго одиночные. Плюс в каждой второй тебя встречает реклама на весь экран, а подсказки выдают за просмотр видео. В какой-то момент прозвучало классическое «да за выходные такое пишется». Спойлер: не пишется.

Как выглядит дуэль?

Для проекта была выбрал Laravel + обвязка Reverb чтобы поднять вебсокеты и сделать максимально приятный мультиплеер.

Создаёте комнату, кидаете ссылку другу. Оба получаете одно и то же слово и угадываете наперегонки: у каждого своё поле, чужих букв не видно — только прогресс соперника, сколько попыток он уже потратил. Побеждает тот, кто угадал быстрее (или вообще угадал — второй вариант в наших партиях встречается чаще, чем хотелось бы).

Сперва сделала 1 на 1, потом захотели сыграть компанией... хмм, а почему бы и да)

Мультиплеер
Мультиплеер

А вот так мы играем:

Игровое поле
Игровое поле

После партии — реванш в один клик. Вот это, кстати, оказалось самой залипательной частью: «ещё одну и спать» у нас с друганами теперь официальный мем.

К слову, бывают и такие моменты, когда вроде ну вот оно, угадала... а нифига...

Когда не смогла угадать
Когда не смогла угадать

Окно реванша:

Окно реванша
Окно реванша

Самый весёлый баг за всю разработку: при обрыве соединения игрок «зависал» в комнате навсегда, и его соперник честно ждал хода от человека, который уже час как ушёл пить чай. Теперь такие души мы отпускаем автоматически.

Что ещё есть?

— Ежедневное слово: одно на всех, как в оригинальном Wordle. Можно меряться результатами по номеру дня

— Подборки слов по темам, ранги, статистика побед. Офигенные подборки по литературе. Я сама любитель читать и порой залипать в них - кайф.

— Гостевой режим: зашёл — играешь. Никаких «подтвердите почту, чтобы угадать одно слово»

— Работает как PWA: можно поставить на телефон, выглядит как обычное приложение

Подборки
Подборки

Про русский язык, который сложнее вебсокетов

Честно: мультиплеер оказался не самой сложной частью. Самая сложная — русский язык.

Во-первых, словарь. Какие слова считать допустимыми? Игроки вводят такое, что словарь Ожегова краснеет. Пришлось делать два списка: слова, которые игра загадывает (только общеизвестные), и слова, которые принимает как попытку — этот сильно шире и до сих пор пополняется, в основном по жалобам «а почему не принимает слово X».

Во-вторых, буква Ё. Не буду душнить на весь пост, скажу коротко: «ёлка» и «елка» — это одно слово или два? А если загадана «ёлка», а игрок ввёл «елка» — это попадание? Мы переделывали это несколько раз, и любое решение кого-нибудь да злит. Кому интересно, к чему пришли — расскажу в комментах, заодно интересно, как решили бы вы.

Зачем я это пишу?

Игра бесплатная, рекламы и доната нет — делаем с друзьями, потому что самим нравится играть, и потому что это один из самых интересных петов в нашей практике: вебсокеты, PWA, ежедневная механика, живые пользователи.

Чего хочется от VC — игроков и злого фидбека: что бесит, чего не хватает, какие слова несправедливо не принимаются. И, конечно, приходите на дуэль.

Играть можно здесь: wordsgame.ru

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

1