<?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: Hizrawan Dwi Oka</title>
    <description>The latest articles on DEV Community by Hizrawan Dwi Oka (@hizrawandwioka).</description>
    <link>https://dev.to/hizrawandwioka</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%2F1508345%2Fab97bcd0-cb1e-4bb2-ae6c-3edebdeca190.jpg</url>
      <title>DEV Community: Hizrawan Dwi Oka</title>
      <link>https://dev.to/hizrawandwioka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hizrawandwioka"/>
    <language>en</language>
    <item>
      <title>Game Development Diary #11 : Second Day Back</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Thu, 13 Jun 2024 01:30:15 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-11-second-day-back-59kd</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-11-second-day-back-59kd</guid>
      <description>&lt;p&gt;13/06/2024 - Thursday&lt;/p&gt;

&lt;p&gt;Today I will continue my GameDev.tv course. Here is what I’ve got from it:&lt;/p&gt;

&lt;h2&gt;
  
  
  Improved Aiming and Smoothing
&lt;/h2&gt;

&lt;p&gt;Vertical camera motion and using interpolate_with to smooth the camera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom Reticles
&lt;/h2&gt;

&lt;p&gt;Learning how to use the _draw() virtual function and other draw functions to create custom 2D shapes for a reticle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Jumping
&lt;/h2&gt;

&lt;p&gt;Using projectile motion to make my jumping calculations more precise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a prototyping sandbox
&lt;/h2&gt;

&lt;p&gt;Using CSGShapes to fill out the play area and make a sandbox to test new features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Navigation
&lt;/h2&gt;

&lt;p&gt;I was introduced to the NavigationServer, regions, and agents for enemy AI and navigating 3D space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enemy Movement
&lt;/h2&gt;

&lt;p&gt;Combining my navigation path and enemy movement script to make the enemy pursue the player.&lt;/p&gt;

&lt;p&gt;That’s all for today. Thanks for reading my devlog.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>godot</category>
      <category>godotengine</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #10 : Come Back</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Wed, 12 Jun 2024 07:38:52 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-10-come-back-34og</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-10-come-back-34og</guid>
      <description>&lt;p&gt;12/06/2024 - Wednesday&lt;/p&gt;

&lt;p&gt;After almost 2 weeks I haven't continue my game development journey. either working on my project or continue the course. I have to move to other city, and there is a lot of things to do in life.&lt;/p&gt;

&lt;p&gt;But now I will Continue my project. I decided to continue GameDev.tv courses to learn more about Godot instead of working on my project. maybe I will continue my project after finishing this section of the course. and of course I will implement all knowledge and skill I got from the course to my project.&lt;/p&gt;

&lt;p&gt;So for the last project in GameDev.tv course, we will try to build a retro FPS game.&lt;/p&gt;

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

&lt;p&gt;Create a new project and set up the floor and camera.&lt;/p&gt;

&lt;p&gt;As usual, to start project first we need to create new project in Godot and set up the game environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Person Movement
&lt;/h2&gt;

&lt;p&gt;Using template scripts to quickly get a player character running and jumping. &lt;/p&gt;

&lt;h2&gt;
  
  
  Input Events and Aiming
&lt;/h2&gt;

&lt;p&gt;InputEvents and using them to move the camera&lt;/p&gt;

&lt;p&gt;Thats all for today, because tomorrow my company held an event, so I need to prepare for that first. *or I will get fired :)&lt;/p&gt;

</description>
      <category>godot</category>
      <category>gamedev</category>
      <category>newbie</category>
      <category>blog</category>
    </item>
    <item>
      <title>Game Development Diary #9 : Second Course Complete</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Wed, 29 May 2024 07:00:00 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-9-second-course-complete-1mo6</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-9-second-course-complete-1mo6</guid>
      <description>&lt;p&gt;29/05/2024 - Wednesday&lt;/p&gt;

&lt;h1&gt;
  
  
  Difficulty Curves
&lt;/h1&gt;

&lt;p&gt;Introducing the curve resource and using timers to increase the difficulty of our level over time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Scaling Enemy Health
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Ending the Game
&lt;/h1&gt;

&lt;p&gt;Using the TreeExited signal to check when the player has won the game.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Victory Screen
&lt;/h1&gt;

&lt;p&gt;Building a User Interface for when the player wins the game, letting them restart and quit. Introducing a variety of essential Control nodes and Containers.&lt;/p&gt;

