You are browsing as a guest. Sign up (or log in) to start making projects!

love

@love

Joined June 10th, 2026

  • 10Devlogs
  • 1Projects
  • 0Ships
  • 0Votes
a 14 year old that knows java and knows its uselessT_T

working on a movement shooter!

slack - loveTheGodotDeveloper
discord(prefered) - swiftfishi3
Open comments for this post
Reposted by @love

1h 41m 16s logged

DEVLOG - 08 added an interesting navigation optimization script

i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way
video:https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s
time:13:33(already in link)
how it works?
ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction

so anyways here is the code:
extends Node3D

var tickAssigned = []
var tickCount = []
var currentTick = 0;
var tickTimer = 0.0
const TICK_RATE = 0.025

func _ready() -> void:
	tickAssigned.resize(navObjects.size())
	tickAssigned.fill(0)
	tickCount.resize(20);
	tickCount.fill(0)
	var length = navObjects.size()
	for i in tickAssigned.size():
		tickAssigned[i] = -1
	var num = 20.0 /length
	var current = 0.0
	for i in length:
		if current >= 20:
			current -= 20
		tickAssigned[i] = int(current)
		tickCount[int(current)]+=1
		current += num```
		

# Called every frame. 'delta' is the elapsed time since the previous frame.
```func _process(delta: float) -> void:
	tickTimer +=delta
	if tickTimer < TICK_RATE:
		return
	tickTimer = 0.0
	var tickDelta = TICK_RATE
	var count = 0
	for entity in navObjects:
		if entity != null:
			if tickAssigned[count] == currentTick:
				var target = entity.target
				if target != null:
					var navAgent = entity.navAgent
					var mode = entity.mode
					var gotShot = entity.gotShot
					var SPEED = entity.SPEED
					var accelaration = entity.accelaration
					var velocity = entity.velocity
					if mode == "chase" or gotShot:
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
					elif mode == "attack":
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
		count+=1
	currentTick +=1
	if currentTick >= 20:
		currentTick = 0
	

#@onready var body =$body
#@onready var explosionParticles = preload("res://Particles/enemyExplode.tscn")
#var particleInstance
#@export var navAgent : NavigationAgent3D
#@export var damage = 10
#@export var accelaration = 10
#var target
#var mode : String = "idle"
#var gotShot = false```

and the enemy code is too long so i cant put it here
also here is a clip of the current state of the game

DEVLOG - 08 added an interesting navigation optimization script

i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way
video:https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s
time:13:33(already in link)
how it works?
ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction

so anyways here is the code:
extends Node3D

var tickAssigned = []
var tickCount = []
var currentTick = 0;
var tickTimer = 0.0
const TICK_RATE = 0.025

func _ready() -> void:
	tickAssigned.resize(navObjects.size())
	tickAssigned.fill(0)
	tickCount.resize(20);
	tickCount.fill(0)
	var length = navObjects.size()
	for i in tickAssigned.size():
		tickAssigned[i] = -1
	var num = 20.0 /length
	var current = 0.0
	for i in length:
		if current >= 20:
			current -= 20
		tickAssigned[i] = int(current)
		tickCount[int(current)]+=1
		current += num```
		

# Called every frame. 'delta' is the elapsed time since the previous frame.
```func _process(delta: float) -> void:
	tickTimer +=delta
	if tickTimer < TICK_RATE:
		return
	tickTimer = 0.0
	var tickDelta = TICK_RATE
	var count = 0
	for entity in navObjects:
		if entity != null:
			if tickAssigned[count] == currentTick:
				var target = entity.target
				if target != null:
					var navAgent = entity.navAgent
					var mode = entity.mode
					var gotShot = entity.gotShot
					var SPEED = entity.SPEED
					var accelaration = entity.accelaration
					var velocity = entity.velocity
					if mode == "chase" or gotShot:
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
					elif mode == "attack":
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
		count+=1
	currentTick +=1
	if currentTick >= 20:
		currentTick = 0
	

#@onready var body =$body
#@onready var explosionParticles = preload("res://Particles/enemyExplode.tscn")
#var particleInstance
#@export var navAgent : NavigationAgent3D
#@export var damage = 10
#@export var accelaration = 10
#var target
#var mode : String = "idle"
#var gotShot = false```

and the enemy code is too long so i cant put it here
also here is a clip of the current state of the game

Replying to @love

1
4
Open comments for this post

