За последние 24 часа нас посетили 7498 программистов и 825 роботов. Сейчас ищут 413 программистов ...

Внутри броузерных игр или как оно все устроено.

Тема в разделе "Прочие вопросы по PHP", создана пользователем 440Hz, 4 авг 2010.

  1. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    По просьбам трудящихся выкладываю скрины игры и админки, которую сейчас разрабатываем и запускаем.

    бета версия находится в открытом тестировании по адресу http://www.chaosroad.ru/

    Многим будет интересно как оно выглядит изнутри? Первые скрины сама игра. Вторые - админка, через которую все управляется.

    Админка написана на ExtJS. Система полностью поддерживает РЕСТ. Данные хранятся в демонах/памяти, написанных на php+libevent работающих по протоколу HTTP, выдерживающие более 1000 запросов в секунду. Данные в БД синкаются из демонов по мере надобности.

    Все работает под связкой nginx+php-fpm+memcache. демонам отдано около 4Г памяти. На текущий момент система тестировалась на 1000 юзеров онлайн при 5% загрузке ресурсов в режиме стресса, т.е. кол-во запросов намного превышало расчетное. Расчетная нагрузка 10000 юзеров онлайн. Архитектура системы позволяет делать как шардинг так и кластеризацию, в зависимости от нужд.

    Одна из первых игр реализованная на AJAX технологии с полной поддержкой РЕСТ. На клиента и между демонами гоняется JSON.

    Будут вопросы - пишите.


    Сама игра

    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Админка

    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Логирование демонов

    Цифры показывают скорость доступа к внутренним данным в долях секунды. По сути это доступ к внешним страницам/данным.

    [​IMG]

    Как мы хуярим...

    [​IMG]
    [​IMG]
     
  2. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    красотища. Аж дух захватывает =)
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    За гранью оргазма.
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.239
    Симпатии:
    0
    440Hz
    cпасибо, просто афигенно...
    а как происходит синхронизация удров во флеше?т.е. один ударил, а второй постоянно что то дергает чтобы узнать об ударе?
    Users daemon он рулит изменениями у юзеров... т.е. человек купил шмотку и одел, оно это изменение в демоне, потом через некоторое время сбрасывается в бд, а когда другой человек нажимает на инфу этого юзера, то определяется с демона надо просить или из базы тянуть? или под это написана "злостная система перевода всего и вся в html"(с) ?
    т.е. как определяется, что конкретно эти данные еше в демоне, а уже вот эти надо брать из базы
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    что будет если сервак вдруг скрашится? какое время потеряется?
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    А где мобы? хочу кого-нить побить ;)
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    сейчас раз в 5 сек + ответ на действие, т.е. кликнул и получил состояние боя или через 5 сек получит автоматом. думаем перейти на канальную систему, т.е. постоянный коннект и писанина в каналы.

    демон при старте все всасывает в себя и строит объекты по данным. если данные каким-то образом изменяются то взводится флаг и демон по таймеру пробегается по данным и сбрасывает все в БД. сейчас раз в 300 сек. При останове происходит принудительный сброс измененных данных.
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    как раз сейчас дотестиваем мобов и наверное завтра выложим на продакшен. потом навесим на них нормальный ИИ (ситуационный) и будет ваще кошерно.
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    на продакшене сброс раз в секунду.
     
  10. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    буду всех нагибнуть =)
    и надеюсь будут нормальные женские персы, а-то выбрал себе тетку, а на флеше непойми кто ;)
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    добавил скринов как мы хуярим.

    IDE+SVN+REDMINE
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    и давно это у тебя?
    =))))))))))))

    мы прикалываемся, что б сделать расходник, что б раздевать перса.
    =)))

    нажал и противник голый. гыгыгы
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    каналы это всмысле между клиентом и сервером? В броузере можно сделать каналы? Я думал, что кроме ежесекундного аякса ничего лучше не существет на этом поприще.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    я тоже тетками всегда играю. Пялиться на мужика часами и наряжать его - раздражает. Для меня персы не являются продолжением меня, а просто арендуют часть моего сознания =)
     
  15. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Не понимаю, как можно играть мужскими персами ;) - так что всегда
    igordata - в теме ;)
     
  16. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну да... есть приблуда к nginx, которая держит постоянное ссоединение с клиентом и имеет бакенд, куда сервер по надобности пишет. данные доставляются сразу без переконнектов.

    Т.е. по сути клиент коннектиться и ждет данных. Сервер по мере надобноссти пишет в канал и юзер сразу получает данные. т.к. мы гоняем JOSN то на клиенте проблем нет.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    440Hz
    т.е. броузер лезет по какому-то адресу, а ему оттуда пишут постоянно и по чуть-чуть, как если бы была очень медленная скорость коннекта? а как тогда это разбирать? я думал, что данные в скрипт передаются после завершения их получения. Это на js можно так по-кусочкам получать ответ, не завершая подключение?
     
  18. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  19. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ему пишут тогда, когда надо. например в чате. когда пришло сообщение. а так они висит и ждет.
     
  20. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.239
    Симпатии:
    0
    440Hz
    а сколько народу в команде разработчиков?
     
  21. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    наверное на этот вопрос не отвечу. сорри.

    но в принципе есть проггеры/тимлидер, дизайнеры, верстаки, гейм-дизайнеры, художники и еще фиг его знает кого, но все высокопрофессиональные парни/девушки.

    команда распределенная.

    синкаемся скайпом, голосом.

    работаем 10-12 часов в день иногда 14-16, т.к. просто охуенно интересно.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    440Hz
    в приведенной ссылке js код дергает каждые полсекунды какой-то урл, и соотв. получает с него некий ответ.

    А так, чтобы дернул урл один раз, и получаешь с него информацию часами - так не бывает?
     
  23. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я и говорю. сейчас дергает по таймеру. думаем перейти на каналы, т.е. 1 раз законнектился и принимаешь данные по мере их появления в канале.

    но с учетом того, что все данныые лежат в памяти, доступ к ним практичесски моментальный. на скрине ввидно. БД вообще не напрягается.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.766
    А как реализуются каналы на стороне пользователя? js умеет работать с каналами? =) дайте ченить почитать, хоть запрос в гугл.
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    igordata

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