Games Development / Exercises




06.04.2023 - 06.07.2023  (Week 1 - Week 14)
Audrey Gracia Djohari / 0348120
Games Development
Bachelor of Design (Hons) in Creative Media / Taylor’s University
Exercises


LECTURES


WEEK 1:

In the first week, Sir told us to download Unity Hub and make an account because it's the platform that we'll use for our upcoming projects. He also showed us some of the seniors' work and what kind of game we'll be making.

We also played some seniors' game in this website, Sir tasked us to ratie the games that we played:


WEEK 2:

Games Developmemt Components
  1. Game design: requires artistic and technical competence as well as writing skills.
  2. Game art: concept artist, UI design, character design, environment design
  3. Game technology: programmer

Elements of a Game

1) Story
  • The guidence of how the game starts, ends and the characters.
  • How, Where, What happens.
  • The persuit of a difficult goal.
  • What is the reflection
2) Gameplay
  • Challenge
Challenge is the element that will make the game difficult. Challenges comes in different forms such as different types of enemies, the obstacles along the way, lives, etc. Punishment is an example of further challenge to the player.

  • Strategy
Strategy to overcome challenges and obstacles, the player should be able to think and develop a way to navigate through difficult situations presented in the game.
  • Chance
Chance is the element in the gameplay design that will help prolong the Life of the player.
  • Choice
  • Luck
Games Ideation

Method 1: Brainstorming
Method 2: Brainwriting 6-3-5
Method 3: Scamper (Substitute, Combine, Adapt, Modify, Put to another use, Eliminate, Reverse)
Method 4: 3i (Incorprate/Include, Improve, Inverse/Invert)


WEEK 4:

Intro to Unity, Character Control, game Physics

Fig : Week 4 Lecture & Tutorials





EXERCISES

- Rating Games

Game #1: Sneak Out to Snack 
by Katarina Indira

"Sneak Out to Snack" is a puzzle strategy 2D-platform game, where the player acts as Ruby, a fat little girl that likes to eat snack. However, she is strictly not allowed to eat snack in the middle of the night. Ruby tries to sneak out of her room to find the snack that is hidden by her family and get it. As a player, we must help Ruby sneaks, collect items, solves clues and avoid the family members to notice her.

I played until level 2 and I think the story of the game is quite interesting and original. I also like the setting illustration and character design. Overall, in a user interface perspective, the game looks nice and visually easy to understand. The buttons, icons and information board are accessible and easy to navigate. 

From a user experience perspective, I can play the game quite smoothly but it's quite challenging. One problem that I encountered is the CCTV red area. So basically if a player passes through the highlighted red area, it's game over. However, I found that the CCTV highlight areas are not consistent, some CCTVs have wider area but the others have smaller area. So it's quite unpredictable how close we cat get to the red area. I think it should be more consistent. 

