AI with Unity Introduction

Installation Instructions

To install the environment from scratch, follow these instructions from Unity's ml-agents GitHub repository. The instructions are excellent and easy to follow. We plan to create a virtual machine to help people get started right away.

Simplified Tour of the Unity User Interface

The image below is a screenshot of the 3DBall example provided by the Unity ML Community. To a Unity3D developer, everything is very familiar, because it is the standard development environment.

This is a simplified tour. We're focusing specifically on one configuration of the aspects that are relevant to getting started. There are a lot of other possibilities. Unity is very modular and configurable.

Scene Window

In the top left is the "Scene" window. It allows a non-technical person to change the game. You can add more Cube people, balls. Etc

Game Window

The "Game" window is below the "Scene" window. When you run the game during development, that's where you will be able to see the simulation running.

Inspector Window

On the far right is the "Inspector" window. It has all of the precise details about the "GameObjects." Everything in the game is a "GameObject." The specific details that define a "GameObject" are listed in the "Inspector" window as "components."

In this example, the "Components" are "Transform," "Box Collider," "Behavior Parameters," "Bass 3D Agent (Script)," "Decision Requester," and "Model Overrider (Script)."


Physics Components

The "Transform" component defines the physical dimensions and location of the GameObject that it is attached to. The "Box Collider" component defines how the GameObject interacts from a physical perspective. It covers things like bounciness, friction, inertia, mass, etc. The designer describes the physical characteristics, the Unity engine handles all of the physics, like collision detection and what happens during a collision.

AI Components

The AI components are provided by the ML-Agents packages. We will go into these in more detail later. For now, it's enough to know that you will control them the same way that you would control any Unity component.