Juice and Satisfaction Journal

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Game Juice and Satisfaction Journal

(Supervised by: Peter Jürgensen)

Submitted by: Sagar Shrestha

Date: 02/01/2022
This is a weekly based Journal created for Game juice Project course as supervised and lectured
by Peter Jürgensen at UE Berlin, Germany (Game Design)
Week 01
The first week of course was the introduction course to Game Juice. We were asked to watch two
interesting videos. Both videos showcase how much games can be enhanced by using different visual and
audial tricks. The videos show how a bland game feel much better using different techniques.

The first video by Jan Willem Nijman (Vlambeer) “The art of screen shake” showcases how a boring bland
game can be drastically changed through years of experience of making lot of games.

Notes From the Jan video for platformer game specially:

shitty platform shooter

basic animations and sound

lower enemy hp

higher rate of fire

more enemies

bigger bullets

muzzle flash

faster bullets

less accuracy

impact effects (when bullets collide, add an effect)

hit animation

enemy knockback

permanence

camera lerp

camera position

screen shake

player knockback

Momentary pause when hitting enemy

gun delay (animation)

gun kickback (animation)

strafing

little shells
more bass

super machine gun

random explosion

faster enemies

more enemies

even higher rate of fire, camera kick (move camera in opposite direction of shooting)

bigger explosions

even more permanence (smoke in explosion)

meaning (player can die), death animation

game balancing

For the second video we had Juice it or lose it - a talk by Martin Jonasson & Petri Purho. The video also
seemed to talk few things like one from Jan. They talk about sound, tweens, animation, impact effect
(smokes) and screen shakes.

During the lecture we were introduced to juice and how it can be implemented and how it shouldn’t.

We also watched clips from games and anime’s.

We were also given the briefing on the projects and its requirements.

For the next week we were asked to form a group and start prototyping on a very arcade like project.
Week 02
This week we were supposed to start prototyping with a newly formed group. I joined in a group with

Nina, Sunny and Martim.

Our first step would be brainstorming and push our ideas for the project. The group decided to come up
with a concept on their own and see whose concept we could use or what old project we could juice up.
I started sketching my ideas. My first idea was:

1. A fishing games
2. Mechanics would be very guitar hero rhythm game where you press buttons as displayed on the
screen.
3. Much bigger he catches more button you must press
4. I also thought about things I add as juice. Which were initially sounds, screen shake on fish on a
hook or wrong button press.

Then we sat down for meeting with the group on what can be done.

So our initial idea would be top down shooter or one of the puzzle game Nina did in a Game a
Week course.
Week 03
We started working on the project this week.

Our goals this week would have the basic mechanics done with some enemy.

For me, the to do list would be.

1. Player character design


2. Sounds
3. Player and enemy interaction
4. Enemy AI
Firstly, created character based upon sunny rough idea.

And also started working on enemies and ai.


Worked on a basic spawner.
Also added basic sounds to the game.
Added basic cookie monster as placeholder enemy.
Week 04
This week I worked on the enemy Ai, and the bullet impact scripts. The focus of the course this week
was screen shake and sounds. The group talked over on how we could implement the screen shake and
settled over on the enemy death shake.

I setup a scene and implemented the characters script that Martim had made and started playtesting
and fixing bugs.

Nina and Sunny worked on the level design. I presented them the idea of how it can be setup.

Since it was supposed to be set on diner, I found this 2D layout for a diner.

This week we were still fixing the bugs from the previous week builds and tweaking

I also did props like tables for the scene. I talked with the group and decided to switch the project to
Universal Render Pipeline so that we could add ambient 2D lights to the scene.

Also worked on the sounds and tweaked the eq to balance out the loud sounds. Also added bit of
variance by adding pitch shifts.

Also added a high score and current score system.


Fig. The revamped scene after adding ambient lighting with the new Universal Render Pipeline

This week we created the first build and had it play tested.

Since it was the first version there were lot of issue

1. Player get stuck on object


2. Sounds need variance
3. Clipping tiles
4. Collider issues.
5. Heavy screen shake since our shake was related to killing the enemy. And since there were lots
of spawning enemy there was a heavy amount of screen shake
6. Player control issues
Week 05
This week we were very focused on how fixing the bugs and tweaking.

I went on balancing the enemies. Since we had three different types of enemy I added varying speed to
the enemy and added varying hp for each enemy.

The pathfinding on the enemy was still a big issue and continued tweaking and tried fixing them.

I had initially added astar pathfinding for the enemy but realized that the base pathfinding had to be
changed for our game.

We also added damage display on hitting the enemy which was coded by Martim and tweaked a bit
what he had implemented.

I also worked on particle system for bullet impact.

