Games Development / Task 2: Art Asset Development & Game Prototype
8.9.2023 - 10.11.2023 (Week 2 - Week 11)
Takuto Hozumi / 0354047 / Bachelor Of Design (Hons) In Creative Media
Games Development
Task 2: Art Asset Development & Game Prototype
Art Asset Design
First, update the design from the proposal to the finalized design. This
process shall occur on Illustrator, and the images created will be
imported into Unity and used.
Fig.1: First Rough Idea in Proposal
Character Design
In the original data, the baby was human. However, I thought it was not
very cute, so I did a lot of research on the design.
Using a figurative expression as baby = chick, I drew a new illustration
of the main character.
Fig.2: Drawing Process 1
The face of the damaged was also created and placed simultaneously at this
stage.
Enemy Design
Similarly, enemy graphics were created.
Fig.5: Enemy Design
As a moving enemy, a raven was created. I wanted to express the flapping
of its wings, so I created two images of it with its wings open. Later
convert to animation in Unity.
Fig.6: Trap Design
I made an image of a trap that doesn't work. These do damage to the player
they hit, but unlike crows, they do not move.
Fig.7: Screen Draft 1
UI Design
Fig.8: Screen Draft 2
In addition, a UI needs to be created.
The following elements are needed for the game to function
HP gauge: When it reaches 0, life is reduced by 1. Maximum 10.
Life: Game over when life is lost.
Coins: When you accumulate 10 coins, your life will increase by 1.
The three buttons in the upper right corner are: back to menu, restart
from the beginning, and pause.
Fig.9: HP gauge
Fig.10: Life & Coin Icon
Fig.11: Pause Button
Fig.12: Pause Screen
I then prepared a picture of the assumptions that have been summarized so far on a single screen.
Fig.13: Screen Visual Assumption
Game Prototype Development
First, output the image in Illustrator and convert it to a sprite. I also
placed the player, ground, and background.
Fig.14: Placement in Unity
From here, I scripted the following logic
Background:
The background image is tiled, loops left and right, and flows to the
left.
Clouds and buildings move at different speeds to add depth to the
screen.
Characters:
The character can jump two steps.
On slopes, the character always descends according to gravity.
Therefore, two types of ground were prepared in the program: flat ground
and sloping ground.
The management of ints such as lives and coins in the UI is also tied to
the character.
Enemies:
Causes damage when it hits the character.
Fig.15: Character Controller Script
void Start()
{
player =
GameObject.Find("Player").GetComponent<CharacterController>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name == "Player")
{
player.hitPoint -= 1;
anim.Play("trap_collected");
}
}
Codes for enemies, traps, etc. were addressed in this way. The animation
includes turning off collision, so it does not affect the subsequent game
progress.
If you fall down a hole, it's game over. Therefore, there is a sign in
front of the hole that warns of danger.
Fig.15: Sign
From here, I proceeded to the development phase, re-outputting assets that
we thought were missing.
Fig.16: Heal Item
Fig.17: Projectile (Attack)
The projectile, the means of attack, was designed to fly in a parabolic
pattern. I will show it in the presentation video.
Vector2 spawnPosition = transform.position;
GameObject projectile = Instantiate(projectilePrefab, spawnPosition,
Quaternion.identity);
Transform playerTransform = transform;
float radianAngle = Mathf.Deg2Rad * projectileAngle;
Vector2 launchDirection = new Vector2(Mathf.Cos(radianAngle),
Mathf.Sin(radianAngle));
Rigidbody2D rb2d = projectile.GetComponent<Rigidbody2D>();
if (rb2d != null)
{
rb2d.velocity = (playerTransform.right * launchDirection.x
+ playerTransform.up * launchDirection.y) * projectileSpeed;
}
Fig.18: Pause
Fig.19: Game Over
The pause and game over functions are not working as well in this stage.
The logic is to set an invisible floor at the bottom of the hole and if
you touch it, it is game over.
WALK-THROUGH
Fig.20: Play Video (12/11/2023)
*Technical attestations and specifications are explained in subtitles.
The following is a list of what is done and what is unfinished for the finished product.
Done;
Player movement, Slip on slope, attack function, double jump, expression of being hit by enemy
Background, Double layered and different move speeds, Fixed in Camera angle
Enemy and item animation, HP system, damage ( internal)
Not Yet;
Bullet doesn't work to enemy for now
UI (Such as reflection of internal HP, coin, and life), Pause function, Restart
Start Screen, Game-starting storyboard scene, Boss stage, Game clear scene
Map Decoration (Images already have)
REFLECTIONS
Two main challenges were imposed in this assignment.
The first is about the assets that govern the aesthetic of the game. I made images using Illustrator. I tried to make and arrange all the parts myself as much as possible, but it was quite challenging. I tried to style the entire screen more harmonized, but I felt that this in turn made it difficult to tell the difference between the background and the characters, which detracted from the playability of the game. For this reason, I changed the color of the player character to a slightly darker color.
I also had to convert the images into assets and animate them one by one. I faced some technical troubles with animations that I can't see now, such as crows being shot down, and there are some parts that I couldn't show in the play demo. Therefore, I'm going to try to achieve a cleaner finish in the final version.
At first, I thought I could manage the prototype by thinking up my own logic and finding a way to do it in chat GPT, but I had many troubles such as not being able to reference it when I actually turned it into source code. For example, other scripts could not refer to the numbers specified in the character controller, or the triggers for switching camera angles did not work, etc. Every time I faced a problem, I had to stop for several hours, and the work did not progress as I wanted.






















Comments
Post a Comment