You should ask a lawyer about legal questions -- I am not one, and my understanding of this topic is not more valuable than an actual lawyer's. That said, to my knowledge: generally speaking, for someone to land in legal trouble for reverse engineering, they either need to have:
- Committed an offense that the law lays out as being criminal, in which case they might be criminally prosecuted by the government. Related offenses can include piracy of commercially copyrighted materials, or of stealing trade secrets.
- Have undertaken some action that makes the holder of the copyright feel aggrieved, and compels them to file a lawsuit. In general, these civil actions center around things like license violations, copyright and trademark infringement, and misappropriation of intellectual property.
Both of the above center around unauthorized uses of reverse engineering. Given that you are talking distributing software for free, with explicit authorization of reverse engineering, with source code, and with instructions on how to reverse engineer it, you are effectively waiving your rights to the types of civil proceedings that generally surround reverse engineering. If you were to sue somebody for reverse engineering your software, they would simply point to your own authorization as a defense as to why their actions were legal. On the criminal side, nobody's commercial interests are being harmed -- which is the cornerstone of criminal penalties against reverse engineering -- and so the government has no reason to care about it. Somebody with a stake in the matter has to be upset in order for a reverse engineer to go to jail or get sued.
The idea of people creating software for the express purpose of other people reverse engineering it is not new. Capture The Flag and crackme contests have already been doing this for decades. Although it's less common, sometimes commercial software allows reverse engineering by license agreement. For example, here's a bit of text from Hex-Rays' license agreement:
This license also allows you to
- reverse-engineer the software.
One thing I might note is that, if your code relies upon third-party libraries: you, yourself, do not have legal standing to authorize people to reverse engineer other peoples' code. I.e., if the game engine that you're using has license provisions against reverse engineering, your declaration that it is okay to reverse engineer your own code ultimately does not supplant the engine developers' own license terms surrounding reverse engineering of their code. I imagine it's possible that the engine developer could hold you liable for breaches of their license terms. But, if the engine is open source, then intellectual property interests like that are a moot point, since people can simply read the source code much easier than they could reverse engineer it.