In terms of visual changes, I added state machine for the player and enemy animation.
Week 06
This week I decided to work on enemy eye following the player.

+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EyeFollow : MonoBehaviour
+{
A dd a co m ment to this li ne

+ public GameObject Character;


+ // Start is called before the first frame update
+ void Start()
+ {
+ Character = GameObject.Find("Character");
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ eyefollow();

+ }
+ void eyefollow()
+ {
+ Vector3 playerpos = Character.transform.position;
+ Vector2 direction = new Vector2(
+ playerpos.x - transform.position.x, playerpos.y - transform.position.y);
+ transform.up = direction;
+ }
+}
This was not implemented since the eyes would clip out as the enemy would follow the player. Seemed
to only work if the enemy were static.

Added a physics to the bottle and plant props so the player would have some other objects on the scene
that one can interact with and also added feedbacks on the interaction like sounds and the object
behavior.

Also worked on a boss enemy that could shoot bullets.

I did lot of game balancing this week.

• Since there was issue where the player could still camp a corner and finish the wave
easily. Adding this new boss enemy would prevent the player from camping.
• Also fixed the tiles and props in the scene that would block enemy movements in the
scene.
• Also fixed enemy behavior where they would be stuck behind the props if the player
stood still. But still there was few moments this would reoccur.
Audio changes I made this week:
• Added new attack sound since the previous one didn’t represent the shooting of the
spatula
• Added death sound and death screen sounds.
• Added new enemy death sounds
Week 07
The week also started fixing the bugs and tweaking the previous builds.

Added the destructible environment.

Balanced the sounds and equalization for the overall project.

Implemented the animations created by Nina and setup a proper state machine for the animation and
added script to trigger the animation.

Also changed the control on press down to shoot. The player no longer need to bash the mouse button
for shooting.

Also added wave-based spawner so that enemy would not spawn constantly but rather in varying
waves.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI;
+[System.Serializable]
+public class Wave
+{
+ public string waveName;
+ public int noOfEnemies;
+ public GameObject[] typeOfEnemies;
+ public float spawnInterval;
+}

public class MonsterSpawnerConrol : MonoBehaviour


{}
+ public Wave[] waves;
+ public Transform[] spawnPoints;
+

