{"id":14274,"url":"\/distributions\/14274\/click?bit=1&hash=fadd1ae2f2e07e0dfe00a9cff0f1f56eecf48fb8ab0df0b0bfa4004b70b3f9e6","title":"\u0427\u0435\u043c \u043c\u0443\u0440\u0430\u0432\u044c\u0438\u043d\u044b\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"6fbf3884-3bcf-55d2-978b-295966d75ee2"}

Я задолбался писать ботов «в стол» и выпустил «Ворди»: безлимитный Wordle с глобальным рейтингом игроков

О всемирном помешательстве я узнал неделю назад. Утро понедельника не предвещало ничего интересного, но внезапно в ленте новостей оказалась заметка о Wordle. Жизнь сразу обрела цель и смысл: «Сейчас я за пару дней выкачу бота для игры!».

Как, думаю, уже понятно, в итоге потребовалось чуть больше пары дней, но замечу, что мои друзья играют в Ворди уже со среды. Почему Ворди? Здесь может быть несколько ответов, но главный, если уж начистоту, конечно, в том, что все нормальные варианты сочетания слов "wordle" и "bot" были уже заняты. Ха-ха, мда. Остальные ответы примерно такого характера: мне нравится звучание, легко запоминается, в слове тоже пять букв.

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

Что ж, теперь в моём словаре для игры 1234 прекрасных слова, одно интереснее другого. Из "Нового частотного словаря русской лексики" я выбрал существительные из пяти букв и получил число слов, близкое к 1234. Скоро оказалось, что там встречаются слова множественного числа, жаргонные и, скажем так, не очень литературные. Их я заменил на названия животных — слова всем известные, но в повседневной жизни употребляемые нечасто (скажем, жираф).

Вскоре пришлось избавиться от буквы "ё": на клавиатуру идеально помещались всего 32 буквы. Несмотря на то, что я очень трепетно отношусь к этой букве и набираю её всякий раз, где это возможно, я принял решение удалить из словаря (игрового) все слова, её содержащие, чтобы избежать разночтений и запутываний. Впрочем, два слова я всё-таки оставил, это "тезка" и "ликер".

Чтобы не было путаницы, стоит объяснить, что ещё, конечно же, используется словарь всех известных слов из пяти букв, его размер чуть больше 3,5 тысяч. Уже после того как бот был полностью отлажен, я решил добавить пользовательский словарь, чтобы все вводимые слова сохранялись. При повторном употребление (вводе) увеличивается индекс использования, и я раз в несколько дней смогу добавлять наиоболее востребованные слова в основной словарь, если они действительно существуют.

Если вам понравилось слово, которое вы отгадывали, вы можете переслать другу сообщение с цветными плитками (стандартный вариант), а если ваш результат вам не нравится, вы можете просто передать другу номер. Эти цифры номера вводятся обычным образом как буквы слова, бот принимает любой номер до 1234 включительно. Вы и сами можете ввести любой номер из головы. Чем меньше число, тем чаще употребляется слово, это совсем не значит, что оно будет простым для отгадывания: взять хотя бы слова 1 и 2!

Ну, не буду больше затягивать, но добавлю ещё пару слов о разработке. Из настолько объёмных (функциональных) ботов этот у меня — первый, в котором отсутствует привычное меню на кнопках. Я не люблю обычные кнопки в Телеграмме и по возможности всё реализовываю на подстрочных (inline), но здесь я решил обойтись только командами. А чтобы было проще, релевантная команда выводится в конце сообщения. Интересно будет узнать, насколько такое решение удобно и хорошо смотрится.

Начать игру можно здесь. Я также добавил дублёра, если основной бот не справится с нагрузкой: Телеграмм устанавливает ограничение на количество отправляемых ботом сообщений в минуту. Если такое случится, бот сообщит адрес дублёра. База данных у них одна, прогресс сохраняется.

Да, и ещё, к вопросу о названии статьи. У меня есть бот, которого я разрабатывал около полугода, в нём есть возможность тонкой настройки под пользователя, 12 языков и около полусотни тудушек :) Кроме него есть ещё парочка простых, но, возможно, достойных внимания. Обещаю представить общественности и других ботов, если справлюсь с запуском и поддержкой этого.

Что ж, всего хорошего и приятной игры!

0
12 комментариев
Написать комментарий...
Добряк

Я задолбался писать ботов в стол и выкинул стол.

Ответить
Развернуть ветку
Роман Анисимов

Если загуглить "Wordie", гугл меняет логотип на анимационную демонстрацию игры.

