Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Открыть файл с расширением .dat

Открыть файл с расширением .dat

Поделиться

Страницы: 1 2 Следующая

u960Постоялецwww5 ноя. 201715:15#0
Может кто нить может открыть, или подкинуть мысли с чего начать. Понятно что там может быть что угодно, какой угодно формат.
Хочу посмотреть как уровень игры запрограммировали.
1-2-palace-1
ВасянУчастникwww5 ноя. 201715:26#1
u960
Что за игра?
u960Постоялецwww5 ноя. 201715:35#2
Васян
Oceanhorn
ВасянУчастникwww5 ноя. 201717:12#3
u960
Это будет сложно. С комп-играми ещё можно потыкаться в Hex-редакторе и посмотреть, что в игре изменилось/сломалось, а как здесь смотреть я не знаю.

Открыл файл, посмотрел. Ну, я у Мамы не хакер, так что ничего интересного не нашёл.

+ Показать
u960Постоялецwww5 ноя. 201718:00#4
Васян
> Это будет сложно. С комп-играми
ну это версия для компа. К сожалению у меня не запустилась, но все ресурсы в открытом виде. Я и подумал, может и уровни они как нить по простому закодировали.

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

Правка: 5 ноя. 2017 18:26

SuslikМодераторwww6 ноя. 20172:01#5
u960
> может вообще там зазипованный архив с поменянным расширением на .dat
у зипа в заголовке первые два байта — это "PK". в твоём случае данные явно raw, так как очень регулярная повторяющаяся структура. найди самый простой уровень и постарайся проследить аналогию между структурой файла и тем, что на уровне.

Правка: 6 ноя. 2017 2:02

endeavour_prПостоялецwww6 ноя. 20172:29#6
спроси на специальных ресурсах по вскрытию игор
u960Постоялецwww6 ноя. 201719:41#7
Suslik
> в твоём случае данные явно raw
а как вы это поняли?

я думаю что может это как то связано с PowerVR
потому что там текстурные атласы  .pvr, и модели .pod. Файлы .dat в папке Levels, и вообще все остальное в довольно открытом виде, атлас шрифтов к примеру. Вот и подумал что может с .dat все просто и мне на форуме помогут быстро)) Ну или хотя бы покажут куда копать.

entrywayПостоялецwww6 ноя. 201720:18#8
u960
> а как вы это поняли?
Открываешь любым hex редактором и смотришь. Да даже просто текстовым.
+ Показать

Очевидно, что это не архив.

В hex режиме видно, что первые пять байт пропускаем, потом два интежера - размер карты (64x64 блока), потом интежер - размер блока (16 байт), карта высот подблоков или что-то такое.

+ Показать

Ну а в бинарной каше ниже (ниже 5+12+64*64*16) наверное объекты/скрипты как-то хранятся, судя по строкам вида 1-2-palace-1,up/1-2-palace-3,down и scale/1.3

Может это и стандартный формат для какого-то движка, я хз.

Правка: 6 ноя. 2017 21:11

ВасянУчастникwww6 ноя. 201721:01#9
entryway
> два интежера - размер карты (64x64 блока)
О, сбасибо

entryway
> потом интежер - размер блока (16 байт)
Это походу высота карты в "кубиках"

Ну, я попытался что-то сделать. На карту высот определённо похоже.
Результат (при желании можно использовать какой-нибудь FreeImage и сгенерировать картинку):

+ Показать

Говнокод:
+ Показать

Правка: 6 ноя. 2017 21:11

u960Постоялецwww6 ноя. 201721:34#10
entryway
> Открываешь любым hex редактором и смотришь. Да даже просто текстовым.
Огромное спасибо
я так понял это Far? с плагином hex

>В hex режиме видно, что первые пять байт пропускаем, потом два интежера - размер карты (64x64 блока), потом интежер - размер блока (16 байт), карта высот >подблоков или что-то такое.
я конечно не понял как вы в эти четырех? столбцах это все поняли


Васян
Шикарно! и весь файл такой?
то есть это типа уровень представлен в 2д виде?
ну как раньше через 1 и 0, типа ноль свободная клетка,а единица стена с текстурой 1
0000
1000
0110

ВасянУчастникwww6 ноя. 201721:47#11
u960
> Шикарно! и весь файл такой?
Нет. Вот это карта:
> 0x000010-0x01000F - 4096 похожих кусков по 16 байт.
А дальше идут те непонятные куски по 103 байта и больше.

u960
> то есть это типа уровень представлен в 2д виде?
Нет. Уровень в 3Д виде.

Щас, погоди секунду. Я заморочился с генерацией картинки. Как закончу, напишу.

ВасянУчастникwww6 ноя. 201721:53#12
Такая картинка получилась (увеличено в 8 раз):
+ Показать

Заюзал stb_image_write.h
Код:
+ Показать

Можно заменить строчку "levelFile = fopen("1-2-palace-1.dat", "rb");" на "levelFile = fopen(argv[1], "rb");" и попробовать погенерировать картинок с других уровней игры

ВасянУчастникwww6 ноя. 201722:09#13
Ок. По уровню.
Уровень построен из вертикальных колонок, состоящих из кубиков (я нагуглил, это со слов разработчиков). Вот я выделил одну колонку:
Изображение
В колонке 1 байт - один кубик.
Я почти уверен, что 0xAE - "земляной" кубик или что-то вроде того, ибо их больше всего.
Так вот, кубики идут по порядку от самого нижнего до самого верхнего. Та колонка, которую я обвёл, имеет высоту 5 кубиков. Оставшиеся 11 байт со значением 0x01 - это пустые кубики.
Колонки идут строками друг за другом. Число строк entryway показал, где смотреть. В этом уровне в строке 64 колонки.
Строки так же идут одна за другой. Количество строк мы тоже знаем, где смотреть.

По поводу трёхмерности.
Двухмерную карту высот я строил в зависимости от количества подряд идущих байт 0xAE. Но как бы ничего не мешает сделать в колонке пустоту. Вот, например, так:
AE AE 00 00 AE 00 00 00 00 00 00 00 00 00 00 00
Это может быть, например, земляной мостик, пещера или что-то вроде того.

Так же, в уровне, помимо байт 0xAE и 0x01 попадаются другие байты. Скорее всего это блоки лестниц, мостов или ещё чего-нибудь. Вот эта прога, которую я дал, учитывает только байты 0xAE.

Правка: 6 ноя. 2017 22:10

u960Постоялецwww6 ноя. 201722:09#14
Васян
> Можно заменить строчку "levelFile = fopen("1-2-palace-1.dat", "rb");" на
> "levelFile = fopen(argv[1], "rb");" и попробовать погенерировать картинок с
> других уровней игры

5-2-town
2-1-bomb-island-1

буду признателен если загрузите еще эти два файла.

Так там еще какая то информация в файле есть?

Страницы: 1 2 Следующая

/ Форум / Программирование игр / Общее

2001—2017 © GameDev.ru — Разработка игр