- void Update()
+ private Wave currentWave;
+ private int currentWaveNumber;
+ private float nextSpawnTime;
+
+ private bool canSpawn = true;
+
+
+
+ private void Update()
{
+ currentWave = waves[currentWaveNumber];
+ SpawnWave();
+ GameObject[] totalEnemies = GameObject.FindGameObjectsWithTag("Enemy");
+ if (totalEnemies.Length == 0 && !canSpawn)
+ {
+ currentWaveNumber++;
+ canSpawn = true;
+ }
+
}
+
+
+
+
+ void SpawnWave()
{
+ if (canSpawn && nextSpawnTime < Time.time)
{
+ GameObject randomEnemy = currentWave.typeOfEnemies[Random.Range(0,
currentWave.typeOfEnemies.Length)];
+ Transform randomPoint = spawnPoints[Random.Range(0, spawnPoints.Length)];
+ Instantiate(randomEnemy, randomPoint.position, Quaternion.identity);
+ currentWave.noOfEnemies--;
+ nextSpawnTime = Time.time + currentWave.spawnInterval;
+ if (currentWave.noOfEnemies == 0)
+ {
+ canSpawn = false;
+
+ }
}
+
This script also to easily add enemy waves and also allowed us to control what enemies to
spawn each wave.
Week 08
This week we fixed the previous week bugs and further worked on balancing the game.

We decided to add HP to the player.

So I worked on the script and to visualize the HP.

Also added animation to the heart for the HP so that it would beat per the background music tempo.

Also created a volume slider for the volume control and added its element in pause menu.

Also implement the death animation.


Week 09
Since this was the last week. It seemed that our core game loop was not very defined, or we didn’t have
a proper ending. The score system didn’t have much impact on player motivation. So as an easy fix to
that I implemented the final boss to the game. Since the pathfinding on the enemy was still buggy
decided to balance the enemy speed so those issue could be somewhat eliminated.

The rest of the group were also heavily working on polishing the game checking visuals and colliders or
any other issue.

Learning from the project:

• To work fresh on a concept rather than trying fix the old concept. For me this was the
enemy pathfinding, I wish I would have worked a completely new system mid-way through
the project rather than constantly fixing the old one.
• Game Juice in general and how, when and why/why not to implement them
• Balancing, level design and rational design thinking
• Sound Layering
• Animation state machine and scripting triggers
• Particle effects and instantiation
Week 10
This week we were to decide on a final project which had to work around with being a Physics based
game. I wanted to do the project on my own this time. So, I started prototyping my ideas

My first idea was a golf game which would have monster and creature obstructing the shoot.

I realized this project would be bit out of scope with lot of elements like the design of the world and
script the various monster that interact with golf ball.

And I decided on working on something new. I found this interesting Unity asset with basic fps and
parkour movement and started planning on gameplay around this base structure.

Sadly, found out that it would be not allowed to work on a solo project and decided to work together
with Nina and Sunny again and also asked Martim to join in.
Week 11
We had a brainstorming session where we were pushing our ideas and concepts.

Sunny and Nina already seemed to have a mechanics prototype working with gravity switching as the
core mechanics.

Fig. Brainstorming ideas

Then we finally decided we would further work with the gravitational switch mechanics and create
either puzzle style or platformer like games.

For this project I would work on Game design, sound design, Level design and coding.
Week 12
For this week I worked on the main menu and played around with shader effect for the menu scene and
also started working on Audio Manager and created a guidelines so other team member could also
implement sound easily.

This allowed the team members to easily implement layered sound without sound feedbacks and sound
glitches.
Also worked on a respawn system and added the guidelines and asked the team member to create
prefabs on each component of the game so that we can start prototyping level quickly.
Week 13
For this week I decided to work on the gameplay a bit. Nina was at point working with old mechanics
and creating tutorial level out of it. I was thinking on how the flipping mechanics would create a fun
game play. So, I created a small prototype level with a hazard and enemy (since we already had decided
we would implement some sort of enemy).

“I was working on the project this morning. I did like our earlier idea of enemies in space and puzzle but i
just came with a small concept that would use the same mechanics we have but add bit flavor to the
game

This idea was discarded since it seemed for the game play somehow felt like Wilmot's Warehouse game
but platformer style.
Week 14
This week started to design very platformer like concept for a level.

This was very much inspired from VVVVV in terms of level design and added the enemies.

For this prototype we had initial 4 puzzle level design by Nina and the platformer like level from me
along with a laser mechanics that Martim was working on.

We were all separately working on ideas and hoping it would work together and could be used
somehow in the levels.

New Mechanics:

Moving platform

We had during brain storming talked about implementing some sort of escalator.

While trying to concept use of that idea. I decided to make platform that player and stick to move along
with it.

Then Created level out this mechanics with moving enemies.


Week 15
For this week I started working on level selection menu and the script for it since we were deciding to
have a lot of level, it made sense to have a level selection.

Added sound feedbacks to the player and the platform and the hazardous red lava element.
Week 16
This week team were working on the art assets.

And I was testing the level and fixing the known issues present in the game.

We also had a lengthy level design meeting where we sketch our ideas on how it could be.

We decided on play around with puzzle platformer like concepts.

The art assets were also implemented, and post processing were added.
Week 17
This was the Playtest Evening where we present our prototypes.

I switched the old assets in the scene with the new artworks.

Feedbacks from the playtest session:

We were very much satisfied with the feedbacks and could see the issues I the game too.
Week 18
This week I wanted to iterate on the old game design and add a puzzle component to the game.

So decided to use the platform component to work with the box’s elements.

And also created a button door system that would enable some sort of puzzle design.

Created a level based on the concept.

Week 19
It was during the holidays, and we took a break from the project.
Final Weeks:
Since it was clearly visible that Nina and my level design were completely different in terms of how
gameplay worked. We took time together to work together and sketch out various component of our
levels and make a cohesive design.
All the levels were quickly sketched out before implementing them in unity.

The level now seemed consistent and game play added decent puzzle levels.

I implemented the level design and Nina started working on implement the rest of art assets at this
point for the final delivery.

During this time, we had a issue with the git where all the progress made by Nina were not there while
merging due to which we weren’t able to implement all the asset at the end.

Meanwhile I also added a ending scene so we get the context of the narrative.

Also polished the post processing in each levels.

Learning from the course as in whole:

I am satisfied with the outcomes of both project while we had different issue throughout the design
process, I think we as team managed to work out the flaws. I should reflect that the lack of
communication in the group was obvious, we would have the meetings and seem to work completely
separately. This was the reason where we were not aware of who was doing what now.

And any update presented would be at the end before playtesting which would leave very little
playtesting within the group itself.
In terms of technical learning, I learned to work with sound managers and feedback instantiation with
both projects. While level design was not was interest these projects allowed me to deepen my interest
in Level designs.

The course not only helped us to create Juice but feedbacks and lectures from Peter allowed us to learn
about overall game design, about consistent design, rational level construction and agency in games. We
received a course into how interface and control are important which we would usually neglect and
importance of core game loop.

Overall, the since the project weren’t as perfect as we wished it to be. We gained a lot of experience on
what to focus on and how to approach problems.

You might also like