0702 Final Project: JellyFish

✔️Final Project Blogpost


Unity Reflection

JellyFishDemo | Tool Used _ Unity & Maya

For my final project, I created JellyFish. JellyFish is a 3D based, first person controlled, fishbowl game. Player will be able to collect bullets through colliding with undersea creatures, and kill all four squids by shooting 5 bullets continuously.

For the game control, it is similar with the Tailwind Level Design; mouse for the direction it faces, WASD (⬆️⬅️⬇️➡️) for moving, and space button for shooting.  In order to indicate the collectible's position, I put a purplish spotlight above each of them. The JellyFish will receive 10 bullets for each creature, and lose 2 bullets each time colliding with the squid. The squid will also attack the fish by spraying the ink and the screen will become invisible for 3 seconds.

 

Squid Code

I used Sin wave to make the squid move naturally & give each of them a variable to avoid them all move identically.

Each squid has a recoverable life. If player has stop shooting the squid for more than 3 seconds, the squid will recover to its original life status.

The more bullets is shot, the more reddish the squid will be.

Squid Movement

Squid Recoverable Life

PostProcessing

In order to make it more underwater feeling, I applied many effect through PostProcessing, including Bloom (with blueish & purplish color), vignette, lens distortion (fish eye lens), and Grain.

 In terms of the UI, I create two different scene for the Start Button in the main menu, and the Restart Button, which will be shown when the game is ended. Each time either button is pressed, the scene will transit to the gameplay scene. During the game, there will be Bullet number (how many bullets you currently have), the Squid number (the number of squid you still have to kill), and the timer (countdown from 60 seconds).

Start Button UI

UI During Game

After my user testing, I took off the scaling effect for the fish. It was originally designed to scale up when collecting the bullets and scale down while shooting or colliding with the squid. Another mechanism I changed is the game control. The fish used to be controlled with the mouse. The fish will move toward the direction where the mouse move to. However, it came out really dizzy and very hard to be control. So I decided to separate the vector and the movement.

JellyFishPrototypeDemo | Tool Used _ Unity & Maya

 

Through this project, I get more familiar with Unity, especially writing in c#. I found most resource from the internet, but I did learn a lot from looking at their code. I also have a better debugging skill after this project. If have more time on this project, I would like to add sound effect and refine the PostProcessing. Also, I would like to write a shader for the fish, so it can be swimming as a real fish rather than moving as a mesh. I would also add water texture and create a collider for the fish bowl, because currently the fish can be moved out from the fishbowl.

0613 Assignment 3: Tailwind Level Design

✔️Use the Unity package from the class of 06/11 as a starting point to create your own level for Tailwind

✔️Make sure that the level is optimized from a physics standpoint and make sure to create a level that encourages players to use all of their controls, explore the level, and solve movement puzzles.

✔️Make sure to take note of the following:

  • The level must include at least 5 score collectible objects that each present a unique challenge for the player to get.

  • In terms of physics optimizations make sure that there are very few (if any) mesh colliders in the scene, character controllers are implemented properly when it comes to physics vs non-physics interaction etc. Try to combine your notes from class, as well as your own research on how to efficiently use the Unity physics engine.

✔️Final Project Proposal


Unity Reflection

tailwindLevelDesignDemo | Tool Used _ Unity

For this week assignment, I designed several levels for tailwind. In order to give the user hints to use the different control key, I intentionally placed each collectible in a specific position. For the beginning of the game, you can see there is only one collectible at this level. It's placed in the tunnel because I'd like the user to go to the second level through passing this tunnel and falling to the next level through the waterfall. In the next level, after you collect some collectibles and move around, you will notice that there is a spotlight. The spotlight is for giving the user a hint that this is the goal for this game, and this is the last collectible they should be collecting. I place the last collectible at a specific height so that the user will not be able to collect it by just jumping. Instead, the user will have to jump to the highest tree first and glide in the air by using the shift key.

In order to correspond to the theme for my final project, I played around with many different asset through this assignment. For my final, I will be creating an underwater environment, so I was trying to create an aquatic environment with an illusory feeling in this assignment.

Throughout the designing process, the main issue I met is the bug with the material. I wasn't sure if it was because of the use of the material. The jumping effect and gliding effect didn't work at all no matter how I adjusted the collider. Every time I was trying to jump, it would be shot into the air. To cope with this, I disabled all collider with original stages and added an invisible cube with a box collider. Overall, I learned a lot with trying out different player control and also being aware of the use of water or ocean prefab and material. 


For extra credit:

✔️Solve the camera jitter bug that occurs occasionally when the player picks up a collectible

Change Update() to FixedUpdate()