1h 41m 16s logged

DEVLOG - 08 added an interesting navigation optimization script

i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way
video:https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s
time:13:33(already in link)
how it works?
ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction

so anyways here is the code:
extends Node3D

var tickAssigned = []
var tickCount = []
var currentTick = 0;
var tickTimer = 0.0
const TICK_RATE = 0.025

func _ready() -> void:
	tickAssigned.resize(navObjects.size())
	tickAssigned.fill(0)
	tickCount.resize(20);
	tickCount.fill(0)
	var length = navObjects.size()
	for i in tickAssigned.size():
		tickAssigned[i] = -1
	var num = 20.0 /length
	var current = 0.0
	for i in length:
		if current >= 20:
			current -= 20
		tickAssigned[i] = int(current)
		tickCount[int(current)]+=1
		current += num```
		

# Called every frame. 'delta' is the elapsed time since the previous frame.
```func _process(delta: float) -> void:
	tickTimer +=delta
	if tickTimer < TICK_RATE:
		return
	tickTimer = 0.0
	var tickDelta = TICK_RATE
	var count = 0
	for entity in navObjects:
		if entity != null:
			if tickAssigned[count] == currentTick:
				var target = entity.target
				if target != null:
					var navAgent = entity.navAgent
					var mode = entity.mode
					var gotShot = entity.gotShot
					var SPEED = entity.SPEED
					var accelaration = entity.accelaration
					var velocity = entity.velocity
					if mode == "chase" or gotShot:
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
					elif mode == "attack":
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
		count+=1
	currentTick +=1
	if currentTick >= 20:
		currentTick = 0
	

#@onready var body =$body
#@onready var explosionParticles = preload("res://Particles/enemyExplode.tscn")
#var particleInstance
#@export var navAgent : NavigationAgent3D
#@export var damage = 10
#@export var accelaration = 10
#var target
#var mode : String = "idle"
#var gotShot = false```

and the enemy code is too long so i cant put it here
also here is a clip of the current state of the game

DEVLOG - 08 added an interesting navigation optimization script

i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way
video:https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s
time:13:33(already in link)
how it works?
ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction

so anyways here is the code:
extends Node3D

var tickAssigned = []
var tickCount = []
var currentTick = 0;
var tickTimer = 0.0
const TICK_RATE = 0.025

func _ready() -> void:
	tickAssigned.resize(navObjects.size())
	tickAssigned.fill(0)
	tickCount.resize(20);
	tickCount.fill(0)
	var length = navObjects.size()
	for i in tickAssigned.size():
		tickAssigned[i] = -1
	var num = 20.0 /length
	var current = 0.0
	for i in length:
		if current >= 20:
			current -= 20
		tickAssigned[i] = int(current)
		tickCount[int(current)]+=1
		current += num```
		

# Called every frame. 'delta' is the elapsed time since the previous frame.
```func _process(delta: float) -> void:
	tickTimer +=delta
	if tickTimer < TICK_RATE:
		return
	tickTimer = 0.0
	var tickDelta = TICK_RATE
	var count = 0
	for entity in navObjects:
		if entity != null:
			if tickAssigned[count] == currentTick:
				var target = entity.target
				if target != null:
					var navAgent = entity.navAgent
					var mode = entity.mode
					var gotShot = entity.gotShot
					var SPEED = entity.SPEED
					var accelaration = entity.accelaration
					var velocity = entity.velocity
					if mode == "chase" or gotShot:
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
					elif mode == "attack":
						navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z)
						var dir = (navAgent.get_next_path_position() - entity.global_position).normalized()
						print(entity.name, navAgent.get_next_path_position())
						entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration)
						entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true)
						entity.shouldMove = true
		count+=1
	currentTick +=1
	if currentTick >= 20:
		currentTick = 0
	

#@onready var body =$body
#@onready var explosionParticles = preload("res://Particles/enemyExplode.tscn")
#var particleInstance
#@export var navAgent : NavigationAgent3D
#@export var damage = 10
#@export var accelaration = 10
#var target
#var mode : String = "idle"
#var gotShot = false```

and the enemy code is too long so i cant put it here
also here is a clip of the current state of the game

Replying to @love

1
4
Open comments for this post
Reposted by @love

2h 56m 30s logged

DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level

today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot
AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version

