Overview



BoosterBoyIndependent Study - Reean FaisalRevision: 1.0.0OverviewExecutive SummaryBoosterBoy is a game about a Rocketship going from one objective to another, where the player will go level to level by avoiding the obstacles in the Rocket’s path. The primary objectives are to (1) understand the fundamentals of creating a game, (2) learn the basics of managing a small, short-term project, and (3) document the journey. Doing several things such as documenting work progress, creating storyboards, and coding are just one part of the grand scheme of things. It’s also important to note how art assets, sound assets, and Unity functions with C# scripts come together to create this product.The purpose of this paper is to talk about what inspired the creation of BoosterBoy. There are also several other things highlighted within the documentation such as assets used and level designing. The assets used are from the Unity engine itself which helped the creation of the game at a steady pace. The paper also details the step by step process of what was being thought of on certain parts of BoosterBoy.Contents2.5D Piloting gameCore Gameplay Mechanics BriefFly spaceship and avoid obstacles without losing fuelRotate ship in a circular motion and move left to rightBoost mechanicGo from point A to point BTargeted platformsWeb application (local application)Mobile application (future)The targeted audience includes all age groupsProject Scope Time Scale:The projected time is 4 months (Summer term: May 2019 - August 2019)Core Team:Reean Faisal, programmer, storyboard writer, level designerInfluencesMobile games tend to be a gateway into the game industry; they're effective and great games to start with. Taking simple ideas and creating them into more rounded and creative arts a fantastic way to become a game developer.Flappy Bird was a huge hit several years ago, it took the world by storm and had people playing it all over the world. It was extremely fun and the fact that virtually everyone has access to phones nowadays is so great, meaning anyone can play your game.Project DescriptionBoosterBoy is a game where a Rocketship is on an unknown planet and the Rocket needs to escape. There are several levels where the Rocketship spawns on the launch pad and needs to go to the landing pad. Between the two are obstacles standing in the way of the Rocketship, such as moving shapes.The Rocketship progresses throughout the levels where each level is more challenging than the last. If the Rocketship hits an obstacle the player dies and is immediately respawned back to level 1. The primary objective of creating a game such as BoosterBoy is to make a complex and enjoyable game through simple means, creating a fun and playable game from what is already there.GameplayThe mechanics of this game is to control the Rocket in 2 directions while being able to rotate it in a 360 so that the player can maneuver around obstacles and not hit them. There is also a boost mechanic in which the player is given a certain amount of fuel and if they run out the Rocketship would fall and hit an obstacle.Several obstacles can move in different directions (up, down, left, right), making the game more challenging. Leaving obstacles as immovable would be far too easy for a player to just get from point A to point B so it’ll be important for the player to be able to adjust on the fly to get to the end goal.AssetsTexturesIn the game, several 3D cubes are used for various purposes (landing pad, launchpad, obstacles, etc.). The game uses textures that are made available through the Unity engine, this includes distinct colors for the 3D GameObjects. There are several things such as mesh, shaders, and colors to make things distinct. A good example of this would be the Earth Shader that was given to the terrain object, it has a distinct color to it so it would be different from obstacles.Figure SEQ Figure \* ARABIC 1 Textures used on GameObjectsGameObjectsThe GameObjects of the game use Unity shapes and objects (cubes). With the Unity assets, it was possible to create a Rocketship with multiple cube assets. Several cubes create the shape of the game (backdrop, terrain, obstacles, landing/launch pads).SoundsBoosterBoy uses sound to add depth to the game. The Thruster sound plays as the player holds the space bar to continue moving and will shut off when the player stops hitting the thruster. Dying plays when the player hits an obstacle. The Next Level sound is a victory jingle to inform the player that they’re going to the next level.Figure SEQ Figure \* ARABIC 2 Sound AssetsCodeScriptsThe game uses two scripts: Rocket and Movement. The Rocket script is used on the Rocketship GameObject to manage the thruster speed and rotation speed. There are also things that the Rocket script is in charge such as the state (Alive or Dying) which determines whether the level continues or has to reset back to 0. The Movement script moves the obstacles to move in an X/Y/Z position using math components within Unity to make them move independently. Figure SEQ Figure \* ARABIC 3 Movement ScriptJournals5-18-19 In the first Journal there was the question of “What were the advantages of learning Unity 3D?” The industry tends to make more 3D games than 2D. Learning how to create games in 3D would further enhance the experience of creating games, 3D games require shapes and models that are designed on a computer. Characters are created through more enhanced programs (Maya, Blender) and are used with physics and colliders to a more advanced degree than 2D games. 2D games are usually based on flat drawings or sprites which involve physics but to a lesser extent. In addition to that, the world coordinates between 2D and 3D games are different, simply because a 2D game uses just the X/Y axis as opposed to a 3D game which makes use of an X/Y/Z-axis. The complexity of the games involve more intricate working and it would help to have an idea of how to create a game of this caliber. Other frameworks were in consideration to be used, such as Unreal Engine. Unreal is one of the most popular free engines available along with Unity. Unreal is a fantastic engine for 3D game creation, however, Unity is a lot more beginner-friendly. Unreal makes use of several different components and structures as well that for more experienced game developers.6-1-19 Task: create the first storyboard. The idea was to implement and get an idea of where to start before implementing code from the ground up. It is also important to not stray away from the original vision too much, learning an engine is exciting and can tend to lead to learning/adding other things that cannot be beneficial to the project.Figure SEQ Figure \* ARABIC 4 First Storyboard6-8-19 During this time several things needed to be answered as the creation of the game went about. The game's environment is fixed so that the player has an idea of how the level is should they die and need to go back. If the environment was randomly populated it would make the game more difficult than it was intended to be. The player can win if the player reaches level 6. The player can also lose if they hit a terrain obstacle, this would result in the player returning to level 1.The game isn’t intended to be a game that would take a player several hours to beat, it should be a quick game that anyone can pick up and play in their free time. The player can most likely beat the game in 15 minutes or so if they’ve had experience playing the game before. The player can see a moving environment, Rocketship, launch pad, and a landing pad. The player starts on the launch pad and the players' goal is to go to the landing pad without hitting an obstacle to progress to the next level. The Rocket can move in a 360 motion so that the player can maneuver past obstacles.6-16-19 & 6-28-19 Task: implement a storyboard in which the player is moving scene to scene. In the figure, the Rocketship is intended to go from the launchpad to the landing pad with an obstacle that can move freely. There was the intention to also create a pause menu, however, due to time, it was not possible to create one. In Unity, several shapes could've been used such as circles, trapezoids, cylinders, etc. The cubes felt like the best thing to use to create an environment and could be shaped for several things. The player is also able to see the entire level from the start, the camera doesn’t have the function to follow the player because it’s static. The reason there wouldn't be a score is that there would be no items that the player can collect to maintain a score, the game isn't an infinite loop so there wouldn't be a need to keep track of the score as well.Figure SEQ Figure \* ARABIC 5 Storyboard with a scene to scene movement LevelThe very first level of the game involves several components.Figure SEQ Figure \* ARABIC 6 Hierarchy in UnityMain CameraThe main camera is used to get a view of the game and the world. It shows the player a launchpad, landing pad, background, and obstacles. Without the camera, there wouldn't be a scene to view. Figure SEQ Figure \* ARABIC 7 Camera in Scene modeLanding PadEach level has a landing pad to take the player to the next level and to serve as a ‘finish line’ for the player. The landing pad has a green texture and is distinct from the launch pad which has a red texture. The landing pad also has a “Finish” tag, the purpose of the tag is to reference the object to be the ending of that level. The tag is implemented in Unity for GameObject components (see figure 9), the Rocket script also uses this tag to determine how to get to the next level.Figure SEQ Figure \* ARABIC 8 Landing PadFigure SEQ Figure \* ARABIC 9 Landing Pad inspector view with finish tagLaunchPadThe launchpad is used as a “Friendly” tag so that the player has a start point. The "Friendly" tag is used to identify a friendly object in Unity so if the Rocket ship touches the GameObject it will not die (See figure 11). In every level created there will be a launchpad which is colored red and is connected to the landing pad from the previous level. The previous level landing pad is used to take the player and start them at the launch pad.Figure SEQ Figure \* ARABIC 10 LaunchPad Figure SEQ Figure \* ARABIC 11 LaunchPad in Inspector view with friendly tag Figure SEQ Figure \* ARABIC 12 How tags are used in ScriptsDirectional LightDirectional light is used to create a shadow effect and have light into the game. It helps keep the game well lit for the player to be able to view the level well and all the obstacles that are in the player’s way. Figure SEQ Figure \* ARABIC 13 Directional Light showing which way light is thrown in the sceneFigure SEQ Figure \* ARABIC 14 Light in the inspector viewTerrainThe terrain is used as a base for the creation of the level. It acts as a ground so the level can be built with different obstacles. It has an earth shader to visually differentiate from the obstacles in the level. It also has a collider so that if hit the player dies and has to restart from level 1.Figure SEQ Figure \* ARABIC 15 Terrain background in-game Figure SEQ Figure \* ARABIC 16 Terrain in inspector with Box Collider and Earth shader materialsRocketThe player navigates the world in a Rocket. It is the main character of the world and the player can control it in several directions. The player can rotate the Rocket in a 360 motion and apply thrust to move it in the direction that the rocket is pointing. It is created using various cubes applied from Unity that was shaped to create a Rocket (Body, Booster R, Booster L, and Rocket Nose). There is a Rocket script attached to the Rocket so that it can move, play audio, and release particles depending on what happens to it.The Rocket includes particles that play when the player applies thrust, hits an obstacle, or lands on the landing pad. There are also sounds when the Rocket accelerates, goes to the next level, or dies. The purpose of the sound assets is to give the game more depth to give the player an enjoyable experience.Figure SEQ Figure \* ARABIC 17 Rocket Ship in-game Figure SEQ Figure \* ARABIC 18 Rocket components in the hierarchy 250573839939290

