CoValent
05.07.2006, 13:39
Собственно, проверка "на макроэкспресс" простейшая: сверяется повторяемость цикла близких по времени управляющих команд, поступающих на сервер от клиента.
Перевожу на русский. :)
Предположим, нам нужно скрафтить предмет, причем крафтинг последовательно включает в себя команду 1, команду 2, команду 3 и команду 4. Хороший программист (и даже юзер... я уж не говорю о ламере...) будет использовать клавиатурные вызовы к командам, для экономии времени. И, как обычно, забудет о том, что на сервер по окончании очереди поступает дополнительная команда 5 - "сгенерить ЭТО и отдать клиенту". Сервер записывает время команды, выполняет ее, потом сверяет со следующей такой же командой - высчитывая разницу по времени, потом со следующей... и если разница совпадает с учетом особенностей прохождения ip-пакетов от клиента - начинается сверка "на макроэкспресс", включающая в себя уже и проверку на частоту использования И команд 1-2-3-4, и посылку сообщения "Hello, how are you?" от кого-то, во время ответа на который крафтинг должен бы прерваться... и так далее.
Однако есть возможность обойти эту "защиту". :)
Во-первых, надо использовать не клавиатурные коды, а движение мышью. Во-вторых, записывать надо не один цикл, а 3-5, причем в цикле крафтинга мышь надо тащить с разной скоростью и по разным траекториям. В итоге это даст разницу во времени между командами 1-2-3-4, между заключительными командами цикла 5.
А никто из программистов игры не будет заморачивать сервер эвристической проверкой вычисления повторяемости длительных циклов. Во-первых, это надо быть параноиком, а во-вторых - иметь избыточную мощность серверов. Чего не наблюдается у SOE.
P.S. Досужие ли это рассуждения? Нет. :) Таким образом я прокачал какую-то из крафтерских профессий в погоне за "Older Jedi" - в течении нескольких часов. Никаких претензий со стороны SOE не поступало.
Перевожу на русский. :)
Предположим, нам нужно скрафтить предмет, причем крафтинг последовательно включает в себя команду 1, команду 2, команду 3 и команду 4. Хороший программист (и даже юзер... я уж не говорю о ламере...) будет использовать клавиатурные вызовы к командам, для экономии времени. И, как обычно, забудет о том, что на сервер по окончании очереди поступает дополнительная команда 5 - "сгенерить ЭТО и отдать клиенту". Сервер записывает время команды, выполняет ее, потом сверяет со следующей такой же командой - высчитывая разницу по времени, потом со следующей... и если разница совпадает с учетом особенностей прохождения ip-пакетов от клиента - начинается сверка "на макроэкспресс", включающая в себя уже и проверку на частоту использования И команд 1-2-3-4, и посылку сообщения "Hello, how are you?" от кого-то, во время ответа на который крафтинг должен бы прерваться... и так далее.
Однако есть возможность обойти эту "защиту". :)
Во-первых, надо использовать не клавиатурные коды, а движение мышью. Во-вторых, записывать надо не один цикл, а 3-5, причем в цикле крафтинга мышь надо тащить с разной скоростью и по разным траекториям. В итоге это даст разницу во времени между командами 1-2-3-4, между заключительными командами цикла 5.
А никто из программистов игры не будет заморачивать сервер эвристической проверкой вычисления повторяемости длительных циклов. Во-первых, это надо быть параноиком, а во-вторых - иметь избыточную мощность серверов. Чего не наблюдается у SOE.
P.S. Досужие ли это рассуждения? Нет. :) Таким образом я прокачал какую-то из крафтерских профессий в погоне за "Older Jedi" - в течении нескольких часов. Никаких претензий со стороны SOE не поступало.