✔️Solve the wall-clinging and wall-jump bugs that occur when the player makes a collision with the side of a platform and allows them to jump repeatedly.

In your reflection for the week, Include some information on how you identified the bugs, instructions on how to replicate them, as well as how you solved them. Did your fixes introduce new bugs? What are they and how are they triggered?

0606 Assignment 2: Rube Goldberg Machine 2.0 / Early Start

✔️get started on creating a design document for your game

✔️get started on the aspects that you deem part of the essential experience of your game

✔️READING: The Art of Game Design: A Book of Lenses [Page 129 - Page 205]

✔️OPTIONAL READING: The Art of Game Design: A Book of Lenses [Page 207 - 219]


Final Early Start Reflection

Level Design

Short brief / 1 line about the game

A fish collect stones through swimming through a underwater cave

Core gameplay (loop) / mechanics [Lens of essential experience]

Players will be control a fish to collect as many stones as they can, while swimming through the underwater cave.

Broader gameplay concept [Shopping list of feature]

  • When reaching the top of the cave, the fish will be dropping to a fishbowl which has a fixed amount of water.

  • The fish will need to throw out those collected stones in order to higher the water line until the fish will be able to flow to the next fish bowl (level).

  • Through the collecting process, there will be enemies (squid jetting ink) making the water become invisible.

  • The fish can shorten the invisible time by shooting the collected stones to attack the squid.

Character controls,  gameplay systems, level design

Character controls

0530 Assignment 1: Rube Goldberg Machine

✔️use the Unity game engine to create a Rube Goldberg Machine

✔️READING: The Art of Game Design: A Book of Lenses [Page 97 - Page 127]


Unity Reflection

rubeGoldbergMachineDemo | Tool Used _ Unity & Maya

For this week assignment, I created a Rube Goldberg Machine with unity. I used dominoes for most of the stages. From the beginning, two balls fall down from the air and move forward to push down the dominoes. I wrote a player movement script control and move the balls forward. The path for two balls is similar with each other’s. I added in two spinning wheels, one vertical and one horizontal, to make it more interesting. After the last piece domino from both rows are hit, they will fall down and hit the two balls on the second level. Because the need of different rolling speed for the next level, I used stairs for the second level. However, there is no much difference by changing the width for each staircase. In order to make the balls roll with a specific distance with each other, I implemented two dominoes on the stairs on one side. In this way, when they fall through the third level, the first ball will reach the fourth level in advance and open the gate for the second ball. Since the force for the ball is not enough push down the dominoes in the next level, I put a bigger ball with a larger mass on the slides, and it is easy to be pushed down by the small ball. After passing through the next dominoes level and the stairs, you will see there is a blooming flower. Once the last ball is pushed by the last piece domino of my Rube Goldberg Machine, the flower will drop into a box by hitting by the ball. As for the petals, I modeled them in Maya. 

From this assignment, I tried out a lot physical simulation (rigid body) method in unity, especially playing around with the mass and freezing position and rotation. The most interesting thing I learned is that controlling the object by using script, because I used to let the balls roll from the beginning to test and see if a specific level is working well or not. Fortunately, I learned how to write code and control each ball, so I can simply add a new ball in the middle of the machine and test the particular part. Overall, I think this is a great opportunity for me, as a unity beginner, to get started with learning unity.

 

Source: https://www.dropbox.com/s/8c8a1bz3ahyt7o9/...

0528 Assignment 0: Up and Running with Unity

✔️downloaded and installed Unity on your Computer

✔️created a Unity account

✔️set up VSCode to be the main code editor for Unity

✔️create a personal process blog

✔️READING: The Art of Game Design: A Book of Lenses [Page 1 - Page 95]


Reading Reflection

After reading from the first chapter through the chapter seven from the book "The Art of Game Design: A Book of Lenses," I grasp a brief idea of game design and game development. Before attending the first class and reading this book, I had no idea about game, either design or development; I thought these two are identical. From introducing the most important skill for game designer, which is listening to eight tips for productive prototyping and further closing the loop, this book truly helps me with getting the idea of how the process of creating a game could be. Especially those lenses on each chapter, they help me to reflect these lenses on those games I have played before and see if they answer those key questions. This most intriguing part I found is discussing about subconscious and sleep in chapter six. I agree with how crucial the sleep is for idea generation or even solving problem, but I always tend to stay awake until I solve the problem or come up with an interesting idea. However, I really appreciate that the author introduces the subconscious mind as another person of ourselves. It opens my mind about treating our subconscious as a silent partner, which can be really useful. After reading these paragraphs, I start to believe in enough sleeping is also an essential element for game design and development, because this is where those creativity arise from. Overall, I learn a lot from these chapters, and I get to know the process from brainstorming an idea to make it really come true.