Reinforcement Learning – Tools and Frameworks

I aim to create a tool that lets an AI play a Unity game. The first step is to look for existing projects in the field – which will be the topic of today’s blog.

In this blog, I will go over existing tools and frameworks for Unity and briefly explain some common testing methods.

First, some terminology…

Framework vs Library vs Tool

Figure 1 – Framework vs Library

 

The most defining difference between  a Framework and Libraries is a concept called ‚Inversion of Control‘. When you call a library, then you are in control of your application: you use the functionality of the library to extend the project. However, the opposite is true when it comes to frameworks: you often need to learn how to use them for them to be useful. Both of these ideals are reflected in their architectures, as shown in Figure 1. Since libraries are genrelly independent and could be implemented everywhere, it is recommended to prefer them over frameworks. (cf. [http://tom.lokhorst.eu] )

At its core, a toolkit is a collection of libraries. Or at least, that is one interpretation of the term. While the terms ‚library‘ and ‚framework‘ have a definitive definition, ‚toolkit‘ has not. (cf. [https://stackoverflow.com])

 

Unity Frameworks

When searching for Unity frameworks, the first results always aim for better development efficiency. One example that reflects this is the ‚Game Framework‘, which is regarded as a must have by reviewers. Another example framework is the ‚Lua Framework‘, which makes it possible to develop Unity games with the Lua scripting language. (cf. [https://assetstore.unity.com])

There are over 1,000 Unity frameworks available: Some improve the development in some way like the ones mentioned above, others provide code examples or language localization fixes. (cf. [https://unitylist.com])

 

The Unity framework

This is not a framework for the Unity game engine. This is a framework called Unity.

This framework has the purpose of performing unit tests for embedded software written in the C programming language. Getting started with this framework is easy and it seems simple enough to be useful in a professional environment. (cf. [https://www.throwtheswitch.org])

 

Unit 10 – Testing

Unit 10 is a testing framework for VR applications, and it is all about the importance of quality assurance and testing. Lisa Brewster and Bruce Wooden of Oculus cover overall player comfort, and how to successfully run tests in a VR application. The core objectives include:

  • Understanding the importance of quality assurance and testing to VR projects.
  • Recognizing factors contributing to overall player comfort as well as additional considerations for VR.
  • Evaluating different types of testing for VR projects.
  • Understanding how to select and run the right test for VR applications.
  • Recognizing how to collect and analyze data from tests.

(cf. [https://learn.unity.com])

 

That covers the most important frameworks and tools I could find.

There are still two things left I want to include in this blog: Unit testing and A/B testing. These tests can be applied in any application.

 

Unit Testing

Put simply, a unit test is…a unit test.

Ideally, a unit test is for testing a single ‚unit‘ of code. The contents of a ‚unit‘ varies, but the important thing to keep in mind is that a unit test should be testing exactly one ‘thing’. A unit test should be designed to ensure that a small snippet of code performs as it is expected to. (cf. [https://www.raywenderlich.com])

 

A/B Testing

An A/B test is a controlled experiment that exposes different groups of users to variations of some aspect of your game. The aspect of a game that is tested can be fundamental, such as the input control scheme, or it can be cosmetic, like a different color treatment. An A/B test makes it possible to compare key metrics that are collected during the experiment. This comparison might show which variation of the testedd aspect performs better. (cf. [https://docs.unity3d.com])

 

Conclusion

A framework is an environment around an application that provides functionality that usually must be learned to be used.

There are many frameworks and tools for Unity. While most of them focus on improving the development process, a few focus on testing.

There is no tool that uses AI to test a Unity game, which is a gap I aim to fill.

 

 

Sources

[http://tom.lokhorst.eu] 
Why Libraries are better than Frameworks. http://tom.lokhorst.eu/2010/09/why-libraries-are-better-than-frameworks (02/12/2019)

[https://stackoverflow.com]
Framework vs. Toolkit vs. Library. https://stackoverflow.com/questions/3057526/framework-vs-toolkit-vs-library (02/12/2019)

[https://assetstore.unity.com]
Game Framework – Extras Bundle. https://assetstore.unity.com/packages/templates/systems/game-framework-extras-bundle-50893 (02/12/2019)
Lua Framework. https://assetstore.unity.com/packages/tools/lua-framework-30055 (02/12/2019)

[https://unitylist.com]
Frameworks. https://unitylist.com/browse?f=frameworks (02/12/2019)

[https://www.throwtheswitch.org]
Unity. https://www.throwtheswitch.org/unity (02/12/2019)

[https://learn.unity.com]
Introduction Unit 10 – Testing. https://learn.unity.com/tutorial/unit-10-testing#5da89f21edbc2a0020bfe162 (02/12/2019)

[https://www.raywenderlich.com]
Introduction To Unity Unit Testing. https://www.raywenderlich.com/9454-introduction-to-unity-unit-testing (02/12/2019)

[https://docs.unity3d.com]
Unity Analytics A/B Testing. https://docs.unity3d.com/Manual/UnityAnalyticsABTesting.html (02/12/2019)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

drei × 2 =