<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mr. Bud</title>
    <description>The latest articles on DEV Community by Mr. Bud (@mrbuddesigner).</description>
    <link>https://dev.to/mrbuddesigner</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F812549%2F7e69b302-39dd-4af2-97d5-23ccd6063c9a.png</url>
      <title>DEV Community: Mr. Bud</title>
      <link>https://dev.to/mrbuddesigner</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrbuddesigner"/>
    <language>en</language>
    <item>
      <title>Introducing ToneFinder: A Game Designer's Attempt to help people with disabilities 🎧</title>
      <dc:creator>Mr. Bud</dc:creator>
      <pubDate>Fri, 08 Apr 2022 12:09:26 +0000</pubDate>
      <link>https://dev.to/mrbuddesigner/introducing-tonefinder-a-game-designers-attempt-to-help-people-with-disabilities-3m41</link>
      <guid>https://dev.to/mrbuddesigner/introducing-tonefinder-a-game-designers-attempt-to-help-people-with-disabilities-3m41</guid>
      <description>&lt;p&gt;👋 Hello, World! Recently, DEV and Deepgram introduced a new type of hackathon, &lt;a href="https://dev.to/t/hackwithdg"&gt;Deepgram x DEV Hackathon&lt;/a&gt;. Of course, I was excited but never thought about participating in the "Build" challenge except for the "Innovative Ideas" challenge. But sooner, I realized that building an application myself will be more awarding and I will learn a lot, I mean a lot of things! And the best thing, I have never participated in a hackathon so this is my first one too.&lt;/p&gt;

&lt;p&gt;Before starting, let me get something straight. I'm a GAME DEVELOPER, not a Software developer or a Python developer. And this is my almost first finished Python GUI application, which is a result of huge hard work. You get what I want to say; This might not be perfect, but it does the job! ✌&lt;/p&gt;

&lt;p&gt;And one more record: For the first time, I wrote 800+ lines of code in Python! 🥴&lt;/p&gt;

&lt;p&gt;Github Repository: &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MrBudDesigner"&gt;
        MrBudDesigner
      &lt;/a&gt; / &lt;a href="https://github.com/MrBudDesigner/ToneFinder"&gt;
        ToneFinder
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Introducing ToneFinder: A Game Designer's Attempt to help people with disabilities 🎧
&lt;/h1&gt;
&lt;p&gt;ToneFinder is a software application that can be used to find the tone/emotion of any audio file. That's the best simple definition I can use for that.&lt;/p&gt;
&lt;p&gt;I know, you may be wondering what the hell is the use of it. But you might not get it in a sec. What if I told, you some people are employed but have hearing disabilities? You get it.&lt;/p&gt;
&lt;p&gt;Let's imagine an entrepreneur who wants to collect feedback from people through phone calls. He has a disability of hearing but he also needs feedback from customers. What are the most useful applications he would have? A Speech-to-text application and an application that helps him to find the emotion or the tone of an audio file. A huge number of speech-to-text applications, a few of Tone Finders.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ln5.sync.com/dl/f123c0b70/4a724yhy-avs9irqs-bfzi5dj3-sjaxh24j" rel="nofollow"&gt;Download Executable Application&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/o7s7CSEdg5s" rel="nofollow"&gt;Check out&lt;/a&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MrBudDesigner/ToneFinder"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;ToneFinder is Licensed Under MIT. 🛡&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ln5.sync.com/dl/f123c0b70/4a724yhy-avs9irqs-bfzi5dj3-sjaxh24j"&gt;Download Executable Application on Sync.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ToneFinder?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pKEbu0rr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfzpz36oh0csxywtk30l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pKEbu0rr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfzpz36oh0csxywtk30l.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ToneFinder is a software application that can be used to find the tone/emotion of any audio file. That's the best simple definition I can use for that.&lt;/p&gt;

&lt;p&gt;I know, you may be wondering what the hell is the use of it. But you might not get it in a sec. What if I told, you some people are employed but have &lt;em&gt;hearing disabilities&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Let's imagine an entrepreneur who wants to collect feedback from people through phone calls. He has a disability of hearing but he also needs feedback from customers. What are the most useful applications he would have? A Speech-to-text application and an application that helps him to find the emotion or the tone of an audio file. A huge number of speech-to-text applications, a very few Tone Finders (I don't know whether there are, either). So yes, that's my purpose for creating ToneFinder. &lt;/p&gt;

&lt;p&gt;Even if you don't have such kind of scenario, don't hesitate to play with it! (it has a built-in Audio Recorder as well as some Games 🎮)&lt;/p&gt;

&lt;h4&gt;
  
  
  Submission Category
&lt;/h4&gt;

&lt;p&gt;ToneFinder is a totally out-of-the-box application that fits &lt;em&gt;Wacky Wildcards&lt;/em&gt; under the "Build" Challenge of the hackathon.&lt;/p&gt;

&lt;p&gt;Licensed under MIT 🛡&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;I'm kind of Old-School. Before doing any project, even a Game, I like to plan and draw it in an A4 with a pencil or something. It gives me the idea straight into my mind. A Digital preview of my idea was like below 👇 [Zoom It to view carefully]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BJpA3cnS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1649302065709/ntLtWSvCp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BJpA3cnS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1649302065709/ntLtWSvCp.png" alt="Untitled design (3).png" width="880" height="1760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you see, it's not the same one I built. But anyway, I have developed all the features I got on my mind! &lt;/p&gt;

&lt;h3&gt;
  
  
  Tech stack
&lt;/h3&gt;

&lt;p&gt;ToneFinder's Tech stack is pretty simple. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://deepgram.com/"&gt;Deepgram&lt;/a&gt; for Transcribing&lt;/li&gt;
&lt;li&gt;Python 3.10 as the main language&lt;/li&gt;
&lt;li&gt;Tkinter for Frontend&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://komprehend.io/emotion-analysis"&gt;Text to Emotion API&lt;/a&gt; form Komprehend.io to find the tone of the text&lt;/li&gt;
&lt;li&gt;Figma for design&lt;/li&gt;
&lt;li&gt;StackOverflow for debugging! 🤣&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Process
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cQX0OJFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3g949kym5qj1vluot7fq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cQX0OJFB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3g949kym5qj1vluot7fq.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you see in the Tech stack, the process of ToneFinder is also simple. If we take a rough sketch of the process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 1: Get the Input&lt;/li&gt;
&lt;li&gt;Step 2: Convert Audio to Text using Deepgram&lt;/li&gt;
&lt;li&gt;Step 3: Find the Tone of the converted Text&lt;/li&gt;
&lt;li&gt;Step 4: Display the Output&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;p&gt;You can view the preview video below (Use your Headphones 🎧)&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/o7s7CSEdg5s"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How-to Guide
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ln5.sync.com/dl/f123c0b70/4a724yhy-avs9irqs-bfzi5dj3-sjaxh24j"&gt;Download the ZIP Folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Once it is downloaded, unzip the files.&lt;/li&gt;
&lt;li&gt;Run Main.exe file
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7Rflr13--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8rpqaaccwi5zdcmqmjra.png" alt="Image description" width="880" height="569"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Possible Bugs 🐛
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Weird Fonts&lt;/strong&gt;: If you're seeing something wrong with words, the fonts used in ToneFinder may not be installed in your PC. To fix that, download &lt;a href="https://fonts.google.com/specimen/Barlow+Condensed"&gt;Barlow Condensed&lt;/a&gt; font family and add it to FONTS Folder&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take Time to show Output&lt;/strong&gt;: The speed of the process may vary on your Internet connection and the size of the file. If it takes unusual amount of time, try restarting.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Tested on Windows Only&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What will be there in the future?
&lt;/h2&gt;

