По просьбам трудящихся выкладываю скрины игры и админки, которую сейчас разрабатываем и запускаем. бета версия находится в открытом тестировании по адресу http://www.chaosroad.ru/ Многим будет интересно как оно выглядит изнутри? Первые скрины сама игра. Вторые - админка, через которую все управляется. Админка написана на ExtJS. Система полностью поддерживает РЕСТ. Данные хранятся в демонах/памяти, написанных на php+libevent работающих по протоколу HTTP, выдерживающие более 1000 запросов в секунду. Данные в БД синкаются из демонов по мере надобности. Все работает под связкой nginx+php-fpm+memcache. демонам отдано около 4Г памяти. На текущий момент система тестировалась на 1000 юзеров онлайн при 5% загрузке ресурсов в режиме стресса, т.е. кол-во запросов намного превышало расчетное. Расчетная нагрузка 10000 юзеров онлайн. Архитектура системы позволяет делать как шардинг так и кластеризацию, в зависимости от нужд. Одна из первых игр реализованная на AJAX технологии с полной поддержкой РЕСТ. На клиента и между демонами гоняется JSON. Будут вопросы - пишите. Сама игра Админка Логирование демонов Цифры показывают скорость доступа к внутренним данным в долях секунды. По сути это доступ к внешним страницам/данным. Как мы хуярим...
440Hz cпасибо, просто афигенно... а как происходит синхронизация удров во флеше?т.е. один ударил, а второй постоянно что то дергает чтобы узнать об ударе? Users daemon он рулит изменениями у юзеров... т.е. человек купил шмотку и одел, оно это изменение в демоне, потом через некоторое время сбрасывается в бд, а когда другой человек нажимает на инфу этого юзера, то определяется с демона надо просить или из базы тянуть? или под это написана "злостная система перевода всего и вся в html"(с) ? т.е. как определяется, что конкретно эти данные еше в демоне, а уже вот эти надо брать из базы
сейчас раз в 5 сек + ответ на действие, т.е. кликнул и получил состояние боя или через 5 сек получит автоматом. думаем перейти на канальную систему, т.е. постоянный коннект и писанина в каналы. демон при старте все всасывает в себя и строит объекты по данным. если данные каким-то образом изменяются то взводится флаг и демон по таймеру пробегается по данным и сбрасывает все в БД. сейчас раз в 300 сек. При останове происходит принудительный сброс измененных данных.
как раз сейчас дотестиваем мобов и наверное завтра выложим на продакшен. потом навесим на них нормальный ИИ (ситуационный) и будет ваще кошерно.
буду всех нагибнуть =) и надеюсь будут нормальные женские персы, а-то выбрал себе тетку, а на флеше непойми кто
и давно это у тебя? =)))))))))))) мы прикалываемся, что б сделать расходник, что б раздевать перса. =))) нажал и противник голый. гыгыгы
каналы это всмысле между клиентом и сервером? В броузере можно сделать каналы? Я думал, что кроме ежесекундного аякса ничего лучше не существет на этом поприще.
я тоже тетками всегда играю. Пялиться на мужика часами и наряжать его - раздражает. Для меня персы не являются продолжением меня, а просто арендуют часть моего сознания =)
ну да... есть приблуда к nginx, которая держит постоянное ссоединение с клиентом и имеет бакенд, куда сервер по надобности пишет. данные доставляются сразу без переконнектов. Т.е. по сути клиент коннектиться и ждет данных. Сервер по мере надобноссти пишет в канал и юзер сразу получает данные. т.к. мы гоняем JOSN то на клиенте проблем нет.
440Hz т.е. броузер лезет по какому-то адресу, а ему оттуда пишут постоянно и по чуть-чуть, как если бы была очень медленная скорость коннекта? а как тогда это разбирать? я думал, что данные в скрипт передаются после завершения их получения. Это на js можно так по-кусочкам получать ответ, не завершая подключение?
наверное на этот вопрос не отвечу. сорри. но в принципе есть проггеры/тимлидер, дизайнеры, верстаки, гейм-дизайнеры, художники и еще фиг его знает кого, но все высокопрофессиональные парни/девушки. команда распределенная. синкаемся скайпом, голосом. работаем 10-12 часов в день иногда 14-16, т.к. просто охуенно интересно.
440Hz в приведенной ссылке js код дергает каждые полсекунды какой-то урл, и соотв. получает с него некий ответ. А так, чтобы дернул урл один раз, и получаешь с него информацию часами - так не бывает?
я и говорю. сейчас дергает по таймеру. думаем перейти на каналы, т.е. 1 раз законнектился и принимаешь данные по мере их появления в канале. но с учетом того, что все данныые лежат в памяти, доступ к ним практичесски моментальный. на скрине ввидно. БД вообще не напрягается.
А как реализуются каналы на стороне пользователя? js умеет работать с каналами? =) дайте ченить почитать, хоть запрос в гугл.