Let's assume a common game scenario of several characters in a combat arena. Each character has different strengths and weaknesses. The arena has traps and tools. Suppose the characters had only very basic moves such as step in a direction, shoot, climb, duck, pick up item, use item, drag heavy object. Each move has a chance of success based on the context (e.g. range to target). What AI, machine learning, or evolutionary approach could be used to generate personalized tactics for each character based on repeated runs of the scenario?

  • $\begingroup$ It depends on how long you want to spend training or if you just want a setup AI that works like a charm the first day. $\endgroup$ – FreezePhoenix May 1 '18 at 12:41

The first step is to increase the abstraction level of the game. Instead of storing the game characters with absolute position on a pixel level, a text-adventure-like layer above the game has to be established. In the literature this concept is called “knowledge containers” and is described under the topic of case-based reasoning. Now, it is possible to record the repeated trials with a RDF-based vocabulary, and it is also possible to run machine learning algorithm for feature detection against the game-logs.

Unfortunately, the high-level textadventure like game-description has to be grounded to the original game. That means, if one of the player is doing a low level move, this has to be converted into the vocabulary of the knowledge-container. For the game Wargus some literature is available, the Darmok2 AI-engine can play other Real time strategy games with this approach. The Darmok2 AI engine was written in Java and is not available as sourcecode. The system is documented in Learning from Human Demonstrations for Real-Time Case-Based Planning

"textual case-based reasoning" can be seen in action at Artificial Intelligence plays puzzle game (Solomon's key) Which algorithm was used in the example is unknown. From the screenshot i would guess it is a cognitive architecture, perhaps SOAR or ACT-R.

  • $\begingroup$ I'll have to examine this text approach. I'm not familiar with it. $\endgroup$ – davideps May 2 '18 at 14:00
  • $\begingroup$ Is there a different suggestion if I do not need real-time? My project is.turn based. $\endgroup$ – davideps May 5 '18 at 10:52
  • $\begingroup$ Is the Darmok2 AI-engine publicly available? I can't seem to find it online--only academic papers. $\endgroup$ – davideps May 5 '18 at 16:56

There are a few ways to tackle this. You could make an AI that is simply a series of IF statements, or you could actually make an AI that would actually take in the situation and come up with a sensible solution.

  • IF Approach - You make a series of IF statements that come up with a sensible action to execute. This is the method that Minecraft uses. The resulting action were recorded from some of the best players.

  • True AI - Have your Character execute random actions and learn the consequences of them. The, train it to execute various actions for certain scenarios.

The main difference between these two approaches is that IF statements have a constant and predictable behavior, while the AI approach has a very bad startup value but ends up improving over time.

There is no "best" method, it is up to you to choose one or the other or a mix of both.

  • $\begingroup$ Hey, If I missed any other approaches, please put a comment. $\endgroup$ – FreezePhoenix May 1 '18 at 12:52
  • $\begingroup$ I think you missed search methods, which could be used instead of or to augment AI-based methods. Search algorithms are often used for path-finding in game environments, and can easily be extended to other actions than movement, provided there is some heuristic to measure success. There is a strong relation between search algorithms like MCTS and AI planning algorithms. $\endgroup$ – Neil Slater Jun 5 '18 at 10:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.