I came up with an interesting (to me, at least) idea with regard to game development... it's still not 100% fleshed-out, but hopefully with some ideas from the coders here, it will get there.
The basic idea is loosely based on making an open interchange format for game data. If you are familiar with SCUMM ( http://en.wikipedia.org/wiki/SCUMM ), think of this format as a basis for an equivalent to ScummVM ( http://en.wikipedia.org/wiki/ScummVM ). The kicker here is that "my" format is based on JSON (which is basically "The Fat-Free Alternative to XML" according to its designer ( http://www.json.org/fatfree.html )), with some minor tweaks.
Although JSON is typically plain-text, it would be possible theoretically to embed "compiled" information into the notation given proper consideration. This would mainly be for purposes of efficiency (defining a model mesh as plain-text often adds much bloat), rather than obfuscation (since it would defeat the purpose of open interchange). The "compiled" notation files could also be minified to further eliminate storage footprint, even if by only a small margin.
As long as the host app (i.e. Web browser or native "VM/interpreter") supports metaprogramming in some way (which they do in general -- if not on their own, then with a library), tying events to the run-time host code would be doable. Of course, what those events *do* is the issue. OK, so Player1 has attacked Player2. What happens now?
I have ideas, but I need a little intellectual headbutting to make that final step.
If done right, I envision a format that would allow someone to write a game file that includes all the data necessary to have the game work in a 3D hardware-accelerated home console in the same (basic) manner as it might in a text console. In other words, the data notation format merely serves as a foundation -- it is up to the host app to "fill in the gaps" (such as having a player move from A to B by calculating a dynamic character model movement; or having a player move from A to B by wiping a console char and printing it in the new location).
I know it sounds insane, but I think with the right groundwork (and reasonable expectations) it would be workable. What are your thoughts?