From the introductory of this course, I was able to learn different ways in which I could use the power of programming to move an object within scene. The use of transformation and rotation allows for simple manipulation through user input. Through the user input, I was able to manage the different transformations with the plane. Rigidbody was also an interesting topic that I learned within the course. It allows for easy manipulation with physics based interactions. Turning on gravity and giving mass to objects can greatly influence the difference in interaction. If I had two GameObjects which both used the gravity within the Rigidbody, they would both topple over. However, changing the mass for both objects lets one object overpower the other weight-wise. For example, if we were to give a car less mass than a wall that it crashes to, the wall would not be affected by much force. But if were to make the mass of the wall less than the car, the wall would fall over and the car would continue. Through this manipulation Rigidbody can change how games could be controlled and interacted with.
From this lesson I learned different ways to create a nice gameplay with collisions and object destruction. This enabled me to make the game on the right perform a simple task. The game is based on feeding animals with a cookie and every time an animal is fed both the cookie and animal disappear. Through the use of box colliders, I was able to create a collision script. Whenever the animal detected the cookie, both the cookie and the animal would destroy themselves through the code Destroy(gameObject). We also did this when the animal or cookie went out of bounds through the use of if statements. I also learned how to make a spawn manager where animals would infinitely spawn with the use of an array. This allowed us to make an endless top-down. However the most important concept I learned was prefabs. With the power of prefabs, I did not have to remake the animals in the hierarchy constantly. Instead, I was able to call the prefab from my project folder with a script and spawn them in with the same parameters that the original animal had. It provided simplicity and quick creation with in my game.
If statements is very powerful. We are able to limit different areas with no problem. By doing so, we can adjust how games function and what players are capable of doing. With it, I learned how to limit the amount of times I can press the space bar in the second gif. This adds for player control and difficulty within the game. Creating my own packages was another topic I learned. By doing so, I can backup my important assets and scenes, and don't have to worry about losing them as long as I backup periodically.
From this lesson, I learned 3 major aspects of immersion in games: Sound, Effects, and Animations. Without these, it would be hard to convey different emotions and tones within a game. In this tutorial, I learned how to add these to a side-scroller. Within the two games I made, the explosion effect was added to the player at death. This was done by a collision trigger by comparing tags with the play. By detecting a collision with a "obstacle" tag, I was able to give an explosion effect and a game over. Another effect I added was the dirt effect when the player was running. This gives a simple effect of speed to the player. Music/sound was also incorporated. When jumping with both the balloon and the farmer, you can here a jump sound effect. Same goes when they collide with an obstacle. This invokes some immersion into the game. Animation can be seen within the running side scroller game (Prototype 3 Video). The player has a running cycle as well as a jumping cycle. This allows for the effects to make sense in the world as well as create realistic immersion. A death animation can also be seen when hitting a fence. The player drops down and holds his chest. Within the lab, I reinforced the basic player control and and some environmental walls. I also replaced the transform movement in the code to addForce to make a more realistic movement style with acceleration and deacceleration.
From this lesson, I learned the fundamentals of gameplay design. This includes collisions and triggers which allow for game playability. When the player comes into contact with an enemy, I am able to invoke a response and add gameplay elements to the game. A major thing I needed to use were the OnCollisionEnter and OnTriggerEnter functions which allowed me to create these elements. Another thing I learned was editing the camera so that it revolved around a certain focal point. This allowed us to view the arena without any problem. I was able to make the player go in the direction of the camera as well. Another big aspect I learned was making the enemy move towards the character. This made a simple AI that allowed me to push of the player when they collided with their box colliders. Picking up the powerup allowed the player to get a boost in force when a collision occur, making the enemy AI fly across the screen. I also added a wave format, so every time the enemy count reached zero it added a new wave with an additional ball.
Within the challenge, I used different concepts I learned in Prototype 4 to fix the bad code in the Challenge. I also added a speed boost within the game that also has a smoking particle system behind the ball. Another thing I added was the speed increase every wave. So every time the player won a round, the next round would be much more challenging with the extra ball and increased speed of the enemy balls. In the lab, I applied the OnTrigger event to create powerups on the field as well as an OnCollision to report us when the player is hit.
From this lesson I learned how control the game UI. This allows me to control how the game communicates with the player. The score tells the player how many points they have gotten, while the Game Over screen tells them they lost and they may restart the game. I also learned how to communicate between scripts. This functionality allowed me to not have to rewrite code and have everything in sync. The score system was also a new thing which allowed me to set different score values for different interactable objects. I also added a starting menu UI at the beginning of the enemy. This allows for players to pick a difficulty and customize the game based on what it suits them. Within the challenge I learned how to make a timer. This adds a completely new element to the game so that the player has to keep track of. It adds more suspense and an end limiter to the game. The player is forced to get as many points without missing any by the time the timer reaches zero.
Within the lab, I learned how to change and remove colliders on pre-existing primitive objects like the enemies. I also learned how to change the meshes from a primitive mesh to a more complex mesh, like the enemy objects and player. I made a more engaging scene by doing so as well, by adding a story to the game. A road worker is trying to dodge oncoming roadwork objects within a street. The left and right building add the feeling of where a person is at. I learned that meshes are an important way to grasp a player's attention to a game.
I also learned how to export and upload my game to itch.io. There are different types of builds I can make. Some run in browser and some are just supported as an executable. I attached the itch.io of Prototype 5 below.