Мы скрестили Wordle с мультиплеером: одно слово на двоих, побеждает тот, кто угадал первый
Привет, VC. Я Анастасия, веб-разработчик, и сегодня расскажу про свой небольшой проект, который задумывался «на пару выходных», а растянулся на месяцы. Это «Буквы» — русский Wordle с дуэлями, играется прямо в браузере.
Началось всё банально: мы с друзьями играли в различные клоны Wordle, 5 букв и подобные и спорили, кто угадывает быстрее. Проверить это было негде — все существующие версии строго одиночные. Плюс в каждой второй тебя встречает реклама на весь экран, а подсказки выдают за просмотр видео. В какой-то момент прозвучало классическое «да за выходные такое пишется». Спойлер: не пишется.
Как выглядит дуэль?
Для проекта была выбрал Laravel + обвязка Reverb чтобы поднять вебсокеты и сделать максимально приятный мультиплеер.
Создаёте комнату, кидаете ссылку другу. Оба получаете одно и то же слово и угадываете наперегонки: у каждого своё поле, чужих букв не видно — только прогресс соперника, сколько попыток он уже потратил. Побеждает тот, кто угадал быстрее (или вообще угадал — второй вариант в наших партиях встречается чаще, чем хотелось бы).
Сперва сделала 1 на 1, потом захотели сыграть компанией... хмм, а почему бы и да)
А вот так мы играем:
После партии — реванш в один клик. Вот это, кстати, оказалось самой залипательной частью: «ещё одну и спать» у нас с друганами теперь официальный мем.
К слову, бывают и такие моменты, когда вроде ну вот оно, угадала... а нифига...
Окно реванша:
Самый весёлый баг за всю разработку: при обрыве соединения игрок «зависал» в комнате навсегда, и его соперник честно ждал хода от человека, который уже час как ушёл пить чай. Теперь такие души мы отпускаем автоматически.
Что ещё есть?
— Ежедневное слово: одно на всех, как в оригинальном Wordle. Можно меряться результатами по номеру дня
— Подборки слов по темам, ранги, статистика побед. Офигенные подборки по литературе. Я сама любитель читать и порой залипать в них - кайф.
— Гостевой режим: зашёл — играешь. Никаких «подтвердите почту, чтобы угадать одно слово»
— Работает как PWA: можно поставить на телефон, выглядит как обычное приложение
Про русский язык, который сложнее вебсокетов
Честно: мультиплеер оказался не самой сложной частью. Самая сложная — русский язык.
Во-первых, словарь. Какие слова считать допустимыми? Игроки вводят такое, что словарь Ожегова краснеет. Пришлось делать два списка: слова, которые игра загадывает (только общеизвестные), и слова, которые принимает как попытку — этот сильно шире и до сих пор пополняется, в основном по жалобам «а почему не принимает слово X».
Во-вторых, буква Ё. Не буду душнить на весь пост, скажу коротко: «ёлка» и «елка» — это одно слово или два? А если загадана «ёлка», а игрок ввёл «елка» — это попадание? Мы переделывали это несколько раз, и любое решение кого-нибудь да злит. Кому интересно, к чему пришли — расскажу в комментах, заодно интересно, как решили бы вы.
Зачем я это пишу?
Игра бесплатная, рекламы и доната нет — делаем с друзьями, потому что самим нравится играть, и потому что это один из самых интересных петов в нашей практике: вебсокеты, PWA, ежедневная механика, живые пользователи.
Чего хочется от VC — игроков и злого фидбека: что бесит, чего не хватает, какие слова несправедливо не принимаются. И, конечно, приходите на дуэль.
Играть можно здесь: wordsgame.ru
На вопросы про разработку отвечу в комментах — стек, как устроены комнаты в мультиплеере, откуда берётся ежедневное слово.