Namaste! Doom and me. Me and Doom. This seems to be a never-ending love-story! I am very thankful that I got invited by the Chair of Games Engineering at Würzburg University for a talk. Thank you, Sebastian von Mammen! Well, what did I talk about in that almost-four-hours session? Right. Doom. Games Development. Artificial Intelligence. Deep Learning. Not necessarily in that order!
Games Engineers are true all-rounders.
It is an open secret that I come from a huge Games Development background. My first motivation for doing anything with computers in a constructive way was games. Back in the computer dark ages of the 1990s. Right when I started gaming, I immediately wanted to create new one. This is why I became a young games developer.
Games Engineering is very profound. There are so many algorithmic approaches to be learned. You learn to think in mathematical procedures. You learn to think in patterns. You learn to think in data and data manipulation. And the good thing is: Once you know the trade, Games Engineering makes you qualified for many if not most of other fields of applied computer science. I know what I am talking about. In my 11 years of expertise in both academia and consulting, I saw this everyday. I applied my games development skills a lot.
Let us now bridge the small gap between Deep Learning and Games Engineering. Deep Learning is a very fruit- and successful technology. It is available to everyone. A question: How can it be applied to Games Engineering? We will answer this after a short excursion into our favorite topic.
You know. Deep Learning is easy.
This is one of my many mantras. At the university, I showed the students that Deep Learning does not involve many lines of code. Remember. Hand-written digits recognition with the MNIST dataset is less than 50 lines of sourcecode. This is basically nothing. Less than 50 lines. It trains in less than a minute. Well, it took a couple of weeks in the 1990s. But this is a millennium away.
Again, most effort in Deep Learning goes into the whole data preparation part. Getting data. Preprocessing data. Cleaning data. Encoding data. Most time goes into training. The systems train while the human is watching. Or better: While the human is doing other things. Training Deep Neural Networks is an exercise of patience.
It is very easy to get started. Data is widely available. Blessed be the internet. And the software is just a double-click away. TensorFlow and Keras – just to name two. It takes around 20 minutes to set up a Deep-Learning workstation and train a first Neural Net. Great times!
Penalties and Rewards. As in the animal-kingdom, so in IT.
There are so many sub-technologies in Deep Learning. Deep Reinforcement Learning is an example. It is a cross-breed between Deep Learning and Reinforcement Learning. Reinforcement Learning is how many animal species (including homo sapiens) learn. If you do something right, you get a reward. If you do something wrong, you get a penalty. Simple as that! See for yourself:
DeepMind is a software company that I like a lot. They got a lot of attention by applying Deep Reinforcement Learning to solve vintage Atari games. Recently that company solved the infamous game of Go. AlphaGo and AlphaGo Zero respectively. And today, even Starcraft is open for Deep Reinforcement Learning. Great times again!
Growing tired talking about VizDoom? Never!
VizDoom is a great piece of technology. And a great example for a well designed research platform. Setting it up is easy and everything is available in their GitHub-Repository. And you know what the best thing is? Yes, there is even a competition! Competitions fuel progress.
ViZDoom is one of many platforms that allow for Deep Reinforcement Learning in simulated environments. It is always good to have a simulation at hand. One of the main reasons is this: You can deactivate the realtime. Simulations can run as fast as the computer can compute. Not as fast as the human can perceive. This really, really cuts down on learning time.
Why am I talking about this whole Deep Reinforcement Learning thing? And what does it have to do with Games Engineering? Well… Think about the possibilities. Creating non-player characters with the minimal effort of integrating Deep Reinforcement Learning. And of course automatic game testing. Cutting down testing time by letting an AI play your games for you is definitely something you would strive for if you own a game development company.
Procedural Content Generation is so yesterday. Enter, Generative Adversarial Neural Networks!
Now a slight change of topic. Not a big one. We are still in our domain. But now the focus is synthesis. Did you know that you can use Deep Neural Networks for creating content? Procedural Content Generation is a powerful tool. And it has been for quite a while. Instead of designing hundreds of levels for your game, you go a different way. You implement a procedure that generates levels for you. And now comes the good part… You can use Deep Learning for that!
General Adversarial Networks (GANs)s are boss! The architecture is a little bit more sophisticated than „simple“ forward-propagation approaches. What is the idea behind GANs? Long story short: It is two networks. One tries to generate fake images or media in general. This is the generator. The second tries to detect fakes. This is the discriminator. They both train together. What happens after a while? Right. You get a generator that creates very convincing fake media!
Of course someone applied this to Doom! Just represent features of already existing levels as images and train on them. Fortunately there is many and many more custom levels for Doom available on the internet. After training, the Doom-GAN is capable of generating Doom-levels that are playable. Procedural Content Generation is so yesterday! Here is a video:
I had a lot of fun talking about Deep Learning and Games Engineering at Würzburg University. It was great interacting with all those highly motivated students! I am optimistic that Deep Learning will be applied more and more in Games Engineering. And we will see more results in the near future. Thanks for reading!
Stay in touch.
I hope you liked the article. Why not stay in touch? You will find me at LinkedIn, XING and Facebook. Please add me if you like and feel free to like, comment and share my humble contributions to the world of AI. Thank you!
A quick about me. I am a computer scientist with a love for art, music and yoga. I am a Artificial Intelligence expert with a focus on Deep Learning. As a freelancer I offer training, mentoring and prototyping. If you are interested in working with me, let me know. My email-address is email@example.com - I am looking forward to talking to you!