Pull to refresh
27
0
Алексей @anonimizer_me

User

Send message
Эта схема у нас используется в другом проекте, у которого на стороне сервера nodejs, которая постоянно в памяти и там постоянно держится соединение с сервером.
У нас же nginx + php. Скрипт после отработки ничего в памяти не оставляет.
Проблемы решили путем снижения нагрузки на mongodb и отключением части шар. Когда уменьшили количество шар с 5 до 3, то стало несколько легче. Почему так получилось не ясно. Это был первый опыт использования mongodb. Возможно не знаем каких-то тонкостей настройки.
Практически все данные имеют связь с user_id.
Шардирование базы строется по user_id. К примеру 1-1000 в первую базу, 1001-2000 во вторую базу.
Аналогично с кэшем. Просто запущено несколько memcached на разных серверах.
Кешируются данные моделей, а точнее атрибуты (поля из базы)
Только если вы выключите телефон или игра упадет. В остальных случаях данные будут отправлены. Игры делается для мобильников
Потому что умеем готовить с ним вкусные штуки
В прошлом проекте были 10-15 тысяч игроков онлайн. Цель текущей реализации держать это число без особых проблем.
За счет масшабируемости мы можем увеличивать количество обработчиков, шардировать базу и кэш. Так что узкие моменты производительности на мой взгляд решены.
Согласен. В следующий раз буду более требовательно подходить к написанию статьи.
Я хотел ознакомить людей с возможной проблемой и решением, которое я применил. Я же не писал расширение для каталога Yii extensions, а показал часть кода нашего проекта.
Внес изменения в работу метода. Спасибо за совет.
Метод для приведения типов вообще в другом классе у нас, так как используется и для других задач. Для внес этот метод в представленный класс. Сейчас сделаю правку здесь на protected
Да, согласен с вами, что метод требует доработок.
Такие данные не используются. По этому тут нет такого. Но добавить не сложно
Да, была ошика в тексте. Поправил.
Потому что кроме getParam есть еще getPost и getQuery, которые тоже используются в проекте.
Про функцию ctype_digit не знал. Думаю лучше использовать вместо работы с регулярками. Спасибо!
Спасибо за статью! Только сейчас столкнулся на аналогичный баг, вспомнил про статью и нашел решение проблемы :)
Отлично! Спасибо за перевод
Если интересно, можете посмотреть примеры от разработчика LibCanvas libcanvas.github.com/.
Из всех доступных библиотек именно эта подкупила тем, что автор легко идет на контакт, помогает дельными советами и оперативно внедряет необходимые функции.

Так же порадовало то, что фреймворк завязан на ооп и atomjs, который мне пришелся по душе.
Я думаю, что про техническую сторону игры будет отдельный пост, в котором я приведу данные о производительности. Пока сказать ничего не могу конкретно.

События навешиваются на фигуры(шейпы). Объект состоит из шейпа и графики, которая отрисовывается в этом шейпе. Но шейпы могут быть не только квадратные и круглые, но и любой произвольной формы — полигон. Так что можно сделать к примеру звезду, которая будет правильно обрабатывать события.
1) Анимации спрайтовые, но могут быть реализованы и в любом другом виде. Спрайтовую анимацию из коробки поддерживает LibCanvas
2) 3) В LibCanvas реализован механизм, который позволяет перерисовывать только изменяющиеся части сцены. Это очень положительно влияет на производительность игры, особенно на планшетах
6) Да, планируется отключение анимации, которая не видна игроку.
7) Этот механизм реализован в LibCanvas. События навешиваются на объекты. Отрабатывает на основе zindex. Событие может быть проваливающимся или останавливающимся на первом срабатывании
8) Не совсем понял вопрос. Видимо речно о том, сразу ли рисуется вся игровая область. Да, нарисована вся, скрывается за счет css
можно и жигули :)

Information

Rating
Does not participate
Location
Новосибирская обл., Россия
Date of birth
Registered
Activity