This week, we finalised the description of the world, decided the names of the characters and received the designs of the protagonist, now named Asimov and of his companion Spark and how they will interact. Some documentation started to perish on my notes, and I started a Game Design Document section at the confluence to organise my thoughts and share them with Dan. He will also be working in game development by himself. This week we also started to talk and plan for the presentation.
Unfortunately, I didn’t progress much with integrating a machine learning model to the enemies but solved the need for a boilerplate with more work on the engine.
Group contributions: group progress, engine, documentation and first draft for presentation
After presenting the engine last week, I focused on making it buildable and as sharable as possible. I moved the repository from Github to Bitbucket to better integrate Jira, created a team in Unity Cloud, and configured the repository integration. It allowed me to build a cloud version nearly whenever we wanted or needed it.
The game engine usage allowed me to focus more time on integrating the brain model [link] in the enemies. In addition, the data structure that described the enemies and the combat was more straightforward than I initially thought. Consequently, it gave me more time to invest in customising the enemies behaviour.
The codebase had everything we needed to build our story, gameplay, and ML model. Movement, enemies, health and combat boilerplate already integrated with a level’s system and menu. During one of our presentations to our tutor, we made a small playtesting session. This session didn’t go well since it was the first; we discovered some bug with the player controllers; However, it showed us that we were in a good direction.
This week, we also progressed in character development. Luke did a great job on the character design. We still need some animations for the main character, and he shared that he wasn’t so comfortable working with 2D but was enjoying the challenge.
I started to review my documentation pages to finish my tasks, and it was clear that I needed a better organisation. So I took advantage of the learned content of the 720’s module, replicated the Game Design Document structure, and added as main contributor Dan to work together on the description of the Game Design. My main focus was to have a clear view of what I was working on besides the Machine Learning experimentation.
Personal development: The more approachable path, better enemies
What makes a good interaction between player and Game AI. What are the expectations from a player perspective? Is there any conceptual framework? I got lost this week investigating the formal aspect of the construction before continue developing my ML Agent and integrate it into our sandbox.
I started my investigation with (Conroy, Wyeth and Johnson, 2011) reviewing a proposed modelling player-like behaviour for game AI. (article of the same name) this is a part of what I believe is a topic that has been continuously investigated. Since the adoption of Monte-Carlo Tree Search (Chaslot et al., 2008) as the practical framework to Game AI.
I got lost in all papers and got a step back on my investigation to focus only on the top-down shooter, the structure that is best related to our current project.
Teaching and AI to survive in a 2D environment is a subject already explored (Ropilo, 2019) and it follows the same steps that I’ve been pursuing. However, when comparing to the simplicity of usage of Navmash (Unity API, https://docs.unity3d.com/Manual/nav-BuildingNavMesh.html) it’s hard to say that it is entirely applicable.
It led me to question the related benefits of this approach. The advantages of a mixed strategy, however, I’ve been observed best results from the research of openAI.org where extensive effort in research and development has been applied to produce more efficient player-like behaviours (Berner et al., no date).
From a perspective of a solo developer, I’m feeling that I don’t have enough time to produce useful results.
Conclusion: the tool of attention divided
Another challenging week, besides readings that took a huge amount of time to finalize the previous module, is also something that consumed my attention. The literature related to Game AI is vast and I got entertained for a while only investigating how an Ai as Designer might work (Berner et al., no date) and how to compare with the default and more classical approach using the Unity API. This was a productive week from my knowledge perspective, however, I didn’t contribute as much as I initially planned with the team efforts.
Barrera, R. (2018) Unity 2017 Game AI Programming – Third Edition: Leverage the power of Artificial Intelligence to program smart entities for your games, 3rd Edition. Packt Publishing Ltd.
Berner, C. et al. (no date) ‘Dota 2 with Large Scale Deep Reinforcement Learning’, p. 66.
Chaslot, G. et al. (2008) ‘Monte-Carlo Tree Search: A New Framework for Game AI.’, in. Bijdragen.
Competitive Self-Play (2017) OpenAI. Available at: https://openai.com/blog/competitive-self-play/ (Accessed: 14 October 2021).
Conroy, D., Wyeth, P. and Johnson, D. (2011) ‘Modeling player-like behavior for game AI design’, in Proceedings of the 8th International Conference on Advances in Computer Entertainment Technology. New York, NY, USA: Association for Computing Machinery (ACE ’11), pp. 1–8. doi:10.1145/2071423.2071434.
Guzdial, M. and Riedl, M. (2018) ‘Automated Game Design via Conceptual Expansion’, Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, 14(1), pp. 31–37.
Hunicke, R., LeBlanc, M. and Zubek, R. (no date) ‘MDA: A Formal Approach to Game Design and Game Research’, p. 5.
‘Leveraging Machine Learning for Game Development’ (no date) Google AI Blog. Available at: http://ai.googleblog.com/2021/03/leveraging-machine-learning-for-game.html (Accessed: 13 October 2021).
Pav (2021) Enemy AI in Unity Games with ML-Agents Toolkit, Pav Creations. Available at: https://pavcreations.com/enemy-ai-in-unity-games-with-ml-agents-toolkit/ (Accessed: 12 October 2021).
Ropilo, T. (2019) Teaching a machine learning agent to survive in a 2D top-down environment. Available at: http://www.theseus.fi/handle/10024/265388 (Accessed: 14 October 2021).
Technologies, U. (no date) Unity – Manual: Building a NavMesh. Available at: https://docs.unity3d.com/Manual/nav-BuildingNavMesh.html (Accessed: 14 October 2021).