&lt;p&gt;You may have already seen, there's a lot to be in the future!&lt;/p&gt;

&lt;h4&gt;
  
  
  Live Audio Tone + Speech to text transcription
&lt;/h4&gt;

&lt;p&gt;This is an essential feature, especially for my target group. My idea is to create a simple Live Audio Tone and Text displayer,  which is always updating. Thereafter, ToneFinder will be a all-in-one software! &lt;/p&gt;

&lt;p&gt;One barrier to that, I'm still finding a solution inside Deepgram docs!&lt;/p&gt;

&lt;h4&gt;
  
  
  ASL language converter
&lt;/h4&gt;

&lt;p&gt;Though most people who have difficulty hearing can read, some can't. Therefore, Text to ASL language converter is the best gift for them. &lt;/p&gt;

&lt;p&gt;I hope to research the process they use in &lt;a href="https://wecapable.com/tools/text-to-sign-language-converter/"&gt;WeCapable English to Sign Language (ASL) Translator&lt;/a&gt; and use it here. &lt;/p&gt;

&lt;h4&gt;
  
  
  Improved GUI and Performance
&lt;/h4&gt;

&lt;p&gt;You see, I had no more than 14 days to develop it so ToneFinder kinda looks like a mess. For sure, I have to develop this into a better mess by improving the GUI as well as the performance. &lt;/p&gt;

&lt;h4&gt;
  
  
  Videos + Games
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UpwtlF01--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1qsrfjdfpz2lqeabpoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UpwtlF01--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1qsrfjdfpz2lqeabpoz.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you tried ToneFinder once, you may have noticed it consists of 3 simple python GUI games, which lets you to play them when the file is being processed. &lt;/p&gt;

&lt;p&gt;I have a lot of experience in being bored when a file is being processed or something, so I just made sure users who use ToneFinder won't get bored.&lt;/p&gt;

&lt;p&gt;There're 3 games in there: Snake Game, Dots-and-Boxes, and the famous Tic-Tac-Toe! &lt;/p&gt;

&lt;p&gt;I specially thank Aqeel Anwar, Senior ML Engineer @NVIDIA for creating those amazing games and sharing them with us &lt;a href="https://towardsdatascience.com/making-simple-games-in-python-f35f3ae6f31a"&gt;in this article.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Playing games is cool when waiting for a file to finish the process but random funny videos are gonna be super cool. So sooner, you may see random ShotOniPhone videos in the app too! &lt;/p&gt;

&lt;h2&gt;
  
  
  Unforgettable Bugs and Problems
&lt;/h2&gt;

&lt;p&gt;This part is for programmers!&lt;/p&gt;

&lt;p&gt;Among the hundreds of bugs and problems I faced, there are some unforgettable ones that took me days to debug as a Game designer with no prior experience in app development in Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running a script by Tkinter button command
&lt;/h3&gt;

&lt;p&gt;Even though my GUI and the Main script were one script together, I had to write different scripts for the Audio recorder and the games. &lt;/p&gt;

&lt;p&gt;At first, running a script by a command seemed easier for me and I tried this one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;Recorder&lt;/span&gt;

&lt;span class="n"&gt;button_3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;button_image_3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;borderwidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;highlightthickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Record&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;relief&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flat"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Yay, let's run the script.&lt;/p&gt;

&lt;p&gt;Since I import the module first, the script runs without a command even. But I had another solution! Put the whole script inside of &lt;code&gt;if __name__ == "__main__"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Again, it doesn't run the script or even functions inside of it! After hours of searching, I found a beautiful module, &lt;code&gt;runpy&lt;/code&gt;. So the solution was pretty simple:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;runRecorder&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;runpy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Record.py"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;button_3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;button_image_3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;borderwidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;highlightthickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;runRecorder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;relief&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flat"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It worked!&lt;/p&gt;
&lt;h4&gt;
  
  
  Calling Async function from a Button
&lt;/h4&gt;

&lt;p&gt;In here too, I thought it won't be that hard but again, I'm wrong.&lt;/p&gt;

&lt;p&gt;Transcribing from Deppgram SDK was done by an Async function. So I need it to run when the Process button is clicked.&lt;/p&gt;

&lt;p&gt;So I just used this code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;  &lt;span class="n"&gt;button_10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;button_image_1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;borderwidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;highlightthickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transcribe&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;
        &lt;span class="n"&gt;relief&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flat"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It also runs without the command. I just removed the brackets in &lt;code&gt;transcribe&lt;/code&gt; and it returned an error.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: a coroutine was expected, got &amp;lt;function transcribe at 0x0000014F4F823D90&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Hmm.. now what? I tried almost everything, event loops, threads, and blah blah blah. Nothing worked. But... why the hell did I forget about a function that calls it!!&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;runTranscribe&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transcribe&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="n"&gt;button_10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;button_image_1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;borderwidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;highlightthickness&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;runTranscribe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;relief&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"flat"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Phew!&lt;/p&gt;
&lt;h4&gt;
  
  
  Can't Import Script
&lt;/h4&gt;

&lt;p&gt;The solution I found for this is not really applicable but is OK. &lt;/p&gt;

&lt;p&gt;Simple, importing script is done in this way (when it is the same directory)&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;script&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;But it didn't work. So I tried everything below&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;Main&lt;/span&gt;  &lt;span class="c1"&gt;# it just runs the Main.py files, doesn't import variables
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;Main.py&lt;/span&gt;  &lt;span class="c1"&gt;# same as above
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;.Main&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;  &lt;span class="c1"&gt;# error occurred: attempted relative import with no known parent package
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;.&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt;  &lt;span class="c1"&gt;# same as above 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I used different modules and tried to import it manually but nothing worked. I was about to give up this thing (It was the very beginning, otherwise I'd never thought about giving up)&lt;/p&gt;

&lt;p&gt;Even though I thought about writing both GUI and Main Script together in one file, I thought that would be a spaghetti code. But I,  lucky bud was able to do it right and it was totally OK than I thought! &lt;/p&gt;

&lt;p&gt;As I said before, even I didn't accept this as an acceptable solution. But in that instance, I had no choice either. &lt;/p&gt;
&lt;h2&gt;
  
  
  Summing Up
&lt;/h2&gt;

&lt;p&gt;Damn it, this one is longer than expected! Lemme finish this article. &lt;/p&gt;
&lt;h5&gt;
  
  
  Things I learned
&lt;/h5&gt;

&lt;p&gt;As my almost first finished application (I hope it's OK to use that word even though there's a lot to come) I learned a lot of things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Developing Software is not that easy. It required a very similar effort to making games, but a short time period.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Designing a GUI may make you mad, it's not easy as creating the frontend part of a website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Documenting and Commenting are important for people who forget immediately, like me.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should respect software because it's a result of a lot of hard work.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  ToneFinder - Brief Summary
&lt;/h4&gt;