&lt;h1&gt;
  
  
  Rewarding the Player
&lt;/h1&gt;

&lt;p&gt;Rewarding the player with stars based on their performance in the level.&lt;/p&gt;

&lt;h1&gt;
  
  
  Using GLTF Files
&lt;/h1&gt;

&lt;p&gt;Learning how to use GLTF and GLB files to add premade meshes into your games. Then using them to build the final turrets and home base.&lt;/p&gt;

&lt;h1&gt;
  
  
  Updating the MeshLibrary
&lt;/h1&gt;

&lt;p&gt;Adding rock and tree meshes to the MeshLibrary to fill out the level and give more control over the environment with the GridMap.&lt;/p&gt;

&lt;h1&gt;
  
  
  Barbarians and Animations
&lt;/h1&gt;

&lt;p&gt;Learning how to use bundled AnimationPlayer nodes within GLTF/ GLB files to add an animated barbarian enemy.&lt;/p&gt;

&lt;h1&gt;
  
  
  Polish and Balance
&lt;/h1&gt;

&lt;p&gt;Tweaking Project Settings, adding fonts, and using exported variables to balance the play experience.&lt;/p&gt;

&lt;h1&gt;
  
  
  Plans for Next Session:
&lt;/h1&gt;

&lt;p&gt;Implementing what I've learn from this course into my project.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>blog</category>
      <category>newbie</category>
      <category>godot</category>
    </item>
    <item>
      <title>Game Development Diary #8 : Still Second Course</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Tue, 28 May 2024 07:00:00 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-8-still-second-course-5g85</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-8-still-second-course-5g85</guid>
      <description>&lt;p&gt;28/05/2024 - Tuesday&lt;/p&gt;

&lt;h1&gt;
  
  
  Clicks and Cursors
&lt;/h1&gt;

&lt;p&gt;Learning how to change the mouse cursor and detecting mouse clicks from the player&lt;/p&gt;

&lt;h1&gt;
  
  
  Building Towers
&lt;/h1&gt;

&lt;p&gt;Creating a scene for defensive towers and learning how to spawn new scenes in code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Picking Turret Positions
&lt;/h1&gt;

&lt;p&gt;Connecting the RayPickerCamera and the TurretManager, so we can place the new turret scene onto tiles in the GridMap.&lt;/p&gt;

&lt;h1&gt;
  
  
  Making Projectiles
&lt;/h1&gt;

&lt;p&gt;Learning about the Area3D and making the turrets able to fire them in a given direction.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing Timers
&lt;/h1&gt;

&lt;p&gt;Introducing the Timer node as a tool for making events happen at specific times. This lets us fire the turrets at regular intervals.&lt;/p&gt;

&lt;h1&gt;
  
  
  Aiming the Turrets
&lt;/h1&gt;

&lt;p&gt;Using the look_at function and the towers basis, to aim the turrets at enemies on the Path3D.&lt;/p&gt;

&lt;h1&gt;
  
  
  Damaging Enemies
&lt;/h1&gt;

&lt;p&gt;Using the Area3D node and variables to give the enemies health that is whittled away by projectiles until they are defeated.&lt;/p&gt;

&lt;h1&gt;
  
  
  For Loops and Targeting
&lt;/h1&gt;

&lt;p&gt;Learning how to use loops to identify the best target for each turret.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing Animations
&lt;/h1&gt;

&lt;p&gt;Learning how to use loops to identify the best target for each turret.&lt;/p&gt;

&lt;h1&gt;
  
  
  Instantiating Enemies
&lt;/h1&gt;

&lt;p&gt;Ung what we have learned from spawning projectiles to spawn endless waves of enemies.&lt;/p&gt;

&lt;h1&gt;
  
  
  Control Nodes and UI
&lt;/h1&gt;

&lt;p&gt;Introducing Control nodes to create user interfaces. Adding a label to track the players gold count and positioning it with a container.&lt;/p&gt;

&lt;h1&gt;
  
  
  Earning and Spending Gold
&lt;/h1&gt;

&lt;p&gt;Finalizing the bank, making the player earn gold when they defeat enemies, and making them spend gold in order to buy turrets.&lt;/p&gt;

&lt;h1&gt;
  
  
  Plans for Next Session:
&lt;/h1&gt;

