Below is the most amazing Oculus virtual reality game I have worked on so far.

CIS568: Game Design Practicum                                                                    Ishaan Singh, Sohail Mehra, & Vivek Reddy – Fall 2013

 

Design Document

 

1   Executive Summary

 

 

Gilly the Goldfish has been flushed down the toilet by his pesky owner, a young boy, named Ed. Your goal is to guide Gilly through the drainage pipes and lead him back to his home in the ocean. This game is designed to be played with the Oculus Rift, a virtual reality headset, to provide a truly immersive experience of vivid underwater environments through the perspective of a fish.

 

The game tracks the journey of our golden-scaled hero as he navigates, first, through drainage pipes, and then out in the real world as he gets dumped into a river. The player’s primary goal is to get Gilly back home safely. As they travel through the levels, players will dodge numerous obstacles and enemies ranging from floating trash to deadly sharks. Each level will bring other unique challenges as well. For example, while flowing through the pipes the players have the option to go down a variety of different paths as the pipes diverge. One path may be a faster route to the goal but may present more obstacles whereas another may be a longer but easier route. Players will also have control over Gilly’s swimming skills as they use the stamina meter to swim faster or slower (against the current of the water). The Oculus’ head-tracking capabilities will further add to the experience by enabling the player to look around the scene in search of power-ups which range from temporary boosts to stamina to health recovery. For added depth, the game will also boast of an achievement system that will unlock rewards to upgrade Gilly’s health and stamina statistics.

 

The Oculus Rift is unlike any device currently available on the market which makes its inclusion a unique selling point in itself. It provides us, as developers, with the perfect tool to fully immerse the player in our world and see things through the eyes of a tiny goldfish. In addition to having a standard Xbox 360 controller, we will be investigating and exploring certain motion devices and gesture libraries to be an alternate source of input. Its also reasonable to assume that the game’s underwater setting brings a fresh feel to the gaming experience as most games nowadays have their stories unfold on land. Our game appeals to gamers as an underwater adventure targeted towards casual gamers over the age of 10 years.

 

On the development front, we will be using Unity3D for game development, Autodesk Maya for modeling, Autodesk MotionBuilder for animations, and Adobe Photoshop for designing UI elements. We expect the game to be ready in about 10 weeks. The assets, environments, and logos will be both designed in-house and also downloaded from depots of freely available websites.

 

 

2   GAME Design – CREATIVE

 

2.1            High Concept

Free Gilly is a first-person adventure game that follows Gilly the Goldfish on his journey home from being flushed down the toilet by his owner. The player’s goal is to guide Gilly through the drainage pipes and lead him back to the ocean safely. The game represents a fresh experience with the inclusion of the Oculus Rift as the player navigates vivid underwater environments through the perspective of a fish.

 

The game can be thought of the combination of a few games representative of their categories. Helicopter is the game that has inspired the player navigation and we plan to extend this to three dimensions and introduce dynamic as well as static obstacles that hinder the players path. The game also derives from racing games similar to Lego Racers and other games where you have pick-ups and can use them to your advantage except you are interacting with the environment most of the time rather than the computer characters (shark and jellyfish).

Also the game would be engaging the user similar to Temple run, where the user needs to be concentrating on the path always but has the control of slowing down or speeding up.

 

 

2.2            Design Goals

2.2.1       Main Design Features

  • The game will be designed to feel like an immersive and interactive underwater roller coaster.
  • RPG elements such as character upgrades provide an extra layer of depth to the game.
  • Varied options for input – keyboard, Xbox 360 controller, motion devices (under investigation).

2.2.1.1              Player goals and objectives.

Primary Goal:

  • Complete all the levels and get Gilly back home safely (i.e. without losing all your health).

 

Secondary Goal:

  • Score high by collecting bonuses and reaching check points.
  • Complete achievements to unlock character upgrades.

 

Challenges & Conflicts:

  • Avoiding obstacles/enemies.
  • Using Gilly’s swimming skills to avoid adverse effects of external forces.
  • Selecting from multiple different routes within a level.

 

Winning condition:

  • The player wins when he/she successfully completes all the levels.

2.2.1.2              Main rules and procedures

Operational rules

