There's no point in complicating things if a verbose JSON representation fits fine anyway.
There is a practical limit to the size of the QR code that can be read by a mobile phone, limited by optics, lighting, and resolution. If you can stay further away from the limit, the better, the scans will be more reliable.
Signal to noise ratio and reliability is going to be important. It has to just work.
Hardware / system level approach vs just a pure software view....
Sure, but that's probably not your problem. That's the problem of the QR reader software and the QR spec -- which already includes error correction schemes afaik.
Thank you for illustrating my point.
If you try to cram too much information into a QR code, it won't physically be able to scan it and read it regardless of what error correction scheme you use. Additional error correction past a certain point will increase your bit error rate when you are bandwidth limited. Information theory 101.
The maximum ceiling to the QR specification is irrelevant. What is practically readable by the phone / webcase / etc is the limiting factor. The QR code spec assumes that you, the application designer, know the enviornment that it will be used inn. If you try and cram in 800 bytes into a 1" square, and read that on your webcam, it's probably not going to work. That's not the spec's fault. It's yours for using it wrong.
To make a cell phone analogy, my phone has 4G LTE spec to transfer 20Mbit+ / sec. But if you're out in the boonies with -120dB SNR (making up a number for illustration purposes) it won't matter.
A practical example: it needs to work with 300 point (possibly 400 point) Epic squads.
"Bandit Squadron Pilot + Concussion Missiles; " is 45 characters. You can field 12 of those for 192 points, which takes 540 characters to represent. Some quick googling says that the rough limit for smart phones is ~400 bytes. You're already over that, and you still have 108 more points to fill in your squad, and some header info like version number and the player's name. The stereotypical software solution which I was trying to point out, and that you conveniently demonstrated, is to just throw more hardware at the problem. But that won't work because you're bandwidth limited.
You can't guarantee that if you print an epic squad verbose that it will be read correctly. So you absolutely need some kind of encoding scheme. Whether shorthand will suffice, or if it needs to be numeric is yet to be determined. The system needs to be reliable. The TOs already have enough of a hassle just running the event, you don't want to make it more difficult for them to use the tool, otherwise they're not going to use it.
Edited by MajorJuggler