1) For the right script to be used, the AI has to be able to convert the player’s game position into something the AI can use, possibly like a set of (weighted) values.
- Ideally yes, but a decent AI may be feasible without this. Basic information such as the power graph, the number of cities in each empire, the population, the industrial output, may give a crude approximation. Add a randomizing factor and the AI may be okay without a lot of work on evaluating details. The easy way out is to make the person writing the script responsible for making sure that it is appropiate to the game situation.
2) Second, the current situation. This relates to the first point. In order to choose a script, you have to understand the position you’re in.
- Again, the time line, the number of cities, and other factors are useful guideposts. This may be a crude approximation, but may be sufficient. For example, it is inappropiate to use Swordsmen Conquest past 200 B. C., or after 10 cities, or after Republic or Monarchy is discovered.
3) Third, the changing situation. Over the course of the game, some things become less important, while others become more important. Once the AI player has developed a defensible core of cities, survival becomes less imperative, and the AI can turn its attention to expansion
- This may be a big stumbling block. In the example I outline the war is launched, but then what? Is it better to bypass outlying cities and head for the capital? Or better to attack straight off. What to do if half the attacking force is lost taking the first city? This may be a tough nut. As of now, I do not see an easy way around the boulder and it could become a nest of micromanaging code for little benefit.
4) Fourth, the value of each script. In order to work well, it seems like you’d want to have multiple scripts available all the time, and then choose the best one.
- The value may be best determined by having the AI play other AIs. With all graphics and autosave turned off, an AI only game might only take a few minutes on a fast computer. Multiple computers can be used (hardware is cheap compared to programmer time). If the program is really clever, it might try and build some kind of database so it knows what sub-scripts work well in certain situations. This is a lot to ask. A simple Darwinist model is easier to envision.
I see the real power coming from fans writing scripts and competing against each other. Bad scripts will get tossed in an hour. Good ones studied and built upon. The AI is not really doing the evaluating, the fans are. The process is dynamic as better tactics come with each generation of fan scripts. I see this process leading to a superior AI. Remember my premise, that the problem (a better AI) is mainly one of time and resources, not technical or programming issues. By harnessing the virtually unlimited time and talent of the fan base, a better AI will come.
I define "good" as an AI that can defeat 80% of players on a level playing field. Even if everything I wish for is put in, the top human players will be able to beat the best scripts most of the time. However, I believe the vast middle class of gamers will be able to enjoy a challenging game without resorting to the AI bonus system. I see this as a major step forward.
I estimate the current AI can defeat 20% of players on a level playing field. Considering the eight month, single programmer time line, Soren Johnson deserves a big thumbs up for the Civ III AI. I shudder to think about the time line and resources required for a good script engine project.
There are simpler approaches. One good one suggested here, is a series of sliders for a lot of different AI controls. This would involve minimal overhead, testing, and support. If done with some creativity, this has the potential to add a lot of variety to the AIs. Add in a small chance to change some of the settings every dozen turns or so and the AI becomes less predictable and more interesting to play against.
- Ideally yes, but a decent AI may be feasible without this. Basic information such as the power graph, the number of cities in each empire, the population, the industrial output, may give a crude approximation. Add a randomizing factor and the AI may be okay without a lot of work on evaluating details. The easy way out is to make the person writing the script responsible for making sure that it is appropiate to the game situation.
2) Second, the current situation. This relates to the first point. In order to choose a script, you have to understand the position you’re in.
- Again, the time line, the number of cities, and other factors are useful guideposts. This may be a crude approximation, but may be sufficient. For example, it is inappropiate to use Swordsmen Conquest past 200 B. C., or after 10 cities, or after Republic or Monarchy is discovered.
3) Third, the changing situation. Over the course of the game, some things become less important, while others become more important. Once the AI player has developed a defensible core of cities, survival becomes less imperative, and the AI can turn its attention to expansion
- This may be a big stumbling block. In the example I outline the war is launched, but then what? Is it better to bypass outlying cities and head for the capital? Or better to attack straight off. What to do if half the attacking force is lost taking the first city? This may be a tough nut. As of now, I do not see an easy way around the boulder and it could become a nest of micromanaging code for little benefit.
4) Fourth, the value of each script. In order to work well, it seems like you’d want to have multiple scripts available all the time, and then choose the best one.
- The value may be best determined by having the AI play other AIs. With all graphics and autosave turned off, an AI only game might only take a few minutes on a fast computer. Multiple computers can be used (hardware is cheap compared to programmer time). If the program is really clever, it might try and build some kind of database so it knows what sub-scripts work well in certain situations. This is a lot to ask. A simple Darwinist model is easier to envision.
I see the real power coming from fans writing scripts and competing against each other. Bad scripts will get tossed in an hour. Good ones studied and built upon. The AI is not really doing the evaluating, the fans are. The process is dynamic as better tactics come with each generation of fan scripts. I see this process leading to a superior AI. Remember my premise, that the problem (a better AI) is mainly one of time and resources, not technical or programming issues. By harnessing the virtually unlimited time and talent of the fan base, a better AI will come.
I define "good" as an AI that can defeat 80% of players on a level playing field. Even if everything I wish for is put in, the top human players will be able to beat the best scripts most of the time. However, I believe the vast middle class of gamers will be able to enjoy a challenging game without resorting to the AI bonus system. I see this as a major step forward.
I estimate the current AI can defeat 20% of players on a level playing field. Considering the eight month, single programmer time line, Soren Johnson deserves a big thumbs up for the Civ III AI. I shudder to think about the time line and resources required for a good script engine project.
There are simpler approaches. One good one suggested here, is a series of sliders for a lot of different AI controls. This would involve minimal overhead, testing, and support. If done with some creativity, this has the potential to add a lot of variety to the AIs. Add in a small chance to change some of the settings every dozen turns or so and the AI becomes less predictable and more interesting to play against.
Comment