Ответы пользователя по тегу Adobe Flash
  • Декомпиляция flash с использованием embed

    @Maccimo
    «Сокрыти еданных» это громко сказано :)

    Если часть классов вынесено в отдельный SWF, внедрённый в основной SWF при помощи embed, то всё довольно просто:

    Внедрённые данные хранятся в тегах DefineBinaryData.
    Добываете их из основного SWF и те из них, что начинаются с символов CWS или FWS пытаетесь декомпилировать.

    Достать полезную нагрузку тегов можно, например, при помощи утилиты swfbinexport из комплекта RABCDAsm.
    Ответ написан
  • Какие технологии использовать для браузерной игры?

    @Maccimo
    Так же попутно идеологички-технический вопрос касательно передачи передвижения шарика? Если я двигаю свой шарик, что передавать другим игрокам? новые координаты шарика? позиция + направление? что делать если нужно чтобы шарики у каждого игрока имели разную скорость? и т.д.
    С клиента на сервер передавать направление движения и скорость.
    С сервера клиентам рассылать новые координаты объектов, направления движения всех (!) подвижных объектов и их скорости.

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

    Стоит учесть, что в ряде случаев это может приводить к резким «скачкам» подвижных объектов на карте
    т.к. в передаче данных по сети возможны задержки.

    Плюсы этого подхода:
    • усложнение жизни недобросовестным игрокам, пытающимся изменить игровую ситуацию в обход правил. Например, перенестись в противоположный угол игрового поля послав на сервер специально сформированную команду. Довольно частое явление, кстати.
    • борьба с рассинхронизацией отображения игрового поля у различных игроков.

    Минусы:
    • задержки в сети могут приводить к не красивым визуальным эффектам
    • алгоритм рассчёта движения прийдётся реализовывать и на клиенте и на сервере. Причём они должны возвращать идентичные результаты при одинаковых входных данных.
    Ответ написан
    Комментировать