Where I would start...
Start by reading about QR codes. I would guess that QR codes aren't that far off from Snapcodes, but Snapcodes probably carry very little information. As in, they only contain a pointer to a Snapchat ID. A Micro QR code can hold 35 characters, which is probably about the capacity of a Snapcode and rather than an anchor point you have a ghost for orientation and a box of known size.
How many dots can a Snapcode have if every dot is 'on'?
Learn about Snapchat IDs. What are the allowable set of characters and minimum and maximum length?
Another thing to try would be to start messing with Snapcodes. Can you mess with the dots and colours? You can learn how robust they are by trying to break them which in turn tells you if they're doing error correction.
Compare a few snapcodes. In fact, generate snapcodes. You might check out this project that demos connecting to the Snapchat API and generate several Snapcodes changing letters, seeing how it behaves as you add or remove characters.
In general, reverse-engineering this is an exercise in learning everything there is to know about this topic. When you acquire enough information you might make a leap into being able to read and generate arbitrary codes.