ibash.org.ru - Новый цитатник Рунета | Цитаты: По дате По рейтингу Случайно Добавить Поиск RSS |
Форум: Open Source и читерство 1 > [RSS] | Форум: Вход Регистрация Участники Поиск RSS |
Shock 09.03.2010 - 14:35 | Как борятся с читерством в Open Source играх (например, Нексуиз) при игре по сети и сингплеере на рекорды, кроме как идеологическими методами? Я понимаю, что значительная часть логики перенесена на сервер, а на клиенте, в основном, только отображения. Но, я подозреваю, что в том же Нексуизе каждый игрок имеет данные о координатах всех других игроков (и не только тех, кто в поле видимости) и таким образом может существовать клиент, с картой, на которой изображено положение всех игроков. Или, скажем, открытая игра Tower Defense, где можно к концу набрать количество очков, число которых отправляется на сервер. Но, так как известен формат данных, то можно отправить произвольное значение, реально большое, но при этом не достигнутое. Например, Топ-1 набрал 8986 очков. Тогда мы отправляем 9012 и вуаля - число вполне реальное, и мы уже топ-1. При этом, если бы игра была закрытая, то можно было бы встроить алгоритм шифрования результата |
Asterozoa #1 - 09.03.2010 - 15:12 | Может с ним никто и не борется? Или включают дополнительные проверки |
Shock #2 - 09.03.2010 - 15:15 | а как же троллинг рекордов игры? |
Циник #3 - 09.03.2010 - 16:38 | Shock, а разве в Open Source нельзя использовать ассиметричное шифрование? З.Ы. обеспечение безопасности за счёт "закрытости" формата это примерно как головй в песок. |
Asterozoa #4 - 09.03.2010 - 16:47 | А реально ли смоделировать в домашних условиях механизм двустороннего шифрования? |
Shock #5 - 09.03.2010 - 17:08 | Циник Утрированный пример. допустим, у нас есть функция, которая получает и возвращает количество очков: int Player.setPoints(); int Player.getPoints(); и функция, которая посылает зашифрованный результат и в которой реализовано ассиметричное шифрование. например: Response.sendData(int points); Но ведь можно вместо Response.sendData(Player.getPoints()); поставить Response.sendData(9001); Более того, можно изменить исходник игры и вместо Player.setPoints(Player.getPoints() + 1); поставить Player.setPoints(9001); И таким образом еще не дошло дело до пересылки данных, где используется шифрование, а клиент уже твёрдо уверен, что у нас over 9000 очков, что и пошлётся на сервер. |
VovanZ #6 - 09.03.2010 - 17:26 | А зачем с ним бороться? В синглплеерные игры каждый играет для удовольствия так как он хочет. Если хотите посоревноваться, то лучше собраться ИРЛ и посоревноваться на одном компе, на который оригинальная игра поставил "рефери". |
naryl #7 - 09.03.2010 - 17:46 | > При этом, если бы игра была закрытая, то можно было бы встроить алгоритм шифрования результата В самые короткие сроки ломается защита, полагающаяся на неизвестность алгоритма шифрования. Это же одно из основных правил криптографии. Нужно предполагать, что злоумышленник знает об устройстве шифрующего устройства и имеет один экземпляр его. Закрытый исходник безопасности нисколько не помогает. |
Циник #8 - 09.03.2010 - 17:50 | Asterozoa, да. В чём проблема то? Shock, всё это же можно сделать и в закрытой игре. С той только разницей, что править придётся не красивый код, а асемблер. Насчёт примера с координатами игроков для CS есть такой чит. Борятся всякими дополнительными утилитками, которые проверяют контрольные суммы файлов, сканируют память или ещё чего. |
Циник #9 - 09.03.2010 - 17:55 | >В самые короткие сроки ломается защита, полагающаяся на неизвестность алгоритма шифрования. Skype;) Хотя там может не в закрытости дело, а в действительно хорошем алгоритме. А так да, очень часто "закрытое" шифрование ломается быстро. |
Shock #10 - 09.03.2010 - 18:08 | naryl, но можно взять один из открытых алгоритмов шифрования(симметричных или ассиметричных?) с ключём. первое правило подразумевает как раз неизвестность ключа. плюс, я так понимаю, закрытый исходник увеличивает "стоимость" взлома, а , как известно, надежный алгоритм - это тот, в котором стоимость взлома превышает выгоду от взлома. то есть людям будет лень ламать закрытую игрушку и не лень ламать открытую игрушку, ибо легче. но, я так понял, единственное решение проблемы - максимально вынести логику на сервер и в остальном - доверять игрокам? |
RoadRunnеr #11 - 09.03.2010 - 18:15 | А что мешает инфу о кол-ве набранных очков хранить сразу на сервере? Ведь клиент лишь посылает действия, а обработку данных на основании действий выполняет сервер. Поэтому и посчитать набранные очки сервер может сразу же на основании действий, присланных клиентом. |
Shock #12 - 09.03.2010 - 18:23 | ок. время, за которое клиент прошёл уровень игры, при условии, что он может ставить на паузы, во время которых время не тикает |
unikoid #13 - 09.03.2010 - 18:35 | Что-то я не понял. Все данные (количество фрагов, текущее положение игрока и его направление, да почти все, на самом деле), в основном обсчитываются и хранятся на сервере. Клиент, в лучшем случае, может заиметь какой-нибудь воллхак или аимбот, если речь об фпс. Ну а защиту от этого на сервере вполне можно предусмотреть. Эвристическую, например. |
RoadRunnеr #14 - 09.03.2010 - 20:13 | Та же "пауза" - клиент шлет серверу запрос на паузу и получает положительный ответ, после чего и отображает соотв. надпись. Затем, при снятии паузы, отсылает соотв. запрос на сервер для продолжения игры. Так что, Шок, ты что-то не то говоришь... |
Shock #15 - 09.03.2010 - 20:33 | > Так что, Шок, ты что-то не то говоришь... меня интересуют именно честные методы борьбы с читерством на стороне клиента в оупенсорс играх. ньюанс с перенесением части логики на сервер я понимаю, но: 1. это труднее запрограммировать, чем просто втыкнуть простую защиту на клиенте 2. это требует постоянного и надёжного соединения "на каждый чих" 3. это производит нагрузку на сервер. допустим, я пишу оупенсорс ТоверДефенс на Питоне, который должен работать в офлайне. бегут существа, за каждое убитое существо начисляются очки. чем глубже существа продвинулись к выходу - тем меньше очков за них начисляют. плюс я хочу, чтобы игроки могли в конце игры могли нажать кнопку "опубликовать" и таким образом с лёгкостью померятся членами с другими игроками. Задание: максимально затруднить выкладывание фальшивого результата при условии идеально-открытого кода клиента и сервера. (например, использование закрытого ключа при открытом алгоритме шифрования или т.п. - разрешается) есть вариант все рассчёты производить или дублировать на сервере, но тогда всплывают те три недостатка, что были описаны выше. и что я тут не то говорю? еще один способ - сохранять логи игры с возможностью воспроизведения их на других клиентах и в случае подозорения на нечесность - пересматривать и отсевать, банить игроков по АйПи, призодить и бить морду и т.д. но кроме варианта послезащиты хочется еще вариант предварительной защиты от подобных нечестностей. |
naryl #16 - 10.03.2010 - 01:03 | Любая защита легко обходится написанием бота ;) Можно попробовать анализировать демку автоматически. |
unikoid #17 - 10.03.2010 - 07:36 | >Любая защита легко обходится написанием бота ;) Можно поподробней, чет я не вкуриваю. |
naryl #18 - 10.03.2010 - 18:56 | Не отправляй запрос с завышенным score. Напиши программу, которая честно заработает тебе столько очков. |
unikoid #19 - 10.03.2010 - 19:45 | А, ну это очевидно. Правда смысла лично я не вижу, все таки игры созданы чтобы получать процесс удовольствия от игры, в первую очередь, я считаю. |
Asterozoa #20 - 10.03.2010 - 19:50 | А читерство по твоему онанизм:) |
unikoid #21 - 10.03.2010 - 20:02 | Скорее наоборот, читерство - отстранение от процесса или сведение его к механическим операциям. |
доброжелатель #22 - 10.03.2010 - 22:03 | Возможное пристанище Няшгъа: http://nowere.net/b/res/28298.html |
к0s7ёr #23 - 16.03.2010 - 18:48 | няшг, ты правда был там?? |
Xenius #24 - 19.09.2010 - 20:33 | Если будет какая-то "защита" — делом чести будет её обойти. По-моему, оптимально — полагаться на честность других игроков и самому не обманывать. Что касается чисто SP игр (то есть даже без писькомерства), то никакой "защиты" тем более не требуется, а наоборот желательно, что бы в самой игре были соответствующие опции, чтоб не перекомпилировать, что делать лень. |
К списку вопросов | Страницы: 1 > |
«ibash.org.ru — Новый цитатник Рунета» | Почта вебмастера: imail@ibash.org.ru |