&lt;p&gt;ToneFinder is for everyone but is specially made for the purpose of helping people with disabilities of hearing. It helps you to find the Emotion/Tone of audio files, even MP4s (To be thanks to &lt;a href="https://deepgram.com/"&gt;Deepgram&lt;/a&gt;, a powerful Speech-to-Text API).&lt;/p&gt;

&lt;p&gt;That's all, thanks for reading so far! 😉&lt;/p&gt;

&lt;p&gt;Oh, before you go, make sure to give me some inspiration by commenting on your thoughts on ToneFinder. &lt;/p&gt;
&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;p&gt;Preview Video - &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/o7s7CSEdg5s"&gt;
&lt;/iframe&gt;
&lt;br&gt;
Github Repo - &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MrBudDesigner"&gt;
        MrBudDesigner
      &lt;/a&gt; / &lt;a href="https://github.com/MrBudDesigner/ToneFinder"&gt;
        ToneFinder
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Introducing ToneFinder: A Game Designer's Attempt to help people with disabilities 🎧
&lt;/h1&gt;
&lt;p&gt;ToneFinder is a software application that can be used to find the tone/emotion of any audio file. That's the best simple definition I can use for that.&lt;/p&gt;
&lt;p&gt;I know, you may be wondering what the hell is the use of it. But you might not get it in a sec. What if I told, you some people are employed but have hearing disabilities? You get it.&lt;/p&gt;
&lt;p&gt;Let's imagine an entrepreneur who wants to collect feedback from people through phone calls. He has a disability of hearing but he also needs feedback from customers. What are the most useful applications he would have? A Speech-to-text application and an application that helps him to find the emotion or the tone of an audio file. A huge number of speech-to-text applications, a few of Tone Finders.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ln5.sync.com/dl/f123c0b70/4a724yhy-avs9irqs-bfzi5dj3-sjaxh24j" rel="nofollow"&gt;Download Executable Application&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/o7s7CSEdg5s" rel="nofollow"&gt;Check out&lt;/a&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MrBudDesigner/ToneFinder"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://ln5.sync.com/dl/f123c0b70/4a724yhy-avs9irqs-bfzi5dj3-sjaxh24j"&gt;Download Executable Application on Sync.com&lt;/a&gt; (100% Safe 🛡)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EuLpNGQM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3nxwv63q6eg5pwlwtlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EuLpNGQM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3nxwv63q6eg5pwlwtlg.png" alt="Image description" width="551" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hackwithdg</category>
      <category>programming</category>
      <category>python</category>
      <category>career</category>
    </item>
    <item>
      <title>Software Developer's Guide to Game Development</title>
      <dc:creator>Mr. Bud</dc:creator>
      <pubDate>Mon, 28 Feb 2022 11:34:27 +0000</pubDate>
      <link>https://dev.to/mrbuddesigner/software-developers-guide-to-game-development-40p6</link>
      <guid>https://dev.to/mrbuddesigner/software-developers-guide-to-game-development-40p6</guid>
      <description>&lt;p&gt;👋 Hello, World! Software developers spend the whole with complicated problems and they need to learn almost everything about algorithms, structures, frameworks, and bla-bla-blah. While games and coffee become the stress-busters, why building games can't be the best one? &lt;/p&gt;

&lt;p&gt;Even though some people find game development is an insane thing to do, software developers must feel it easy-peasy' because they have almost every skill game development needs! Math, Programming, UX/UI,  and the usual stuff. If a normal person takes 6 months to learn a Game Engine, the Developer will take a maximumly of 3 months or less. You can be a game developer by understanding soft skills such as algorithms and structures. &lt;/p&gt;

&lt;p&gt;If you don't trust me, &lt;a href="https://lo-victoria.com/why-software-developers-should-build-games"&gt;check out this article&lt;/a&gt; where @&lt;a href="https://dev.to@victoria"&gt;Victoria Lo&lt;/a&gt; shows the importance of building games as a software developer. Moreover, you can read &lt;a href="https://blog.tarynmcmillan.com/5-excellent-reasons-why-you-should-be-developing-games"&gt;this amazing one&lt;/a&gt; by @&lt;a href="https://dev.to@tarynwritescode"&gt;Taryn McMillan&lt;/a&gt; too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making Your  First Game
&lt;/h2&gt;

&lt;p&gt;Software developers who are interested in game development have a remarkable head start. Programming skills are the core of game development. Even if you’re more comfortable with Swift or Ruby, which is not commonly used in game development, you can quickly pick up other Object Oriented programming languages that are much more commonly used for game dev, like C# or C++, easier than no one!&lt;/p&gt;

&lt;p&gt;If you're a python ever, you will love to hear this: They're really good, AAA games made with Python just like Battlefield 2, EVE Online, Civilization IV, and more!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8PM8bzfY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646026118736/6S7RTOJmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8PM8bzfY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646026118736/6S7RTOJmx.png" alt="image.png" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only Python, almost every commonly used Programming language has libraries that support making games. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flutter has flame, a game engine that supports Flutter language.&lt;/li&gt;
&lt;li&gt;Ruby has Gosu, a library that makes it easy to develop 2D games.&lt;/li&gt;
&lt;li&gt;Python has PyGame, a library that empowers you to create both 2D and 3D games.&lt;/li&gt;
&lt;li&gt;Phaser allows you to create games with JavaScript and HTML5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Start Small, Grow Big
&lt;/h2&gt;

&lt;p&gt;For every beginner, either a software engineer or a novice, I give one common piece of advice— Start Smaller as possible. It doesn't matter how small pieces of code it has or how messy it is, you've won the challenge!&lt;/p&gt;

&lt;p&gt;If you love simple 2D games, I would recommend you to make a Pong game. Pong features simple graphics(2 rectangles and a circle) you can create on your own, minimal sounds, and a game loop. If you want to learn about making multiplayer games, allow matches to occur between two human players over a network. If you want to learn about AI, allow the player to challenge the computer.&lt;/p&gt;

&lt;p&gt;And if you love 3D games like me, start with Cube Run. I haven't made it without a Game engine because, 3D becomes a bit harder with Python or others but with Unity, it's the best game I recommend to take a start. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OIZ_7OFU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646026973234/J6HRl5qvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OIZ_7OFU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646026973234/J6HRl5qvg.png" alt="image.png" width="880" height="496"&gt;&lt;/a&gt;&lt;br&gt;
Read the tutorial: &lt;a href="https://mr-bud.hashnode.dev/how-to-make-a-simple-game-with-unity-beginners-guide-part-1"&gt;Make A Simple Game With Unity - Mr. Bud&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Major Ingredients of A Game
&lt;/h2&gt;

&lt;p&gt;If you make a cake without Sugar, no one would eat it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nYaiaFtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646028064781/cdkaD5-1t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nYaiaFtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646028064781/cdkaD5-1t.gif" alt="disguesitng.gif" width="700" height="394"&gt;&lt;/a&gt;&lt;br&gt;
Similarly, if you make a game without one ingredient it needs, no one would play it. Everything is required!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Level Design
&lt;/h3&gt;

&lt;p&gt;In many games, the level itself is a challenge, trickier than the smartest AI enemies. Series like Tomb Raider also emphasize complex and challenging level design.&lt;/p&gt;