&lt;p&gt;Completing GameDevTV's course&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>godot</category>
      <category>godotengine</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #7 : Second Course</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Mon, 27 May 2024 07:00:00 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-7-second-course-2916</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-7-second-course-2916</guid>
      <description>&lt;p&gt;27/05/2024 - Monday&lt;/p&gt;

&lt;p&gt;Today is my seventh day developing a video game. That means it’s been one week since I started studying Godot, and I think the progress of the last week has been quite satisfying for me. I will try to remain consistent in the future.&lt;/p&gt;

&lt;h1&gt;
  
  
  Today's Progress:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Learn about gridmap:
&lt;/h2&gt;

&lt;p&gt;Create a MeshLibrary to start placing meshes in a grid with the GridMap node.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the gridmap:
&lt;/h2&gt;

&lt;p&gt;Learn how to customize a Gridmap to fit my MeshLibrary and start building a level with them both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Curves With Path3D
&lt;/h2&gt;

&lt;p&gt;Learning how to create 3D paths for the enemy to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  PathFollow3D Enemies
&lt;/h2&gt;

&lt;p&gt;Making an enemy that can walk along my Path3D with a simple script.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a bas efor the gameplay
&lt;/h2&gt;

&lt;p&gt;Connecting the enemies to a home base so they can deal damage at the end of the path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Health and Labels
&lt;/h2&gt;

&lt;p&gt;Learn how to track the base’s health and show it to the player with the Label3D node.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Properties
&lt;/h2&gt;

&lt;p&gt;Using properties to create setter and getter functions. Ensuring code is run when the base’s health changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Text, Strings and Colors
&lt;/h2&gt;

&lt;p&gt;Learning how to compose complex strings and create colors in scripts to improve the health label.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mouse Input and Ray Picking
&lt;/h2&gt;

&lt;p&gt;Learn how to use the Camera3D and the RayCast3D node to find out what objects in the game world the player is clicking on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating Gridmap Cells
&lt;/h2&gt;

&lt;p&gt;Getting familiar with GridMap functions to change tiles dynamically when the player hovers over them with the mouse.&lt;/p&gt;

&lt;h1&gt;
  
  
  Plans for Next Session:
&lt;/h1&gt;

&lt;p&gt;Continue to my GameDevTV's course&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>godot</category>
      <category>godotengine</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #6 : Weekend</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Mon, 27 May 2024 03:41:58 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-6-weekend-25pc</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-6-weekend-25pc</guid>
      <description>&lt;p&gt;25/05/2024 - Sunday&lt;/p&gt;

&lt;h1&gt;
  
  
  Today’s Progress:
&lt;/h1&gt;

&lt;p&gt;No development work was conducted on the game today.&lt;/p&gt;

&lt;h1&gt;
  
  
  Thoughts:
&lt;/h1&gt;

&lt;p&gt;Even though no direct technical work on the game was done today, I read a book called Theory of Fun for Game Design: Edition 2 by Raph Koster. &lt;/p&gt;

&lt;p&gt;Here is what I've got from this book :&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Fun:
&lt;/h2&gt;

&lt;p&gt;Koster examines what makes games fun, suggesting that fun arises from learning, comprehension, and mastery. He proposes that we are evolutionarily programmed to enjoy learning because it has historically improved our chances of survival.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Patterns:
&lt;/h2&gt;

&lt;p&gt;The book discusses how games teach us through patterns. These patterns can range from calculating odds and predicting events to understanding social power and status. Games become boring when there’s nothing new to learn or when they’re too easy or too difficult.&lt;/p&gt;

&lt;h2&gt;
  
  
  Designing for Engagement:
&lt;/h2&gt;

&lt;p&gt;Koster emphasizes the importance of creating games that are engaging, entertaining, and addictive. He presents ideas on how to improve game designs to incorporate a high degree of fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cultural Influence:
&lt;/h2&gt;

&lt;p&gt;The book also touches on how games serve as powerful learning tools and the influence they have on culture. It encourages designers to think beyond traditional game mechanics and consider the ethical implications of entertainment.&lt;/p&gt;

&lt;h1&gt;
  
  
  Plans for Next Session:
&lt;/h1&gt;

&lt;p&gt;Continue to my GameDevTV's course&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Game Development Diary #5 : Start My "BUMI" Project - Part 1</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Sat, 25 May 2024 13:43:52 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-5-start-my-bumi-project-3kcl</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-5-start-my-bumi-project-3kcl</guid>
      <description>&lt;p&gt;25/05/2024 - Saturday&lt;/p&gt;