so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that:

	if is_on_floor():
		canWallJump = false
		return
	var veloc = Vector3(velocity.x,velocity.y,velocity.z)
	#var future = self.global_position + veloc
	for i in get_slide_collision_count():
		var collision = get_slide_collision(i)
		if collision.get_normal().y < .3:
			wallNormal = collision.get_normal()
			canWallJump = true
			return
			
	
	if veloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	altVeloc = Vector3(velocity.x,velocity.y,-velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	canWallJump = false```

anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb):



**NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early

DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level

today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot
AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version

so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that:

	if is_on_floor():
		canWallJump = false
		return
	var veloc = Vector3(velocity.x,velocity.y,velocity.z)
	#var future = self.global_position + veloc
	for i in get_slide_collision_count():
		var collision = get_slide_collision(i)
		if collision.get_normal().y < .3:
			wallNormal = collision.get_normal()
			canWallJump = true
			return
			
	
	if veloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	altVeloc = Vector3(velocity.x,velocity.y,-velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	canWallJump = false```

anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb):



**NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early

Replying to @love

1
10
Open comments for this post

2h 56m 30s logged

DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level

today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot
AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version

so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that:

	if is_on_floor():
		canWallJump = false
		return
	var veloc = Vector3(velocity.x,velocity.y,velocity.z)
	#var future = self.global_position + veloc
	for i in get_slide_collision_count():
		var collision = get_slide_collision(i)
		if collision.get_normal().y < .3:
			wallNormal = collision.get_normal()
			canWallJump = true
			return
			
	
	if veloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	altVeloc = Vector3(velocity.x,velocity.y,-velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	canWallJump = false```

anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb):



**NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early

DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level

today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot
AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version

so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that:

	if is_on_floor():
		canWallJump = false
		return
	var veloc = Vector3(velocity.x,velocity.y,velocity.z)
	#var future = self.global_position + veloc
	for i in get_slide_collision_count():
		var collision = get_slide_collision(i)
		if collision.get_normal().y < .3:
			wallNormal = collision.get_normal()
			canWallJump = true
			return
			
	
	if veloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	altVeloc = Vector3(velocity.x,velocity.y,-velocity.z)
	if altVeloc.length() > 0.5:
		var spaceState = get_world_3d().direct_space_state
		var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2)
		ray.exclude = [self.get_rid()]
		var hit = spaceState.intersect_ray(ray)
		if hit and hit.normal.y < .3:
			wallNormal = hit.normal
			canWallJump = true
			return
	
	canWallJump = false```

anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb):



**NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early

Replying to @love

1
10
Open comments for this post
Reposted by @love

1h 24m 2s logged

DEVLOG - 06 added a main menu!
now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows

itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

DEVLOG - 06 added a main menu!
now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows

itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

Replying to @love

1
17
Open comments for this post

1h 24m 2s logged

DEVLOG - 06 added a main menu!
now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows

itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

DEVLOG - 06 added a main menu!
now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows

itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

Replying to @love

1
17
Open comments for this post
Reposted by @love

2h 12m 7s logged

DEVLOG - 05 (it should’ve taken like 30 minutes wth)
i added enemies that chase you and animations to your movements the animations were the easy part…

but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT
anyways here is a clip of the game now and you have to like it

ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do
itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

DEVLOG - 05 (it should’ve taken like 30 minutes wth)
i added enemies that chase you and animations to your movements the animations were the easy part…

but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT
anyways here is a clip of the game now and you have to like it

ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do
itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

Replying to @love

1
18
Open comments for this post

2h 12m 7s logged

DEVLOG - 05 (it should’ve taken like 30 minutes wth)
i added enemies that chase you and animations to your movements the animations were the easy part…

but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT
anyways here is a clip of the game now and you have to like it

ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do
itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

DEVLOG - 05 (it should’ve taken like 30 minutes wth)
i added enemies that chase you and animations to your movements the animations were the easy part…

but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT
anyways here is a clip of the game now and you have to like it

ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do
itch.io:https://idotweaks.itch.io/the-way-to-tealjust-kill

Replying to @love

1
18
Open comments for this post
Reposted by @love

1h 3m 30s logged

DEVLOG - 04 HUGE MILESTONE
movement is now finished with all new momentum logic and added dashing
wait… why wont you just see for your selves?
try out the movement in the link here and tell me if you like it:)
https://idotweaks.itch.io/the-way-to-tealjust-kill
note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs

anyways i have to put an image here so watch my first attempt of a crosshairT_T

DEVLOG - 04 HUGE MILESTONE
movement is now finished with all new momentum logic and added dashing
wait… why wont you just see for your selves?
try out the movement in the link here and tell me if you like it:)
https://idotweaks.itch.io/the-way-to-tealjust-kill
note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs

anyways i have to put an image here so watch my first attempt of a crosshairT_T

Replying to @love

1
67
Open comments for this post

1h 3m 30s logged

DEVLOG - 04 HUGE MILESTONE
movement is now finished with all new momentum logic and added dashing
wait… why wont you just see for your selves?
try out the movement in the link here and tell me if you like it:)
https://idotweaks.itch.io/the-way-to-tealjust-kill
note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs

anyways i have to put an image here so watch my first attempt of a crosshairT_T

DEVLOG - 04 HUGE MILESTONE
movement is now finished with all new momentum logic and added dashing
wait… why wont you just see for your selves?
try out the movement in the link here and tell me if you like it:)
https://idotweaks.itch.io/the-way-to-tealjust-kill
note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs

anyways i have to put an image here so watch my first attempt of a crosshairT_T

Replying to @love

1
67
Open comments for this post
Reposted by @love

26m 46s logged

mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it

(if you are interested in the project go check out my profile:)

mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it

(if you are interested in the project go check out my profile:)

Replying to @love

1
26
Open comments for this post

26m 46s logged

mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it

(if you are interested in the project go check out my profile:)

mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it

(if you are interested in the project go check out my profile:)

Replying to @love

1
26
Open comments for this post
Reposted by @love

39m 57s logged

DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:)

for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video
its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works
also look at those particles(i<3particles)
–please like if you liked it and comment suggestions it really makes me feel better and improve the game

DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:)

for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video
its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works
also look at those particles(i<3particles)
–please like if you liked it and comment suggestions it really makes me feel better and improve the game

Replying to @love

1
23
Open comments for this post

39m 57s logged

DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:)

for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video
its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works
also look at those particles(i<3particles)
–please like if you liked it and comment suggestions it really makes me feel better and improve the game

DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:)

for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video
its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works
also look at those particles(i<3particles)
–please like if you liked it and comment suggestions it really makes me feel better and improve the game

Replying to @love

1
23
Open comments for this post
Reposted by @love

1h 53m 49s logged

DEVLOG - 02 (still day one of the project i just do a lot:)

IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00

added teal footsteps and teal bullet holes to emphasize the mix of blue and green
it was implemented using decals which it is the first time i use them so they arent the greatest

as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon…

so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow”

next devlog will probably be today againT_T i just cant stop working on itttt

DEVLOG - 02 (still day one of the project i just do a lot:)

IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00

added teal footsteps and teal bullet holes to emphasize the mix of blue and green
it was implemented using decals which it is the first time i use them so they arent the greatest

as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon…

so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow”

next devlog will probably be today againT_T i just cant stop working on itttt

Replying to @love

1
26
Open comments for this post

1h 53m 49s logged

DEVLOG - 02 (still day one of the project i just do a lot:)

IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00

added teal footsteps and teal bullet holes to emphasize the mix of blue and green
it was implemented using decals which it is the first time i use them so they arent the greatest

as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon…

so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow”

next devlog will probably be today againT_T i just cant stop working on itttt

DEVLOG - 02 (still day one of the project i just do a lot:)

IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00

added teal footsteps and teal bullet holes to emphasize the mix of blue and green
it was implemented using decals which it is the first time i use them so they arent the greatest

as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon…

so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow”

next devlog will probably be today againT_T i just cant stop working on itttt

Replying to @love

1
26
Open comments for this post
Reposted by @love

19m 30s logged

devlog - 00

today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill)

it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models
for now we will just use this bean with hands

devlog - 00

today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill)

it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models
for now we will just use this bean with hands

Replying to @love

1
154
Open comments for this post
Reposted by @love

54m 11s logged

DEVLOG - 01 – how the way to teal(just kill) calculates sliding

i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end

how it works: if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player

note:if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly

anyway here is a clip of it in action the game is in a newborn stage so no judging!