&lt;p&gt;While the advent of open-world games like GTA, may make the level design seem less important than in bygone times, it’s worth noting that even open-world games have ‘levels’, such as a particular building, structure, or map area you must enter to achieve a goal. &lt;/p&gt;

&lt;p&gt;To reduce player feelings of being railroaded, levels will ideally have multiple possible paths through them. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QyyeM6aa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646031486711/bb1-f92TH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QyyeM6aa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646031486711/bb1-f92TH.png" alt="image.png" width="880" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Lighting
&lt;/h3&gt;

&lt;p&gt;In games, you can’t rely on natural light sources to illuminate your video game. Every light source in a video game must be added by hand and light manipulation is incredibly important. Light can be used for all of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Controlling the player’s ability to see. In horror and survival games, light is a resource that must be carefully managed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Controlling a player’s ability to be seen. In games with an element of stealth, dark areas can provide cover while well-lit areas represent a difficult challenge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting the mood. The quality of light can be used to set the mood, with sunny and bright lighting associated with happy times and brooding light associated with dark times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lighting the way. Light can be used to direct the player’s attention. The best-designed levels in video games often make clever use of light to guide the player in the right direction when they might otherwise be lost.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bbAQ1r8G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646028813294/zWhttsDAt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bbAQ1r8G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646028813294/zWhttsDAt.png" alt="image.png" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Game Art and Textures
&lt;/h3&gt;

&lt;p&gt;Game art is the medium through which the game world is presented to the player. In a sense, all the programming effort that goes into making video games is an attempt to turn game art into something that feels responsive and alive. Game art is an umbrella term that includes textures, 3D models, sprites, particle effects, and lighting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LUZUh_qT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646030809886/Q6HaeAsM8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LUZUh_qT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646030809886/Q6HaeAsM8.png" alt="image.png" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Music and Sounds
&lt;/h3&gt;

&lt;p&gt;Unlike in the real world, video game sounds cannot be made by accident. Every sound in the game universe must be added by hand, and it is through layering these sounds that the game world starts to feel lifelike. You also need to be mindful of sounds triggered by the player, by other characters, and ambient sounds that create the game world environment.&lt;/p&gt;

&lt;p&gt;As an example, a metal object is felt by the Player. If it doesn't emit a sound, it doesn't feel natural or the scientist who found metals have sonorous property become wrong. &lt;/p&gt;

&lt;p&gt;Another ever-present facet of video games is music, used to create an emotional response in the player or removed entirely to leave behind an eerie silence. Unlike most compositions, video game music must loop seamlessly. It must also transition smoothly to new compositions based on in-game events, such as being spotted by an enemy.&lt;/p&gt;

&lt;p&gt;Here are some of my favorite places to find sound:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Soundcloud&lt;/li&gt;
&lt;li&gt;Fesliyan Studios&lt;/li&gt;
&lt;li&gt;Bensound&lt;/li&gt;
&lt;li&gt;Freesound.org&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Programming
&lt;/h3&gt;

&lt;p&gt;You have made graphics, levels, and everything but the whole game feels like a dead body. If you want your game to be alive, you need some lines of code.&lt;/p&gt;

&lt;p&gt;You are already a developer, and you know the importance of programming in anywhere so I'm not going to teach about "what is programming", but I will show you about Programming in game development.&lt;/p&gt;

&lt;p&gt;First of all, you need to decide one thing: You're making a game by using a Game Engine + Language or building a game from scratch with Python or something? It's your choice but lemme help you. If you're going to build games for fun, choose the first option because it's easier. As I said in the beginning, developers always fight with complex problems so you shouldn't take more stress with that too. &lt;/p&gt;

&lt;p&gt;Wait, what are those Engines? Game engines are tools that make game developer's life easier. There're many of them, but the most popular ones is: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unity (Great for beginners, recommended)&lt;/li&gt;
&lt;li&gt;Unreal Engine&lt;/li&gt;
&lt;li&gt;Godot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And next, choose a language to get started. Mostly, C# and C is used. Don't worry, you will get it sooner than anyone!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PF9bZooO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646031362963/V3pqK2ICN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PF9bZooO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646031362963/V3pqK2ICN.png" alt="screenzy-1646031339884.png" width="880" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Story
&lt;/h3&gt;

&lt;p&gt;Storytelling in video games is different from the kind of storytelling found in fiction. Even if the story is fundamentally linear, the player must feel like their actions have an effect on the story and are driving it forward. For non-linear storylines, the player’s choices actually do shape how the story unfolds, but this introduces extra complexity in ensuring that all possible choices lead to a satisfying.&lt;/p&gt;

&lt;p&gt;The reason for making this the last one is not that it's not important; but every game doesn't have a story, especially, casual type games just like &lt;a href="//wheelrider.github.io"&gt;Wheel Rider&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Starting game development is easier for software developers than anyone. As someone with programming skills, you have a massive head-start on the average video game hobbyist who wants to learn how to make a game. If I scroll to the top of the article, I can list the below points as key takeaways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's a lot easier to find a game dev library that your comfortable language to get started. &lt;/li&gt;
&lt;li&gt;Start with a small game, maybe a clone of an existing game.&lt;/li&gt;
&lt;li&gt;Game Engines make your life a lot easier.&lt;/li&gt;
&lt;li&gt;If you want to make a big, impressive game but don’t have a lot of time to spare, consider teaming up with others or joining a modding community.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And after considering all of these, all I have to say to fellow software developers is, Why not?&lt;/p&gt;

&lt;p&gt;And that's all for now, Happy Designing! 🏎&lt;/p&gt;

&lt;p&gt;P.S. Before you go, make sure to sign up for my n̶e̶w̶s̶l̶e̶t̶t̶e̶r̶ cliff-notes &lt;a href="https://www.getrevue.co/profile/wheelrider"&gt;here!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ovJRIw1e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646030434814/j2U-fTY4o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ovJRIw1e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646030434814/j2U-fTY4o.png" alt="image.png" width="551" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pub.dev/packages/flame"&gt;Flame package for Flutter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pygame.org/"&gt;Pygame&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//unity.com"&gt;Unity Official Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//wheelrider.github.io"&gt;Wheel Rider official webpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How To Make A Simple Game With Unity: Beginners Guide (Part 3)</title>
      <dc:creator>Mr. Bud</dc:creator>
      <pubDate>Tue, 22 Feb 2022 11:42:48 +0000</pubDate>
      <link>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-3-2afi</link>
      <guid>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-3-2afi</guid>
      <description>&lt;p&gt;👋 Hello, World! This is the final part of this mini-tutorial series today we will be covering some important parts like Menus, Music, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Start Menu 🌠
&lt;/h2&gt;

&lt;p&gt;Go to "Scenes" folder, right-click &amp;gt; Create &amp;gt; New Scene. Call it "Start Menu". Go to the scene and create a panel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Text, "CUBE RUN" or anything you want. &lt;/li&gt;
&lt;li&gt;Beneath, create 2 buttons— "Start" and "Exit".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may look like this now.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7wo_Yaza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644328683643/HumgCrX_W.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7wo_Yaza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644328683643/HumgCrX_W.png" alt="image.png" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We create another script for these menus. Create a new script called "Menus".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;StartGame&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadScene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Level 01"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;


    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Exit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Quit&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Here we use the &lt;code&gt;SceneManagement&lt;/code&gt; namespace too.&lt;/li&gt;
