David's Blog

David Wang's Blog Site!
David's Blog

Passion Project Weekly Update #13

Posted in Uncategorized on June 11, 2018 by David W

This week, I’ve been working on finding & contacting an audience to share my product & progress with.

I found that the place I’ve been learning C at would be happy for me to share and present my experience with other students. I’ve been trying to establish occasions for presentations before summer break, and I was able to find a time on June 13. I would share my game, what I’ve been doing, how I’ve been learning C# & Unity, and so on. In the meantime, I will continue to develop and finalize my game until that date, hopefully finishing a more complete prototype before the presentation.

^ Place for Presentation ^

Passion Project Weekly Update #12

Posted in Uncategorized on June 11, 2018 by David W

I’ve pretty much finished with my passion project except with the texturing. The basic game mechanics are finalized and adjustments were made based off of feedback from peers. I wish to reflect my work this week, and in the following week I’ll be able to share my game with the audience I’ll contact.

What you did and why?

I’ve always been interested in creating and programming. I was familiar with the C (language), and I’ve made some basic programs with the language before. Now, I wish to explore a new platform that provides much more freedom along with the programming language that comes with it. I found unity to be a powerful application that is relatively easy to use. It has a pre-made library for physics interactions and also has many options for the user to customize. The C# language it uses also has certain similarities with C, and thus I only need to learn the syntax and not the logics.

Making a game like this has always appealed to me as an interesting project. Passion Project was a valuable chance for me to accomplish this goal.

What went well?

I felt I’ve learned the unity engine and the language quicker than I’d anticipated. Though creating the game was challenging, I was able to complete it without that many difficulties. Creating the different aspects of the game i.e. controls, physics, mechanics / interactions felt straightforward after my experience with programming, and that made creating my final product a lot easier.

What would you do differently if you were to do this again?

If I were to do this again, I would prioritize completing a basic shape of the game rather than focusing on only the mechanics & codes. I felt it would make sense to finish the hardest part of the experience first (the programming), and finish the easier parts (the aesthetics i.e. textures, sounds, backgrounds, menus etc.) later. However, I’ve realized that without the menu, background and other resources, the game felt incomplete and ugly. However, without a mechanic or two, the game still had its principle and was still playable – it simply lacked interest.

What did you learn?

I’ve learned many skills throughout this project. Besides understanding how to use the unity engine and learning a new language, I was able to understand the different fragments of programming one would need in creating a game. This would definitely come helpful in pursuing and understanding future AI & computer science, two future paths that I’ve begun exploring. Furthermore, C# helped me in learning Python (a new programming language I’m learning) as it served as a transition between a very basic language for operating systems and a more developed language for AI & robotics.

What will you continue/not continue with this project (on your own)?

I will definitely finish the game on my own. I have many ideas on how to develop the game further / finalize the project. I still need to add unique textures & models for everything, to add a main menu, add a levels menu, etc. The game currently feels very incomplete and still in its prototype stage, and I wish to fix that in the coming weeks.

Passion Project Weekly Update #11

Posted in Uncategorized on May 13, 2018 by David W

This week I’ve finished a new level. This level introduces a lot of different new mechanics and a new powerup that Timothy and Siming have suggested for me to add. When the player first enters the level, he/she must choose a gate that randomly contains either the newly introduced powerup or a debuff.

The powerup gives the player infinite energy for a period of time. When the powerup fades, the player maintains the same amount of energy they had before they obtained the powerup.

After that, the player runs through a field of obstacles that are triggered through pressure plates.

Finally, the player finds a jump pad that launches the player into the air. The player is then unaffected by gravity, hovering in the air as he/she must dodge a series of closely packed obstacles. This level is much shorter compared to the others, but is much more challenging as it requires a very thorough knowledge of the level through time and time of testing. The game is approaching its ending, with only one more upcoming level.

Passion Project Weekly Update #10

Posted in Uncategorized on May 13, 2018 by David W

This week I’ve had more people playtest the game and make certain tweaks in order to adjust the game difficulty, but mainly fixing any bugs or exploits possible. Playtesters (mainly Jeremy Ng and Timothy Chau) have found many parts of the game that can either be avoided through jumping & rewinding at the right time or have found in a glitched game mechanic that can be taken advantage of. These glitches are often concerning the scripts in charge of running important game mechanics – so when a section must be changed, one must change all other scripts relating to the affected sections or it would result in a faulty game.

For example, in the script responsible for the rewinding mechanic, it must change a variable in the player object called “Is Kinematic”.

This variable allows the player to not be affected by gravity when it rewinds. However, in toggling this variable, it stops the player’s movement for a split second. This results in exploits when a person spam-presses the rewind key when out of energy to slow down the play speed. I’ve attempted to fix this by introducing two new variables when the player rewinds that represents the acceleration the player has. This patch helps reduce the power of the exploit, as the speed of the player will quickly escalate back to its original velocity, but does not solve the root of the problem.


Also, there are also issues with the compatibility and processing speed of the laptop. Because unity requires the simultaneous processing of the physics of all the object involved in the game, it’s quite taxing for a computer like an apple laptop. This results in gameplay glitches where some obstacles cannot reliably move the same way, and can also cause errors in the processing of player movement. For example, the highlighted obstacle is supposed to roll towards the -x direction (towards the player) when the player model comes into a certain range. However, the obstacle shown here often does not move, or moves at a much slower rate. This was because of the constant “collision” between the brown platforms in the image and the white flooring. This was fixed by introducing gaps between the floor and all the obstacles, and changing the “constraints” and “isKinematic” options for most obstacles to reduce the processing power needed to run the scene.

Passion Project Weekly Update #9

Posted in Uncategorized on May 13, 2018 by David W

This week I’ve mainly focused on the development and changing of the game levels. I’ve found many different people that were interested in playtesting the prototype, and I’ve gotten feedback from many people including Jeremy Ng, William Li, Douglas Chan, Siming Feng, etc. I tried to change the game according to their feedback as much as possible.

  1. The first piece of feedback I got was that the controls of the game felt very challenging to start with. I’ve seen people struggling with the tutorial level. To respond to this, I’ve changed the acceleration of the controls a bit so the game wouldn’t seem as fast. Furthermore, I’ve changed the tutorial level obstacles to make it easier, as I found everyone felt a lot more comfortable after trying the tutorial at least once or twice. I’ve also made sure to make players aware of the choice between using the WASD keys and the arrow keys to control, as many people had a strong preference of one or the other, and can find the game very difficult if not using their preference as control keys.
  2. The second piece of advice I got was about the forward acceleration of the game. As mentioned in previous updates, there is a “rewind” mechanic built into the game, and rewinding would break the momentum of the game and thus make it much easier to control. I’ve found many different people exploiting this bug and cheating through many parts of the level. To fix this, I’ve reprogrammed the code responsible for rewinding. The code would still break the momentum of the game, as the point of the mechanic itself was to give a spare second for the players to react to incoming obstacles. However, I’ve made the rewinding mechanic maintain the player’s original acceleration (as the game goes on, the acceleration of the player increases). This way, the speed of the game would build up very quickly after the short break, and the mechanic would still function well and avoid opportunities for exploitation. I’ve also made the rewinding cost more energy so it would be more costly to use the rewinding ability.
  3. The final piece of advice I’ve gotten was to make the game more interactive with the player. I had 2 powerups last week, and the rest of the game was composed of merely two simple mechanics and four controls. This week, I’ve finished

Passion Project Weekly Update #8

Posted in Uncategorized on April 22, 2018 by David W

This week I’ve been busy preparing for summative tests, and I was busy during the weekend, so, unfortunately, I couldn’t accomplish as much as I wanted to during the two sessions.

In the time I did have, I focused on reprogramming and debugging certain codes that I have in my files, finding better ways to accomplish the same tasks in order to either reduce the strain on the computer (and therefore make the game run smoother) or to find any problems that I’ve missed during my initial programming.

I’ve redone some obstacles, so that’ll also further balance the difficulty of the levels to make it hard but not impossible. The video below shows myself working on fixing a bug with the jumping mechanic that the game currently has.

Passion Project Weekly Update #7

Posted in Uncategorized on March 26, 2018 by David W

This week I’ve begun the creation of the actual levels, as I’m pretty much finished with all the mechanics in the game. I’ve spent a lot of time designing the end-of-level portal, with custom particles and animated textures. I’ve programmed a script for this as well to make sure it runs smoothly and does its function.

I’ve also worked on the first two levels (excluding the tutorial level included in the last update). They’re still a bit short and requires some more work next week. I feel the need to alter the speed of the game a bit and change the rigidbody scripts of the obstacles to make the collisions more smooth. I’ve realized that with computers like Macbooks that don’t have as much processing power, the first time it loads many scenes it will delay a long time, which is something else I must take into account when designing the levels.

Next week I plan on finishing the first three levels (including tutorial) and perhaps create a “levels” menu. I’ll also start working on level 4 / 5 if I have more time.

Passion Project Weekly Update #6

Posted in Uncategorized on March 15, 2018 by David W


Game Effect Showcase

This week I’ve focused on additional gameplay programming. I’ve completed the gameplay system:

  1. The player would run forward automatically, controlling his/her directions with A/D or Left/Right arrow
  2. The player can press W or Space to jump over obstacles
  3. The player can press S or Shift to rewind time and thus go back to a point in time up to around 1.5 seconds before
  4. The player has an energy bar displayed at the bottom of the screen. Jumping or rewinding costs energy
  5. The player can pick up powerups
    1. The star completely refills the energy bar, which currently remains the only way to recharge (I’ve tried automatic recharging and found it to be too powerful, and thus I’ve removed it from the game)
    2. The vial/flask powerup grants the player an invulnerable effect for a limited time, allowing him to destroy obstacles and respawn if fallen off the platform. The invulnerable effect comes with a red skybox effect as shown above

The entire gameplay system is completed, and the only major update I need is to design the levels. I’ve run into difficulties when programming for the invulnerability and rewinding of time, but the rest was surprisingly easy with a tool like Unity.


Passion Project Weekly Update #5

Posted in Uncategorized on March 12, 2018 by David W

This week I’ve continued to work on the menu system. I’ve completed the main menu with functioning buttons, including the play button, the options button, and the quit button. Also, I’ve completed options to change quality and volume as well as full screen. This took me longer than I’d expected as I wasn’t familiar with unity’s game option system, and the programming of C# had to be integrated into the unity system. I’ve learned how this worked on youtube and completed the two menus in a week. Next week I want to start making powerups, and after that begin designing the levels.

Passion Project Weekly Project #4

Posted in Uncategorized on March 5, 2018 by David W

I’ve completed the basics of gameplay. I finished the interactions between the player and obstacles / void, the controlling of the player, and I’m currently working on completing a main menu & a pause menu.

I’ve finished the code for the pause menu, and I’m currently working on the main menu codes. I just need to work on the design, and I want to spent the following week finishing the main menu, the pause menu and an options menu. (that actually affects the game) The options menu is challenging, but I’ll try to finish it before actually creating the levels.