Playing the game is easy to pick up and learn. The player will use both an Xbox 360 controller (any joystick) and the Oculus Rift HMD. Character orientation will be controlled by the left analog stick and forward thrust with the right trigger (RT) in the direction of the character’s current orientation. The left trigger (LT) is used to slow down. The Oculus head-tracking will be used only to look around the scene for power-ups. With the help of a cross-hair, the player can target these and press the A button to pick them up and store them. Additionally, pressing the X button near certain breakable floating objects will make Gilly headbutt them (You may receive bonuses from these with at random). The Y button uses a stored stamina power-up and the similarly, the B button uses a stored health power-up (Only one of each can be stored at any given time). Lastly, the START button can be pressed at anytime to bring up the pause menu. We are currently investigating wireless motion devices an alternate input source. Players will be a able to use a variety of gestures to control the aforementioned in-game actions. For example, using forward/ backward swimming gestures to thrust and slow down respectively.

 

Main game mechanic

  • On a second by second basis

Attempting to avoid adverse effects of external forces while dodging obstacles/ enemies and collecting bonuses.

 

  • On a minute by minute basis

Selecting from multiple paths as you progress though the level.

 

What makes this fun or interesting?

The combination of “novel” Oculus mechanics and the underwater experience makes this game enjoyable.

 

The game uses the Oculus Rift as a camera controller but the novelty of the game is in that the player needs to be careful of the way the current of the water is flowing, how that affects the obstacles and how the player can manage his stamina and health resources to maneuver himself for the best utilization and maximum exploration of the path. The mechanic includes the power ups that become available and how those interact with the environment and how the player can use the power ups for destroying obstacles or avoiding them.

 

 

2.2.1.3              Player Resources

Types of resources:

Health Bar – When Gilly’s health reaches zero, the player must restart from the last checkpoint and they lose 100 points.

First-Aid Kit – Can be used to restore 25 health points (HP).

Stamina Bar – Gilly can use his stamina to swim faster a slower in an attempt to balance against external forces. This resource replenishes over time.

Energy Drink – Can be used to get unlimited stamina for 5 seconds.

Bubbles – Gilly will have the ability to shoot a total of 3 bubbles at a time. These will primarily be used to collect power-ups and to destroy distant obstacles. Bubbles will replenish every 10-15 seconds.

Food – Picking up food items adds 10 points to the player’s score.

Checkpoints – Reaching checkpoints adds 50 points to the player’s score.

 

How does the player use resources to achieve goals?

Health and Stamina power-ups (First-Aid kits and Energy drinks) can be stored when collected. However, the player can only store one of each type at any given point in the game.

2.2.1.4              Boundaries and Constraints

The entire game will take place in an underwater setting. In each level, the player will be placed in a constrained environment which they will not be allowed to leave. For example, level 1 will be situated in drainage pipes. However, there will be several branching paths to navigate.

2.2.2       Appeal

Genre:

Adventure/ Casual.

 

Target Audience:

Casual gamers, ages 10+ years.

 

Why is the game fun to play?

Free Gilly provides players with a truly novel experience as they use the Oculus Rift in conjunction with an Xbox controller. Additionally, the story and setting are unique, innovative, and have never been attempted in such a context in the gaming industry.

 

2.2.3       Look and Feel

An underwater theme will account for the overall style/look of the game and will be an inspiration for the artwork. The game is similar to Copter but is in 3D.

Level 1 – Drainage pipes: Dark and dirty, rusty in places, with occasional relatively brighter areas.

Level 2 – Large concrete drains that connect to rivers

Level 3 –  Narrow river that connects the user to the ocean: Bright with plants, rocks, other fish.

2.3            Worlds, Characters and Story

2.3.1       Back Story

Gilly the Goldfish has been flushed down the toilet by his pesky owner, a young boy, named Ed. The good news is that he’s finally free but the bad news is that he’s lost and needs to find his way back home to the ocean.

 

2.3.2       Spaces/Worlds

  • Gilly – downloaded model.
  • Sharks/ jellyfish – downloaded models.
  • All environments (drainage pipes, river, ocean), and some obstacles (floating debris, etc.),will need to be modeled in Maya.

 

Inside the pipes:
Pipe opening out into the river:
River/ ocean:

5.1.1       Characters

Gilly the Goldfish:

 

  • Personality traits: Friendly, timid, naive, curious.

 

  • Concept art/ Model:

 

Enemies:

 

  • Personality traits: Hostile, aggressive

 

  • Concept art:

 

 

