Ответы пользователя по тегу Canvas
  • Canvas или svg?

    riky
    @riky
    Laravel
    fabrikjs
    canvas, перетаскивания мышью из коробки, группировки.
    Ответ написан
    2 комментария
  • Как автоматизировать обход сайта с HTML5 canvas?

    riky
    @riky
    Laravel
    делал такое именно поиском картинки в картинке. вполне спортивно, машинное зрение и распознавание образов тут не надо. удобно что не нужно изучать внутреннюю работу игры и не зависишь от изменений кода/новых версий. также удобно для игр с закрытым кодом (flash).

    но если хочешь сделать именно на уровне бизнес логики - то выбор небольшой:
    проще: подсмотреть какие запросы уходят на сервер и написать скрипт отправляющий такие же, из минусов - визуально на экране не увидишь изменений, до перезагрузки, хотя браузер по сути тут не обязателен вообще.

    чуть сложнее но круче: извлечь js код и посмотреть внутренне апи (сложность в том что код скорее всего минимифицирован и возможно обфусцирован, тогда без названия переменных может быть сложнее). после разбора кода его можно поменять (дописать свою бизнес логику) и подменить в браузере, можно добавить новые кнопки и функции в интерфейс.

    сам не пробовал, но что-то слышал про toolXYZ

    использую все способы в зависимости от задачи.
    Ответ написан
    Комментировать
  • На каком языке пишут шейдеры для Canvas?

    riky
    @riky
    Laravel
    учить следует opengl es 2.0
    https://ru.wikipedia.org/wiki/OpenGL_ES
    шейдерный язык
    Ответ написан
    Комментировать
  • Как построить онлайн карточную игру на PHP и canvas?

    riky
    @riky
    Laravel
    Тоже сейчас делаю карточную игру онлайн. Клон древней astral tournament - пример https://youtu.be/qZbVjDvKSx4?t=50s

    В основном для обучения. Делаю на nodejs (хотя в основном обычно работаю на php/symfony) нода для таких вещей лучше адаптирована, с сокетами работает эффективнее, а на пхп придется поизвращаться (либо как вы описали аякс запросами постоянными долбить сервер, либо вебсокеты тоже пытаться прикручивать).

    Собственно на ноде все просто. после создания вебсокета можно двухсторонне общаться, на клиенте и сервере можно отправлять события и подписываться на них. Вся логика на сервере - клиент тупой только отправляет события и отрисовывает присланные события.

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

    пример: игрок нажимает кнопку создать игру - все что делается на клиенте - отправляется событие на сервер, сервер даже не отвечает ничего, он просто всем игрокам отправит событие - создана игра и ее параметры. игра тут же отрисуется на всех клиентах (в том числе у того кто создал).

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

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

    также стоит пояснить как делаются ходы (а именно анимация ходов). если посмотреть видео - то там игрок выбирает карту - ходится и дальше начинается атака его существами. тут делается так - на сервер уходит название выкинутой карты, сервер полностью просчитывает все действия за ход (а взаимодействия там довольно сложные - у каждой карты свои уникальные способности и они могут складываться с другими картами). далее формирует список визуальных событий, например - вызвать карту, атака картой, существо получает урон, мощности стихии увеличилась, и тд. на клиент уходит этот список и он начинает их один за другим проигрывать, как сценарий, чтобы игроки могли пошагово проследить и понять что происходит.

    в общем и целом все просто
    1) на сервере и клиенте есть обработчики событий друг от друга.
    2) с клиента идут события - команды игроков (создать игру, присоединится, сделать ход, сдаться, пропустить ход)
    3) с сервера идут команды для изменения UI (добавить игру в список, открыть UI игры, запустить анимацию сценария хода)

    я думаю мог и на пхп это сделать, опыт с ним > 5 лет, а с нодой ничего особо серьезного не делал пока, хотя иногда пользуюсь ей. но с пхп это будет не лучшее решение.

    к тому же с нодой есть возможность писать часть кода который будет выполняться и на клиенте и на сервере, тк язык один. у меня например пока это только описания карт, но в целом перспектива тоже интересная.
    Ответ написан
    2 комментария
  • Каким способом реализовать на канвасе "зум" например от года к конкретному дню недели?

    riky
    @riky
    Laravel
    помоему для такого лучше svg
    посмотри d3js - фреймворк довольно сложный но у них миллион примеров и готовых заготовок + доки, еще и с красивой анимацией сможешь сделать.
    Ответ написан
    1 комментарий