Как можно посмотреть базу данных компьютерной игры?

Ссылка скопирована
1 ответ

Скачал компьютерную игру. Есть несколько файлов data с расширением .bin, весят несколько гигов. Я хочу посмотреть как данные хранятся. Хочу подгрузить данные в РСУБД и увидеть кучу игровых sql-таблиц: списки персов, локаций, оружие, магии и т.д. со всеми атрибутами. Можно ли так сделать и что для этого надо? Если нельзя, то объясните почему.

Дополнительно:

А почему вы считаете, что data.bin это данные sql базы?
Если игра пользуется SQL, то и данные в ней лежат прямо в её SQL Базе, а не в каких-то data.bin
и уж тем более, локации в SQL?

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

  • >>>А почему вы считаете, что data.bin это данные sql базы?
    Ну эти файлы просто называются data и весят очень много, вот я и подумал что в них, помимо всего прочего, есть база данных.

    Под локацией я имел ввиду её: название, какие там npc, какие есть квесты в этой локации и т.д.
    Понял, спасибо за подробный ответ.

  • gabana,

    Ну эти файлы просто называются data и весят очень много

    это могут быть любые данные

  • gabana, sql данные не лежат в data.bin в каталоге с игрой. bin просто означает бинарные данные.
    А sql базы лежат в каталоге какой-нибудь sql базы, которую вы врядли скачали.
    Опять же, если бы название игры фигурировало, можно было бы конкретизировать.
    А у игры кроме квестов есть еще графика, звуки, музыка, диалоги и всякое..
  • gabana, в файле с расширением bin может лежать что угодно, и расширение может намеренно не отражать содержание. Это может быть архив (zip, gz итд), это может быть protobuf, это может быть atf, 3do и ещё десятки разных готовых вариантов. Не говоря уже о собственных форматах, сделанных разработчиками под эту конкретную игру.

    Недавно ковырял онлайн-игру, где бинарные файлы собственного формата лежали в файлах с расширением txt. Самый большой ещё и был разделён на 6 кусков, которые сливались в один после скачивания и только потом парсились.

Ответы:

В большинстве случаев, если речь идет о десктопных играх, параметры хранятся не в БД, а зашиты прямо в скомпиленные файлы. Тут декомпилятор надо чтобы развернуть двоичный файл в исходники.

  • На самом деле прямо в скомпиленные файлы данные ложили во времена ДОС. Сейчас данные как хранят раз в различных датафайлах, а не прямо в скомпиленном коде.
    Это и при разработке неудобно - ведь балансировку, что там где подкрутить в данных - выполняет не разработчик, и каждый раз их компилировать для этого неудобно.
    Данные могут лежать даже в текстовом виде, типа yaml или свой формат, но перед продажей, игру обсфуцируют, запаковывают
  • в конце концов, тот же bson.. или свои кастомные форматы... да хоть sqlite, но с криптовкой stream )))

Спасибо, поржал :)

Есть, конечно игры, которые содержат свои ресурсы в "исходном" виде и компилят их каждый раз при запуске - battletech, например. К таким играм обычно пишут очешуительное количество модов (тысячи).
Но большинство игр держит свои ресурсы в бинарном виде, который вот ни разу не стремится документировать - как раз для того, чтобы безмерно умные школьнеги не лезли в ресурсы.
Конечно, найти декомпилеры можно. И распаковщики ресурсов - можно. И обычно их находят - либо на форумах разработки игр, либо на форумах фанатов. Можно даже найти запаковщики обратно - то есть можно править саму игру (когда я начал King's Bounty: Dark Side, был неприятно удивлен багом в начальном расчете параметров героя-орка, пришлось править). Но это простые, ни разу не универсальные инструменты, в них нет свистелок и перделок, работают они обычно с текстовыми файлами.

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

Но для популярных игр эпохи 90х-2000х были готовые редакторы и просмотрщики
уровней и ресурсов (Doom, Quake, Warcraft). Можете там поискать.

Загрузить-то в БД любую проблем не составит. Проблема будет при конвертации из этих файлов с данными в удобоваримый формат для загрузки в эту БД. Вряд ли игра хоанит свои ресурсы в SQL. Если движок не из известных - разбираться в формате хранения данных придётся самостоятельно. Как уже говорили, это вряд ли получится (по крайней мере с первого захода), но - попытка не пытка.
Могу посоветовать на хабре статью про ящера, который камень не даст. Информация из не пригодится напрямую, но может дать понятие, с чего начинать.

Не факт, что это файл в формате какой-то популярной БД, но такое тоже возможно... Но даже в этом случае он наверняка запоролен, пароль можно, при большом желании найти в отладчике. Но чаще это это самопальные форматы. Расковырять можно всё, было бы желание

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

Для того чтобы посмотреть базу данных компьютерной игры, вам потребуется доступ к серверу, на котором хранится эта база данных. Обычно базы данных компьютерных игр хранятся на удаленных серверах, к которым у вас может не быть прямого доступа. Однако, если у вас есть разрешение на доступ к базе данных игры, то можно использовать специальные программы для управления базами данных, такие как phpMyAdmin для MySQL или pgAdmin для PostgreSQL.

Прежде чем приступить к просмотру базы данных, убедитесь, что у вас есть все необходимые данные для подключения к базе данных, такие как хост, имя пользователя, пароль и название базы данных.

Далее, используйте соответствующий язык программирования (например, PHP) для написания кода, который будет устанавливать соединение с базой данных и извлекать необходимую информацию. Ниже приведен пример кода на PHP для подключения к базе данных MySQL и выполнения запроса:

connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
 
// Выполняем запрос к базе данных
$sql = "SELECT * FROM table";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // Выводим данные
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
    }
} else {
    echo "0 results";
}
 
$conn-&gt;close();
?&gt;

connect_error) { die("Connection failed: " . $conn-&gt;connect_error); } // Выполняем запрос к базе данных $sql = "SELECT * FROM table"; $result = $conn-&gt;query($sql); if ($result-&gt;num_rows &gt; 0) { // Выводим данные while($row = $result-&gt;fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; } } else { echo "0 results"; } $conn-&gt;close(); ?&gt;

Не забудьте заменить значения переменных $servername, $username, $password и $dbname на свои собственные. Кроме того, убедитесь, что у вас есть разрешение на доступ к базе данных и выполнение запросов. В случае использования другой СУБД (например, PostgreSQL), измените соответствующие функции и методы для работы с этой базой данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно