Blog

Tutorialstage

Entry 17 - Stage 1/Tutorial Stage

Tuesday, May 03, 2022 | 1:37 PM EDT

Most of the core aspects for the game are complete, so I need to start developing the actual map/stage for the player to play on. I need to make sure that the map looks good with the various environment props I have. I also need to mess around with the difficulty of the game, as a stage that is too easy or too hard won’t be fun to play. I want to make the stages at least 2-3 minutes long to run through. Throughout the level more and more of the story will be revealed and progressed.

I worked on the level design for my first tutorial stage and was able to get a more immersive scene. I also placed sign assets along the level that triggers messages to pop up, explaining important information like how to walk, jump and run. Since this is the first stage, I still have to explain all of the controls to the player. With a bunch of props and decoration, the stage looks pretty nice. I made the final section of the stage and finally linked it to the next stage.


Dialogue   scene transitions

Entry 16 - Dialogue & Scene Transitions

Tuesday, May 03, 2022 | 1:41 PM EDT

I was able to implement a dialogue framework, so any time I want a conversation to start, I can trigger it with a simple script. I added my first conversation as part of my initial cutscene. The dialogue framework I used was very customizable, giving me access to things like character icons, dialogue options, and event triggers. My initial cutscene doesn’t require any dialogue options, so there is only a continue button. I also photoshopped the two character icons for my two characters.

At the end of the conversation, I set an event trigger to run a script that transfers the player from the cutscene to the actual game. I added scene transitions in too, so there is a fade to black before launching the other scene. This makes everything just flow better. Now there is a way to go from just a non-interactive cutscene to being able to play. This dialogue finally enabled me to tell the story. I will continue to develop and tell the story through the dialogue and cutscenes.


Startcutscene

Entry 15 - Intro Cutscene

Saturday, March 26, 2022 | 5:06 PM EDT

I wanted to implement my first cutscene into the game. With cutscenes, I can explain a story, and I feel like it is much better than just having text on the screen. Using the Unity Timeline tool, I can essentially record a video with the assets I have on my screen, and then trigger the cutscene at any time.

I set up a new file for my cutscene creation process, just in case I mess up. I had to work with a skeletal animation rig for my character, so it was difficult to configure all the parts to look the way I wanted. I also had to find a way to enable and disable certain components of an asset, because I don’t need a player controller script when I'm make all the animations myself. My final cutscene makes use of the character, the character’s wand, and the character’s companion. I also added in various particles and effects to fit the theme. Everything flows together smoothly to convey my story. Though I made the cutscene, I still need a way to implement it into the actual game, so right after the cutscene plays, I can go right into controlling my character.


Companion

Entry 14 - Companion

Friday, March 18, 2022 | 8:35 AM EDT

I started to work on my character’s companion, which will be the character that guides the character throughout the story. I don’t want the game to get too out of hand, so this companion will really be the only character the player interacts and has dialogue with. I was able to get a companion script working. Essentially, the script makes an object constantly go towards the player, but stopping when they get close so they don’t layer on top of the player.

I based the companion asset off of just a bunch of wisp-like particles. It looks cool enough and fitting in my game's setting. I also made an idle animation and travel animation for the companion so it doesn't just levitate in one place.


Startscene

Entry 13 - Start Scene

Wednesday, February 23, 2022 | 8:41 AM EST

I finally decided to set up the environment for my first starting scene. This scene will be where the player starts the game. My first introductory/story-setting cutscene will also be played here.

I wanted the first scene/environment to be interesting and good looking, so I decided to go the route of getting animated assets. I was able to find some great assets on the Unity Asset Store that matched my current artstyle, so I decided to import them. Making the environment was simple enough; I used prefabs to drag and drop onto the scene area. For some responsive and realistic grass, I put in "path" gameobjects for the asset, which is a feature that chains a bunch of the assets together. This was useful because I could then edit all the grass together. Using the paths, I put a bit of randomness in my foliage, which always looks a bit more natural.


