To Blorb or not to Blorb

I am starting to think about packaging media soon in ADRIFT 5, and am thinking about how best to do this. It has been suggested on the ADRIFT forum that using the Blorb format might be a good way to implement it.

I like this idea as it would assist global IF applications in identifying media, displaying thumbnails etc. However, the restricted media puts me off (i.e. ADRIFT 4 supports GIFs and MP3s, neither of which are allowed in Blorb).

Does anyone have any opinions on whether this would be a good thing or not?

The format restrictions are there to aid Glk implementations. (That is, to define a baseline for game authors and Glk library authors to agree on.)

If you’re porting a totally new system, I can add spec notes on how to tag the extra data types. I don’t want the format list to block that sort of thing.

However, you’d probably want to ensure that the system-neutral contents – namely, the cover art chunk – is never a GIF. (That way, systems like IFDB don’t have to change.)

An alternative to Blorb would be a Zip-style package format. That’s what most platforms have used in the past decade; if I were inventing Blorb today, it’s what I would use.

While zipping may have been a nicer format, it’s worked out well IMO because unzipping packages in javascript wouldn’t be feasible, while HTTP gzipping takes care of the file size.

Thanks zarf, that would be fab. I think that would be a good compromise. :slight_smile:

Is it just GIF and MP3 that you need?

Well, the supported list in v4 is as follows:

Sound: WAV, MID, RMI, MP3

To be honest, I’d be quite happy to drop some of these. However, MID and WAV (I know, it’s a terrible format, but there are a lot of little clips out there) would also be quite useful.

If you don’t want to taint the format too much then I could live with just GIF and MP3. :wink:


I’ve adding this text to the draft spec:

The question of which formats to list and which to drop is really up to you. Please let me know.

Fab, thank you. I’ll keep you posted once I do the implementation.