Словолом - игра в слова

Собираем здесь завершённые проекты, использующие Yii. Один проект — одна тема.
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Словолом - игра в слова

Сообщение ЮрийП »

Словолом http://slovolom.com - игра в слова.

О сайте
Сайт представляет собой онлайн игру в слова: составление слов из букв данного слова. Имеется вход через сторонние сервисы, статистика, список участников.

Сайт полностью написан на Yii и использует MySQL

Используемые компоненты
Yii Bootstrap, Yii Eauth (https://github.com/Nodge/yii-eauth ).

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

Для скорости работы сайта необходимо переписать базу данных полностью на быстрое noSQL-решение, например Redis. Задача осложняется необходимостью использовать JOIN’ы, которые в Redis’e отсутствуют.

Рейтинг игроков
Посылается каждый 5 секунд AJAX-запрос. Также включено кеширование результата на те же 5 секунд.

Статистика игрока

Самая тяжелая часть – расчет уникальности слов. Статистика обновляется после добавления слова.

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

Расчет статистика
Сколько уникальных слов составлено для данного слова
Расчет рейтинга пользователя для данного длинного слова, который зависит от количества придуманных слов, от уникальности слов и от длины слов.
Расчет полного рейтинга пользователя: среднее арифметическое всех рейтингов для всех играющих слов.
Рейтинг рассчитывается консольным приложением один раз в день по крону только для тех слов, которых прекратили игру.
Игра в слова - http://slovolom.com
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Играл играл в слова. Обновил страницу. Продолжил играть.
http://awesomescreenshot.com/0a4m0ca69

А еще словарь у вас фиговый. Всякая ахинея типа сочетаний букв кис, тик - в нем есть, зато кучи нормальных слов нет. Мне засчитают мои слова потом, к-х нет в словаре но я нажал кнопку добавить?
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

YaZabylStariyNick писал(а):Играл играл в слова. Обновил страницу. Продолжил играть.
http://awesomescreenshot.com/0a4m0ca69
Глюк, спасибо.
YaZabylStariyNick писал(а):А еще словарь у вас фиговый. Всякая ахинея типа сочетаний букв кис, тик - в нем есть, зато кучи нормальных слов нет. Мне засчитают мои слова потом, к-х нет в словаре но я нажал кнопку добавить?
Оказывается, хороший словарь трудно найти, но поиски продолжаются)
Да, засчитают, но только те, которые являются нарицательными существительными в единственном числе и именительном падеже..
Игра в слова - http://slovolom.com
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Cейчас вернулся на страницу, стало еще прикольнее. Когда уходил так не было :)
http://awesomescreenshot.com/0bbm0sa73
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Кстати по поводу запросов каждые 5 сек.
Вы сами досите свой сервер и кеш на 5 секунд вас не спасет. Посмотрите и подумайте :)
Это раз.
http://i48.fastpic.ru/big/2012/1111/f8/ ... 0b77f8.png
Это два.
http://i48.fastpic.ru/big/2012/1111/6a/ ... 87506a.png

Я не знаю какой там у вас сервер, но надо достаточно маленькое количество пользователей что бы его положить к черту.
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

YaZabylStariyNick писал(а):Cейчас вернулся на страницу, стало еще прикольнее. Когда уходил так не было :)
http://awesomescreenshot.com/0bbm0sa73
С номерами ошибку исправил, спасибо.
YaZabylStariyNick писал(а):Кстати по поводу запросов каждые 5 сек.
Вы сами досите свой сервер и кеш на 5 секунд вас не спасет. Посмотрите и подумайте :)
Расчет рейтинга пользователей - легкий запрос. Поэтому 1 раз в 5 секунд это нормально. Но все равно, данные кешируются на 5 секунд. Досса нет.
YaZabylStariyNick писал(а):Это раз.
http://i48.fastpic.ru/big/2012/1111/f8/ ... 0b77f8.png

Кстати по поводу запросов каждые 5 сек.Это два.
http://i48.fastpic.ru/big/2012/1111/6a/ ... 87506a.png

Я не знаю какой там у вас сервер, но надо достаточно маленькое количество пользователей что бы его положить к черту.
Слабенький VPS. Что-то творится с сервером: он не нагружен (судя по htop-у), но данные иногда отдаются очень медленно - буду разбираться с проблемой.

П.С. В базу добавляются только нарицательные существительные, но само понятие "нарицательность" - относительное. К примеру, слова "Хакер", "Логин" и т.д. Но уже есть планы как определять какие слова подтверждать, а какие нет.
Игра в слова - http://slovolom.com
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Слабенький VPS. Что-то творится с сервером: он не нагружен (судя по htop-у), но данные иногда отдаются очень медленно
Вот что видит мой внутренний экстрасенс.
1. Таблица со словами - mysql-MyIsam. Добавляется новое слово\обновляется какая-нить статистическая инфа - происходит лок на чтение.
2. Просто дофига простых запросов для слабенького впс.
как вывод того и\или другого - очередь запросов=> медленный ответ.

Может поможет.

А вообще прикольный проект :) Весь день захожу проверить свое положение и дописываю слова)
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Досса нет.
Наберете еще сотню другую пользователей и вспомните мои слова ;)
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Добавьте еще пагинацию списка слов, к-й пользователь уже ввел и быстрый поиск по ним с автокомплитом.
А еще можно сделать кнопку типа похвастаться друзьям в соц-сети сколько я набрал слов.
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Еще наверно стоит ввести систему очков - что бы не по количеству слов лидер выбирался, а по количеству очков - более длинное слово = больше очков. Как-то так.
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