Physicsmovement

Entry 12 - Movement Overhaul

Tuesday, February 22, 2022 | 6:04 PM EST

There was one thing that I wanted to try out in my game: a physics based movement system. I've spent some time playing different platformer games, and they all seem to have physics based movement. This includes things like acceleration, deceleration, linear drag, etc. For me to implement physics based movement now is a bit difficult. I had to overhaul a bunch of my old movements, and had to practically redo all of my animation triggers.

The change doesn't seem like much, but I feel like it still adds to the overall feel of the game. The character doesn't just go from 0 speed to 12 speed instantly anymore, and the character can't just go from 12 speed to 0 in a split second. The character is the most crucial component of any platformer, so I really want to perfect its feel.


Varying jump height

Entry 11 - Jump Buffering & Varying Jump Height

Friday, January 28, 2022 | 8:45 AM EST

To further improve my character movement, I focused some more on the character's jumping.

I added jump buffering, which is a feature that allows the player to jump before landing on the ground. It is kind of like queuing a jump, and it is only allowed in a certain time frame. This allows the player to control the character more smoothly. I also added in varying jump heights. If you hold the jump button, you will jump higher, and if you only tap the jump button, you will jump lower. This feature was a bit hard to implement, as I needed a way to adjust the jump power while the jump has already been executed. To make everything flow well, I made sure to also adjust my character’s jump power and the environment’s gravity. I think I currently have a pretty good balance between the two; the character doesn’t fall too fast and doesn’t jump too high.

Features like these are very important in improving the feel of the game, especially when you have something like a platformer.


Double   coyote jump

Entry 10 - Double Jump & Coyote Jump (Edge Jump)

Wednesday, January 26, 2022 | 8:56 AM EST

I was able to get in 2 new features: double jump, and coyote jump.

Double jump allows a player to jump from the ground, and then jump again, even if they are in the air. I had to make it so that if the character was initially falling, they can’t activate the air jump, because that would make the game too easy. Right now, I’m not sure if I want to fully implement the double jump. I might have it active on certain stages and inactive on others.

Coyote jumping (or edge jumping) is a feature that allows you to jump if you just ran off the edge of a platform (no longer touching the floor). So in a certain timeframe, right as you run off the edge, you can jump. This makes the game feel smoother, especially if you want to have fast paced gameplay.

I'll still have to work on the animations for these features.


Starcollectibles

Entry 9 - Item Collectibles

Wednesday, January 19, 2022 | 1:38 PM EST

I implemented an item collection feature (collectibles), which allows my character to touch/collide with an object on screen, and collect it. Currently, I plan on using these star collectibles as a bonus score, or just an extra challenge. I don’t have all of the potential collectibles planned out yet, (possible power ups, health hearts, etc), but the underlying feature is complete. In the game UI, I added an indicator showing how many star collectibles you have obtained throughout the game. Moving forward, I plan on adding additional collectibles to make the game more interesting.


Unity3d logo

Entry 8 - Unity Collaborate

Friday, January 14, 2022 | 1:39 PM EST

Since I'm using Unity, I thought I would utilize some of its useful services as well. I set up the Unity Collaborate service, which will allow me to upload/publish whatever work I have done on the project. Then, on a separate computer, I am able to "sync" the project, which brings the latest version of my project to my current device. I can then change and add to the project, and when I'm done, I can publish it again.

This will allow me to access my project and all of its sources and files from anywhere. Hopefully this improves my productivity and efficiency, as I can start picking up the work pace.


1 13 c

Entry 7 - C# Course

Thursday, January 13, 2022 | 1:34 PM EST

Since Unity uses C# as its main coding language, I thought it would be helpful if I learned a bit about it. I started working on a Codecademy C# course that I believe will teach me some important skills for Unity coding. Unfortunately, some of the features in the course are not available to basic (free) users.

The content is pretty simple as I’ve learned most of this stuff when I was learning Python; C# just runs a bit differently and uses different rules and methods.