5.1.2       Levels of Difficulty

The difficulty of the game will vary over the course of the game depending on the specific routes the player picks. Levels will have branching paths, so, for instance, one path may be a shortcut to the end of the level but may be more difficult in terms of external forces, obstacles, and enemies, whereas another may be relatively easier but longer.

 

Difficulty increases as the player progresses through the levels i.e. level 3 will be considerably harder than level 1. Higher levels will introduce new enemies and obstacles and more of them will appear. Within levels difficult changes based on the path selected by the player. Primary variables of difficulty are the number of obstacles and enemies that appear, types of enemies, and magnitude of water flow forces.

 

 

5.2            Interaction Models

5.2.1       User Interface – Navigation and Movement

The game interface will include the following UI elements:

  • Health Bar – Located in the top left corner and depict Gilly’s current health and maximum health (Ex., 75/100).
  • Stamina Bar – Located directly under the health bar and depict Gilly’s current stamina and maximum stamina. This meter will replenish over time.
  • Health Power-up Icon – Located in the top center of the screen. A colored icon represents a stored power-up whereas a grey icon will represent an empty slot.
  • Stamina Power-up Icon – Located in the top center of the screen. A colored icon represents a stored power-up whereas a grey icon will represent an empty slot.
  • Score – Located in the top right corner and depict the player’s current score.
  • Cross-hair – Located at the center of the screen, the player uses this to target power-ups in the scene.

5.2.2       Game Play Sequence and Levels

5.2.3       User/Environment – Obstacles and Props

Physics will be handled by the Unity3D engine. All objects/ models will be tagged as rigid bodies with box/ sphere/ capsule colliders. However, certain exceptions like the character model will have mesh colliders for more accurate collision detection. Players will be able to interact with objects in the scene using the cross-hair and controller inputs (refer Section 2.2.1.2).

 

Avoiding obstacles/ enemies: Obstacles represents static challenges and will be things like floating debris. Hitting these obstacles will cause Gilly to lose 10-20 points of health. In contrast, enemies will represent a more dynamic challenge and include sharks and jellyfish that will attack the player. To avoid making the player have to turn around all the time, enemies will always attack from the front. We will provide the user with visual and auditory cues so that they are not blindsided by the arrival of an enemy and have enough of an opportunity to dodge them. For example, the imminent arrival of a shark will trigger a change in music and a flashing danger icon. The shark will swim up towards the player and attempt to swallow the character. If the shark is successfully dodged him will swim past and disappear. On the other hand, being eaten by the shark results in instant death and the player will restart from the previous checkpoint. In a more descriptive explanation When the shark approaches the user ,the user can use the pickup and aim at the shark, if properly timed and the pickup hits the shark then it will move the shark away from the users path and hence the user can save themselves from getting eaten by a shark.  Other enemies like the jellyfish attack and cause Gilly to lose 20-25 points of health. The jellyfish would stay static in their plane and will be moving randomly in that plane, When the user starts approaching closer to it, they can use the cross point to target the jelly fish and hit it with the rocks that they can collect. Once the Jelly fish is hit, it will just drop down to the base of the river and the game object will be destroyed once the user crosses it.

 

They will learn to swim better under the influence of forces. They will begin to anticipate certain events based on visual and audio feedback such as the music changing for sharks and the darkening for tougher paths.

 

The game itself is a dynamic puzzle because at every second of game play the user has to choose how to maneuver gilly so as to ensure moving forward in the game. The dynamism of the puzzle is inherent in the procedural level and environment design.

 

Routes will be marked by visual cues depending on their difficulty.  Player’s will learn to interpret these cues and make meaningful decisions about the paths they choose to take. For example, an easy path may be marked with green arrows or green signage whereas a hard path will be marked in red. The pipes can be green or rusted. Rusted ones mean they are old and dangerous. Green ones mean they are easy but longer.

 

 

5.2.4       User/Character

As per the game objectives the player will try to avoid other characters/ enemies in the scene. However, they will be subject to rigid body collision detection when in close proximity. In addition, sharks will cause a special animation when the player is within range of its jaws where it swallows the fish whole and triggers the game over condition.

5.2.5       Character/Character

Refer Section 2.4.4

5.2.6       Motion Tracking

The Oculus Rift is a primary device for tracking head motion as player use this feature to look around the scene. In addition, we will be also investing other wireless motion tracking device as an input option to recognize gestures to control in-game actions.

5.2.7       Multi-Player

Free Gilly is a single-player experience. Multi-player is not included.

5.2.8       Mobile

N/A

5.2.9       Networked Play

N/A

 

5.3            Performance and Scoring

5.3.1       State Variables

The character, environment and gameplay variables necessary to save/restore or pause/resume will be health, stamina, collected power-up information, current core, and checkpoint data.

5.3.2       Feedback

Positive Feedback:

When Gilly hits an obstacle the camera shake a little and disorients the player.

“Given the potential issues associated with simulation sickness when using HMDs, we will stay away from any effects that “disorient” the player or take control of the camera.”

 

 

 

Negative Feedback:

When the player isn’t doing very well he has the option to use his stamina to slow down and better anticipate upcoming obstacles. Moreover, when health is low, the player can use health power-ups, if available, to restore a little health so that they can survive longer.

 

5.3.3       Performance and Progress Metrics

The player’s progress and specifically his/ her saved game and character enhancements will be stored on their account. The player will be able to log in at the start of the game and retrieve their game state information. When all 3 levels have been successfully completed the game has been won and a final score will be awarded. The game can then be replayed to improve and achieve higher scores. In contrast, when Gilly loses all his health the game will restart and continue from the previous checkpoint.

 

 

 

6   Game Design – Implementation Details

 

6.1            Design Assumptions

6.1.1       Hardware

Minimum hardware configuration (i.e. processor speed, memory requirement, graphics card, etc.) necessary to run game:

  • 2GB+ RAM
  • Intel Core i5/ i7 Processor (or equivalent)
  • 1 GB+ Graphics Card
  • HDMI or VGA port required
  • Xbox Controller support

6.1.2       Software

Version of Game Engine, Windows, DirectX, etc. required to run game:

  • Windows 7/ Windows 8
  • Unity3D 4.0
  • Oculus SDK support required
  • Dynamic force field generation that pushes the character through the environment.
  • [Under Investigation] L-System approach for procedural level generation.
  • Special animation for enemies. For example, the sharks jaw will need to be rigged and animated for the case when it swallows the player’s character.
  • Obstacle instantiation and culling based on position.

6.1.3       Algorithms and Techniques

 

6.2            Storyboards

[Work in Progress] [We will have to draw these out]. Probably have to draw “screenshots”. One of branching paths, one of a shark attack, power ups, etc.

6.3            Design Logic

6.3.1       FSM – State/Effect

Provide as much detail as possible as you can of your game logic in the form of a FSM graph.  You can sketch this by hand or use Visio, whichever is easier

 

When the user hits an obstacle, they will lose their health and start losing points. A sound would be generated to emphasize that the fish has been hurt. When the obstacle is static like the pipe surface and the user is in contact with it for more than 3 seconds they will start losing their stamina and then once its depleted they will start losing health. When the obstacle is dynamic like debris and when collide with it , it will break and disappear. (Anything farther than a distance will not be active)

 

6.3.2       User Solution/Actions

The player’s goal is to successfully complete all the game levels. Puzzles and challenges include using Gilly’s swimming skill masterfully to avoid being hit by obstacles. The player will also choose from a set of different path each with a different set of challenges. For instance, one path may be shorter but more difficult whereas another may be longer but relatively easier to get through.

 

In addition, the game will boast of an achievement/ reward system. Complete these achievements or bonus tasks will earn player points to upgrade their character. Some examples are:

  • Doctor, who? – Successfully complete a level without using a single health power-up. (Earns health upgrade)
  • An apple a day – Find and collect the float apple in the drainage pipes. (Earns a health upgrade)
  • Escape from the Jaws of Doom – Dodge 3 shark attacks in a single level. (Earns stamina upgrade)
  • Head strong – Destroy 5 breakable obstacles with Gilly’s headbutt in a single level. (Earns stamina upgrade)

 

 

6.4            Software Versions

6.4.1       Alpha Version Features (vertical slice through total experience)

The alpha version(s) features will include:

  • Level 1 will be playable (possibly with some primitive geometry).
  • Oculus support integrated.
  • Xbox 360 controller input ready.
  • UI and other menus will be ready.

 

6.4.2       Beta Version Features