&lt;h1&gt;
  
  
  To Do List :
&lt;/h1&gt;

&lt;p&gt;*Create a level, just simple plane with some obstacles(just basic shapes).&lt;/p&gt;

&lt;p&gt;*Implement collision detection to the level.&lt;/p&gt;

&lt;p&gt;*Create 3 Main Character according to the novel(Just use capsule first until I get the 3d model that suitable for the game - because I am not good at art, but I will try to create by myself first.)&lt;/p&gt;

&lt;p&gt;*Use Input Mapper to create a button that can switch the playable character.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's Next?
&lt;/h1&gt;

&lt;p&gt;I will continue to the second section on the course and get more useful knowledge that I can implemented on my project.&lt;/p&gt;

</description>
      <category>godot</category>
      <category>godotengine</category>
      <category>gamedev</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #4 : First Course Complete</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Fri, 24 May 2024 14:05:18 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-4-first-course-complete-2anf</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-4-first-course-complete-2anf</guid>
      <description>&lt;p&gt;24/05/2024 - Friday&lt;/p&gt;

&lt;h1&gt;
  
  
  Today Progress :
&lt;/h1&gt;

&lt;h3&gt;
  
  
  -Continue Collision Detection
&lt;/h3&gt;

&lt;p&gt;Detect RigidBody collisions with signals and identify bodies with Groups&lt;/p&gt;

&lt;p&gt;first connect signal to method by clicking this menu&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnt2foy72hyq5imzgxyxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnt2foy72hyq5imzgxyxk.png" alt="Image description" width="264" height="406"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func _on_body_entered(body: Node) -&amp;gt; void:
    if body.name == "LandingPad":
        print('you touch landingpad!')

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

&lt;/div&gt;



&lt;p&gt;use this code to detect if the character touch the destination or not&lt;/p&gt;

&lt;p&gt;and add detection if user touch the floor then the user lose using the code below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func _on_body_entered(body: Node) -&amp;gt; void:
    if "Goal" in body.get_groups():
        print('you touch landingpad!')
    if "LoseCondition" in body.get_groups():
        print('You Lose!')

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  -The Export Annotation
&lt;/h3&gt;

&lt;p&gt;Replace ‘magic numbers’ with variables and control them from the inspector.&lt;/p&gt;

&lt;p&gt;export a variable so it can be used in the inspector pane&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## How much vertical force to when user move the character
@export_range(750.0,3000.0 ) var thrust: float = 1000.0
## How much force to when user move the character
@export_range(50.0,250.0 ) var torque: float = 100.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and it will show in the inspector toolbar&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73ar2foo0z38tklf0n37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73ar2foo0z38tklf0n37.png" alt="Image description" width="265" height="956"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  -Crashing and Respawning
&lt;/h3&gt;

&lt;p&gt;Use functions and get_tree() to respawn when crashing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func _on_body_entered(body: Node) -&amp;gt; void:
    if "Goal" in body.get_groups():
        complete_level()
    if "LoseCondition" in body.get_groups():
        crash()

func complete_level():
    print('you touch landingpad!')
    get_tree().quit()

func crash():
    print('JEDER BOOM DUAR!!')
    get_tree().reload_current_scene()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;i create two function that called when user touch floor or landing page. and i called get_tree function to reload the current scene or quit the game.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Loading the Next Level
&lt;/h3&gt;

&lt;p&gt;Making two new levels and using the landing pads to load them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First i create the other level scene&lt;/li&gt;
&lt;li&gt;On the previous level landing page, create script to select thescene destination
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends CSGBox3D

@export_file("*.tscn") var file_path

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

&lt;/div&gt;



&lt;p&gt;on the toolbar, select the next level file path&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrp2chusollk8jlw10kb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrp2chusollk8jlw10kb.png" alt="Image description" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and we can continue to next level if we landed in the launching pad.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Learning Tweens
&lt;/h3&gt;

&lt;p&gt;Use tweens to sequence and delay function calls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
func complete_level(next_level: String) -&amp;gt; void:
    print('you touch landingpad!')
    set_process(false)
    is_transitioning = true
    var tween = create_tween()
    tween.tween_interval(1.0)
    tween.tween_callback(
        get_tree().change_scene_to_file.bind(next_level)
        )


