IFID question [answered]

(I wasn’t sure if this should go in general authoring. Please feel free to move it if it would be better there.)

A little while ago, I decided I’d have another tilt at learning Dialog. Dialog won’t compile to zblorb without an ifid, and for whatever reason my net connection was proving stubborn. Rather than spend time fiddling about, I remembered that Tweego will generate an ifid off-line.

So I fired up Tweego, copied the ifid into my Dialog test project and it all worked fine. But later, as I was drifting off to sleep, I wondered. If that test project escaped into the wild (or more reasonably, it gradually matured into something worth releasing) would that “foreign” ifid now mis-identify it, either formally or informally, as a Twine game?

I had a go at reading the treaty of Babel, but got rather overwhelmed by the details, and I couldn’t find the answer to the basic question:

I’ve seen the ifid described as an ISBN for interactive fiction. But the different number groups in an ISBN have inherent meaning: identifying e.g. the publisher. Is the ifid similarly organized, with the different hyphen separated groups having inherent meaning, the way that e.g. ox.ac.uk means “Oxford University, Academic Community, United Kingdom” or the first four numbers of your credit card identify it as Diners, Visa, etc.?

If they don’t now, might they be construed to do so in the future? (That’s trickier, I know.)

I just want to be able to file this away as either “can never be a problem”, “better be safe”, or “bad idea, don’t ever do this”.


Short answer: This is perfectly safe.

Long answer: There is some structure to a UUID. If the first digit in the middle group is “4”, then the rest (apart from two bits) is just a random number. The number is so large that, if we assume that a good source of randomness is used, there is practically no risk of collisions. So as long as the UUID has the form xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx, there’s no way to discern what tool was used to create it.

If it has another form—which is less common—then it was generated by a different method (using e.g. time, network address, the hash of a domain name). In that case there’s additional structure to indicate what method was used. Still, the only purpose of the structure is to ensure uniqueness. It’s not intended to encode useful information.

Thanks Linus, that’s great to know. I’ll mark this as “solved.”

Having great fun with Dialog, by the way. Thanks for that, too!