Home

Awesome

Airkiver

Game File Archive Tool

Tested Platforms

I have tested this on Windows, MacOS, and iOS. It has worked quite well on those three platforms.

Performance Overhead

With smaller archives, the performance is quite good, with the .retrieve() method only taking about 0.06ms to execute, but with bigger archives, this number can ramp up. I tested this with an 800MB archive (2.5GB uncompressed) and the .retrieve() method took ~300ms to execute. I highly doubt that most GameMaker projects are going to use 2.5GB of external data.

Airkive.py usage:

python Airkive.py [outputName]

The Python script will ignore certain files, you can edit these in the script. The default files to get ignored are;

GML usage:

Load File Table

new Airkiver([filepath], [build_directory_tree]) Load an Airkive file and return an Airkive Struct

Returns: Struct

ArgumentTypeDefaultDescription
filepathString""Filepath of the archive filetable
build_directory_treeBooltrueWhether to build a directory tree on load

Load Method

.load([filepath]) Load an Airkive file into the struct

Returns: N/A

ArgumentTypeDefaultDescription
filepathStringN/AFilepath of the archive filetable

Build Directory Tree Method

.build_directory_tree() Build a directory tree based on the file table

Returns: N/A

Retrieve Method

.retrieve(filepath, [validate]) Retrieve an archived file

Returns: Buffer ID

ArgumentTypeDefaultDescription
filepathStringN/AFilepath of the archived file
validateBoolfalseValidate file with CRC32

Retrieve Text Method

.retrieve_text(filepath, [validate]) Retrieve an archived file as a string

Returns: String

ArgumentTypeDefaultDescription
filepathStringN/AFilepath of the archived file
validateBoolfalseValidate file with CRC32

Exists Method

.exists(filepath) Check if a file exists in the archive

Returns: Bool

ArgumentTypeDefaultDescription
filepathStringN/AFilepath of the archived file

Retrieve Names Method

.retrieve_names() Retrieve the list of filenames as an array

Returns: Array<String>