func crash():
    print('JEDER BOOM DUAR!!')
    set_process(false)
    is_transitioning = true
    var tween = create_tween()
    tween.tween_interval(1.0)
    tween.tween_callback(get_tree().reload_current_scene)

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

&lt;/div&gt;



&lt;p&gt;add tween to delay the function. so it give 1 second delay after the character touch the landing page or crash.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Tweening Hazards
&lt;/h3&gt;

&lt;p&gt;Use the AnimatableBody3D node and Tweens to create moving obstacles for the player to dodge.&lt;/p&gt;

&lt;p&gt;so the code will lookike this :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@export var destination:Vector3
@export var duration: float = 1.0

# Called when the node enters the scene tree for the first time.
func _ready() -&amp;gt; void:
    var tween = create_tween()
    tween.tween_property(self, "global_position", global_position+destination, duration)

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  -Learning Audio
&lt;/h3&gt;

&lt;p&gt;Use the AudioStreamPlayer node to play one off sound effects when the player crashes and completes levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Controlling Audio With Scripts
&lt;/h3&gt;

&lt;p&gt;Use the AudioStreamPlayer 3D and else statements to play sounds when the player is boosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Learning Particles
&lt;/h3&gt;

&lt;p&gt;Learning how to use the GPUParticles3D node and control its emitting property for the character boosters.&lt;/p&gt;

&lt;h3&gt;
  
  
  -One Shot Particles
&lt;/h3&gt;

&lt;p&gt;Learn how to use one shot particles for an explosion and to show the player has reached the goal.&lt;/p&gt;

&lt;h3&gt;
  
  
  -change the character with complex shape / model
&lt;/h3&gt;

&lt;p&gt;Use the MeshInstance3D node and a variety of shapes to customize your player rocket&lt;/p&gt;

&lt;h3&gt;
  
  
  -Coloring the character
&lt;/h3&gt;

&lt;p&gt;Saving and reusing the StandardMaterial3D node to color in the player ship.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Building Backgrounds
&lt;/h3&gt;

&lt;p&gt;Learning to use Constructive Solid Geometry to build walls and background objects for our levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Lighting the Scene
&lt;/h3&gt;

&lt;p&gt;Improving the WorldEnvironment DirectionalLight3D and adding Omnilights to improve the levels appearance.&lt;/p&gt;

&lt;h3&gt;
  
  
  -Exporting Game
&lt;/h3&gt;

&lt;p&gt;Learn how to create files players can run by downloading templates and exporting the project.&lt;/p&gt;

&lt;h1&gt;
  
  
  Resources :
&lt;/h1&gt;

&lt;p&gt;Complete Godot 3D: Code Your Own 3D Games In Godot 4! - GameDevTv Courses&lt;/p&gt;

&lt;h1&gt;
  
  
  Next Step :
&lt;/h1&gt;

&lt;p&gt;I will implement all knowledge I gain from this course to start developing my game!!&lt;/p&gt;

&lt;p&gt;To Do List :&lt;/p&gt;

&lt;p&gt;*Create a level, just simple plane with some obstacles(just basic shapes).&lt;br&gt;
*Implement collision detection to the level.&lt;br&gt;
*Create 3 Main Character according to the novel(Just use capsule first until I get the 3d model that suitable for the game - because I am not good at art, but I will try to create by myself first.)&lt;br&gt;
*Use Input Mapper to create a button that can switch the playable character.&lt;/p&gt;

&lt;p&gt;*After I complete all item in the To Do List, I will continue the courses.&lt;/p&gt;

</description>
      <category>godot</category>
      <category>godotengine</category>
      <category>gamedev</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #3 : Still GameDev.tv Course</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Thu, 23 May 2024 13:34:36 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-3-50n8</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-3-50n8</guid>
      <description>&lt;p&gt;23/05/2024 - Thursday&lt;/p&gt;

&lt;h1&gt;
  
  
  Day Three
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Today's Progress:
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; Make the level out of CSGShapes to give a basic environment to work with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy63as2r6lrxdtf9k61d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy63as2r6lrxdtf9k61d0.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can choose color for the material using this tools&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic1hl77p03jh4vyz5z46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic1hl77p03jh4vyz5z46.png" alt="Image description" width="323" height="944"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Add the player to the blockout level and finish setting up the camera and environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpvl5qnz6fpc2ldf76uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpvl5qnz6fpc2ldf76uj.png" alt="Image description" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Convert the player into a RigidBody3D and control it with forces.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   A RigidBody3D is a 3D physics body that is moved by a physics simulation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends Node3D


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -&amp;gt; void:
    if Input.is_action_pressed("ui_accept"):
        #Move the character posistion
        position.y += delta
    if Input.is_action_pressed("ui_left"):
        rotate_z(delta)
    if Input.is_action_pressed("ui_right"):
        rotate_z(-delta)

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

&lt;/div&gt;



&lt;p&gt;this is the previous code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends RigidBody3D


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -&amp;gt; void:
    if Input.is_action_pressed("ui_accept"):
        apply_central_force(basis.y * delta * 1000.0)
    if Input.is_action_pressed("ui_right"):
        apply_torque(Vector3(0.0,0.0,100.0 * delta))
    if Input.is_action_pressed("ui_left"):
        apply_torque(Vector3(0.0,0.0,-100.0 * delta))


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

&lt;/div&gt;



&lt;p&gt;this is the new code&lt;/p&gt;

&lt;p&gt;this code make the character move according to the user input. But instead of transforming the position manually like the previous code, we use apply central force to move the character against the gravity and apply torque to rotate the character&lt;/p&gt;

&lt;p&gt;-&amp;gt; Remap some of input to more intuitive controls.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    In the project setting there are inputmap tab, this menu allows us to set all the input we need for the game 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fand6bexkxwh8sqj9mqav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fand6bexkxwh8sqj9mqav.png" alt="Image description" width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8se6c7v9zk2z8sqphuwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8se6c7v9zk2z8sqphuwb.png" alt="Image description" width="800" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxdsjm1hwkyhbihhj7y3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxdsjm1hwkyhbihhj7y3.png" alt="Image description" width="800" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Detect RigidBody collisions with signals and identify bodies with Groups.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Signal let the game objects communicate with each other. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkc0jlu3odkpttenz3ig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkc0jlu3odkpttenz3ig.png" alt="Image description" width="263" height="946"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resource:
&lt;/h2&gt;

&lt;p&gt;Complete Godot 3D: Code Your Own 3D Games In Godot 4! - GameDevTv Courses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps:
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; Learn about tween and implement it in the tutorial's game&lt;br&gt;
-&amp;gt; Adding audio&lt;br&gt;
-&amp;gt; Controlling Audio with script&lt;br&gt;
-&amp;gt; Learn about particle and implement it&lt;/p&gt;

</description>
      <category>godot</category>
      <category>gamedev</category>
      <category>game</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #2 : GameDev.tv Course</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Wed, 22 May 2024 00:19:35 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/game-development-diary-2-3ime</link>
      <guid>https://dev.to/hizrawandwioka/game-development-diary-2-3ime</guid>
      <description>&lt;p&gt;22/05/2024 - Wednesday&lt;/p&gt;

&lt;h1&gt;
  
  
  Day Two
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Today's Progress:
&lt;/h2&gt;

&lt;p&gt;-&lt;strong&gt;Interface Navigation&lt;/strong&gt;: Spent time navigating around Godot's interface. The split-screen view and the drag-and-drop functionality are quite user-friendly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Imported Scenes&lt;/strong&gt;: Successfully imported my first scene into Godot. Understanding the scene system was crucial as it forms the building blocks of Godot's architecture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;3D Mesh Creation&lt;/strong&gt;: Created a new 3D mesh. It was a bit challenging at first, but the intuitive interface made the process smoother. I also learn how to transform the mesh, create a shape for this mesh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;3D Mesh Creation&lt;/strong&gt;: Created Lighting, environment, and camerafor this scene so when i run the game it will show something on the screen.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz130t6gftg1cxhip21qa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz130t6gftg1cxhip21qa.png" alt="Image description" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GDScript Basics&lt;/strong&gt;: 
-Dived into GDScript scripting. 
-Wrote a simple script to print strings in the console. 
-Learn the difference between func _ready and func _process(delta).
-Learn GDsripts variable
-Learn about strong typing to get better performance and make code 
 more readable
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends Node3D


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -&amp;gt; void:
    if Input.is_action_pressed("ui_accept"):
        #Move the character posistion
        position.y += delta
    if Input.is_action_pressed("ui_left"):
        rotate_z(delta)
    if Input.is_action_pressed("ui_right"):
        rotate_z(-delta)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Thoughts:
