Decoder/parser of Blizzard's MPQ archive file format
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
reps
.travis.yml
LICENSE
README.md
alg.go
doc.go
mpq.go
mpq_test.go

README.md

mpq

Build Status GoDoc Go Report Card codecov

Package mpq is a decoder/parser of Blizzard's MPQ archive file format.

This is not a full MPQ implementation. It is primarily intended to parse StarCraft II replay files (*.SC2Replay), but that is fully supported.

Usage

Usage is simple. Opening an MPQ archive file:

m, err := mpq.NewFromFile("myreplay.SC2Replay")
if err != nil {
	// Handle error
	return
}
defer m.Close()

Getting a named file from the archive:

// Access a file inside the MPQ archive.
// Usually there is a file called "(listfile)" containing the list of other files:
if data, err := m.FileByName("(listfile)"); err == nil {
	fmt.Println("Files inside archive:")
	fmt.Println(string(data))
} else {
	// handle error
}

If you already have the MPQ data in memory:

mpqdata := []byte{} // MPQ data in memory
m, err := mpq.New(bytes.NewReader(mpqdata)))

Information sources

Example projects using this

License

Open-sourced under the Apache License 2.0.