Таблица рекордов

Материал из SpaceRangers.Wiki
Перейти к: навигация, поиск

Таблица рекордов — это сводная доска результатов прохождения Космических Рейнджеров 2: Доминаторы, отправить результат в которую может каждый игрок. Изначально таблица существовала по адресу http://rangers.ru/records, в настоящее время она полностью утеряна. В данный момент работает фанатская реализация таблицы, созданная DeFANCE и поддерживаемая коллективом СНК-Games.

Суть идеи и принцип работы

После каждого прохождения Космических Рейнджеров 2: Доминаторы результат игрока попадает в локальную таблицу рекордов, которая показывается игроку при завершении игры. Напротив строки, на которой разместился результат каждой конкретной партии, имеется кнопка, нажатие которой позволяет выгрузить полный лог прохождения в текстовый файл вида ToServerXX, где XX - место в локальной таблице рекордов игрока. Далее игроку предлагается посетить веб-сайт, на котором он найдёт инструкции для отправки результата в таблицу рекордов. После проверки рекорд игрока размещается в общей таблице, где его можно сравнить с результами других игроков.

История реализаций

Оригинальная ТР (2004 год)

Всего существовало две полноценных реализации таблицы рекордов. Первая была создана в 2003-2004 годах Алексеем Дубовым для сайта http://rangers.ru, в то время - официального сайта Космических Рейнджеров 2: Доминаторы и была написана на PHP4. Скрипт таблицы был жёстко интегрирован с официальным форумом Elemental Games: рекорды привязывались к профайлам пользователей форума, и напрямую влияли на доступные им функциональные возможности форума.

При просмотре каждого рекорда пользователь мог просмотреть основную информацию о рекорде (например, звание в момент завершения партии, или количество сбитых кораблей), а также дополнительные сведения, например, количество медалей, полученных игроком за партию. Также был доступен глубокий анализ результатов партии - из файла рекорда генерировалось около двух десятков различных подробных графиков с шагом в один месяц, отображавших ход партии и значение каждого конкретного параметра в отдельно взятый момент времени.

Среди недостатков первой реализации таблицы отмечались в основном её медленная и нестабильная работа, вызванные крайне низким качеством кода её движка.

Возрождённая ТР (2010 год)

Новая таблица рекордов, успешно функционирующая и поныне, была разработана Дмитрием Иванюшиным в период с августа по ноябрь 2010 года, а открыта в декабре 2010 года. Также в разработке таблицы принимали участие Богдан Львов (Ostap_Blender), Константин Савенков (Ranger_Koc) и Яков Уваров.

Разработка таблицы стала возможна благодаря тому, что весной 2010 года Алексеем Дубовым был раскрыт инструмент для просмотра рекордов, который использовался им лично. На основе его кода была создана консольная утилита на Delphi, выполняющая автоматическую проверку присланных рекордов - рекорд перед отправкой в таблицу обязательно проходит античитерскую проверку; рекорды, определённые программой как читерские, в таблицу не проходят.

Сама таблица рекордов написана на PHP5 и использует MySQL.

Суммарно путь рекорда от игрока до таблицы выглядит так:

  • игрок отправляет рекорд в таблицу
  • координатор проекта загружает к себе на локальный компьютер пакет рекордов, присланных с момента последней проверки
  • загруженный пакет в автоматическом режиме при помощи утилиты проверки рекордов распаковывается, а рекорды проходят античит-проверку
  • прошедшие проверку рекорды автоматически упаковываются в новый zip-архив
  • координатор через административный интерфейс загружает zip-архив с проверенными рекордами в таблицу

Механизм проверки рекорда

Сам файл рекорда представляет из себя текстовый файл в ANSI, содержащий в себе заголовок и некоторое количество базовой информации о прохождении игры. Данный заголовок предназначен исключительно для игрока, и за вычетом полей имени и расы, полностью игнорируется утилитами проверки рекорда (как оригинальной, использовавшейся в Elemental Games, так и в фанатской).

Далее располагается шифрованный RSA-контейнер, содержащий в себе данные точек для построения графиков партии, сжатые при помощи zip, смещённые на некоторое количество байт и перемешанные между собой. Поскольку в публичном доступе отсутствуют RSA-ключи, которыми криптуется контейнер, считается, что создать утилиту просмотра или проверки рекорда либо крайне сложно, либо невозможно.

Утилита проверки, используемая в работающей в настоящее время таблице, при проверке рекорда расшифровывает его, переводит всю необходимую информацию в json-структуру, и разделяет её на две части, условно называемые head и tail. В head хранится основная информация о партии, а также фиксированные значения параметров, которые определяют, является ли рекорд читерским. В tail, в свою очередь, хранятся данные для построения графиков рекорда при помощи GD Lib. Поскольку head, как правило, оказывается после декомпрессии очень большого размера, после расшифровки он обратно запаковывается в zip, и на лету распаковывается при выборе пользователем функции просмотра графиков рекорда. Таким образом, скрипт таблицы весьма экономно расходует аппаратные ресурсы хостинга, на котором он размещён.

Античит-защита

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

Данным патчем блокируются все существующие на конец 2011 года трейнеры, читы в планетарных битвах (не блокировались в оригинальных КР и не влияли на результат античит-проверки) и прочие уязвимости.

Скачать патч можно на http://snk-games.ru/ladder/?files или http://starmind.3dn.ru

Перспективы развития

На данный момент, несмотря на относительно небольшое количество игроков, продолжающих играть в ванильную "Перезагрузку", в таблице присутствует более ста записей о прохождении. Вместе с тем, поскольку интеграция новой таблицы с существующими коммьюнити-форумами (СНК, Млечный Путь) очень слаба (к примеру, только на МП рекорды учитываются при расчёте рейтинга команд), а чемпионаты, некогда проводившиеся на форуме Elemental Games, более не проводятся, то у потенциальных игроков практически не существует никаких стимулов вновь и вновь проходить игру, как ранее.

Ссылки на ресурсы