24488642871636024957991137257032351323751939Rocket script, connecting it to the rocket GameObject to control several things such as Thrust speed, sounds, and particle effects.00

Rocket script, connecting it to the rocket GameObject to control several things such as Thrust speed, sounds, and particle effects.31940502661285Rigidbody which is used for mass includes important details such as mass, collision detection, and constraints.00Rigidbody which is used for mass includes important details such as mass, collision detection, and constraints.3154652999849Audio Source used in the rocket to play thruster sound when the player hits spacebar to move.00Audio Source used in the rocket to play thruster sound when the player hits spacebar to move.Figure SEQ Figure \* ARABIC 19 Rocket components in inspector including, audio source, the rigid body for physics, and the rocket scriptBackdropThe backdrop in the game is used as a background for the level. It helps set the environment for the levels.Figure SEQ Figure \* ARABIC 20 Backdrop in the scene Terrain ObstaclesTerrain obstacles are used to create the remainder of the level and they create challenges to the player so that they can maneuver around the obstacles. If the player hits a terrain obstacle, the player resets back to level 1. Some terrain obstacles have the movement script so that it could move in through 3D space.Figure SEQ Figure \* ARABIC 21 Obstacles in the scene that were used to design the level First LevelThe first level has no obstacles so the player can get accustomed to the controls and not be overwhelmed with everything going on in the world. The next levels slowly get the player adjusted so that they can avoid regular non-moving obstacles and then moving obstacles.Figure SEQ Figure \* ARABIC 22 Level 1 for BoosterBoyScriptsBoosterBoy uses 2 scripts. The Rocket script gives the player the ability to move, a transition between scenes, and plays audio. The movement script makes obstacles move in pace. The movement script determines how challenging the level is so the player feels like the game is progressively getting harder.Take-AwaysDuring the creation of BoosterBoy, there was a lot to create in a short amount of time, but there are several things that were taken away during the progress. Before the actual coding, level designing, and game building aspects happened the first thing to do was to create storyboards to get a basic idea of how to create a game. The purpose of the storyboard was to stick to the original vision and not stray too far from that, because of that several iterations of storyboards were created.Then, when the game creating aspect finally came about there was a solid architecture to base it off because there had been storyboards created. Creating BoosterBoy helped in understanding the fundamentals of creating a game by introducing how Unity worked with C#. Creating a simple game to do complex things with GameObjects such as moving them in an X/Y/Z-axis has helped create a solid game that can be shipped.By managing a small, short term project the game had come to be solid and progressed further than initially expected. Originally, with the time left it was predicted that in the best-case scenario that 1 level would be done. However, 6 levels were created by having solid time management and weekly meetings to discuss the project. The game has used Unity assets to create a fun simple game for anyone to play.Finally, documenting the journey played a big role because it was constantly asking questions on how things would be done. For example, asking if there would be a pause menu because of time restraints there isn't, but originally it was planned to have one. Looking back into the journals it helped see what came true from the original vision and what hasn't. It helps to know that the game is continued and improved by adding these features in the future.Glossary2.5D:describes games that combine 3D polygonal graphics and 2D gameplay.Box Collider:Basic cube-like shaped object to give collision to a GameObject. A box colliders shape can also be adjusted depending on the ponent:Components are used in GameObjects in Unity. Components are intended to give functionality to Unity GameObjects. For example, adding a physics Rigidbody to an obstacle so that it has mass.Git:A distributed version control system to track changes in source code during software development.Hierarchy: A window in unity that lists every GameObject in the scene being used.Inspector:The?Inspector?displays detailed information about your currently selected GameObject, including all attached Components and their properties.Mechanics:Are methods for interaction with the game state.Rigidbody: The?Rigidbody can receive forces and torque to make objects move realistically.Scene(s):Scenes contain the objects of the game. For example, they can be used to create the main menu or individual levels.SourceTree:Free Git desktop client for developers on Windows.Sprite:Graphic object that can be a static image or animation that is integrated into a larger sceneTags:Reference word which can be assigned to one or more GameObjects. Tags are not visible to the player. Tags are used in the script to determine how objects are viewded.Unity: Cross-platform game engine.ReferencesFoundation, Blender. “Home of the Blender Project - Free and Open 3D Creation Software.” , Blender, .Maya. “Maya: Computer Animation & Modeling Software.” Autodesk, products/maya/overview.Taieb, Yohann. “Free Unity Tutorial - Introduction to Game Development with Unity.” Udemy, 24 July 2019, , Unity. “Audio Source.” Unity, , Unity. “AudioSource.” Unity, , Unity. “Box Collider.” Unity, , Unity. “Collider.OnCollisionEnter(Collision).” Unity, , Unity. “DisallowMultipleComponent.” Unity, .“Sound Search.” Freesound, , Unity. “Mathf.Epsilon.” Unity, , Unity. “Mathf.Sin.” Unity, , Unity. “MonoBehaviour.Invoke.” Unity, , Unity. “ParticleSystem.Play.” Unity, , Unity. “Rigidbody.” Unity, , Unity. “Rigidbody.AddRelativeForce.” Unity, , Unity. “SerializeField.” Unity, , Unity. “Tags.” Unity, , Unity. “Transform.Rotate.” Unity, .“Unity for Beginners.” High Quality Programming Tutorials: IOS, Android, Swift, Kotlin, Server Side Swift, Unity, and More!, unity/learn.“Unreal Engine.” What Is Unreal Engine 4, Unreal, en-US/.Weinberger, Jonathan. “The Ultimate Guide to Game Development with Unity 2019.” Udemy, 19 June 2019, the-ultimate-guide-to-game-development-with-unity/. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download