YaZabylStariyNick писал(а): Вот что видит мой внутренний экстрасенс.
1. Таблица со словами - mysql-MyIsam. Добавляется новое слово\обновляется какая-нить статистическая инфа - происходит лок на чтение.
2. Просто дофига простых запросов для слабенького впс.
как вывод того и\или другого - очередь запросов=> медленный ответ.

Может поможет.
Спасибо за советы :)
1. Таблицы InnoDB - там вроде построчная блокировка для update'a
2. Да запросов вроде недофига: играют около 5 человек пока, да и то, не постоянно.
Попробую поставить Nginx как фронт-энд.
YaZabylStariyNick писал(а):Наберете еще сотню другую пользователей и вспомните мои слова
Так я и писал в начале, что не выдержит, наверное, 100 :)
YaZabylStariyNick писал(а):Добавьте еще пагинацию списка слов, к-й пользователь уже ввел
Занес в планы.
YaZabylStariyNick писал(а): и быстрый поиск по ним с автокомплитом.
Не оч понятно, зачем это может быть нужно.
YaZabylStariyNick писал(а):А еще можно сделать кнопку типа похвастаться друзьям в соц-сети сколько я набрал слов.
Идея была, но глаза не дошли прочитать, как это делается.
YaZabylStariyNick писал(а):Еще наверно стоит ввести систему очков - что бы не по количеству слов лидер выбирался, а по количеству очков - более длинное слово = больше очков. Как-то так.
Такая система есть - рейтинг рассчитывается по крону только после того слово прекратило играть:
- Рейтинг конкретного участника для конкретного слова, которое играет, зависит от средней длины, от средней уникальности и от к-ва придуманных слов и выражается в баллах
- Рейтинг участника общий - это средний рейтинг участника по всем словам, в которые он играл.

Вот топ 1000 http://slovolom.com/index.php?r=user/top

Сейчас пока еще ни одно слово не завершило свою игру, поэтому рейтинг у всех по нулям.
Игра в слова - http://slovolom.com
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Не оч понятно, зачем это может быть нужно.
Потому что когда слово на другйо странице, мне было бы неудобно клацать и искать. А так в автокомплите можно посмотреть - было оно или нет, и вообще какие сочетания букв для начала слова уже использованы.
только после того слово прекратило играть
Кстати, а почему такой большой срок игры? Это много слишком, имхо. Чем мотивировано такое решение?
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Попробую поставить Nginx как фронт-энд.
Я бы вас советовал поставить nginx как ВСЕ :D
И выкинуть нафиг апач.
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Идея была, но глаза не дошли прочитать, как это делается.
Сделайте пожалуйста, я хочу запостить :)
А еще такие кнопки помогают популяризации сайта очень быстро.
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

Кстати, а почему такой большой срок игры? Это много слишком, имхо. Чем мотивировано такое решение?
Каждое слово играет 7 дней: каждый день появляется новое слово и прекращает играть старое. Поскольку сайт только запущен, то до первого подсчета рейтинга нужно подождать 7 дней, потом рейтинг будет обновляться каждый день.

7 дней выбрана как круглая дата (неделя), меньше срок не даст поиграть людям, которые не каждый день могут играть.
Игра в слова - http://slovolom.com
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

YaZabylStariyNick писал(а): Сделайте пожалуйста, я хочу запостить :)
А еще такие кнопки помогают популяризации сайта очень быстро.
Можете пояснить, что именно нужно?
Игра в слова - http://slovolom.com
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: Словолом - игра в слова

Сообщение YaZabylStariyNick »

Ну например я набрал сколько-слов.
Жму кнопку - показать в фейсбуке.
И там поститься что-то типа "Из слова БЛАБЛАБЛА я собрал Х слов, осталось Y часов, cколько успеете вы?"
mijgan
Сообщения: 3
Зарегистрирован: 2012.05.10, 10:13

Re: Словолом - игра в слова

Сообщение mijgan »

Интересует словарь. Там только существительные, сколько слов, где взяли?
ЮрийП
Сообщения: 12
Зарегистрирован: 2012.11.10, 14:38
Контактная информация:

Re: Словолом - игра в слова

Сообщение ЮрийП »

Спасибо всем за советы.
Что нового:
- Исправлены ошибки
- Реализован другой механизм расчета итогового рейтинга
- Кнопка "Поделиться результатами"
- Оптимизация и мелкие исправления
mijgan писал(а):Интересует словарь. Там только существительные, сколько слов, где взяли?
Да, около 16 тысяч. На просторах интерната, где именно - уже не помню. Но словарь далеко не идеальный: в нем нет многих слов, а также есть те, что не должны там быть, поэтому игроки регулярно добавляют новые слова.
Игра в слова - http://slovolom.com
Вовчек
Сообщения: 1
Зарегистрирован: 2012.12.23, 16:22

Re: Словолом - игра в слова

Сообщение Вовчек »

Интересный сайт.
Хотелось бы Юрий сократить срок окончания игры. Исключить короткие слова в 2-3 буквы. Потом может лучше выставлять не длинные слова, а набор букв?
Ответить