Startup
“NardyClub” - это крупнейшее в странах СНГ и Европы сообщество любителей и профессиональных игроков в нарды.

NardyClub

Startup
“NardyClub” - это крупнейшее в странах СНГ и Европы сообщество любителей и профессиональных игроков в нарды.
NardyClub
Проект существует уже более 6 лет, объединяя истинных ценителей древнейшей игры.
Осенью 2016 года из-за хакерской атаки на игровые сервера была полностью заблокирована работа ресурса с частичной утерей данных. Администрацией проекта было принято решение за 6 месяцев возродить проект в виде нового игрового веб-сервиса на современной технологической базе с обновленным дизайном.
Создание сервиса «с нуля» позволило бы реализовать в дополнение к уже имеющемуся новый функционал, создание которого стало возможным лишь с недавним развитием веб-технологий.
О клиенте
Стабильность системы при высоких нагрузках
Отказ от устаревших Flash-технологий
Восстановление игры при обрыве соединения
Возможность параллельных игр
Сохранение проверенного годами интерфейса и адаптация его к современным принципам разработки веб-интерфейсов
Функционал для проведения партнерских турниров
Мощная CRM-система с богатой статистикой и аналитикой
Ключевые задачи, которые поставил перед нами Заказчик:
О задаче
Кирилл П. / руководитель проекта “Nardyclub”
У нас классный проект и очень большая лояльная аудитория. Но мы понимаем, что проект морально устарел. За 6 лет у нас накопился колоссальный опыт, который бы мы хотели воплотить, но нынешний проект не способен на это. Не говоря уже о том, что Chrome уже даже просто-напросто не поддерживает Flash. Сделайте нам iPhone в мире онлайн-игр, а себе - технологическую изюминку для портфолио!
Основные задачи при проектировании интерфейса:
Проектирование и дизайн
Cохранение десктопного стиля с модальными окнами, новый дизайн с фиксированной шириной страниц и отсутствие поддержки экранов на мобильных устройствах
Учитывая целевую аудиторию, размеры текста и управляющих элементов были увеличены для ускорения обучения пользователя обновлённому интерфейсу.
Сайт состоит из четырёх основных экранов: окно регистрации/авторизации, страницы со списком игр, страница с игровым полем и страница личного кабинета. Значительная часть функционала скрыта всплывающих окнам, что создаёт ощущение нативного десктопного интерфейса.
Отдельным требованием заказчика было максимальное сохранение стиля изображений игровых досок и фишек, при этом адаптировать их в рамках нового дизайна.
Аналитика
Наталия Потапова / Designer
Большое количество функциональных элементов составляло основную проблему при проектировании нового интерфейса. Необходимо было сохранить баланс между новой эстетикой сайта и его юзабилити, опираясь на потребности целевой аудитории. Вследствие этих задач и был выбран чистый, не перегруженный деталями дизайн с крупными элементами.
Для разработки клиентской части было решено использовать стэк JavaScript-библиотеки CanJS 2, что позволило обеспечить мгновенный переход между страницами сайта и разделить весь интерфейс на элементы - независимые компоненты.
Нововведения
Функционал
Поддержка двух игровых сессий
Более подробная статистика о сыгранных партиях
Обработка разрывов интернет соединения
Компоненты
В ходе разработки в проект был привнесён ряд функционала, который старая технологическая платформа не позволяла реализовать.
Архитектура
Главные аспекты
Высокая доступность сервисов
Минимальные задержки
Восстановление
Мы глубоко проанализировали нетривиальные потребности клиента. Очень важно было сохранить комфортную для пользователя игру при любом интернет-соединении.
WebSocket
Для обеспечения взаимодействия клиента и сервера в реальном времени была выбрана технология WebSocket, поддерживающая двухстороннее соединение. К сожалению, имплементация WebSocket в виде ActionCable, входящего в состав фреймворка Rails, оказалась довольно медленной и непредсказуемо ведущей себя под большими нагрузками.
Redis
В целях увеличения скорости считывания динамической информации об играх было использовано key-value storage Redis, хранящая данные в оперативной памяти. Для хранения информации, не требующей моментального доступа, использована база данных PostgreSQL.
Left
Right
Владимир Алёхин / back-end developer
Серверная часть написана на языке Ruby с использованием фреймворка Rails, использование которого позволило нам собрать воедино отдельные части системы и гибко настроить логику их взаимодействия.
Поэтому было решено использовать WebSocket-сервер на Go прослойку в виде гема AnyCable. Это позволило драматически сократить время отклика и избавило от увеличения задержек при масштабировании системы.
Итоги
Результат
Результатом нашей работы стал качественный и отказоустойчивый игровой веб-сервис, сочетающий в себе целый стэк современных веб-технологий и лаконичный Flat дизайн.