Git Product home page Git Product logo

fragmented-memories's Introduction

Game Basic Information

Summary

You wake up with fragmented memories in an unfamiliar place. You only remember pieces of your past and are unable to remember how you got to this strange world. In order to receive parts of your memory back you must explore this strange world and try to piece together narrative clues.

Gameplay explanation

In this section, explain how the game should be played. Treat this as a manual within a game. It is encouraged to explain the button mappings and the most optimal gameplay strategy.

  • Core Game Mechanics: Platforming, reading story text, attacking enemies
  • Goals: To reach the end and figure out how you got to this strange place
  • Controls: Basic controls used for movement, alt key used for attack

Main Roles

  • Animation and Visuals : Ruifeng Zhang/Steven Tan
  • Game Logic : Travis Garcia/Steven Tan
  • User Interface : Steven Tan
  • Input : Steven Tan/Travis Garcia/Ruifeng Zhang/Ethan Chiang
  • Movement/Physics : Ethan Chiang/Travis Garcia

Your goal is to relate the work of your role and sub-role in terms of the content of the course. Please look at the role sections below for specific instructions for each role.

Below is a template for you to highlight items of your work. These provide the evidence needed for your work to be evaluated. Try to have at least 4 such descriptions. They will be assessed on the quality of the underlying system and how they are linked to course content.

Short Description - Long description of your work item that includes how it is relevant to topics discussed in class. link to evidence in your repository

Here is an example:
Procedural Terrain - The background of the game consists of procedurally-generated terrain that is produced with Perlin noise. This terrain can be modified by the game at run-time via a call to its script methods. The intent is to allow the player to modify the terrain. This system is based on the component design pattern and the procedural content generation portions of the course. The PCG terrain generation script.

You should replay any bold text with your relevant information. Liberally use the template when necessary and appropriate.

User Interface

Steven: Each scene within our game have similar/identical UI components to give the player a sense of familiarity throughout the game. The majority of text are used with TextMeshPro.

Movement/Physics

Ethan: We impletmented a classic platformer movement/physics as the base for out game. On top of that we impletementd ADSR for horizontial movements. Jumping is where we spend the most focus on, since it ties into combat and platformer the most. We designed 3 types of jumping: normal jump, air jump and forgiving jump. Normal jump is when a player is grounded and jumps. Air jump is the ability to jump in air once per takeoff (jumpForce is smaller then normal jump). Forgiving jump is when for when users pressed jump just few frames before the charater grounded and this logic will rememeber that user did press jump and jump for them when character grounded, ie the forgivness. (Note: Air jump and forgiving jump are commented out in this version because there are odd chances it creates a super jump and shot player out into the sky. To active it please uncomment the code in PlayerMovement.cs.)

Travis: AI - Used basic unity physics to move enemies around from different points depending on the location of the player.

We were initially going to create a more involved ai system, but after spending too much time trying to implement a path finding algorithm and flying enemy, in the interest of time that had to be scrapped.

Animation and Visuals

Map visuals: Each scene in game is a parallex map, which is a map composed of different images with different Z coordinates. When the camera moves, the player will be able to see some degree of depth illusion. There are also particle effects and lighting throughout the maps to make the map alived and realistic.

Assets and Animation: Owned Previously between all of us.

Input

Ethan: Defualt: arrowkeys/A or D to move, space to jump and leftAlt to attack. All inputs are taken from the keybroad.

Game Logic

Document what game states and game data you managed and what design patterns you used to complete your task. Traivs/Steven: This game was broken down into 4 scenes, each with their individual story that built towards the overall story. Scenes were loaded using a scene loading script:

Data wasn't carried over in between scenes and each scene was carefully crafted by the animation and visuals team members. ADSR was used for the movements
if (Phase.Attack == this.CurrentPhase)
Player location was tracked using the Vector2.Distance function to determine how enemies, music, and text should respond.
if (Vector2.Distance(this.StoryText.transform.position, this.Player.transform.position) < this.TriggerDistance && !this.TextStopped)