The beta version(s) features will include:

  • All levels playable w/ polished geometry and textures.
  • Upgrade system enable.
  • Save game capability added.

 

6.4.3       Description of Self-running Demos

[Work in Progress]

 

 

 

 

 

 

 

 

7   Work Plan

 

7.1            Tasks

The following tasks are necessary in order to complete the game:

  • Oculus setup:
    • Oculus SDK setup and configuration [Vivek].
    • Testing with Unity3D [Ishaan/ Sohail/ Vivek].

 

  • Gameplay Logic:
    • Planning an implementation of game objects and classes [Sohail].
    • Testing game logic [Ishaan].
    • Setting up and investigating special algorithms [Ishaan].
    • Scoring logic and implementation [Vivek].
    • Rigid body collision logic and implementation [Vivek].
    • Algorithms for obstacle generation [Sohail].
    • Forces and dynamics mechanisms [Ishaan].

 

  • Assets:
    • Level design [Ishaan/ Sohail/ Vivek].
    • Environment modeling and lighting [Vivek].
    • Procedural environment generation (under investigation) [Ishaan].
    • Obstacle models [Sohail/ Vivek].
    • Character models and rigging [Sohail/ Vivek].
    • Character animation [Vivek].

 

  • UI:
    • UI design, implementation and testing [Sohail].
    • Logo and icon design [Sohail].

 

  • Play-testing:
    • Testing and configuring parameters for Oculus [Ishaan/ Sohail/ Vivek].
    • Tuning logic and game mechanisms [Ishaan/ Sohail/ Vivek].
    • Ensuring there are no issues with environments [Ishaan/ Sohail/ Vivek].
    • Bug fixes [Ishaan/ Sohail/ Vivek].
  • Setting up Oculus for game display and head-tracking.
  • Complete rough layouts of all levels.
  • Polished models and animations.
  • Game flow (from scene to scene).
  • Complete UI – icons, backgrounds, logos, tutorials, etc.

7.2            Milestones

7.2.1       Minor

 

7.2.2       Major

Describe the major milestones of the project.

Alpha Version

  • Playable Test path.
  • Oculus integration with Xbox controller input.
  • Basic UI.
  • Forces and dynamics mechanism.
  • Basic power-up functionality.
  • All levels playable.
  • Models and assets will replace primitive geometry.
  • Polished character animations.
  • Possibly more advanced algorithm being used for gameplay (procedural environments etc.).
  • Player login and save game features.
  • Character upgrade feature.
  • Possibly storyboards depicting the back story and premise of the game.
  • High scores and achievements menu.

Beta Versions

7.3            Development Schedule

 

 

 

After reading the design doc I still don’t have a very clear picture of what is novel about the game mechanic or why it results in gameplay that is interesting and fun to play (just being able to look around with the Occulus Rift is not enough).

 

The game uses the Oculus Rift as a camera controller but the novelty of the game is in that the player needs to be careful of the way the current of the water is flowing, how that affects the obstacles and how the player can manage his stamina and health resources to maneuver himself for the best utilization and maximum exploration of the path. The mechanic includes the power ups that become available and how those interact with the environment and how the player can use the power ups for destroying obstacles or avoiding them.

 

Are there any game(s) that provided inspiration for what you have in mind?

The game can be thought of the combination of a few games representative of their categories. Helicopter is the game that has inspired the player navigation and we plan to extend this to three dimensions and introduce dynamic as well as static obstacles that hinder the players path. The game also derives from racing games similar to Lego Racers and other games where you have pick-ups and can use them to your advantage except you are interacting with the environment most of the time rather than the computer characters (shark and jellyfish).

Also the game would be engaging the user similar to Temple run, where the user needs to be concentrating on the path always but has the control of slowing down or speeding up.

 

 

 

Besides trying to get to the goal by controlling the speed and direction of the character using the Xbox controller, what are the conflicts that make the game play challenging (I know you listed obstacles and enemies – but you need to be more specific)?

