I’m a big fan of Sid Meier’s Civilization series. One thing I would love to see is for them to use the CLR as back-end scripting engine. Alpha Centauri (SMAC) had some good automation, but you could really work some wonders if you had a full scripting engine. One immediate practical benefit of the CLR would be that you could script your units and governors in your favorite language (whether C#, IronPython, VB.Net, or LUA). In fact, I wouldn’t be surprised if some enterprising soul would then come up with a .Net language specifically targetted for writing Civ AIs.
I believe the lack of good automation makes it too cumbersome to run a large civilization. Thus I’d love to see some serious automation that lets me then scale a civilization game to 100s of cities. Some specific things I would love to be able to script (using SMAC terminology) would include:
- automated settling on an island. That includes coordinating a transport + colony pod (settlers) to go to the island, build the city, and then have that city spawn across the rest of the island. Once the island is sufficiently colonized, then be able to issue commands to the entire collection of cities such as “build this wonder” (where 1 city builds the wonder, and then all the other cities build caravans that support the wonder) or “generate as much positive cash flow as possible”.
- the ability to premark places that I’d like to place cities, and then script an AI to build the colony pods and deliver them to those locations.
- smarter governors. One of my concerns about the automated city governors is that they tend to waste resources. For example, if I let a small outpost city hurry production, I fear it will drain the treasury of the rest of civilization building stupid things that won’t help the outpost and have high maintenance costs. So I’d like advanced governor options, such as giving governors a “hurry production” budget or preventing the governor from doing anything that would be a financial drain on the rest of the civilization.
- automated mobilization for war. I’d like to be able to have global state such as a global build queue (“I want 30 military units of type X and I want them to move to city Y”)
- things that coordinate amongst multiple units or cities.
- things that allow me to issue high-level directives. For example “build up city X” which would tell my pool of automated formers to all focus on improving city X as fast as possible; while also giving city X authority to hurry production, and maybe also telling nearby city Y to provide military units for city X’s defense so that X doesn’t need to waste time building military items.
- automated report generation. For example, calculate “how much trade do I have with each other civilization?”, “how many resource squares are currently under-developped?”, “how good is my road infrastructure”, “which city has the most potential for (production / research / money / etc)”.
And I’m sure more ideas would come as I think about it longer. If Civilization had a decent enough scripting engine, I think a community for such scripts would develop overnight (“Hey, check out this script that does XYZ”). Folks may even script the enemy AIs. I could see competitions between different AIs. Bottom line is that it would be very very cool. (I personally think it would be much better than multiplayer – though you may even be able to build multiplayer on top of a good scripting story by having an enemy AI that takes input from a client across the internet).
And since my primary area of expertise is debugging services, I must pointed out that if you use the CLR for your gaming scripting engine, you get free debugging services!