&lt;/h2&gt;

&lt;p&gt;I'm amazed at how flexible and powerful Godot is as a game engine. The community support and documentation are incredibly helpful. The more I explore, the more I realize the potential of this engine for solo indie game developers like myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Delve deeper into GDScripts. I want to make collision detection, and learn about rigidbody3d and physics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources Used:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Complete Godot 3D: Code Your Own 3D Games In Godot 4! - Course&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>godot</category>
      <category>godotengine</category>
      <category>gamedev</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Game Development Diary #1 : My Journey into Game Development</title>
      <dc:creator>Hizrawan Dwi Oka</dc:creator>
      <pubDate>Tue, 21 May 2024 07:56:09 +0000</pubDate>
      <link>https://dev.to/hizrawandwioka/my-journey-into-game-development-a-beginners-diary-1-36p0</link>
      <guid>https://dev.to/hizrawandwioka/my-journey-into-game-development-a-beginners-diary-1-36p0</guid>
      <description>&lt;p&gt;21/05/2024 - Tuesday&lt;/p&gt;

&lt;h1&gt;
  
  
  Background
&lt;/h1&gt;

&lt;p&gt;One day, I found myself bored of spending my weekends sleeping or merely wandering around. I contemplated spending my weekends on productive activities. Somehow, I was inspired to start writing a fiction novel about adventures. From there, I began my research, reading various novels, one of which inspired me to start game development. However, when I started trying to write, I changed my mind. As a software engineer, I wanted to create something related to my job, something that could also serve as my portfolio. Therefore, I decided to create a game instead of writing fiction novel. I decided to Adapting Tere Liye's novel called BUMI into a video game  because I really like the story.&lt;/p&gt;

&lt;p&gt;And this is my journey to develop that game :&lt;/p&gt;

&lt;h1&gt;
  
  
  Day one
&lt;/h1&gt;

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

&lt;p&gt;After I make my decision, I start to make a plan about how the game would look like, the art style, the characters, etc. I put all of those ideas into a document called GDD (Game Design Document) I use notion template by Game Dev Tales called 'One Page - Game Design'&lt;/p&gt;

&lt;p&gt;Here is the link to my GDD:&lt;br&gt;
&lt;a href="https://www.notion.so/BUMI-Game-Design-8eb634feb21a4ce19580c557ea2ac231?pvs=4" rel="noopener noreferrer"&gt;https://www.notion.so/BUMI-Game-Design-8eb634feb21a4ce19580c557ea2ac231?pvs=4&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Downloading and Installing Godot
&lt;/h2&gt;

&lt;p&gt;The second step after I have designed the game, I need to choose a game engine because it will take a really long time to create my own engine. There are three engine that I considered to choose. Unity, Unreal, and Godot. After doing some research on those engines, I found out that Godot is portable, have small size, and not less powerful than other options. That is why I decided to use Godot for starting my game development journey.&lt;/p&gt;

&lt;p&gt;So, after choosing the right engine, what I need to do next is to download the Godot Engine from the official website. The installation process was straightforward and didn't take much time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5ib865wh6nkm9e39boi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5ib865wh6nkm9e39boi.png" alt="Image description" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring the Interface
&lt;/h2&gt;

&lt;p&gt;Once Godot was installed, I launched it and spent some time exploring the interface. I learned about the different panels such as the Scene panel, the Inspector panel, and the FileSystem panel. I also learned how to navigate within the 2D and 3D viewport.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuj3t1s5ljwuvddr8hrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuj3t1s5ljwuvddr8hrs.png" alt="Image description" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dev Log #1 End
&lt;/h2&gt;

&lt;p&gt;That concludes my first game development log. Today, I’ve made the initial steps in my journey by choosing Godot as my game engine and installing it. As I move forward, I’ll start to delve into the actual development process, adapting the novel “BUMI” into an interactive gaming experience.&lt;/p&gt;

&lt;p&gt;I’m excited about the journey ahead and I look forward to sharing more of my progress with you. If you have any suggestions, questions, or feedback, please feel free to share. Your input is greatly appreciated!&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates on my game development journey. Until next time!&lt;/p&gt;

</description>
      <category>godot</category>
      <category>gamedev</category>
      <category>learning</category>
      <category>newbie</category>
    </item>
  </channel>
</rss>
