I am interested in and have the need to explore how AI in games is constructed and how I can use existing approaches in my games. Being relatively new to the field means that there are existing, well understood and popular ways to handle this problem and I would benefit from fully understanding those. The AI that I have used in Serial Link, the only game project that I have created AI for, is very simple. In fact it is very obviously too simple. Although I found much of the material from this weeks content very interesting and I talk a little about that below, I know that there are technologies like the Environmental Query System that are already present in Unreal and I think that its appropriate for me to focus on those at the moment. I have become increasingly guarded concerning the subjects that I agree to dig into, as it is very easy to found myself knowing a little surface information about a lot of topics but I don’t believe that gets me any closer to the goal that I have of being a professional games programmer.
This weeks course material was plentiful. There was so many interviews to watch and think about that I must admit, I should probably have watched them in two, even three sessions so as to get all of the benefit. I found that my eye was drawn most to the discussion around Artificial Intelligence and in particular how it can be used to learn from human players. The purpose is to have agents the use this technique behave in a more human way, complete with not just the moments of brilliant play but also the plentiful mistakes they make. This makes the game experience much more immersive particularly for adversarial games. Here, its difficult for AI programmers to create challenging, defeatable, and consistent yet a little unpredictable. On the other hand, nothing annoys players more than a stupid side kick character who is constantly in the way and reduces the quality of the players experience rather than enhancing it.
The particular flavour of this approach that I liked was Genetic Programming. The reason I like this is the resulting code generated from the learning process reminds me of Behaviour tree nodes from Unreal. I have not delved deeply into this because I have already committed to more work than I think I can complete but based on the presentation by Swen E. Gaudl, it seems that the developer is left with nodes or ‘genes’ that are interchangeable and customise-able. I would very much like to break into Machine Learning in some way soon and the thought of having AI agents who are appropriately skilled and feel human is very interesting. There is a barrier to me using the particular frameworks that he talks about in that I don’t know how the code in Java. However, I am sure that this is a paradigm at least as much as it is a framework and would not be surprised to find this approach in play using other languages. I will continue my learning of C++ and once that is more up to date, I could consider Java if needed although I have already expressed the need to move from C++ to C# in order to use the Unity game engine.
As for where I am in the course right now? I have posts covering the work on the Battery Collector Unreal tutorial and the creation of a SMART goal for understanding animation. I also cover a presentation that was suggested to my by Al at the Games Academy, that talks about whats going on behind the scenes with Git.