Начну издалека! Возьмём для примера всем известную игру StarCraft, для того что бы установить игру нужен серийник. Если есть диск с игрой, нет проблем, если нет диска, можно прибегнуть к помощи генератора ключей, но... поиграть то мы сможем в сингл, но войти в BattleNet нет. То есть существует две проверки, одна локальная-простая, другая на стороне сервера. Но эта проверка очевидно отличается от локальной, и я очень сомневаюсь что на сервере имеется база всех ключей, которые когда либо печатались на CD, скорей всего всё дело в хитром алгоритме. 1. Собственно первый вопрос - что за алгоритмы используются в подобных играх, и реально ли их подобрать? Если кто знает по теме, рассказать поподробней общий принцип работы. P.S. Сейчас разбираю одну довольно популярную игру, делаю это из интереса и для понимания работы (авось пригодится для своих проектов). Выпускать программу в свободное плавание не собираюсь, пусть разрабы и дальше радуют нас своими играми и не испытывают недостатка в средствах.
А почему и нет? Ключи, которые печатаются на CD, откуда берутся? Их наверно издатель/автор предоставляет, верно?
HeadHunter В чём причина таких сомнений? Даже если было отпечатано 10 миллионов копий, база данных по ключам будет иметь достаточно смехотворные размеры. Встраивают же в некоторые софтины списки забаненых ключей на десятки и сотни позиций.
Ну... я думаю это накладно хранить базу ключей и при каждом коннекте искать по всей базе, особенно если учитывать что пользователей тысячи, это может сильно нагружать сервер. Гораздо "проще" на мой взгляд было бы по какому-нибудь обратному алгоритму преобразовывать ключ до некоторого определённого числа (мастер ключ). Если после этой процедуры получившееся число совпадает с "мастер ключом", значит серийник верный. Хотя конечно это тоже вычисления, и нагрузка, но я думал\ю что это так. Предоставлять то предоставляет, но в каком виде? В виде текстового файла, или в виде алгоритма? Ведь печатающие станки не просто груда железа, они управляются компьютером, который вполне может генерировать числа по заданному алгоритму и печатать их на болванках.
Поиск по базе уникального ключа в отсортированном множестве, это смехотворная задача для многопроцессорного серва.
То есть никаких мастер ключей, все уверены что это обычная база? 2. Тогда второй вопрос - зачем делать локальную проверку ключа, если он всё равно повторно проверяется на сервере? Не лучше ли вообще исключить из клиента эту функцию?
База на сервере 100% остальное бред. А локально (допустим при установки) проверять надо хотя бы для предотвращения ошибок ввода при подключении с левым ключом ip баниться
CyberManiac это вообще к чему? там как раз не проверяется сдкей, а в некоторых (например Bnet) вообще долженн быть XXXX-XXX-...
CyberManiac Ммм.. да, наверное в этом есть смысл... скорей всего это действительно для локальных игроков сделано.