Glad to see all the people who are participating -- good luck everyone! (Thanks for the shoutout, Philippe) Here's my 1st update:
I've locked down many of the details for the Programming Game Engine I'm trying to make.
(1) For gamers who know how to program, the gamer will command his/her army by sending Strings along the lines of: (Unit4 use_second_ability_on (12, 3)), or (Unit2 move_to (4, 6)). The gamer will obtain information about the game world by accessing a GameWorld object that contains all the relevant information to that gamer, which is updated each turn.
AI challenge (http://aichallenge.org), and both versions of Darwin (http://www1.icsi.berkeley.edu/~barath/cs136/hw/hw9.pdf, http://cs.williams.edu/~morgan/darwin/) use similar setups. I think this setup is easy for a programmer to use, and difficult to hack.
(2) Unfortunately, for gamers who don't have as much programming experience, something crazier is needed: I'm currently trying to create a very simple custom graphical programming language, and trying to write an interpreter for it.
What I would ultimately like gamers without much programming experience to be able to program in, would be something in between Lego Mindstorms' (http://mindstorms.lego.com/en-us/Software/Default.aspx) and Final Fantasy XII's programming interface. I will try to give more details about the specifics of the language as a move further along the implementation process.
Screenshot of the Lego Mindstorms programming interface (http://mindstorms.lego.com/en-us/Software/Default.aspx):
Screenshot of the Final Fantasy XII programming interface:
(3) I decided earlier on that I would use the Unity game engine to make this game (http://unity3d.com/). (Unity is easy to use, and in the long, long, long run, using Unity would hopefully make it easier for me to export this game to the internet, Xbox Live, the Playstation Network, etc.) But at the moment, I'm still trying to learn how to use Unity.
At the moment, I have figured out how to let a gamer make windows, move them around, combine them, and link them to build trees -- which naturally form abstract syntax trees, which will be important when I try to write the interpreter.
My current results: (This is still very basic, and I'm currently paying zero attention to looks):
(1) Given that I already have abstract syntax trees, figure out how to write an interpreter. (I now wish I spent more time on CS434: Compilers)
Also, I want to note that I'm sadly making a last minute switch to the pro track. With my summer internship using up 10+ hours of my day, I won't be able to spend 20+, 30+ hours per day working on this game jam like a proper hardcore person would do. I'll still be working as much as possible, though.