Как можно посмотреть базу данных компьютерной игры?
Скачал компьютерную игру. Есть несколько файлов 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. Если движок не из известных - разбираться в формате хранения данных придётся самостоятельно. Как уже говорили, это вряд ли получится (по крайней мере с первого захода), но - попытка не пытка.
Могу посоветовать на хабре статью про ящера, который камень не даст. Информация из не пригодится напрямую, но может дать понятие, с чего начинать.
Не факт, что это файл в формате какой-то популярной БД, но такое тоже возможно... Но даже в этом случае он наверняка запоролен, пароль можно, при большом желании найти в отладчике. Но чаще это это самопальные форматы. Расковырять можно всё, было бы желание
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы посмотреть базу данных компьютерной игры, вам потребуется доступ к серверу, на котором хранится эта база данных. Обычно базы данных компьютерных игр хранятся на удаленных серверах, к которым у вас может не быть прямого доступа. Однако, если у вас есть разрешение на доступ к базе данных игры, то можно использовать специальные программы для управления базами данных, такие как 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->close(); ?>
Не забудьте заменить значения переменных $servername, $username, $password и $dbname на свои собственные. Кроме того, убедитесь, что у вас есть разрешение на доступ к базе данных и выполнение запросов. В случае использования другой СУБД (например, PostgreSQL), измените соответствующие функции и методы для работы с этой базой данных.