top of page
Search

Week 8 - Unity Concept & Partner Check Presentation | The four F's of active reviewing

  • Writer: Elisa Shen
    Elisa Shen
  • Sep 23, 2024
  • 5 min read

This week, I officially started developing my experience program in Unity, which I’ve named ‘Mind Trip.’ As the name suggests, I hope that my target audience—young people with physical disabilities—can regain a sense of control over their lives through this neurofeedback system, helping them manage their emotions in a life full of challenges.


Before diving in, I designed multiple pieces of content for different stages. By the time I’m writing this blog, I’ve completed about 80% of the content. The short video included here showcases the process so far. At the moment, I haven’t connected the Unicorn Hybrid (neurofeedback device) to Unity, and the art style and details are still a work in progress. You’ll notice in the video that I’ve used placeholders like ‘…&*¥#@’ to represent complex instructions such as the ‘Game Rule,’ and I haven’t yet added detailed encouragement texts. For now, the program requires testers to press the spacebar to control the progress, which will eventually be replaced by brainwave triggers once the device is connected.


ree
[Figure 1: Concept sketch 1, my miro]
ree
[Figure 2: Concept sketch 2, my miro]




















Throughout the development, I encountered numerous technical challenges. Since this is my first time using Unity, I had to rely heavily on online tutorials to learn how to import assets and translate commands. As a result, I used animations to replace most of the commands. Initially, I tried to create smooth movements by modifying code in C# scripts, but I later realised that using animations, like video sequences, was a more efficient way to achieve my goal of providing a seamless user experience.



Game Tutorial Notes:

Objective: In the centre of the Tutorial section, I have a white silhouette of a character that I created. I want the silhouette to gradually turn black each time the user presses the spacebar. After three presses, the silhouette should turn completely black.

  • I originally designed two black-and-white character silhouettes for the transition. I thought the transition process would require switching between images, but through C# script control, I was able to use solid colours for the change.

  • Initially, the colour transition was very abrupt, so I added the 'Coroutine' feature in C# to make the colour transition much smoother (from white --> grey --> black).

  • As a guide throughout the experience, I decided to include a prompt to instruct the user on how to operate the system. I added TextMeshPro in the scene, but for some reason, I couldn’t figure out why the position of the comment and the character didn't appear directly in the scene. So, I adjusted the position and size through the Game Camera.

  • When the guiding part is over, I want to trigger a scene transition. In the 'Building Settings,' I created several different scenes that I need, such as GameStart, MiniGame, and EndPlace. I gathered all these scenes into one collection, so in the future, I can use C#'s 'ManageScene' to load the scenes.


Game Core Notes:

Objective: After the silhouette falls to the designated position, it should immediately switch to character A, which I’ve created. At this point, the animation for character A will not be triggered. The screen will display the text "Try move the character." When the user presses the spacebar, the text will disappear, and the animations for both character A and another object will be triggered. After all animations are completed, the screen will display the message "Ohh! You found an asset and triggered the Mini Game." After a 3-second delay, the game will transition to the MiniGame1 scene.


  • Now that the guidance part is over, we’ve moved on to the experience section. I created a new C# script called 'SilhouetteFall,' which I applied to the black silhouette character. This allows the character to "fall" from the guidance section (I chose the falling motion as a transitional action) into the experience section.

  • I also added the full character image to the silhouette's 'Sprite.' The 'SilhouetteFall' script includes a gradual colour transition, so when the silhouette reaches its designated position, the black colour gradually fades, revealing the final character, completing the transformation.

  • For character movement, I chose to use Bone Connect. I realised that modifying the skeleton on the existing character didn't allow for proper movement. However, when I re-imported the character’s separate parts, two identical characters appeared in the same scene. I opted to transition the existing character to the version with separate body parts. I found that I could use the C# script to make the original character disappear after the transition and generate a new skeletal animation.

  • I tried three different methods for bone structure modification. Initially, I imported different body parts using multiple layers, which essentially separated them into different sprites, though I didn't realise it at the time. The second attempt involved importing a whole sheet and using the slice tool to cut it up. I also added IK (Inverse Kinematics), but the legs were bending awkwardly. Finally, I decided to connect all the bones on a single sheet and directly started animating.

  • When creating the character movement animation, my initial intention was to trigger the spacebar and an animation each time the user reached the required focus level, moving the character a short distance with each trigger until reaching the target. However, I found that this required an extra code script and wasn’t very smooth. Therefore, I simplified it into a single complete movement animation.

  • While working on the silhouette drop and triggering the character animation, I added a 'Trigger Condition' in the target character’s 'Animator' and created a new C# script to trigger the transition from default mode to animation mode via the spacebar.

  • During this step, I encountered an issue where the text wasn’t displaying. Initially, I thought two separate subtitles would need multiple text elements to switch between, but when I checked my code in ChatGPT, no issues were found. I followed the suggestion to add 'Debug.Log' to identify the problem and eventually realised that the discrepancy between the text view in Unity and Game mode caused the text to not appear in the correct position.


Mini Game Notes:

Objective: In this scene, I want to create a mini-game. When the user enters this scene, a map divided into two halves will appear in the centre of the screen. The two halves of the image will move irregularly from side to side. A game instruction text "Game Rule" will always be present at the top of the screen. The user must try to time their action correctly—when the two halves overlap by around 70%, pressing the spacebar indicates success. If the user presses the spacebar at the wrong time, the map will shake to indicate failure, and a 3-second encouragement message "Please Try Again" will appear at the bottom of the screen before disappearing. During the message display, the user can continue playing the game.

Moving on to the mini-game development stage, the main issue was the inconsistency in the visuals. Initially, the map’s movement speed was off, but after adjusting the 'MovingSpeed' value in the C# script, it was resolved.

  • During my personal testing of the mini-game, I found that the transition between the previous scene (GameStart) and this one was too fast, leaving no time for the user to react, making the overall experience feel rushed. So, I decided to give users 5 seconds to prepare before the game begins, with a 5-second countdown displayed on the screen.


References:




 
 
 

Comments


bottom of page