Tingmao: .gitignore for Unity

Currently all the cache files produced by Unity are tracked by git, because we did not have a proper .gitignore file for Unity. This resulted in thousands of changes seen in git status and the vscode git panel, and if developers blindly commit everything this could easily led to merge conflicts, which is undesirable. Hence, we downloaded the GitHub’s official gitignore file for Unity. We also did a git ls-files -i --exclude-standard | xargs git rm --cached to remove all the existing committed garbage files.

Project management

NTT Data instructed us to manage the project tasks in their Microsoft Teams team via the Plan App. We roughly sorted this out earlier together with Brandon, and this week we will begin using it for our first set of tasks. Here is a peak of what it looks like:

Our tasks this weeks are (done concurrently by 3 people):

  • Better video player animation
  • Weather background
  • Menu screen

Tingmao: Video player slide in animation

Because I have never done any unity development before, naturally I spent some time learning how to properly control animations in Unity. I decided that I would use a Animator - a common Unity component that allows you to write your animation triggering logic in terms of a state machine:

A video demo for the animation I made:

Victoria: Changing background to reflect the weather

For this to work, I had to research how to receive information from APIs in Unity and I found that I could use UnityWebRequest. I then had to find a weather API to use. Originally I decided to use WeatherAPI as I could get realtime weather of a location specified but I later found that the weather information was too complex for our needs with many different types of weather conditions that also changed depending on whether it is day or night. I found OpenWeatherMap to be more suitable as its weather conditions all have a “main” weather name. To clarify in WeatherAPI, for clouds the weather name could be “partly cloudy” or “cloudy” but in OpenWeatherMap they would both be classified as “Clouds”.

Following this, I had to research how to only extract the required information from the JSON received from the API. From what I researched, in Unity you can define a class that essentially represents the JSON as an object and use JsonUtility.FromJson to create the object. Although this seemed extremely long considering the JSON from the API contained lots of data. I found an open source plugin called SimpleJSON which allowed me to only extract the weather name from the JSON. Currently, the Virtual Assistant simply prints the weather to the console as shown:

Next week, I will need to implement a response from Unity which will require creation of new skyboxes and figuring out how to change them depending on the weather condition.

Kaloyan: Menu screen

Since the assistant is voice controlled the menu cannot be an ordinary one, where the user just clicks on the option they want. What I came up with as a solution is for it to be in the form of speech bubbles with some of the main functionalities of the assistant and suggesting what the user can say to use them. This is a picture of what the menu looked like: