Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Определить компьютерного игрока


Автор: GGuz 30.12.2008, 12:55
К примеру взяли мы и создали шахматный сервер, где народ сидит и играет друг с другом в шахматы. Возможно ли программно определить что человек играет в шахматы при помощи компьютера? К примеру можно проверять на запущенные программы на кампе играющего, проверять его действия(свернул окно во время хода) и т.д. К сожалению программу можно запустить на другом кампе и результат такого подхода будет равен нулю. У кого какие идеи, мысли? Поделитесь, буду рад.  

Автор: Akina 30.12.2008, 15:49
Цитата(GGuz @  30.12.2008,  13:55 Найти цитируемый пост)
К примеру можно проверять на запущенные программы на кампе играющего, проверять его действия(свернул окно во время хода) и т.д.

И тебе очень быстро начистят ряшку за подсад трояна...

Цитата(GGuz @  30.12.2008,  13:55 Найти цитируемый пост)
Возможно ли программно определить что человек играет в шахматы при помощи компьютера?

В одной отдельно взятой партии - имхо нет.

Автор: bio_hazard 30.12.2008, 15:50
Скорее всего расчитывать стоит только на честность, техническими средствами не реально проверить кто ваш противник.

Автор: GGuz 30.12.2008, 16:08
Цитата(Akina @  30.12.2008,  15:49 Найти цитируемый пост)
В одной отдельно взятой партии - имхо нет. 

Пусть не за одну партию, пусть за 100 партий.

Цитата(Akina @  30.12.2008,  15:49 Найти цитируемый пост)
И тебе очень быстро начистят ряшку за подсад трояна...

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

Цитата(bio_hazard @  30.12.2008,  15:50 Найти цитируемый пост)
Скорее всего расчитывать стоит только на честность, техническими средствами не реально проверить кто ваш противник. 

http://chessplanet.ru/ - тут реализованно, сам проверял, сыграл при помощи проги(не известной) и практически сразу меня  вычислили

Еще какие нить варианты будут?  smile 

Автор: maxdiver 30.12.2008, 20:05
GGuz, интересно, как вообще можно вычислить вариант, когда программа-"помощник" запущена на другом компьютере?
Разве компьютерные ходы чем-нибудь отличаются от человеческих? Имхо, нет.

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

Автор: SoWa 30.12.2008, 22:48
Факторов можно придумать кучу:
начиная от троянских(наличие запущеной программы, клики, обработка событий)
заканчивая аналитическими- время совершения хода, совпадение с ходом возможных эмуляторов(т.е. я предполагаю, что все шахматные эмуляторы играют на победу и расчитывают шаги намного вперед)- берем 2-3-4-5 разных программ и смотрим, как они сходят

Автор: solverr 31.12.2008, 01:06
Время от времени делать скриншот экрана пользователя и вручную их просматривать. Насколько мне известно, покеррумы так и делают. Для защиты от полностью автоматизированных ботов можно использовать капчи.

Автор: MaXL 31.12.2008, 14:16
Цитата(solverr @  31.12.2008,  01:06 Найти цитируемый пост)
Время от времени делать скриншот экрана пользователя и вручную их просматривать.

ну вот это уже реально троян.
Вот тут предложили по поводу хода возможных эмуляторов, то ИМХО времени не хватит проверять, если игровок будет много тупить будет слишком, либо если заранее подготовить БД таких ходов.
Тут самый оптимальный вариант это время хода. Смотреть несколько партий, а потом предъявлять если что, что будет бан.
Видел на одном сайте было так, что просто игроку выводилось, что соперник свернул окно игры(ну или активизировал другое).
Но ИМХО, когда играешь в шахматы, есть аська и т.п, и иногда приходиться разрываться smile поэтому просто сворачивание ничего такого не сделает. А всё остальные способы, могут быть расценены как трояны...

Автор: SoWa 31.12.2008, 14:50
MaXL, я не знаю точно про программы, эмулирующие игру в шахматы, никогда не использовал smile А они очень долго думают ход? Если да, то конечно, не вариант...

Автор: MaXL 31.12.2008, 15:55
SoWa, эмулировать можно по разному. В какой-то программе я видел нужно указать на сколько ходов вперёд просчитывать, и вот если поставить на три хода, то после пяти-шести ходов, он уже начинает задумываться(секунд пять). А если ещё больше поставить, так вообще умрёт. Только вот определить, на сколько ходов поставил читер невозможно.
Ну а ещё как вриант, сделать black list куда каждый может пожаловаться на читера. И там уже по обстоятельствам.

Автор: SoWa 31.12.2008, 17:43
Вот, например, через веб-интерфейс проблематично отслеживать программы.
Думаю в сторону алгоритма распознования читера.

Автор: GGuz 9.1.2009, 19:58
Цитата(solverr @  31.12.2008,  01:06 Найти цитируемый пост)
Время от времени делать скриншот экрана пользователя и вручную их просматривать.

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

Цитата(MaXL @  31.12.2008,  14:16 Найти цитируемый пост)
Но ИМХО, когда играешь в шахматы, есть аська и т.п, и иногда приходиться разрываться  поэтому просто сворачивание ничего такого не сделает.

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


Цитата(MaXL @  31.12.2008,  15:55 Найти цитируемый пост)
Ну а ещё как вриант, сделать black list куда каждый может пожаловаться на читера. И там уже по обстоятельствам.

Скажите пожалуйста, а как на читера будут жаловаться? Т.е. как может юзер определить что его соперник играет не честно? Ну разве что только сидя со своим соперником в одной комнате  smile 


Цитата(SoWa @  31.12.2008,  17:43 Найти цитируемый пост)
Вот, например, через веб-интерфейс проблематично отслеживать программы.

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


Автор: GGuz 9.1.2009, 22:04
Цитата(MaXL @  31.12.2008,  14:16 Найти цитируемый пост)
Тут самый оптимальный вариант это время хода. 

Берем 5 программ:
                               Первая думает 2 сек
                               Вторая думает 3 сек
                               Третья думает 4 сек
                               Четвертая думает 5 сек
                               Пятая думает 6 сек

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

Если что то не так понял, поправьте  smile 

Автор: kamre 17.1.2009, 18:26
Программа с трояном - полный бред и не уважение к пользователю. Да и смысла в ней никакого нет: 
1) играть можно с одного компа, а ходы на другом считать 
2) клиента можно запустить в виртуальной машине


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)