added Graphics and sound Effects and more overhauls

This commit is contained in:
Exobyt 2025-08-03 20:56:32 +02:00
parent c887a2168c
commit b9d4288900
214 changed files with 3378 additions and 198 deletions

View file

@ -0,0 +1,90 @@
shader_type canvas_item;
render_mode unshaded;
uniform int iterations = 20;
uniform float formuparam = 1.00;
uniform int volsteps = 20;
uniform float stepsize = 0.1;
uniform float zoom = 0.800;
uniform float tile = 0.5;
uniform float speed = 0.001;
uniform float brightness = 0.002;
uniform float darkmatter = 0.100;
uniform float distfading = 0.650;
uniform float saturation = 0.750;
uniform vec2 iResolution = vec2(192, 192);
uniform vec2 iMouse = vec2(0,0);
float SCurve (float value) {
if (value < 0.5)
{
return value * value * value * value * value * 16.0;
}
value -= 1.0;
return value * value * value * value * value * 16.0 + 1.0;
}
void fragment()
{
//get coords and direction
vec2 uv=FRAGCOORD.xy/iResolution.xy-.5;
uv.y*=iResolution.y/iResolution.x;
vec3 dir=vec3(uv*zoom,1.);
float time=TIME*speed+.25;
//mouse rotation
float a1=0.5+iMouse.x/iResolution.x*2.;
float a2=0.8+iMouse.y/iResolution.y*2.;
mat2 rot1=mat2(vec2(cos(a1),sin(a1)),vec2(-sin(a1),cos(a1)));
mat2 rot2=mat2(vec2(cos(a2),sin(a2)),vec2(-sin(a2),cos(a2)));
dir.xy*=rot1;
dir.xz*=rot2;
vec3 from=vec3(1.0,0.5,0.5);
from-=vec3(0.0,time,0.0);
from.xz*=rot1;
from.xy*=rot2;
//volumetric rendering
float s=0.1,fade=1.;
vec3 v=vec3(0.);
for (int r=0; r<volsteps; r++) {
vec3 p=from+s*dir*0.5;
p = abs(vec3(tile)-mod(p,vec3(tile*2.))); // tiling fold
float pa,a=pa=0.;
for (int i=0; i<iterations; i++) {
p=abs(p)/dot(p,p)-formuparam; // the magic formula
a+=abs(length(p)-pa); // absolute sum of average change
pa=length(p);
}
float dm=max(0.,darkmatter-a*a*.001); //dark matter
a = pow(a, 2.3); // add contrast
if (r>6) fade*=1.-dm; // dark matter, don't render near
//v+=vec3(dm,dm*.5,0.);
v+=fade;
v+=vec3(s,s*s,s*s*s*s)*a*brightness*fade; // coloring based on distance
fade*=distfading; // distance fading
s+=stepsize;
}
v=mix(vec3(length(v)),v,saturation); //color adjust
vec4 C = vec4(v*.01,1.);
C.r = pow(C.r, 0.35);
C.g = pow(C.g, 0.36);
C.b = pow(C.b, 0.38);
vec4 L = C;
COLOR.r = mix(L.r, SCurve(C.r), 0.7);
COLOR.g = mix(L.g, SCurve(C.g), 1.0);
COLOR.b = mix(L.b, SCurve(C.b), 0.2);
}

View file

@ -0,0 +1 @@
uid://b23078hfmmpc8

View file