Sub-Roles

  • Gameplay Testing : Steven Tan/Travis Garcia/Ruifeng Zhang/Ethan Chiang
  • Press Kit and Trailer : Ruifeng Zhang
  • Audio : Travis Garcia/Steven Tan
  • Narrative Design : Steven Tan/Travis Garcia
  • Game Feel : Ethan Chiang/Steven Tan/Travis Garcia

Audio

Travis: Audio was setup in a zone system. When inside the zone, audio would fade in or out using lerp. The zones were placed in a way to enhance player experience for when other sounds would need to be heard such as leaves crunching or when silence was used to build tension.

StartCoroutine(StartFade(this.FadeDuration, this.StartVolume, this.TargetVolume));

We went for a more serious game where each level had a slightly different tone that built towards the overall narrative and sense of progression in the game. The menu uses sad music to set the initial tone. When the game starts, upbeat music encourages exploration and wonder, instilling a similar sense of intrigue in the player as the character expresses. When the music stops, things should feel tense. Leaves crunching in silence in the next level further builds this tension before the first important encounter with a mysterious shadow. This encounter is punctuated with more frantic music so that the player begins to feel a similar sense of discomfort. The next zone uses ominous hymns to slow down the pace of the game while still building tension. The last zone uses slightly creepy music to reveal the true theme of the narrative and punctuate the story text as the player uncovers what’s really going on.

Gameplay Testing

https://drive.google.com/open?id=1JJS6BolwAGsbFIvSvnAEqOuuN1g_6zDiFRZ7rwxnHdk

All: This role was splited by all the team memebers since we are down one person. Each team memeber had tested the game intensivly in all phases of development, here are the key foundings:

  • Feedbacks on different type of movements tested during development: Eventhough the player is a human, however, the game is set in a deam land, therefore, a more light, fast-reacting and fluid movement is best fitted for the character.
  • Feadbacks on combat: First, we found that hit-boxes are a good method to adjust the difficulting of combat. Cooldowns and attack and gaps between when the character can takes another damage is also something to think about when setting the numbers.

Narrative Design

Travis/Steven: As a narrative driven game, it was important that the narrative system felt interesting and that the narrative itself was intriguing. This meant creating custom scripts to give the words themselves juice and to take in feedback about where the narrative was unclear and how the gameplay elements did or didn’t add to the overall narrative experience. The narrative was revised multiple times based on the feedback of others.

if (Vector2.Distance(this.StoryText.transform.position, this.Player.transform.position) < this.TriggerDistance && !this.TextStopped)

Travis: Each level was meant to have it’s own tone and story, while still building towards the overall theme and narrative. Large words were used at the beginning of new levels to try and create tone and build the story and the characters changing responses to the world around him created a sense of progression within each level. Colors were used to highlight important words and the duality between certain elements. Text would get larger when the words being said were important to the story. Text would shake to give the player a sense of uncertainty.

Press Kit and Trailer

Game Feel

All:

  • Movement: tested different ADSR curves to find the best movement type for the main character.
  • Hit-box: adjust the size of hit-boxes, size of hit-box is directly realating to the difficultiy of combat.
  • Jumping: jumpforce has tested with a few different numbers, the ability of air jump is to make players has bette rcomtrol over the character and make moving arround platforms easier. Forgiving jump is to aviod the situation that player might think the game is "broken" when the jump has not executed when pressed too eariler. (Note: this idea came from the GDC talk by developers from Celeste.)
  • Combat: since the combat system is farily simply, the way we adjust the difficulty to by changing the size of hit-boxes and cooldown on attacks and damage taken.
  • Narrative: Used colors, movements, and fading effects to give the dialogue more juice.
    if (Vector2.Distance(this.StoryText.transform.position, this.Player.transform.position) < this.TriggerDistance && !this.TextStopped)
  • Vignette: Added a subtle vignette to improve aesthetic.
    this.transform.position = new Vector3(this.MainCamera.transform.position.x, this.MainCamera.transform.position.y, 0);

fragmented-memories's People

Contributors

istevenful avatar tg1230 avatar ethanyichiang avatar failury avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.