–CODE TIME–
(I NEVER USE COMMENTS BE GRATEFUL)

	#calculate the position in the future
	var horizontalVel = Vector3(velocity.x,0,velocity.z)
	var future = feet.global_position + horizontalVel
	
	#raycast prep
	var spaceState = get_world_3d().direct_space_state
	#starting above the future pos in case of upward slopes
	var rayStart = future + Vector3(0,1,0)
	var rayEnd = future + Vector3(0,-5,0)
	
	#setUp rayCast
	var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd)
	#so we dont hit ourselves xd
	rayQuery.exclude = [self.get_rid()]
	#now lets shoot this bad boyyy
	var intersect = spaceState.intersect_ray(rayQuery)
	
	#results time!!!!
	if intersect:
		#we want to return the distance from now to the future
		return feet.global_position.y - intersect.position.y
	else:
		#if it hits nothing we are fucking flying lets return so fucking much
		return 0```

DEVLOG - 01 – how the way to teal(just kill) calculates sliding

i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end

how it works: if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player

note:if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly

anyway here is a clip of it in action the game is in a newborn stage so no judging!

–CODE TIME–
(I NEVER USE COMMENTS BE GRATEFUL)

	#calculate the position in the future
	var horizontalVel = Vector3(velocity.x,0,velocity.z)
	var future = feet.global_position + horizontalVel
	
	#raycast prep
	var spaceState = get_world_3d().direct_space_state
	#starting above the future pos in case of upward slopes
	var rayStart = future + Vector3(0,1,0)
	var rayEnd = future + Vector3(0,-5,0)
	
	#setUp rayCast
	var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd)
	#so we dont hit ourselves xd
	rayQuery.exclude = [self.get_rid()]
	#now lets shoot this bad boyyy
	var intersect = spaceState.intersect_ray(rayQuery)
	
	#results time!!!!
	if intersect:
		#we want to return the distance from now to the future
		return feet.global_position.y - intersect.position.y
	else:
		#if it hits nothing we are fucking flying lets return so fucking much
		return 0```

Replying to @love

1
11
Open comments for this post

54m 11s logged

DEVLOG - 01 – how the way to teal(just kill) calculates sliding

i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end

how it works: if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player

note:if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly

anyway here is a clip of it in action the game is in a newborn stage so no judging!

–CODE TIME–
(I NEVER USE COMMENTS BE GRATEFUL)

	#calculate the position in the future
	var horizontalVel = Vector3(velocity.x,0,velocity.z)
	var future = feet.global_position + horizontalVel
	
	#raycast prep
	var spaceState = get_world_3d().direct_space_state
	#starting above the future pos in case of upward slopes
	var rayStart = future + Vector3(0,1,0)
	var rayEnd = future + Vector3(0,-5,0)
	
	#setUp rayCast
	var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd)
	#so we dont hit ourselves xd
	rayQuery.exclude = [self.get_rid()]
	#now lets shoot this bad boyyy
	var intersect = spaceState.intersect_ray(rayQuery)
	
	#results time!!!!
	if intersect:
		#we want to return the distance from now to the future
		return feet.global_position.y - intersect.position.y
	else:
		#if it hits nothing we are fucking flying lets return so fucking much
		return 0```

DEVLOG - 01 – how the way to teal(just kill) calculates sliding

i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end

how it works: if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player

note:if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly

anyway here is a clip of it in action the game is in a newborn stage so no judging!

–CODE TIME–
(I NEVER USE COMMENTS BE GRATEFUL)

	#calculate the position in the future
	var horizontalVel = Vector3(velocity.x,0,velocity.z)
	var future = feet.global_position + horizontalVel
	
	#raycast prep
	var spaceState = get_world_3d().direct_space_state
	#starting above the future pos in case of upward slopes
	var rayStart = future + Vector3(0,1,0)
	var rayEnd = future + Vector3(0,-5,0)
	
	#setUp rayCast
	var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd)
	#so we dont hit ourselves xd
	rayQuery.exclude = [self.get_rid()]
	#now lets shoot this bad boyyy
	var intersect = spaceState.intersect_ray(rayQuery)
	
	#results time!!!!
	if intersect:
		#we want to return the distance from now to the future
		return feet.global_position.y - intersect.position.y
	else:
		#if it hits nothing we are fucking flying lets return so fucking much
		return 0```

Replying to @love

1
11
Open comments for this post

19m 30s logged

devlog - 00

today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill)

it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models
for now we will just use this bean with hands

devlog - 00

today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill)

it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models
for now we will just use this bean with hands

Replying to @love

1
154

Followers

Loading…