Avoiding obstacles/ enemies: Obstacles represents static challenges and will be things like floating debris. Hitting these obstacles will cause Gilly to lose 10-20 points of health. In contrast, enemies will represent a more dynamic challenge and include sharks and jellyfish that will attack the player. To avoid making the player have to turn around all the time, enemies will always attack from the front. We will provide the user with visual and auditory cues so that they are not blindsided by the arrival of an enemy and have enough of an opportunity to dodge them. For example, the imminent arrival of a shark will trigger a change in music and a flashing danger icon. The shark will swim up towards the player and attempt to swallow the character. If the shark is successfully dodged him will swim past and disappear. On the other hand, being eaten by the shark results in instant death and the player will restart from the previous checkpoint. In a more descriptive explanation When the shark approaches the user ,the user can use the pickup and aim at the shark, if properly timed and the pickup hits the shark then it will move the shark away from the users path and hence the user can save themselves from getting eaten by a shark.  Other enemies like the jellyfish attack and cause Gilly to lose 20-25 points of health. The jellyfish would stay static in their plane and will be moving randomly in that plane, When the user starts approaching closer to it, they can use the cross point to target the jelly fish and hit it with the rocks that they can collect. Once the Jelly fish is hit, it will just drop down to the base of the river and the game object will be destroyed once the user crosses it.

 

What happens when you hit an obstacle?

When the user hits an obstacle, they will lose their health and start losing points. A sound would be generated to emphasize that the fish has been hurt. When the obstacle is static like the pipe surface and the user is in contact with it for more than 3 seconds they will start losing their stamina and then once its depleted they will start losing health. When the obstacle is dynamic like debris and when collide with it , it will break and disappear. (Anything farther than a distance will not be active)

 

What happens when you are chased and/or are caught by an enemy?

There is nothing like chased or caught by an enemy.

 

How do you know an enemy is behind you or is chasing you since you are usually looking forward with a first person perspective?

Already answered

 

How does the player get better at playing the game?

They will learn to swim better under the influence of forces. They will begin to anticipate certain events based on visual and audio feedback such as the music changing for sharks and the darkening for tougher paths.

 

Are there any puzzles that need to be solved in order to get through a level?  If so, what are they?

The game itself is a dynamic puzzle because at every second of game play the user has to choose how to maneuver gilly so as to ensure moving forward in the game. The dynamism of the puzzle is inherent in the procedural level and environment design.

 

Since the player has a limited view of the world due to the first person perspective, how can the player make an intelligent decision about which routes to take?

Routes will be marked by visual cues depending on their difficulty.  Player’s will learn to interpret these cues and make meaningful decisions about the paths they choose to take. For example, an easy path may be marked with green arrows or green signage whereas a hard path will be marked in red. The pipes can be green or rusted. Rusted ones mean they are old and dangerous. Green ones mean they are easy but longer.

 

Given some of the issues associated with simulation sickness when using HMDs, I would stay away from any effects that “disorient” the player or take control of the camera (other than a fixed camera, the player should be in control of the camera orientation at all times).

[Remove all mentions of camera shake feature]. Instead include the line:

“Given the potential issues associated with simulation sickness when using HMDs, we will stay away from any effects that “disorient” the player or take control of the camera.”

 

Where are the storyboards?  What do the levels look like?

[We will have to draw these out]. Probably have to draw “screenshots”. One of branching paths, one of a shark attack, power ups, etc.

 

What assets need to be developed, including terrain models, characters, obstacles and props (you should have a list and sketches of each)?

Gilly – downloaded model.

Sharks/ jellyfish – downloaded models.

All environments (drainage pipes, river, ocean), and some obstacles (floating debris, etc.), will need to be modeled in Maya.

 

How do you plan to implement the levels of difficulty (i.e. you need to be specific, what are the variables you are going to adjust to make the game harder to play)? These should all be described in the design doc.

Difficulty increases as the player progresses through the levels i.e. level 3 will be considerably harder than level 1. Higher levels will introduce new enemies and obstacles and more of them will appear. Within levels difficult changes based on the path selected by the player. Primary variables of difficulty are the number of obstacles and enemies that appear, types of enemies, and magnitude of water flow forces.

 

In section 1 you state “we will be investigating and exploring certain motion devices and gesture libraries to be an alternate source of input” but I don’t see any corresponding tasks in the development schedule.  If you are going to look into this, I would recommend that this be something you do early on in the development process as it could have a major impact on the develop tasks that follow.

 

 

The reason I am asking you all these questions is to make sure you all have a clear picture as to what needs to be developed before you actually begin the development process.  If you all share a common vision and know what needs to be done, it will greatly increase your chances of success.

Leave a Reply