@ -1,50 +1,69 @@
extends Node2D
@onready var obstaclesSpawnTimer = $obstaclesSpawnTimer
@onready var timeGhost = preload("res://scenes/spaceShip/timeGhost/timeghost.tscn")
@onready var minigun = preload("res://scenes/weapon/minigun/minigun.tscn")
@onready var railgun = preload("res://scenes/weapon/railgun/railgun.tscn")
@onready var shotgun = preload("res://scenes/weapon/shotgun/shotgun.tscn")
@onready var shotgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/shotgunEnemy/shotgunEnemy.tscn")
@onready var minigunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/minigunEnemy/minigunEnemy.tscn")
@onready var railgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/railgunEnemy/railgunEnemy.tscn")
@onready var meteor: PackedScene = preload("res://scenes/obstacle/meteor/meteor.tscn")
@onready var radiation: PackedScene = preload("res://scenes/obstacle/radiation/radiation.tscn")
@onready var obstaclePool = $obstaclePool
@onready var enemyPool = $enemyPool
@onready var enemySpawnTimer = $spawnTimer/enemySpawnTimer
@onready var obstaclesSpawnTimer = $spawnTimer/obstaclesSpawnTimer
@onready var enemy: PackedScene = preload("res://scenes/spaceShip/enemy/enemy.tscn")
@onready var obstacle: PackedScene = preload("res://scenes/obstacle/meteor/meteor.tscn")
@onready var endScreen: PackedScene = preload("res://scenes/UI/loseScreen/endScreen.tscn")
var minigunRatio = 5
var railgunRatio = 10
var endedRound = false
@onready var player = $Player
func _ready() -> void:
obstaclesSpawnTimer.autostart = true
obstaclesSpawnTimer.start()
Globals.setPlayer(player)
player.changeWeapon(shotgun)
Globals.waveComplete.connect(nextWave)
player.destroyed.connect(endRound)
nextWave()
for i in range(1, 10):
addGhost()
func addGhost():
var ghost = timeGhost.instantiate()
add_child(ghost)
player.addTimeGhost(ghost)
func spawnObstacle(_obstacle: PackedScene, _position: Vector2):
var newObstacle = _obstacle.instantiate()
newObstacle.global_position = _position
obstaclePool.add_child(newObstacle)
if get_tree().get_first_node_in_group("obstaclePool") != null:
get_tree().get_first_node_in_group("obstaclePool").add_child(newObstacle)
func spawnEnemy(_enemy: PackedScene, _position: Vector2):
Globals.enemyCount += 1
var newEnemy = _enemy.instantiate()
newEnemy.global_position = _position
enemyPool.add_child(newEnemy)
if get_tree().get_first_node_in_group("enemyPool") != null:
get_tree().get_first_node_in_group("enemyPool").add_child(newEnemy)
func _on_enemy_spawn_timer_timeout() -> void:
spawnEnemy(enemy, Globals.getPlayer().getRandomSpawnPointPosition())
for i in enemyPool.get_children():
i.changeWeapon(shotgun)
#newEnemy.destroyed.connect(startEnemySpawnTimer)
func _on_obstacles_spawn_timer_timeout() -> void:
spawnObstacle(obstacle, Globals.getPlayer().getRandomSpawnPointPosition())
var rng = RandomNumberGenerator.new()
var number = rng.randi_range(0, 10)
if number == 10:
if Globals.getPlayer() != null:
spawnObstacle(radiation, Globals.getPlayer().getRandomSpawnPointPosition())
else:
if Globals.getPlayer() != null:
spawnObstacle(meteor, Globals.getPlayer().getRandomSpawnPointPosition())
func nextWave():
Globals.enemyCount = 0
Globals.currentWave += 1
if Globals.getPlayer() != null:
for i in range(1, Globals.currentWave+1):
if i % railgunRatio == 0:
spawnEnemy(railgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
elif i % minigunRatio == 0:
spawnEnemy(minigunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
else:
spawnEnemy(shotgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
func endRound():
if not endedRound:
endedRound = true
get_tree().get_root().add_child(endScreen.instantiate())
self.queue_free()

View file

@ -2,38 +2,26 @@
[ext_resource type="Script" uid="uid://cvoco1axom40" path="res://scenes/main/main.gd" id="1_kdt4m"]
[ext_resource type="PackedScene" uid="uid://bmc2exqutt6vu" path="res://scenes/spaceShip/player/player.tscn" id="2_ia3nl"]
[ext_resource type="PackedScene" uid="uid://dm0rd88xd5m7k" path="res://scenes/bullet/bulletPool.tscn" id="3_2s0fe"]
[ext_resource type="Texture2D" uid="uid://cfwyw1sr6x2np" path="res://icon.svg" id="4_r8qeh"]
[ext_resource type="Texture2D" uid="uid://beyhkcr2uvmc7" path="res://assets/space.png" id="2_l3cfh"]
[ext_resource type="PackedScene" uid="uid://dm0rd88xd5m7k" path="res://scenes/pools/pools.tscn" id="3_2s0fe"]
[node name="main" type="Node2D"]
script = ExtResource("1_kdt4m")
[node name="obstaclesSpawnTimer" type="Timer" parent="."]
autostart = true
[node name="TextureRect" type="TextureRect" parent="."]
modulate = Color(0.605274, 0.605274, 0.605274, 1)
offset_left = -11272.0
offset_top = -6736.0
offset_right = 12152.0
offset_bottom = 7008.0
texture = ExtResource("4_r8qeh")
offset_left = -147424.0
offset_top = -96136.0
offset_right = 176160.0
offset_bottom = 137080.0
texture = ExtResource("2_l3cfh")
stretch_mode = 1
[node name="Pools" parent="." instance=ExtResource("3_2s0fe")]
[node name="Player" parent="." instance=ExtResource("2_ia3nl")]
spawnDistance = 1000
[node name="bulletPool" parent="." instance=ExtResource("3_2s0fe")]
[node name="obstaclePool" type="Node2D" parent="."]
[node name="enemyPool" type="Node2D" parent="."]
[node name="spawnTimer" type="Node" parent="."]
[node name="enemySpawnTimer" type="Timer" parent="spawnTimer"]
wait_time = 10.0
autostart = true
[node name="obstaclesSpawnTimer" type="Timer" parent="spawnTimer"]
autostart = true
[connection signal="timeout" from="spawnTimer/enemySpawnTimer" to="." method="_on_enemy_spawn_timer_timeout"]
[connection signal="timeout" from="spawnTimer/obstaclesSpawnTimer" to="." method="_on_obstacles_spawn_timer_timeout"]
[connection signal="timeout" from="obstaclesSpawnTimer" to="." method="_on_obstacles_spawn_timer_timeout"]