Ответы пользователя по тегу Разработка игр
  • Какие существуют движки для HTML5 игр? Какие посоветуете?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    pixi.js, рекомендую
    Ответ написан
    Комментировать
  • Движки WebGL для реализации ММО-игр?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    Pixi.js - отличная вещь. Использую чистым, можно использовать Phaser, он в его основе.
    Ответ написан
    Комментировать
  • Как правильно спроектировать "космический корабль"?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    Точно так же делаю. Не запариваюсь. Только Hardpoint назван Module xD
    Хинт: Можно кэшировать сумму показателей и пересчитывать только при поломке отсека/оборудования, либо при смене отсека/оборудования.
    Ответ написан
    Комментировать
  • Браузерная MMORTS на Django - стóит ли свеч?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    Вполне реально.
    Ответ написан
    Комментировать
  • Куда податься новичку в gamedev?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    И меня, меня возьмите научить! =)
    Ответ написан
  • Как сделать так чтоб точка двигалась по прямой?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    // 1 текущая позиция
    position_x = 1;
    position_y = 2;
    
    // 2 место назначения
    destination_x = 2;
    destination_y = 2;
    
    // 3 вектор направления
    direction_x = destination_x - position_x;
    direction_y = destination_y - position_y;
    
    // 4 длина вектора направления
    direction_length = sqrt(direction_x * direction_x + direction_y * direction_y)
    
    // 5 нормализованный вектор направления, что бы можно было умножать на скорость
    if (direction_length == 0) {
        normalized_direction_x = 0;
        normalized_direction_y = 0;
    } else {
        normalized_direction_x = dirextion_x / direction_length;
        normalized_direction_y = direction_y / direction_length;
    }
    
    // 6 скорость, например за шаг или секунду
    speed = 0.5 
    
    // 7 вектор скорости
    velocity_x = normalized_direction_x * speed;
    velocity_y = normalized_direction_y * speed;
    
    // 8 следующая точка на которую можно переместиться 
    // в принципе, уже ответ на вопрос, но! дальше - лучше
    next_position_x += velocity_x
    next_position_y += velocity_y
    
    // 9 расстояние от текущей точки до места назначения
    to_destination_distance = sqrt((position_x - destination_x)^2 + (position_y - destination_y)^2)
    
    // 10 расстояние от текущей точки до следующей точки
    to_next_position_distance = sqrt((position_x - next_position_x)^2 + (position_y - next_position_y)^2)
    
    // 11 сравниваем, если до места назначения ближе чем до следующего шага:
    // ==с========n==
    // ==c=====d=====
    // то двигать только до места назначения, не дальше
    if (to_destination_distance <= to_next_position_distance) {
        position_x = destination_x
        position_y = destination_y
    } else {
        position_x = next_position_x
        position_y = next_position_y
    }
    
    // пункты 2-11 повторять до тех пор пока не приедем в место назначения
    Ответ написан
    Комментировать
  • Какие плюсы и минусы в разработке собственного игрового движка?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    Unity3d клиент + apache thrift сеть + свой сервер на любом языке. Для старта хватит. А там на финальной версии переписать thrift rpc на свою сеть.
    Ответ написан
    2 комментария
  • Какое сделать клиент-серверное взаимодействие при PvP в мобильной игре?

    oshikuru
    @oshikuru
    Python-разработчик, не брезгую js / html / css
    Вы когда подключаете любого игрока к серверу, на сервере отмечайте, что он онлайн. Далее при необходимости ищете в своем списке онлайн-игроков и высылаете ему приглашение.

    Упрощенно подключение:
    1) Подключить игрока к серверу.
    2) Внести его id в список онлайн.
    3) Установить ему статус "вне боя"

    Упрощенно поиск соперника:
    1) Посмотреть в список онлайн, найти первого у кого статус "вне боя"
    2) Создать комнату для боя, поместить в нее обоих участников
    3) Обоим участникам выставить статус "ожидает боя".
    4) Отправить приглашение обоим участникам.
    5) После согласия обоих участников - выставить обоим статус "в бою" и начать бой.

    Детали реализации и выбор технологий подключения к серверу, хранения сессии, вопросы обновления информации сессии и ее актуальности (до сих пор ли игрок онлайн) - оставляю за рамками этого ответа. Вероятно у vk-api есть какие-либо способы узнать о том, онлайн пользователь или нет. Но скорее всего придется реализовать самому.
    Ответ написан
    Комментировать