&lt;li&gt;In &lt;code&gt;StartGame()&lt;/code&gt; function, we load the 1st scene in the build. &lt;/li&gt;
&lt;li&gt;And in &lt;code&gt;Exit()&lt;/code&gt; function, we simply exit the game. This won't work in the editor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save the script, go to the editor and create a new empty object "ButtonManager" and the "Menus" script.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;add the &lt;code&gt;OnClick&lt;/code&gt; function to Start Button. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add "ButtonManager" to the Object and then in the dropdown, select GameManager &amp;gt; StartGame()&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dp the same things to the "Exit" button and add &lt;code&gt;Exit()&lt;/code&gt; function.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything should work now! &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating The End Menu
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Duplicate the Start Menu scene and rename it as "End Menu".&lt;/li&gt;
&lt;li&gt;Change "CUBE RUN" to "Congratulations!".&lt;/li&gt;
&lt;li&gt;Then add some subtext saying anything you want.&lt;/li&gt;
&lt;li&gt;In the Start button, change the text to "Replay" and keep the "Exit" button as the same.
&amp;gt; 
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5EcPOPrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329386142/Q4c_uauue.png" alt="image.png" width="880" height="495"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the "Menus" script, add this restart function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Replay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadScene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Start Menu"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//Or Level 01&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In here, Restart() is to Restart the whole game, so we should load Scene 01 in build settings with the help of amazing Scene Manager. &lt;/p&gt;

&lt;p&gt;Save the script, and in the Replay button, just change the function to "Replay()". It won't work because we don't have added "Start Menu" to the build settings yet. &lt;/p&gt;

&lt;p&gt;So now we have to add our just-built Menus to build settings. Go to file &amp;gt; Build setting. Drag and drop Start Menu to the beginning of the box, and End Menu to the end. Now it should look like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ssYFEX2A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329508489/2vSoQ-QIj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ssYFEX2A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329508489/2vSoQ-QIj.png" alt="image.png" width="880" height="761"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Adding Music
&lt;/h2&gt;

&lt;p&gt;Download an mp3 file for background music. Add it to the Camera, so it will look like it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yS46ELv4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329874499/jqFtmFrSL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yS46ELv4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329874499/jqFtmFrSL.png" alt="image.png" width="439" height="813"&gt;&lt;/a&gt;&lt;br&gt;
Make sure to uncheck "Play On Awake".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Attach the music clip to the Main camera on every level and that's all about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Game
&lt;/h2&gt;

&lt;p&gt;Great, brilliant, and excellent! Now you can play the whole game from Start and test it. Then, again go to Build Settings. Now, all we have to do is Build the game. Select the platform (Here we build for PC) and click, "Build"!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ps5jgqRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329602136/hG3LupZcN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ps5jgqRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329602136/hG3LupZcN.png" alt="image.png" width="880" height="759"&gt;&lt;/a&gt;&lt;br&gt;
Finally, YES!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After that, you will be asked for a folder. Create an empty one. If the build is successful, you will get a message in console like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qgV8-q6s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329686286/sHAotf3Og.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qgV8-q6s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1644329686286/sHAotf3Og.png" alt="image.png" width="880" height="44"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go to the folder you selected, and open the game(gamename.exe). It will be opened and you can play it 🎮&lt;/p&gt;

&lt;h2&gt;
  
  
  That's just a one-game you made
&lt;/h2&gt;

&lt;p&gt;And there's a lot to be made.&lt;/p&gt;

&lt;p&gt;Congrats, now you've built your own game, I can't imagine how awarding it is. But this is not the destination, it's the start of an amazing journey. Good luck!&lt;/p&gt;

&lt;p&gt;If you have any questions, about this game or anything, feel free to connect with me. My email is &lt;code&gt;mrbuddesigner@gmail.com&lt;/code&gt; and I'm on Twitter as well (I'm not that active, anyways)&lt;/p&gt;

&lt;p&gt;See you soon with another article! ✌&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>How To Make A Simple Game With Unity: Beginners Guide (Part 2)</title>
      <dc:creator>Mr. Bud</dc:creator>
      <pubDate>Sat, 12 Feb 2022 05:36:25 +0000</pubDate>
      <link>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-2-3fm3</link>
      <guid>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-2-3fm3</guid>
      <description>&lt;p&gt;👋 Hello, World! In the previous article, we created some basic things for our game and now, it may look something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644140870904%2FYzSjRxWQG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644140870904%2FYzSjRxWQG.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Watch the video &lt;a href="https://vimeo.com/675248747" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now we have to make the Game Over part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Game Over
&lt;/h2&gt;