There are a few things that I learned though. For example, the C# Class function will be very useful when I start coding for my game again, as I will be able to group a bunch of similar objects together and control them in an organized and coherent manner. Loops are also very important in games, as I need to be detecting if certain events happen, and what to do about it.


Camerafollow

Entry 6 - Camera Properties

Tuesday, December 14, 2021 | 12:34 PM EST

After finishing up most of the character controller, I decided to work on the second most important thing, the camera. I had to center the camera on the player's character, and then code a script so that the camera follows the player's position. I also made it so that the camera isn't rigidly "stuck" on the player, and instead made it so that the camera glides with the player. Another feature I needed to implement was camera bounds. Camera bounds are used so the camera doesn’t follow the character to where it shouldn’t be (over the map, in the ground, etc).


Jump

Entry 5 - Character Controller Pt.3

Monday, December 13, 2021 | 11:14 AM EST

More work was done on the character controller. I added in ground check, which is an integral part of jumping. Without ground check, the character would be able to constantly jump, even if they were in the air. I also added the jump function, which enables the player to press space and jump in the game. I later added in the animations for the action. This included the animation where the character initially jumps, and the animation where the character is falling back down. I was still following Antarsoft’s tutorials while adding these features, and I found them to be very in-depth and helpful.


Walkrunanim

Entry 4 - Character Controller Pt.2

Friday, December 10, 2021 | 12:30 PM EST

The movement controller now works with the keyboard inputs, but the animations are still messed up. I focused on implementing the animations so that it triggers each animation based on what is currently going on. If the character's velocity is 0, the idle animation is played, if the velocity is greater than 0 and less than 6, the walking animation is played, and if the velocity is greater that 6, the running animation is played. This way, the character's movements actually look realistic.


Movenoanim.gif

Entry 3 - Character Controller Pt.1

Friday, December 10, 2021 | 12:34 PM EST

Now that I have my assets, I need to make them function the way I want them to. First, I had to add components to the character and ground so that they had physics and colliders. This way, the ground stays put, and the character doesn't fall through.

My next goal required some scripting. I got my first experience of C# today (the coding language used in Unity), and I found it pretty similar to Python. I’ve finished a simple character movement script, so my character could move left and right with keyboard inputs. However, I still need to tie in the animation to the movements, so the character doesn’t just slide around, facing the wrong direction.

I developed this script with the help of Antarsoft's YouTube channel. One of his playlist features tutorials for 2D platformers, which is what I want to make. I plan on using more of his resources in the future.


Projectcreation

Entry 2 - Project Creation

Friday, December 10, 2021 | 8:27 AM EST

Since I have gotten the concepts/ideas aspect of the game out of the way, I can now focus on the technical aspects. I have created a Unity project file where my entire game will be, and have obtained some core assets to making my game. These assets include:

Free Platformer Tileset - Aekiro
Customizable skybox - Key Mouse
2D Wizard - ClearSky

All of these assets were obtained on the Unity Asset Store for free, and were easily imported into my project. I have taken the time to familiarize myself with the assets, testing and modifying some to fit my needs. I will most definitely expand this list of resources as I need to later on.


Ideation

Entry 1 - Project Ideation

Tuesday, May 03, 2022 | 1:43 PM EDT

For my PIP project, I knew I wanted to make a game, I just didn't know what type. I decided to just learn a bunch of Unity first and then decide what best fitted me. My final idea ended up being a 2D platformer game, and my progress will be tracked on this blog.

So far I have done a ton of brainstorming on the overall story and functions of the game. I planned everything out on a document, which covers the general concept/ main goal of the game, the characters, each stage, the story that will be told on each stage, and the special features each stage will have. I went in depth for a big portion of the guide, and I hope this document will help me keep track of what I will be working on throughout the school year. If anything comes up, I will continue adding it to this document as nothing is final yet.

This was my first step towards my PIP project. I still have a long way to go.