One more thing is the family members, so I tried pressing H key to hide my character when I encountered the grandma. But turns out when I'm in hiding mode, I could literally push the grandma across the room and I think it's quite weird and illogical. My suggestion is to make the game over if the player touches any family member (when they're pressing H key). That way it's more challenging and logical. Apart from these, the game is fun and I like the art direction and concept. It's a good reference for me in creating my own game. Simple, User-friendly , and aesthetically pleasing.


Fig 1.0-1.2: Sneak Out to Snack by Katarina Indira

Game #2: Conjure 
by Kezia Lynn

The gameplay is relatively simple and revolves around Lilith "cleaning" up the city by defeating roaming creatures as she continues her journey. Each stage there will be mini quests for Lilith to complete so she can continue her journey. In order to figure out how to complete the tasks and also understand the flow of the story, the player needs to interact with objects in the environment. Also, after completing each stage, the players’ health will be replenished. There will be no items to add health.

I feel like this game is about exploring and finding out how to help the neighborhood by completing quests. Design wise, it's neat and I like the minimalistic characters and background. I think the way the characters and the background moves are very smooth. However, I think the animation can be improved by adding a reaction (like a jump or a red outline) whenever the character loses 1 health. Because whenever I got hurt by the ghost or fire, I didn't see any reaction so sometimes I didn't notice that I lose the hearts. Other than that, I guess the prologue at the beginning looks too long and the design is quite tiring to read. Maybe making it shorter by putting each sentence in different scene would be nicer and less boring. So that players are more intrigued to read it and understand the story. One more thing is the floating rocks in the dragon scene. I couldn't jump onto it and whenever the character touches it, the rock disappears. I guess it's a bug?

Fig 1.3-1.4: Conjure by Kezia Lynn

Game #3: Adam’s Nightmare 
by Matthias Lim Shou En

It's a platform game where the player must go through obstacles by jumping, climbing and grabbing objects to reach the finish line. I like the whole simplicity concept but it's I think the buttons are quite difficult and complicated. I couldn't even pass the first obstacle where I have to jump and grab a rope to reach the other part of the land. Maybe it's just my poor skill but I would expect the game to be easier and simpler in for noobies like me. lol. One more thing that I found is a bug in the jumping button (spacebar), sometimes it doesn't work so I need to refresh my browser. Overall the animation is fine, graphics are smooth and unique. I can't comment further as I never passed the first obstacle.

Fig 1.5: Adam’s Nightmare by Matthias Lim Shou En


- Game Development Idea

Instruction

So, for this exercise, Sir instructed us to create our own game with either of the methods learned during lecture. We had to write down the story and the gameplay. And what existing game inspired us.

 
Outcome

Esther, Michelle, Luisa and I decided that we inverse the gameplay of Grand Theft Auto (GTA) and create a whole new game. Here's the initial idea that Esther proposed before we improve the idea: 

"WHAT IF we play GTA, but as a good, contributing citizen of the Los Santos?"
  • Method: 3i (Incorprate/Include, Improve, Inverse/Invert)
  • Title: GTS (Giving Back to Society)
  • Inspired by: GTA (but reversed)

Fig 2.0: Game poster design by Esther & Michelle

Fig 2.1: Games Development Idea Presentation


- Unity: Learning Game Physics

WEEK 4:

This week, we learned to use Unity for the first time to create a simple game physics.

Notes

  • Making a File: New Project < 2D Core < Rename < Select a Folder < Create Project
  • Gravity: Add component < 2D Physics < Rigidbody 2D
  • Hit Something: Add component < 2D Physics < Capsule Collider 2D (green outline will appear)
  • Change Weight: Adjust the Rigid Body MASS
  • Change the Playmode Tint: Unity < Settings < Colors < Playmode Tint
  • Add Sript: Add component < New Script < Raname it
  • Freeze Movement: Rigidbody 2d < Open Constraints < Freeze x/y/z
  • Change the Gravity X/Y: Edit < Project Settings < Physics 2D < Gravity
  • Create a Trigger/Detector: Create Empty < Place it somewhere inside the physical < Add Box Collider 2D Component < Is Trigger < Turn On || Create a tag "ground" < tag the empty object to the new tag

  • * SAVE both Scene & Project (File<Save project)
    * Always choose 2D for the components if you’re making 2D games.
    * Any changes you make during play mode will be reset.
    * Make a special folder for scripts, open it through Finder using Visual Studio Code

    Fig 2.1: Script settings & Folder

    Scripts
    * Start: It stops after 1 command
    * Update: will not stop and will repeat the commands over and over again.
    * Use // to write comments without affecting anything
    * For Movement Speed: GetComponent<Rigidbody2D>().velocity = new Vector3(x,y,z);

    Fig 2.1: Character Horizontal Movement Script

    Fig 2.1: Character Jump Movement Script

    Fig xFull Script

    Game Physics Outcomes

    In today's class, I'm quite happy with what I managed to do in Unity and I really enjoyed the process. Surprisingly my laptop did a good job and didn't experience any error during the practical session. Here's what I managed to do:

    1. Make a simple catapult
    2. Create command to move the object forward and backward
    3. Make the object able to jump twice but not more (NGL this one was so confusing)

    Fig x: Week 4 Exercise, Unity
    Fig x: Week 4 Exercise, Forward, Backward Movement and Jump

    - Unity: Learning Triggers & Animation

    WEEK 6:

    Tutorial & Practical Video

    This week, we had online class via Zoom and Mr. Razif taught us many new things that we could do in Unity. We used previous week's file and continue to develop it.

    • Note: Collectibles: Check 'is Trigger'

    What we created:
    1. Creating a door (the white box). Animating the door's movement.
    2. Creating triggers for opening & closing the door. (Create Empty)
    3. Adding a key icon.
    4. Adding coins & animating it.
    5. Enabling the character to collect key & coin
    6. Coin value
    7. Adjusting the Game Camera
    8. Animating the key idle movement & collected movement (when the character reaches it).

    Fig x: Week 6 Tutorial & Practical Video

    Fig x: Hierarchy

    Notes

  • Making Animation: Click the Object < Window< Animation < Animation < Create/Create New Clip< Name It (remember the spelling & cases)< Click the Red Button < Animate it by creating Keyframes
  • Turn Off Animation Looping: Assets < Animation < Choose the Animation File < Inspector < Uncheck Loop Time
  • Making Prefab Asset: Drag the Object from Hierarchy to Assets (Project Panel)
  • Applying Changes to all Prefab Assets: Click the changed Object in Hierarchy < Inspector < Overrides < Apply All
  • Slicing Images (Sprite Editor): Put Image in Asset < Click play button beside the object < See Inspector Panel < Change Sprite Mode from Single to Multiple < Click Apply < Click Sprite Editor < Slice < Slice

  • Outcome

    I used different icon images for my exercise because I missed the link that Mr. Razif gave. It took me more than the class time to finish this exercise because I had so much errors in my code. But often times, the errors were so simple such as misspelling and misplacing the object in hierarchy.

    But at the end I managed to followed all of the things that Mr. razif taught and this is my final outcome. And I'm soooo happy because I could do it by myself.


    Fig x: Week 6 Exercise


    Fig xx: Week 6 Exercise, Codes

    Fig xx: Week 6 Exercise Outcome



    - Unity: Weapon, Shooting Bullets, Enemy's HP,  Shooting/Shot Animation, etc.

    WEEK 9:


    Producing Bullets from the Player's Gun

    • Create public GameObject & float
    Create public GameObject & float to control the bullets, where the bullet shows up, bullet speed

    Fig: Public GameObject & float in PlayerControl.cs
    • Link the bullet GameObject to the bullet prefab in the Assets
    • Determining the spawn point of the bullets
    Create Empty < Rename it as spawnpoint < Drag it to the Spawnpoint GameObject


    Fig: Inspector
    • Determining which Computer Key to use (to fire bullets)
    Edit < Project Settings < Input Manager < Search for the key (Fire 1 below Vertical) < Write down the Key name in PlayerControl.cs Script

    Fig: Input Manager (Project Settings)

    Fig: Firing Bullet Script in PlayerControl.cs


    Creating Enemy Object
    •  Enemy Inspector Settings
    Create < 2D Object < Sprites < Capsule < Rename it < Add Rigidbody 2D (Check the freeze rotation X) < Capsule Collider 2D 
    •  Tagging the enemy
    Create new tag called enemy < Tag it inside the Inspector
    • Enemy Control Script (HP)
    Add a script called enemyControl.cs < create public int to write the enemy HP (health/life) < Write down how many HP the enemies have inside the inspector

    Fig: enemyControl.cs

    Fig: enemy HP

    Fig: Rigidbody 2D & Capsule Collider 2D settings in the enemy


    Downloading Assets

    • Access Unity Asset Store: 

    Sign In to Unity Account (both in Unity Hub & Website) < Add to My Assets < Open Unity < Download< Import < The file will appear in Assets


    Fig: Unity Assets Store

    Blood Splatter & Destroyed Animation
    • How to link effects to the bulletControl.cs
    Click bullet prefab in the Assets folder < Drag bulletControl script to the bullet inspector < create public GameObject for effects so it shows up in the inspector < Drag the FX files to the GameObject in the inspector < Write down the codes & commands (Instantiate)

    Fig: bulletControl.cs, creating public effects 

    Fig: Bullet Inspector, Effects

    Fig: bulletControl.cs (Instantiate effects)

    • How to edit duration of the effects
    Open effects file <  To see the Particles, Click Open<  To edit the duration & delay time, Edit the Particle System in Inspector


    Self Destroy (for performed components in hierarchy)

    I made a new script (SelfDestroy.cs) dedicated to write self-destroy program. By linking this script to an object, the object will disappear from the scene/hieararchy after it performs its task. I can also write how long the component lasts before disappearing by editing the duration. This is done to the bullet, blood splatter animation, and explosion animation.

    Click the object inside Assets or other folder < Drag the DestroySelf.cs script file to the chosen object's inspector

    Fig: Destroy Self (to clean components in hierarchy)

    Power Up Shows Up if Enemy is killed

    • How to Make Power Up Object
    Input an image file to asset < Adjust the Size in Screen < Make it as Prefab by dragging it back to Assets < Insert Circle Collider 2D < 'Check is Trigger' < In Animator, check 'Apply Root Motion'

    Fig: Power Up Inspector

    • Link Power Up Object to Enemy Object
    In enemyControl.cs, create public GameObject objectToSpawn; < Drag the Prefab file to the Game Object in Enemy object

    Fig: Public, Object To Spawn (Power Up)

    Fig: Script to make the Power Up shows up After the Enemy dies

    • Animating the Power Up Object
    Put the Prefab to the Screen < Click Animation < Create new animation, save the file in Animation Folder < Click the Red button < Create keyframes < Turn off the Red Button < Apply to all Prefabs (in Inspector) < Delete the Prefab

    Outcome
    Fig x: Week 9 Exercise




    REFLECTION

    Experience
    Trying out 2D game physics for the first time in Unity was both exciting and challenging. It was satisfying and somehow cute to see my code come to life as objects fell down following gravity and responded to my keyboard commands for movement. There were so many errors the first time I tried doing this, but thank goodness my classmates were angels, they helped me a lot.

    Observation
    During my first experience with Unity, I observed that the software's interface can be overwhelming and complex for beginners. The experience was takes me back to how I felt when I first learned Adobe Illustrator and Photoshop, but I hope I would get better throughout the week. 
      
    Findings
    Based on my experience, I discovered that experimentation and trial-and-error are essential for learning Unity's tools and features. Trying out different commands and settings can help to build an understanding of how the software works. I really need to take notes when Mr. Razif explained about the codings because it was quite complex and difficult to digest.




    Comments