&lt;p&gt;In this game, Game Over is done when the Player collides on an obstacle that we made. Also, if the player falls down, the same thing can happen (If you don't have bars or any other barrier that stops the Player from falling down).&lt;/p&gt;

&lt;p&gt;Create 2 Scripts— GameOver and GameManager. Game Manager is often used to create functions like Level Complete, Game Over etc. Usually, it will be shown as a gear icon⚙&lt;/p&gt;

&lt;p&gt;Go to GameManager script and write the below code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;UnityEngine&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;UnityEngine.SceneManagement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//When using Scenes&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GameManager&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MonoBehaviour&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;gamehasEnded&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;GameOver&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gamehasEnded&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;gamehasEnded&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="nf"&gt;Restart&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Restart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadScene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetActiveScene&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this code, you see that we have used a new Namespace: &lt;code&gt;using UnityEngine.SceneManagement;&lt;/code&gt; This namespace is used when we have something to do with scenes(commonly levels).  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Thereafter, we create some public variables, a bool, and a Game Object. &lt;code&gt;gamehasEnded&lt;/code&gt; has many purposes, here we use it to denote whether the current game session is over to not.&lt;/li&gt;
&lt;li&gt;Then we create the &lt;code&gt;GameOver()&lt;/code&gt; function and it is called only if &lt;code&gt;gamehasEnded = true;&lt;/code&gt;. This means when the game is over. &lt;/li&gt;
&lt;li&gt;So what happens when the game is over, the Panel activates and the &lt;code&gt;Restart()&lt;/code&gt; function is called. Here is where we deal with Scenes. It directly gets the Active Scene's name and loads it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything's great, but how do we call this? We call it from the GameOver script. &lt;/p&gt;

&lt;h3&gt;
  
  
  Game Over when Collided with an Obstacle
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnCollisionEnter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Collision&lt;/span&gt; &lt;span class="n"&gt;collisionInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collisionInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;collider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"obstacle"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt;

            &lt;span class="n"&gt;FindObjectOfType&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;PlayerMovement&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;FindObjectOfType&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GameManager&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="nf"&gt;GameOver&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one is pretty simple. &lt;code&gt;OnCollisionEnter&lt;/code&gt; is a built-in function that is used when an Object collides somewhere. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use an if condition to identify whether the object that the Player collided with has the tag called "obstacle". (We did this before making the obstacle, go back and revise)&lt;/li&gt;
&lt;li&gt;If yes, we disable the Player Movement and call the function that we wrote in Game Manager. That's it!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Game Over when Player falls down
&lt;/h3&gt;

&lt;p&gt;This is done in PlayerMovement script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;0.1f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//use your Player's position. &lt;/span&gt;

        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;FindObjectOfType&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GameManeger&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="nf"&gt;GameOver&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is really obvious,  don't think I should explain it 😇&lt;/p&gt;

&lt;p&gt;Now save all the scripts and go to the Editor. Create an empty GameObject (You know the way, "Create Empty") and the name is as GameManager. Then Drag and drop the Game Manager script.&lt;/p&gt;

&lt;p&gt;When the game is over, the game will be automatically restarted. If there's a color change when restarted, ignore it. It will be fine on the build, it's just an editor issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Collectibles
&lt;/h2&gt;

&lt;p&gt;Collectibles are one of the main things that can attract the Player. Here I use simple balls or spheres as collectibles(Player may think they're golden balls, eggs, or anything. Their choice!). You can use anything you want. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644375341263%2FQ9Yn4VvUK.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644375341263%2FQ9Yn4VvUK.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
See the video for animation and other things &lt;a href="https://vimeo.com/675264338" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the above video, I create a coin with an animation. On that coin, there's a component called "Sphere Collider". In it, there's a checkbox called Is Trigger. Make it True so our Player can go through it without colliding. &lt;/p&gt;

&lt;p&gt;Then we have to make a text that indicated the number of coins that the Player collected. Go to hierarchy &amp;gt; right-click &amp;gt; UI &amp;gt; Text. (A canvas and the event system will be created, don't change or delete them.) Write "Coins Collected:" on the Textbox and create another text with 0. It will be the Text that we'll use in the script and it is frequently updated. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644152894785%2FpKvbLwZ7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644152894785%2FpKvbLwZ7k.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tips: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the 2D button in the scene window's toolbar for a better experience when creating UI.&lt;/li&gt;
&lt;li&gt;To import fonts, just drag and drop downloaded fonts. 1001fonts.com is a great place, that I personally use. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will need two scripts for collectibles— &lt;code&gt;CollectCoins&lt;/code&gt; and &lt;code&gt;CoinManager&lt;/code&gt;. CoinManager is to keep the number of coins collected and CollectCoins is to collect coins. It does 3 things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding value to the variable in &lt;code&gt;CoinManager&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Destroying the coin after picking up.&lt;/li&gt;
&lt;li&gt;Playing sound when a coin is collected.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So fist, we have to write the &lt;code&gt;CoinManager&lt;/code&gt; as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;UnityEngine.UI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CoinScore&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MonoBehaviour&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;coinValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="n"&gt;collectedText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;collectedText&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Mathf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RoundToInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coinValue&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These few lines do an important job. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Here, we are using another new namespace— &lt;code&gt;using UnityEngine.UI;&lt;/code&gt;. It is essential when we have to deal with UI objects like Text, Panel, Canvas, etc.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We have two variables for coin value and Text that displays the number of coins collected. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;code&gt;Update()&lt;/code&gt;, we update the Text by making it equal to the amount of coins collected.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Done, now we have to write another script. Create a new script called "CollectCoins" and write down the below code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;CoinScore&lt;/span&gt; &lt;span class="n"&gt;coinScore&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;AudioSource&lt;/span&gt; &lt;span class="n"&gt;coinSound&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnTriggerEnter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Collider&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CompareTag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Player"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;

            &lt;span class="n"&gt;coinScore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;coinValue&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Score Added!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nf"&gt;PlaySound&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="nf"&gt;Destroy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gameObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;PlaySound&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;coinSound&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Play&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then we make 2 public variables for our &lt;code&gt;CoinManager&lt;/code&gt; script and an Audio Source to be played when the Player collects one. For this, download coin notification.mp3 &lt;a href="https://mp3download.to/10en/_2YRwp4QF0E.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When we have created a variable for another script in our project, we can use its variables, functions, and everything in here. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After that, we use the built-in function &lt;code&gt;OnTriggerEnter&lt;/code&gt;. Same as OnCOlliderEnter, this function is called when a GameObject is entered into a trigger. Here, the coin is the trigger.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We use "Player" tag which is on Player (Add it if you haven't) in our If condition and if it is, +1 is added to &lt;code&gt;coinValue&lt;/code&gt; variable on &lt;code&gt;CoinManager&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debug.Log is often used by developers in testing. The game has no effect on it. Debug.log appears on the Console window. So we get to see a Text saying "Score added!" in the console window once a coin is collected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, we call the &lt;code&gt;PlaySound()&lt;/code&gt; function, which we have written in the other line. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save the scripts, go to Editor, and add the "CollectCoins" script to the Coin you have created.  Import the coin sound and drag-drop it too to the coin. Thereafter, you will see an Audio Source component is there in Inspector. Drag and drop the Audio Source component to "coinSound" component.&lt;/p&gt;

&lt;p&gt;Make a new empty object called "CoinManager" or anything you want. Add our &lt;code&gt;CoinManager&lt;/code&gt; to that object. Add text to "collectText" slot and keep that coin value unchanged. Now you can drag and drop the CoinManager object to the slot in "collectCoins" script. Now they should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244334220%2FvIP6K8vo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244334220%2FvIP6K8vo2.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit "Play" and collect the coin. 3 things will happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Coin will be disappeared due to &lt;code&gt;Destroy(gameObject);&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Coin sound will be played.&lt;/li&gt;
&lt;li&gt;"0" will be "1" in the Text.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If all these are working, duplicate the coins and add them in various places. &lt;/p&gt;

&lt;p&gt;Now we have to make the...&lt;/p&gt;

&lt;h2&gt;
  
  
  Level Complete 🏁
&lt;/h2&gt;

&lt;p&gt;We're almost finished, now we have the Level Complete part. Make a cuboid that fits ground in breadth.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244661491%2FRvgko2ZtLn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244661491%2FRvgko2ZtLn.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Don't worry about its look, it's an invisible trigger.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So this is the level complete trigger. So once the Player is entered, the level is complete, a panel with a button showed up so the player can go to the next level. To make this invisible, remove the "Mesh Renderer" component in Inspector, and to make this a trigger, check the "Is Trigger" box in Box collider.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244865391%2FVQ6N7P9cM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644244865391%2FVQ6N7P9cM.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Great, now what?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before writing the script, let's create a Panel. To do, go to hierechy &amp;gt; right-click &amp;gt; UI &amp;gt; Panel. A white color, the translucent panel will be there. Now all you have is to change the color and transparency as you want. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the same way, create a Text, "Level Complete!"(You know the way, right?)&lt;/li&gt;
&lt;li&gt;Under that, create 2 text objects. One for "Coin Collected:" text and the other for the number of coins collected.&lt;/li&gt;
&lt;li&gt;Create a button in the same way too. Adjust the size, color, and Text (The text would be Next Level)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644246998973%2FKfL5WrINe5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644246998973%2FKfL5WrINe5.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
All done, got to GameManager script and add following function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;GameObject&lt;/span&gt; &lt;span class="n"&gt;LevelCompletePanel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;CoinManager&lt;/span&gt; &lt;span class="n"&gt;coinManager&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="n"&gt;CoinsText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

 &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;LevelComplete&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;LevelCompletePanel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;CoinsText&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Mathf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RoundToInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coinManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;coinValue&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We create 3 variables here too. One is for our CoinManager script, Level COmplete Panel, and the other one is for "Collected Coins" text. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the function, we activate the Level COmplete Panel first&lt;/li&gt;
&lt;li&gt;And in the second line, we make COllected Coins text as the &lt;code&gt;coinValue&lt;/code&gt; variable of Game Manager. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great, create a new script "TriggerEnter".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;GameObject&lt;/span&gt; &lt;span class="n"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnTriggerEnter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Collider&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Player"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;FindObjectOfType&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GameManager&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="nf"&gt;LevelComplete&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadScene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetActiveScene&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;buildIndex&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="c1"&gt;//Load Next Level in Build Setting.&lt;/span&gt;


        &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one is simple too. Be sure to use &lt;code&gt;SceneManagement&lt;/code&gt; namespace here as well. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use the &lt;code&gt;OnTriggerEnter&lt;/code&gt; script on here as well. And if conditions makes sure that its Player who is entering the trigger. &lt;/li&gt;
&lt;li&gt;Then we call &lt;code&gt;LevelComplete()&lt;/code&gt; in GameManager.&lt;/li&gt;
&lt;li&gt;In next line, deactivate the Player so it doesn't fall or move.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save the script, and attach the script to the Trigger we made. Everything should work well once you've attached the Player object to the script. And in GameManager too, attach the objects.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644331135461%2F8FRoyvMqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644331135461%2F8FRoyvMqr.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cool, but now we need our button to work. We need to create a function in GameManager to do this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;NextLevel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;LoadScene&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SceneManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetActiveScene&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;buildIndex&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we just load the next scene with the help of the Scene Manager. &lt;/p&gt;

&lt;p&gt;Save the script and go to the Editor. On the button, you will see a "Button" component. In beneath, there is an area called &lt;code&gt;OnClick()&lt;/code&gt;. Click on the Plus icon.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248251051%2Fvu-y4Pw1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248251051%2Fvu-y4Pw1a.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Drag and drop the GameManager game object to the slot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;In dropdown, select GameManager &amp;gt; NextLevel()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248424602%2F2b86zBahy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248424602%2F2b86zBahy.png" alt="Untitled design (17).png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now everything should work! Well, the button is clickable, but it doesn't do anything because you don't have the next level. No, no, we don't make it from scratch. In the project tab, there's an automatically created folder called Scenes. There should be a scene named "SampleScene". &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rename it as "Level 01".&lt;/li&gt;
&lt;li&gt;Select it and press Ctrl + D. Scene is duplicated!&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248643868%2FHqoT_0fPq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248643868%2FHqoT_0fPq.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Automatically renamed...🙌&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, every level shouldn't be the same. So you have some work to do until the last part of this series is published. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design the other levels!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After you've done, go to File &amp;gt; Build Settings. In the area called "Scenes in build", drag and drop the levels you've built in the right order.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248824271%2FLSw76Y2Oi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644248824271%2FLSw76Y2Oi.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Stay tuned for the last part!
&lt;/h2&gt;

&lt;p&gt;Only a few more changes to be done, so I can say we're almost finished! See you in Part 03 of the series ✌&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download fonts: 1001fonts.com&lt;/li&gt;
&lt;li&gt;Coin sound: &lt;a href="https://mp3download.to/10en/_2YRwp4QF0E.html" rel="noopener noreferrer"&gt;https://mp3download.to/10en/_2YRwp4QF0E.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>How To Make A Simple Game With Unity: Beginners Guide (Part 1)</title>
      <dc:creator>Mr. Bud</dc:creator>
      <pubDate>Thu, 10 Feb 2022 07:51:51 +0000</pubDate>
      <link>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-1-5h0p</link>
      <guid>https://dev.to/mrbuddesigner/how-to-make-a-simple-game-with-unity-beginners-guide-part-1-5h0p</guid>
      <description>&lt;p&gt;👋 Hello, World! Making your own game is something that is really awarding, but some people find it really hard to start to make one. Well, making a simple game is not that hard, all you need is some passion to start it and some effort. &lt;/p&gt;

&lt;p&gt;Anyways, back to the topic. So in this series of articles (Actually 2 or 3), we're going to make a simple, hyper-casual game. This game is originally from Brackeys Cube Run Tutorial and we improve it a bit because this is only for educational purposes. &lt;/p&gt;

&lt;p&gt;Before doing anything, we want to Install Unity Editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Unity Editor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://unity.com/" rel="noopener noreferrer"&gt;https://unity.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click on the profile icon at the left and Create a Unity ID.&lt;/li&gt;
&lt;li&gt;Then click "Get Started" and you will be in Unity Store.&lt;/li&gt;
&lt;li&gt;In Individual, choose Unity Personal&lt;/li&gt;
&lt;li&gt; Do the Three steps in there (Install Unity Hub, then the Editor)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644046443755%2FY8e5UhCLC.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644046443755%2FY8e5UhCLC.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;After installing both Unity hub and the Editor, Head over to Unity Hub and click on "CREATE".&lt;/li&gt;
&lt;li&gt;In the window opened, use the 3D template and give a project a name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644046552028%2FA33bUKu30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644046552028%2FA33bUKu30.png" alt="Game step 1.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hit "CREATE", and the Unity Editor will be opened.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practice the Editor 😏
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644047115559%2F70Dun5Ttn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644047115559%2F70Dun5Ttn.png" alt="Untitled design (16).png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Number 1:&lt;/strong&gt; Scene View. This is where you build everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 2:&lt;/strong&gt; Game View. You can't do anything here except play the game.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 3:&lt;/strong&gt; All GameObjects in the scene are in there. If you select a game object in the hierarchy, it will also be selected in the scene view.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 4:&lt;/strong&gt; Project tab. Scripts, Prefabs, Materials, Sprites, Animations, Sounds, and all are in the Project window. All of these are 'Assets.' &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 5:&lt;/strong&gt; Inspector. All the components(Scripts and others)added to a GameObject are in here. When a GameObject is selected in Hierarchy or in the Scene, all the components in that GameObject will show here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 6:&lt;/strong&gt; Console window. Error messages, Debug.logs, Warning are shown here&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number 7:&lt;/strong&gt; Animation window. Great animations are built here. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up the Things
&lt;/h2&gt;

&lt;p&gt;Well, there are already 2 GameObjects in Hiererechy— Main Camera and Directional Light.  The game view depends on the Main Camera so you get it. Directional light is an essential thing in a game, simply we can call it as Sun. When there's no sun, everything is dark 👻&lt;/p&gt;

&lt;p&gt;First of all, we should create the floor or the ground of the game where the Player is. It means we should create a cube- a cuboid!&lt;/p&gt;

&lt;p&gt;Go to hierarchy and right-click. Create &amp;gt; 3D Object &amp;gt; Cube. In Inspector, Scale it like this: X-axis - 50, Y-axis - 5, Z-axis - 1000 (You can change it as you want, just some rough scales) so it should be like this 👇&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644065644551%2FUKCjLMCi5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644065644551%2FUKCjLMCi5.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Don't be afraid to adjust the Camera...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, we have to make the Player. Create a Cube the same way we did and scale it &lt;br&gt;
4 x 4 x 4. Well, it's not clearly visible, right? It means, we have to add colors now. In Unity, we don't say colors; they're materials. To create a Material, go to the project tab and right-click&amp;gt; Create &amp;gt; Material. Then A Circle would be appeared, give it a name. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066047910%2FbVGMG96oe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066047910%2FbVGMG96oe.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
You can change the color as you want 🟥&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Create a Black Material in the same way and drag and drop it to the ground. And for the Player, add Red Material. It should look better now.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066202405%2FY9AAj95Wo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066202405%2FY9AAj95Wo.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Cool, but the skybox??&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Skybox you see is the default one. I agree it doesn't look good. 2 Options— Set Skybox a Solid color or Add another Skybox material. We go with the 1st option. Go to Main Camera and change Clear Flags from skybox to Solid color. Then tap the color box below and change the background color.&lt;/p&gt;

&lt;blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066798838%2FqpLnlXELX.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644066798838%2FqpLnlXELX.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Well, this looks good!&lt;/p&gt;
&lt;h2&gt;
  
  
  Get the Cube alive!
&lt;/h2&gt;

&lt;p&gt;Not we should add movement for our Player. For this, we should add the Rigidbody component to the Cube. To do this, select our Player in Hierarchy, go to Inspector, Add Component &amp;gt; Rigidbody.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067003666%2FMLNZLBNGP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067003666%2FMLNZLBNGP.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rigidbody is a very essential component in almost every game. We can control Mass, Gravity, and many things of the GameObject by this. Don't be hesitate to play with Rigigdbody by making Gravity false, freezing positions, and anything! But be sure to reset them too 😆&lt;/p&gt;

&lt;p&gt;To make the PLayer move, we should write a script. To write a script, we should create a script. Go to project tab &amp;gt; Create &amp;gt; C# Script. The name it as &lt;strong&gt;PlayerMovement&lt;/strong&gt;(No spaces!) Right-click and the script will be opened in Visual Studio. (Download link in the References section.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067378502%2FIf6ubODfG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067378502%2FIf6ubODfG.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
Don't be afraid of it, it's just easy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;First, let me show you the code, and then, I will break it down. Study it carefully first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;Rigidbody&lt;/span&gt; &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//Player's Rigidbody is used to add force towards it.&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;forwardForce&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1000f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;sideForce&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;500f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;BackwardForce&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="m"&gt;200f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Update is called once per frame&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;FixedUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;forwardForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//0 and 0 is for X and Y axises&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"d"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sideForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ForceMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;VelocityChange&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(-&lt;/span&gt;&lt;span class="n"&gt;sideForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ForceMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;VelocityChange&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BackwardForce&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deltaTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ForceMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;VelocityChange&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//Backward force &lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"w"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Rb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddForce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;200f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="c1"&gt;//Here we can't add forwardForce variable because it will be a very high speed then.&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;What we made first are variables. All of them are public, so they appear in Inspector of the GameObject that you add the script. Add the script to the Player (Just drag and drop) and see it yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067739057%2FaDafE-Nho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644067739057%2FaDafE-Nho.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
The purpose of this is that you can change the values themselves from Inspector so you don't have to adjust the script always.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;We change &lt;code&gt;void Update()&lt;/code&gt; to &lt;code&gt;void FixedUpdate()&lt;/code&gt; because it is updating per a fixed time, not all the time. Ignore it, you will get it later. &lt;/li&gt;
&lt;li&gt;By the first line of the function, we add a constant force to the GameObject by using its Rigidbody component. If you save the script and Play the game in the editor, you will see cube is moving forward. We're changing the force according to the Time, for the computer's speed. This is because every computer's speed is not same, but the time is.&lt;/li&gt;
&lt;li&gt;Then we make the Key Inputs. Remember the way of making forces— X, Y, Z.&lt;/li&gt;
&lt;li&gt;Save the script (Ctrl + S) and Add the Rigidbody component of the Object to the slot in Inspector.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644068260577%2FjdY9GiKSG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644068260577%2FjdY9GiKSG.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Play the Game and see how it works. If it's not fine, change the values and see!&lt;/li&gt;
&lt;li&gt;Cube is not going smoothly. We need Slippery nature on the Ground. Go to Project tab &amp;gt; Create Physics Material &amp;gt; Name it as "Slippery". Then drag and drop it to the Ground. &lt;/li&gt;
&lt;li&gt;It would go smooth but the cube is rotating. Let's freeze the rotation by Rigidbody's Constraints!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644068507375%2FJLkJ9bBBX.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644068507375%2FJLkJ9bBBX.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything's great! But the camera is in the same position. We want it to follow our Cube. To do this, create another script called "CameraFollow".&lt;/p&gt;

&lt;h2&gt;
  
  
  Make Camera To Follow The Cube
&lt;/h2&gt;

&lt;p&gt;We need a few lines of code for the Camera to follow our Player.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;GameObject&lt;/span&gt; &lt;span class="n"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//To get Player's position&lt;/span&gt;
 &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;Vector3&lt;/span&gt; &lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//Here we are keeping the distance of the camera and the player constant.&lt;/span&gt;


    &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;


    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;LateUpdate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;First, we make another public variable for our Player. It's to the Player's exact Position.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;offset&lt;/code&gt; is just a variable that will store a starting distance between player and camera. We subtract player position from the camera position, so we get the difference. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;LateUpdate() is called after all Update functions have been called. Here we need it because our Player's movement is in the &lt;code&gt;FixedUpdate()&lt;/code&gt; function. Unless we use LateUpdate(), we can't get the exact position.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the last line, we make the Camera's position the same as the Player's position + offset. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now save the script and go to the editor. Add the script to the Main Camera and for the "Player" slot in Inspector, drag and drop the Player GameObject.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644069206734%2FzNDQJ9EU3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644069206734%2FzNDQJ9EU3.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit PLAY and see how cool it is!&lt;/p&gt;

&lt;h2&gt;
  
  
  Obstacles! 🚧
&lt;/h2&gt;

&lt;p&gt;So we have come to the final step in today's article, in Part 2, which will continue the same. Oh don't worry bud, it will be published in a day or two. Just Sign up for the newsletter so you will definitely get it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to inspector &amp;gt; Create &amp;gt; 3D Object &amp;gt; Cube. Name it as "Obstacle" and scale it as you want. 12 x 5 x 2 for example. Right-click on it and click "Create an Empty Parent". By this, we can move, change or delete every obstacle by one click. Name the parent as "Obstacles". And the Obstacles are children of the Obstacles object. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we should add a tag named "obstacle" to all the Obstacles. Click on the Obstacle you made and in the inspector, you see a Dropdown called  Tags. Click on it and select "Add Tag".&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644069917511%2FHGZtkR-qVy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1644069917511%2FHGZtkR-qVy.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Save it and add it to the obstacle. Now you have a thing to do while waiting for Part 2 of this tutorial. Create more &amp;amp; more obstacles and make it hard 😝&lt;/p&gt;

&lt;p&gt;See you soon ✌ Make sure to follow me so you won't miss Parts 2 and 3. &lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get Unity - &lt;a href="https://unity.com" rel="noopener noreferrer"&gt;https://unity.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download Visual Studio - &lt;a href="https://visualstudio.microsoft.com/vs/community/" rel="noopener noreferrer"&gt;https://visualstudio.microsoft.com/vs/community/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to Newsletter - &lt;a href="https://mr-bud.hashnode.dev/" rel="noopener noreferrer"&gt;https://mr-bud.hashnode.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
