From: Jason D. S. <js...@an...> - 2003-11-19 10:19:45
|
I assume improving the AI is not currently a priority, but as an experienced Melee player it is something I am interested in. The easiest and most boring way to improve the cyborg AI would be by introducing non-combat strategy: specifically non-random ship selection. Each ship generally has around 5 ships that it is particularly strong against and 5 ships that it is particularly weak against. As an example, the Druuge is a good ship to pick against the Chmmr, while the Spathi generally is not. Simply adding a few ship 'preferences' here could make the cyborg vastly more competitive. More complicated strategy might take into account the damage level of the ship you are facing off against, or how a particular choice matches up against other ships remaining in the opponents' fleet. But making this type of change reduces the variety of battles that you encounter, so it will also make the Cyborg more boring. Not good. Improving the tactics of the cyborg should be a bigger priority. The cyborg is already a spectacular pilot and gunner - facing a cyborg Pkunk or Druuge can be an excercise in frustration because of this (again, not something that is fun). But in tactics the cyborg is very weak. It should use more correct tactics against its opponents, and also use more varied tactics. Both will add both to the competitiveness and the entertainment value of the AI. I was discussing this with a friend the other day, and tried to codify the different tactics that I use regularly. I came up with 6 of them. In order of increasing sophistication, they are: stand, charge, flee, circle, get planet-whip, get planetary orbit. Looking at the current cyborg code, I see four different tactics: pursue (charge?), avoid (flee?), entice (circle?), and wait (stand?). As I recall the AI is fairly incapable of using the planet: it occasionally gets planet-whip but never keeps it for long, and never orbits the planet. To design the AI as an expert system, I would teach the AI to use the above six tactics, teach it to recognize the opponent's tactics, and then add code to select the current tactic. A simple way to do this is to choose our tactic based on the opponent's; something like stand => circle/charge charge => flee/get planet whip flee => circle/charge/get planet whip circle => circle/charge planet whip => charge/stand orbit planet => charge/circle but this is probably similar to the current algorithm, and will fail in many cases. Something more extensive, but still logically simplistic would take into account the current ship and the opponent's ship as well as the opponent's tactics. In the most brain-dead case this could take the form of a 25x25x6 matrix of tactical choices; however this would have a lot of redundancy and still wouldn't be as good as a human tactical agent. It would, however, be easy to put in the ship-description data-files rather than directly in the code, thus being more modular and modifiable. It is also desirable to change tactics from time to time and/or choose a somewhat random element in picking a tactic. In most situations there are two or three reasonable tactics, and if one doesn't work you should try another. This is probably the area where the current cyborg is most deficient. A 25x25x6x3 matrix may sound daunting and unmaintainable, but in the grand scheme of things I think it should be manageable. However, such a scheme would still leave many things out, and at that point adding more complexity is too much. Ideally the cyborg could deduce the correct strategy from the basic laws of the system and its knowledge of each ship's abilities. For instance it should be able to deduce that a ship that is faster and has longer range than its opponent should maintain an ideal distance and then open fire. Coming up with a full list of such rules will take a real expert (even this rule is overly simplistic and only works against the 'stand' tactic). There may be a few additional values that the cyborg would like to know that could be measured by human experts and then put into the ship description files. For me, the Supox-versus-Yehat battle is an example of how increased tactical sophistication can make the game more interesting. When I first started playing (against human opponents), the Yehat would generally win. Soon the flee and circle tactics were developed, and things swung over to the Supox's side. When we discovered the tactic of getting planet-whip, things were balanced out again. However, with a combination of intercept-and-flee tactics, the Supox can defeat this. With the introduction of the most sophisticated tactic I know, planetary orbit, the Yehat was able to again recover an even number of victories. But could we have known all that just by looking at the ships' statistics? The supox can fire backwards and sideways to its vector of acceleration, so it is a good candidate for flee and circle tactics. The Yehat has good acceleration and low top speed, so it is a good candidate for planetary tactics. Maybe. -jason short |