• Разработка видео чата?

    @strcpy
    0. щас делаю проект с видеочатом, использую webrtc, ограничились только хромом
    1. webrtc нормально работает только в хроме
    2. на flash матерятся, но flash самая модная технология доставки видео (кроме ютуба) так что его очень не скоро выпилят
    3. у webrtc есть подводные камни: без STUNT сервера никуда, бывает что связь не устанавливается если в сети NAT
    4. установка связи в отдельных случаях занимает 20-30 секунд, по инфе от netscan около 10% звонков не проходят
    5. нельзя шарить фрагмент экрана, только отдельное окно, а если шарить tab в хроме, то начинаются адовые тормоза
    6. плывет API
    7. mediastream API сырой, в хроме недавно репортил баг, очень мало документации, хотя ютуб на нем работает

    короче технология сырая, чтобы нормально работала, нужны коммерческие костыли (в частности в виде flash), как раз сам подумываю о написании такого костыля: https://github.com/stiv-yakovenko/reliablertc/blob... (пока в виде прототипа)
    Ответ написан
    Комментировать
  • Мультиплеер для онлайн игры (HTML5/JS/AS3)?

    @spotifi
    Если речь идет действительно о большом масштабировании, то см. в сторону микросервисной архитектуры.

    SQL плохо масштабируется горизонтально (добавлением серверов).

    Рассмотрел бы отказ от MySQL в пользу MongoDB, например, она умеет горизонтально масштабироваться.
    Рассмотрел бы отказ от БД вообще в пользу Tarantool. Если оперативной памяти хватает держать всю БД в ней, то это радикально быстрее.

    Клиенты будут обновлять игровое поле/комнату/стол регулярно отправляя на сервер запросы к API (возможно Long Polling).


    В наше время это не круто и по ресурсам в том числе. Я бы рассмотрел вариант websocket для новых клиентов и long polling для старых.
    Ответ написан
    Комментировать
  • Мультиплеер для онлайн игры (HTML5/JS/AS3)?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Проблема не столько в выборе инструментов, сколько в разработке архитектуры, способной на горизонтальное масштабирование.
    Нет никакой особой сложности сделать задуманное на php/python и даже perl взаимодействие через (веб-)сокеты. Преимущество node.js разве что в асинхронной работе с хранилищами из коробки, но это не означает еще, что сразу будет быстрее.
    От себя бы порекомендовал использовать не MySQL, а PostgreSQL. Надежнее и как минимум не медленнее.
    БД надо сразу шардировать. Как минимум шарды под пользователе-зависимую информацию.
    Скорее всего также придётся написать прокси для раскидывания юзеров по разным гейм-серверам.
    В общем, по хорошему нужен хотя бы сениор с опытом боевого геймдева.
    Ответ написан
    Комментировать
  • Мультиплеер для онлайн игры (HTML5/JS/AS3)?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Если Вы говорите, что часть клиентов уже сделана на html5/JS, то вообще самое простое будет взять: socket.io и поднять сервер на nodejs с тем же socket.io только в качестве сервера. Данные также в БД + кэш рэдиса. Особенно больше ничего и не надо.

    + посмотрите в сторону ionic framework, позволяет обернуть web-приложение в нативное на мобильные платформы, если игры не нагружены анимацией, то вполне достойный вариант.

    И в итоге получается Вам надо сделать 1 клиент на js+socket.io, на веб просто загрузить его, а на мобилках обернуть в ionic. И сделать сервер, который будет создавать комнаты и принимать новые подключения.

    PHP плохо подходит, так как в нем довольно больно реализовать нормальное взаимодействие через сокеты/long-polling для работы с комнатами.

    upd:
    Думаю будет полезно посмотреть:
    github/node-js-game-server
    npm/nodegame
    Building Multiplayer Games with Node.js and Socket.IO
    Dynamically Creating Game Rooms using Socket.IO an...

    upd2:
    По поводу нагрузки:
    socket.io benchmark
    1 миллион коннектов на 15ГБ оперативки
    600к подключений
    Ответ написан
    6 комментариев
  • Почему vk api возвращает пустое "photo":"[]"?

    JimDi
    @JimDi
    немного некропостинга, надеюсь кому-то поможет не терять время.

    вместо
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => '@'.$SERVER['document_root'].$imggr));

    надо примерно так
    $cfile = curl_file_create($fullServerPathToImage,'image/jpeg',pathinfo($fullServerPathToImage)['basename']);
            $data = array('file' => $cfile);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


    ну и возможно понадобится вот этот кусок, а то везде https теперь
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    Ответ написан
    1 комментарий
  • Считается ли фриланс за опыт работы?

    @constantant
    В особо строгих конторах это будет означать что вы плохой раб, то есть у вас нет опыта подчинения и вас придётся укрощать - тратить время и без того ленивого манагера.
    Ответ написан
    5 комментариев