Story, Cutscenes, and Fire Shader - Ryu's Revenge Weekly Update #1


Welcome to the first weekly update of Ryu’s Revenge, where I share the progress I’ve made over the last week. This past week has been eventful; I finished my exams, got a part-time job, and made significant progress on the game’s story. Let’s dive in.

Personal Update

Let’s start with a personal update. I finished my exams on the 22nd of May and had planned 3 days off to watch Batman - specifically BTAS. On the 25th of May, I started working in a supermarket (or a grocery store, whatever you call it) for 6 hours a day. This has reduced my game development time to about 5 hours a day and my learning and self-development time to less than an hour. On the bright side, it provides some income, even though it’s not much.

Cutscenes

Before my exams started, I had planned the game’s story. After the exams (and my 3-day break), I grabbed my pencil and notebook and sketched drafts of the cutscenes to reference while creating them in Godot. The first cutscenes will explain why Ryu seeks revenge against Kurogane (the samurai leader). There will be about 4 scenes, and as of now, 2 are almost done (though they still need a lot of art).

I don’t know if this is a spoiler or not, but the first scene shows Kurogane arriving in the land of the ninja with his enormous army of samurais and traitor ninjas. The samurais’ art isn’t done yet, but you can imagine them. Kurogane speaks (these lines are placeholders), and the ninjas attack slime citizens. You can also imagine a few houses until I create the art. That’s it.

Fire Shader

For the second scene, I wanted to show the destruction of the village, and what’s better than fire!? I tried to write a fire shader myself to get used to shader programming, but it was incredibly difficult. I spent 3 hours tweaking the shader and editing the noise texture’s parameters, but it never looked right. So, I got a shader from Godot Shaders, tweaked some parameters, and it looked cool!

But it wasn’t enough for me because all the fires looked the same since they shared the same noise texture. I thought about making unique resources for each fire, but it was too time-consuming. Instead, I wrote a script that creates unique copies of the shader material, the noise texture, and the noise itself. It then applies a random seed using the randi() function and changes the period to a random float within a given range using rand_range(float, float). This makes each fire look unique.

Here's the GdScript if you're interested:
tool
extends Node2D

export var random := false setget random

onready var sprite = $Sprite
onready var noise_tex = sprite.material.get("shader_param/noise_tex")
onready var noise = noise_tex.noise

func _ready():
    randomize()
    random(false)

# warning-ignore:function_conflicts_variable
func random(_v):
    var new_noise_tex = noise_tex.duplicate(true)
    var new_noise = new_noise_tex.noise
    
    new_noise.seed = randi()
    new_noise.period = rand_range(48, 70)
    new_noise_tex.noise = new_noise
    
    var new_material = sprite.material.duplicate(true)
    sprite.material = new_material
    sprite.material.set("shader_param/noise_tex", new_noise_tex)

About The Game

Unleash your inner ninja! Become Ryu, seeking vengeance against those who betrayed him. This action-packed platformer challenges you with tricky levels and enemies to conquer. Master Ryu’s deadly katana and acrobatic skills to achieve justice.

Add Ryu’s Revenge to Your Collection, because a Free Demo will be out soon!

Add To Collection

About Me

My name is Mohamed, I’ve been making video games since 2021 using only my mobile phone. This game no exception, so the whole development process is being done using only mobile phone.

Get Ryu's Revenge: A Ninja Tale

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.