I've been designing a programming game, inspired by robocode.
In this game, you buy, trade, sell, program, and battle robots on-line. You start by choosing one of X base models, which you can then upgrade after you win some money in battles. Of course, for your robot to win any battles, you're going to have to program its AI.
On the technical side, I was planning on using C# and its compiler access:
Basically, all information is stored on one (or more) central servers. When a logged-in player whishes to edit a robot's AI code, a DLL interface for the robot is generated by the server based on the robot's type and statistics (more on this later), and is downloaded by the player, along with any AI the player has already programmed.
When the player is done editing the code, the new C# file is submitted to the server, and the server makes sure it compiles and doesn't do anything nasty (probably no file i/o etc.), and stores it back in the database.
When a battle is initiated, the server compiles the robots' AI files (again generating its interface) and starts processing the robot AIs. Information on the game state is sent to each spectating player, on a state-change basis (change in velocities, animations, etc.). Each robot AI would probably be processed in a separate thread, not so much to take advantage of multi-core CPUs, but to keep any nasty side-effects isolated.
Game-play-wise, as mentioned earlier, players can win money in battles, with which they can buy and sell robots and upgrades. Many robot upgrades actually expose new functionality in the robot's interface DLL. A rocket booster item, for instance, might add a 'Jump' command to the interface.
Players can also choose to bet on battles being fought by other players (they would have to be spectators in the battle) in order to win money.
My main concerns are in making sure that the C# code submitted by the players does not do anything that could break the server or 'cheat'. Most typical forms of cheating are blocked against, as everything is run on the server, but I'm bound to run into some naughty programmers. [evil]
I'm also not sure about editing the C# files. I think I plan on having the game run in windowed mode, so that a player can easily open up his/her favorite IDE or text editor to edit the files. I really don't want to try and come up with some crappy editor that's going to frustrate people, but at the same time, I want the transition of code->game to be as smooth as possible (not clunky). Any ideas?
Lastly, my original plan was to make the game 2D, most importantly to keep AI writing and math a little less complicated, but I'm pretty open at this point. What would you guys prefer? I was thinking either complete 2D or 3D models on a primarily 2D battlefield (restricted by dimensions, not art).
This might just be a pipedream, but it's fun to design things like this. If I went for it, I'd at least need some help developing it. Maybe, if I get this all laid out, I'll seek out some developers here on gamedev.
I have a lot more details on the implementation, game flow, requirements, and code structure written down in various files, along with a visio document or two, but nothing to glue it all together yet.
Would any of you be interested in playing or working on such a game?
I've taken a break from VGUL for a while. I think I plan on starting up again once I get the new logo from Salsa, assuming he has time to make it (I think he may have gotten more replies than he initially bargained for).
Alright, that's enough for one post. Maybe if I updated this thing more often, my posts wouldn't be so long [lol].