Насколько я понимаю, идея не нова и является своеобразной разновидностью игры "Быки и коровы", где вместо слов числа. Прикольная идея, только реализация хромает. Не очень хочется перечислять все проблемы, но из бросающихся в глаза опишу две:
1. Клавиатура не нужна, потому что вручную проще набрать слово, чем жать на кнопки. Стереть выбранные буквы нельзя, а при нажатии на вычеркнутые ("_") они всё равно появляются. Ещё сообщения от бота идут вперемешку с клавиатурой, которая уходит наверх из-за этого. Либо пусть бот обновляет сообщение с клавиатурой, либо пусть вообще её не использует. Плюс удалять предыдущую клавиатуру - тоже так себе решение. Лучше выбрать что-то из вариантов, которые я предложил, если хотите грамотно организовать интерфейс.
2. Если буква стоит на своём месте, а потом повторяется в слове, бот тоже её считает. Он не должен повторно считать буквы, это путает. На скриншоте он одну букву "а" посчитал на своём месте, а потом ещё раз посчитал как не на своём месте, хотя в ответе она одна. В итоге получается, что сам бот даёт не подсказки, а наоборот, путает игрока.

Я бы добавил такую игру в своего игрового бота, но у меня на очереди шашки, морской бой и шахматы. Правда, лень. Но игра с числами у меня есть)

Вы можете не тратить время на сбор базы слов, а использовать мой API - там в базе 19,4 тыс. слов с пояснениями. И это только русский язык.

Ответить
Развернуть ветку
Николай Полянский
Автор

Спасибо за комментарий. Действительно, проще набрать слово, чем жать на кнопки клавиатуры, но жать на них и не нужно, клавиатура тут не для этого: это алфавит, в котором отсутствующие буквы вычёркиваются, а имеющиеся выделяются.
По поводу плиток: действительно, вторая буква будет тоже выделяться, но это соответствует правилам игры, в которых оговаривается, что буква помечается жёлтым, если стоит не на своём месте. Таким образом, вторая такая же буква удовлетворяет тому же правилу.
Гугл меняет логотип если загуглить "Wordle", а не "Wordie". Вас, видимо, всемирное помешательство обошло стороной :) Просто попробуйте поиграть, и, возможно, вы тоже вольётесь. А пытаться поменять правила под себя ну это такое себе.

Ответить
Развернуть ветку
Роман Анисимов

Опечатался.

Вот в оригинале по правилам буквы не дублируют цвета:

Ответить
Развернуть ветку
Арам Маркарян

Сколько пользователей?

Ответить
Развернуть ветку
Николай Полянский
Автор

Всего 33 человека. Сыграно больше 5 игр у 14 человек. За сегодня сыграно (или начато) 87 игр. Вы играете? Всё нравится или, может быть, есть какие-то замечания?

Ответить
Развернуть ветку
Николай Полянский
Автор

Ответить
Развернуть ветку
Sergey Vasilets

Интересная реализация, я тоже о таком подумывал!

Позвольте рассказать как бы сделал я, может быть вам понравится моя идея.
Я бы сделал так:
Как только юзер отправляет слово, удаляю его сообщение и присылаю сгенерированную картинку с его словом на фоне желто/зеленых кубиков
Следом сообщение со сгенерированной картинкой клавиатуры, с использованными буквами.
Когда юзер отправляет второе слово, снова удаляю его, а так-же картинку с подсказкой клавиатуры. И присылаю новое слово картинкой и новую клавиатуру.
Если юзер ввел несуществующее слово, писал бы что такого нет, и как только он напишет существующее, удалял бы эти сообщения.

Получилось бы примерно так, только в квадратах были бы буквы

Ответить
Развернуть ветку
Николай Полянский
Автор

Спасибо за отзыв! Увы, телеграм измывается над изображениями маленького размера как хочет, постоянно указывает им на то, как они ничтожны. Если серьёзно, то на десктопе и на телефоне они смотрятся по-разному, в одном случае с чёрными полосами, в другом - растягиваются на стандартную ширину, можете сами провести подобный эксперимент.
На самом деле это и не нужно, буквы подсвечивать: достаточно сыграть две-три игры — и никаких трудностей сопоставление не вызывает. Что касается клавиатуры-алфавита, то во-первых она интуитивно понятна, а во-вторых реализована средствами телеграма, что тоже в плюс визуальной составляющей, а также легковесности.
Я переключал режим сети на 2G и пробовал играть — дольше приходится ждать отправки сообщения, чем ответа, что с наличием в игре изображений уже точно не работало бы. Ну и к тому же постоянная генерация картинок существенно повысит нагрузку на процессор, а значит и отклик увеличится. Мне не нравится, что ответ занимает больше 0.1 секунды (иногда до 0.5), так что вряд ли захочется с картинками дело иметь. Хотя PIL довольно шустрый, но обращение к диску может стать бутылочным горлышком.
Ну и в конце всё равно бы пришлось отправлять сообщение с плитками эмоджи, чтобы люди смогли делиться. В итоге дизайн бы рассыпался получается.

Ответить
Развернуть ветку
Sergey Vasilets

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

Скажите, где хостите бота?

Ответить
Развернуть ветку
Николай Полянский
Автор

Впска у российского хостера, там ещё другое разное вертится, но для одного бота хватило бы и самой дёшевой рублей за сто.

Ответить
Развернуть ветку
Sergey Vasilets

-

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда