Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Определить компьютерного игрока |
Автор: GGuz 30.12.2008, 12:55 |
К примеру взяли мы и создали шахматный сервер, где народ сидит и играет друг с другом в шахматы. Возможно ли программно определить что человек играет в шахматы при помощи компьютера? К примеру можно проверять на запущенные программы на кампе играющего, проверять его действия(свернул окно во время хода) и т.д. К сожалению программу можно запустить на другом кампе и результат такого подхода будет равен нулю. У кого какие идеи, мысли? Поделитесь, буду рад. |
Автор: bio_hazard 30.12.2008, 15:50 |
Скорее всего расчитывать стоит только на честность, техническими средствами не реально проверить кто ваш противник. |
Автор: GGuz 30.12.2008, 16:08 | ||
Пусть не за одну партию, пусть за 100 партий. На счет запущенных программ, это да, а вот на счет юзерских кликов, то это все ок. К примеру ход юзера, он кликает, но кликает не по окну моей проги(в которой играет шахматы), потом опять его ход, а потом опять и опять и после каждого хода происходит клик или сворачивание моей проги, значит человек жульничает. Но это в любом случае не вариант...
http://chessplanet.ru/ - тут реализованно, сам проверял, сыграл при помощи проги(не известной) и практически сразу меня вычислили Еще какие нить варианты будут? ![]() |
Автор: maxdiver 30.12.2008, 20:05 |
GGuz, интересно, как вообще можно вычислить вариант, когда программа-"помощник" запущена на другом компьютере? Разве компьютерные ходы чем-нибудь отличаются от человеческих? Имхо, нет. По поводу проверки запущенных программ - ну можно проверять по заголовкам открытых окон, чего здесь особо предосудительного? Для трояна как-то слабовато ![]() |
Автор: SoWa 30.12.2008, 22:48 |
Факторов можно придумать кучу: начиная от троянских(наличие запущеной программы, клики, обработка событий) заканчивая аналитическими- время совершения хода, совпадение с ходом возможных эмуляторов(т.е. я предполагаю, что все шахматные эмуляторы играют на победу и расчитывают шаги намного вперед)- берем 2-3-4-5 разных программ и смотрим, как они сходят |
Автор: solverr 31.12.2008, 01:06 |
Время от времени делать скриншот экрана пользователя и вручную их просматривать. Насколько мне известно, покеррумы так и делают. Для защиты от полностью автоматизированных ботов можно использовать капчи. |
Автор: MaXL 31.12.2008, 14:16 | ||
ну вот это уже реально троян. Вот тут предложили по поводу хода возможных эмуляторов, то ИМХО времени не хватит проверять, если игровок будет много тупить будет слишком, либо если заранее подготовить БД таких ходов. Тут самый оптимальный вариант это время хода. Смотреть несколько партий, а потом предъявлять если что, что будет бан. Видел на одном сайте было так, что просто игроку выводилось, что соперник свернул окно игры(ну или активизировал другое). Но ИМХО, когда играешь в шахматы, есть аська и т.п, и иногда приходиться разрываться ![]() |
Автор: SoWa 31.12.2008, 14:50 |
MaXL, я не знаю точно про программы, эмулирующие игру в шахматы, никогда не использовал ![]() |
Автор: MaXL 31.12.2008, 15:55 |
SoWa, эмулировать можно по разному. В какой-то программе я видел нужно указать на сколько ходов вперёд просчитывать, и вот если поставить на три хода, то после пяти-шести ходов, он уже начинает задумываться(секунд пять). А если ещё больше поставить, так вообще умрёт. Только вот определить, на сколько ходов поставил читер невозможно. Ну а ещё как вриант, сделать black list куда каждый может пожаловаться на читера. И там уже по обстоятельствам. |
Автор: SoWa 31.12.2008, 17:43 |
Вот, например, через веб-интерфейс проблематично отслеживать программы. Думаю в сторону алгоритма распознования читера. |
Автор: GGuz 9.1.2009, 19:58 | ||||||||
Если ограничиваться только одним кампом, тогда сворачивание окон и определение запущенных приложений, будет достаточно и куда более эфективнее предложенного Вами способа...
Ваш ход, вы свернули, опять Ваш ход и опять свернули, 50 партий и все сворачивания приходится именно тогда, когда Ваш противник сделал ход - не кажется фантастическим совпадением? Это всего лишь одна из ступеней защиты(на нее нельзя полностью положиться, но является хорошим дополнением)
Скажите пожалуйста, а как на читера будут жаловаться? Т.е. как может юзер определить что его соперник играет не честно? Ну разве что только сидя со своим соперником в одной комнате ![]()
Ясный пень что придется писать декстоп приложение, т.к. полагаться на клиентские скрипты довольно таки опасно, ответ получаемый сервером может быть заменен... Конечно этим не будет заниматься рядовой юзер, но если турнир будет с призовым фондом, тогда на шахматном сервере начнут сидеть не шахматисты, а хакеры ![]() |
Автор: GGuz 9.1.2009, 22:04 |
Берем 5 программ: Первая думает 2 сек Вторая думает 3 сек Третья думает 4 сек Четвертая думает 5 сек Пятая думает 6 сек Прибавим 3 сек к каждой(время переключения пользователем между шахматной программой и сайтом). Получаем следующее: если юзер думает от 5 сек до 9 значит он играет не сам. В этом где то есть истина, но до факта читерства очень далеко! В принципе как одна из ступеней защиты, этот вариант может подойти, но только из-за того что некоторые ходы как правило должны будут выполняться быстрее нежели 5 и более сек.(на пример первые 3 - 5 ходов) Если что то не так понял, поправьте ![]() |
Автор: kamre 17.1.2009, 18:26 |
Программа с трояном - полный бред и не уважение к пользователю. Да и смысла в ней никакого нет: 1) играть можно с одного компа, а ходы на другом считать 2) клиента можно запустить в виртуальной машине |