Game Development

Mohamad Irfan (0326620)
28/8/2019 - 27/11/2019 (Week 1 - Week 14)
Game Development
Mohamad Irfan (0326620)




Week 1

This week we were introduced to the module and what the projects and final project will look like. Using Unity and another software for rigging and animating the game characters and objects, a 2D plat-former web-browser game will be made.

This week Mr Lun walked us through how to draw and rig a character to be placed into After Effects to animate.

We were tasked to study and review 2 different plat-former games and see what makes them unique, fun, and, effective in terms of gameplay, artstyle, etc.

Plat-former Game Review

Hollow Knights




This game which is available on steam is a positively acclaimed plat-former in the gaming community. Hollow Knights is a metroidvania, which is a sub-genre of action-adventure video games which was derived from the two games Metroid and Castlevania. The gameplay elements and mechanics include paths of the map being gated by certain obstacles such as a ledges that are too high to reach or gaps that are too far to jump. These obstacles can only be passed once the player has obtained the necessary upgrades, tools, or special items. Hollow Knights does this well in the sense that the player becomes very invested into the character and making them stronger and obtaining more abilities to explore more of the ruins.  This gameplay element also encourages the player to explore the map as much as possible. Hollow Knights offers a lot of freedom, the player can go wherever they want until they realize that they need a special item or ability to explore further. In any direction the player chooses to go there are bosses to fight and secrets to uncover.

Looking at Hollow Knights from the surface is enough to get many players interested. The beautiful hand-drawn 2D style and immersive atmosphere is enough to hook players in. The art is further enhanced with the music and different locations of the world offer a beautiful yet distinct look and feel. The world known as Hollownest is quite extensive and leaves hours of exploration for the player.



The background art and atmosphere varies greatly in different locations of the map, but was designed that the player can transition through the map seamlessly. Aa rainy metropolis city in an underground cave and a lush green underground forest are cohesive and all feel part of the same world and map. Different colours, shapes, structures, and nature elements are effectively integrated into the different locations. Hollow Knight does not shove this in the players face but rather lets the player explore and discover the history of the world for themselves.





Hollow Knights is also known to be a rather challenging game even from the start. It has a smooth yet challenging combat system because of all the different enemies and bosses the player has to fight. The base attack is a short ranged melee attack which makes killing enemies about patience, timing, and learning attack patterns. Knowing when to attack, to heal, to use an ability is what the combat is about. Hollow Knights also has a feature called Charms which alter the players attacks and abilities. The player can choose between their available charms to change up their gameplay. Certain charms can change the attack range, change the style of attack of an ability, and more. The player is given total freedom to play how they want in different scenarios, as such there is no correct way to play Hollow Knights.


Super Meat Boy



Super Meat Boy is an indie plat-former game with a simple story. With a similar plot to Super Mario, the beloved of Super Meat Boy is captured and locked away by Dr Fetus, and the main plot-line is overcoming the levels and obstacles to eventually save the princess. Super Meat Boy has a clean, pix-elated artstyle, The artstyle does change to an 8-Bit theme when the player enters a 'warp zone' to emulate old NES games. Super Meat was heavily inspired by Castlevania and Ninja Gaiden.

Super Meat Boy was intended to be very challenging.  It is the type of plat-former game where the player can die over a hundred times before they beat an obstacle. There are also only 2 buttons that players have control aside from moving left and right which is jump and sprint. The controls look and feel very fluid and great. Compared to Hollow Knight, this game may feel a lot more fast paced as the game is not about exploring, it is about beating the level. From the sound effect when Super Meat runs or gets grinded by a buzzsaw, to the animation when Super Meat Boy gets stabbed by a spike, the gameplay is enhanced by these effects.



At the end of each chapter there is an inventive final boss which is a change of pace from the obstacle dodging earlier. If the game wasn't already insanely hard, there is a dark world counterpart for each level which is even harder for players who seek to up their death count even more. There is also incentive for the players to create bandages placed in different parts of the map which can be used to unlock different characters. Overall the gameplay and story is simple yet challenging. It is for players who want to keep trying and trying by challenging themselves. 



Week 2

This week we started working in Unity. We learned the basics and fundamentals of Unity, including creating objects in a 3D space and viewing them in 2D. We learnt about transform positions, rotations, and scales. We added physics to the objects using RigidBody so that the objects would react to gravity and colliding with other objects in the scene. Next Mr Razif explained different data types used in C# scripts. The different data types are:

  • int (integers)
  • float (non-integers)
  • bool (true or false)
  • string (characters of text)



Mr Razif then went on to explain the different operators, which are used to perform operations in C#. 


  /*ASSIGNMENT OPERATORS
    *playerHP = 100;
    *playerHP += 100 | playerHP = playerHP + 100;
    *-=
    **=
    * /=
    * 
     * ARITHMATIC OPERATORS
     * +
     * -
     * *
     * /
     * %
     * ++ score++ | score + 1;
     * --
     * LOGICAL OPERATORS
     * 
     * == | Compare if its the same for two variables (playerHP == MaxHP)
     * >
     * <
     * >=
     * <=
     * !=  | Compare if different for two variables
     * ||  | OR
     * &&  | AND
    */

Lastly Mr Lun explained and gave examples of if and else if statements and conditions. We did a simple print text of a player's HP until it went to 0 to display 'Game Over'.


Week 3

This week Mr Razif and Mr Lun taught us more Unity and C#. The exercises included Player Movement, collecting 'coins', and NPC Movement.

Player Movement
By using Input.GetAxis and Input.GetButtonDown to call the movement key buttons set by unity, the player movement is made. By pressing W and D the player character can move left and right and pressing space-bar can make the character jump.

Collecting Coins
This was done by assigning a tag to an object, we called it Coins or myCoins. The object is then dragged to the Project tab to create a 'Prefab'. Using the prefab I created 3 duplicates of the coin onto the scene. When a prefab is duplicated all the duplicates will retain the same tag as the original. Back to C#, using OnTriggerEnter(Collider other) and if statement, when the player collides with the coins their SetActive is set to false, meaning it disappears in-game. I also set an if statement that if all 3 coins are collected a sphere will spawn. This was done by creating an empty gameObject for the spawn point of the sphere and Instantiate the sphere when 3 coins are collected.

NPC Movement
The first NPC we made was one that moved from left to right repeatedly. The boundaries were set by creating empty objects on the scene, one for the left and one for the right boundary. Another int varaible was created for the speed of the NPC called chickenspeed. A public GameObject was made for both L and R in C#. Using an if statement with the transform.position.x, the public int chickenspeed was multiplied by -1, causing the NPC to change directions when met with the boundary conditions. Another NPC was made which was constantly jumping up and down in the same spot. This was one was a bit more complicated but a public bool variable was used for when the object is jumping or not. A tag was assigned to the 'ground'. A public int was made for the jumpSpeed. An OnCollisionEnter was used for when the player hits the ground.



Towards the end of class we messed with the lighting, particle system, an trails.


GAME DESIGN DOCUMENTATION

Below if the Game Design Documentation for my game 'Sewer Hunt'. It is a document that I wrote detailing about the process and progress while making the game from start to finish. I included my inspirations for my pixel-art styled game to the story, character, and gameplay mechanics. It also included my initial sketches and design.





SEWER HUNT GAMEPLAY

This is a gameplay walkthrough of the final version of the game. This was played using Unity WebGL.





Comments