Added Alexi Village map, added Alexi sky to multiple maps, map selection is a dropdown now.
BIN
2DArt/host/mapIcons/alexi-village.png
Normal file
After Width: | Height: | Size: 602 KiB |
34
2DArt/host/mapIcons/alexi-village.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ckhwk5qftif2t"
|
||||
path="res://.godot/imported/alexi-village.png-34808ca6ec452dcf0fd1c889eacd44b4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://2DArt/host/mapIcons/alexi-village.png"
|
||||
dest_files=["res://.godot/imported/alexi-village.png-34808ca6ec452dcf0fd1c889eacd44b4.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 963 KiB |
BIN
music/Dreamy-Hollow.mp3
Normal file
19
music/Dreamy-Hollow.mp3.import
Normal file
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://2xhe01x623u7"
|
||||
path="res://.godot/imported/Dreamy-Hollow.mp3-4361062f9b3d8c98b8f6803c9c240ca7.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://music/Dreamy-Hollow.mp3"
|
||||
dest_files=["res://.godot/imported/Dreamy-Hollow.mp3-4361062f9b3d8c98b8f6803c9c240ca7.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
music/Dungeons-and-Tunnels.mp3
Normal file
19
music/Dungeons-and-Tunnels.mp3.import
Normal file
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://rnv7yug8h57e"
|
||||
path="res://.godot/imported/Dungeons-and-Tunnels.mp3-15b2cfa026f1c36f479dd374df002889.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://music/Dungeons-and-Tunnels.mp3"
|
||||
dest_files=["res://.godot/imported/Dungeons-and-Tunnels.mp3-15b2cfa026f1c36f479dd374df002889.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
music/Forward-Assault.mp3
Normal file
19
music/Forward-Assault.mp3.import
Normal file
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://873wo4gwyncj"
|
||||
path="res://.godot/imported/Forward-Assault.mp3-089f7dfd2e163527cc145acaa2bfd6d1.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://music/Forward-Assault.mp3"
|
||||
dest_files=["res://.godot/imported/Forward-Assault.mp3-089f7dfd2e163527cc145acaa2bfd6d1.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
music/Frosty-Nights.mp3
Normal file
19
music/Frosty-Nights.mp3.import
Normal file
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://crfmcqq7cw5av"
|
||||
path="res://.godot/imported/Frosty-Nights.mp3-01d42bd751cf908bbf1f0193cf6be27f.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://music/Frosty-Nights.mp3"
|
||||
dest_files=["res://.godot/imported/Frosty-Nights.mp3-01d42bd751cf908bbf1f0193cf6be27f.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
BIN
objects/alexi-village/village.glb
Normal file
34
objects/alexi-village/village.glb.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://fjxb74n2v68b"
|
||||
path="res://.godot/imported/village.glb-9401c7e007188b9deb4c07ef9a3e0352.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village.glb"
|
||||
dest_files=["res://.godot/imported/village.glb-9401c7e007188b9deb4c07ef9a3e0352.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
BIN
objects/alexi-village/village_Brick2.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
38
objects/alexi-village/village_Brick2.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://el0oqi62xtuq"
|
||||
path.s3tc="res://.godot/imported/village_Brick2.png-3980f3592113990fa33978639f56a05f.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "3694da0eec5a69bb981a79730084635f"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_Brick2.png"
|
||||
dest_files=["res://.godot/imported/village_Brick2.png-3980f3592113990fa33978639f56a05f.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_Grass3.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
38
objects/alexi-village/village_Grass3.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cnshfw7a8x5wu"
|
||||
path.s3tc="res://.godot/imported/village_Grass3.png-d7462d308a69f92da5242c475759d601.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "6fc7f277d0dfd41182161d91a4228f75"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_Grass3.png"
|
||||
dest_files=["res://.godot/imported/village_Grass3.png-d7462d308a69f92da5242c475759d601.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_Grass3Dirt.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
38
objects/alexi-village/village_Grass3Dirt.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d3rf8jjr3ei13"
|
||||
path.s3tc="res://.godot/imported/village_Grass3Dirt.png-17d8ca59bda291fc6eb45d766856f487.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "0d36d86c8130973b1b357162125fc791"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_Grass3Dirt.png"
|
||||
dest_files=["res://.godot/imported/village_Grass3Dirt.png-17d8ca59bda291fc6eb45d766856f487.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_Rock.png
Normal file
After Width: | Height: | Size: 1 KiB |
38
objects/alexi-village/village_Rock.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dsgavvxpuxmok"
|
||||
path.s3tc="res://.godot/imported/village_Rock.png-a9f5af67ad8da55fbd907c6691f6fc59.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "e22f5219808b01157f2e893a6d8bfde0"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_Rock.png"
|
||||
dest_files=["res://.godot/imported/village_Rock.png-a9f5af67ad8da55fbd907c6691f6fc59.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_bedcover.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
38
objects/alexi-village/village_bedcover.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bcmq1xhl5tckq"
|
||||
path.s3tc="res://.godot/imported/village_bedcover.png-d92d0f951240034f268c7ddd28c5695e.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "30ecdc8658d88416df879904ee1a4cbe"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_bedcover.png"
|
||||
dest_files=["res://.godot/imported/village_bedcover.png-d92d0f951240034f268c7ddd28c5695e.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_bedsheet.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
38
objects/alexi-village/village_bedsheet.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d1ttxt355obhg"
|
||||
path.s3tc="res://.godot/imported/village_bedsheet.png-3c90f7eab4e1a190f441e191d4e80dd3.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a08669467bf4d2371bf97cb93c83dd73"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_bedsheet.png"
|
||||
dest_files=["res://.godot/imported/village_bedsheet.png-3c90f7eab4e1a190f441e191d4e80dd3.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_clothe.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
38
objects/alexi-village/village_clothe.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dddg5shdy3c01"
|
||||
path.s3tc="res://.godot/imported/village_clothe.png-11e0a8b8276f2da23435f1fb2b85c424.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a7f532631160f23bf50ccf94257a606c"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_clothe.png"
|
||||
dest_files=["res://.godot/imported/village_clothe.png-11e0a8b8276f2da23435f1fb2b85c424.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_flag.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
38
objects/alexi-village/village_flag.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://s14gn77xidg6"
|
||||
path.s3tc="res://.godot/imported/village_flag.png-b9efe5b1d64a269bea091d96ae197db0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "967eda04c383b389c45e392d1fa7010e"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_flag.png"
|
||||
dest_files=["res://.godot/imported/village_flag.png-b9efe5b1d64a269bea091d96ae197db0.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_leaves.png
Normal file
After Width: | Height: | Size: 5 KiB |
38
objects/alexi-village/village_leaves.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xw4xhuln4xh6"
|
||||
path.s3tc="res://.godot/imported/village_leaves.png-aa8ec2fb2df0399d14e393f2b581cc44.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "850f7cc70bc2cfe2191a9a3de1bb9fd0"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_leaves.png"
|
||||
dest_files=["res://.godot/imported/village_leaves.png-aa8ec2fb2df0399d14e393f2b581cc44.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_lightglowRED.png
Normal file
After Width: | Height: | Size: 520 B |
38
objects/alexi-village/village_lightglowRED.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c5m03f48tyju5"
|
||||
path.s3tc="res://.godot/imported/village_lightglowRED.png-e9a1853137388c3753db88a6f0ddead9.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "70f508659ebd6f409c23c419c3e313cd"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_lightglowRED.png"
|
||||
dest_files=["res://.godot/imported/village_lightglowRED.png-e9a1853137388c3753db88a6f0ddead9.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_other.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
38
objects/alexi-village/village_other.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bxxshmliqec72"
|
||||
path.s3tc="res://.godot/imported/village_other.png-9f7096f9fbc95c6fb8bda676b5bb9624.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "17b698bca40328008a83b005c6a1951f"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_other.png"
|
||||
dest_files=["res://.godot/imported/village_other.png-9f7096f9fbc95c6fb8bda676b5bb9624.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_path1.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
38
objects/alexi-village/village_path1.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://2w3sjt8nfdss"
|
||||
path.s3tc="res://.godot/imported/village_path1.png-b141877cb3e248788bb687761f5d7d8b.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "f32506859aba7dea1d3e1f3e392df102"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_path1.png"
|
||||
dest_files=["res://.godot/imported/village_path1.png-b141877cb3e248788bb687761f5d7d8b.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_pathend.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
38
objects/alexi-village/village_pathend.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1au3wl67jftw"
|
||||
path.s3tc="res://.godot/imported/village_pathend.png-da02ec245ba0f6a5e302319cea413f59.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "7f0dbbe4cadd8db46fcb7b306ff3c733"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_pathend.png"
|
||||
dest_files=["res://.godot/imported/village_pathend.png-da02ec245ba0f6a5e302319cea413f59.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_pillar2.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
38
objects/alexi-village/village_pillar2.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c360mw2oipflh"
|
||||
path.s3tc="res://.godot/imported/village_pillar2.png-4e00ca64ecb29d2ea2645bb28f97af2e.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "350d013aa2916e010b814dbe4d171c2a"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_pillar2.png"
|
||||
dest_files=["res://.godot/imported/village_pillar2.png-4e00ca64ecb29d2ea2645bb28f97af2e.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_stairs1.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
38
objects/alexi-village/village_stairs1.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dixmr4qco21bc"
|
||||
path.s3tc="res://.godot/imported/village_stairs1.png-389547401ab3b32366e24870d78798b3.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "1022958f0a51292c0c3fcdb6df5745fb"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_stairs1.png"
|
||||
dest_files=["res://.godot/imported/village_stairs1.png-389547401ab3b32366e24870d78798b3.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_windowinside.png
Normal file
After Width: | Height: | Size: 967 B |
38
objects/alexi-village/village_windowinside.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dnw5p55o7ip7k"
|
||||
path.s3tc="res://.godot/imported/village_windowinside.png-c6011ee4b216a39f0663b1ef0bb9d57a.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "fb1fa900b992d28f4427c4f40c94ea14"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_windowinside.png"
|
||||
dest_files=["res://.godot/imported/village_windowinside.png-c6011ee4b216a39f0663b1ef0bb9d57a.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_windowoutside.png
Normal file
After Width: | Height: | Size: 969 B |
38
objects/alexi-village/village_windowoutside.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bsi8reg0agi0g"
|
||||
path.s3tc="res://.godot/imported/village_windowoutside.png-b0bee85c1f416e79ee1dce374eb87c91.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "23ff378783868506399b17efdb26ddb2"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_windowoutside.png"
|
||||
dest_files=["res://.godot/imported/village_windowoutside.png-b0bee85c1f416e79ee1dce374eb87c91.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_wood.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
38
objects/alexi-village/village_wood.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://s2tnfsv64tfx"
|
||||
path.s3tc="res://.godot/imported/village_wood.png-b3d07d8a65dc507a66a0b8c85aa26cea.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "1b752781a5cd3629c3aba694f8e797ea"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_wood.png"
|
||||
dest_files=["res://.godot/imported/village_wood.png-b3d07d8a65dc507a66a0b8c85aa26cea.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_woodenfence.png
Normal file
After Width: | Height: | Size: 251 B |
38
objects/alexi-village/village_woodenfence.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://8ga1lbuomue6"
|
||||
path.s3tc="res://.godot/imported/village_woodenfence.png-0962bbc13f07c2757dfd8c66fc93ee59.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "5e4269bcb5989ea0dbe2cb9e9385071c"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_woodenfence.png"
|
||||
dest_files=["res://.godot/imported/village_woodenfence.png-0962bbc13f07c2757dfd8c66fc93ee59.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
objects/alexi-village/village_woodplanks.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
38
objects/alexi-village/village_woodplanks.png.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ihy3q0qurudr"
|
||||
path.s3tc="res://.godot/imported/village_woodplanks.png-17671a5c77f47288d040abb30826f779.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "eafb138b070d0e44251956df60822c1d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://objects/alexi-village/village_woodplanks.png"
|
||||
dest_files=["res://.godot/imported/village_woodplanks.png-17671a5c77f47288d040abb30826f779.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
48
scenes/alexi-village-map.tscn
Normal file
162
scenes/alexi-village.tscn
Normal file
|
@ -0,0 +1,162 @@
|
|||
[gd_scene load_steps=14 format=3 uid="uid://3ai8eha0vqcs"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c6fjxgsvo1ywl" path="res://scenes/alexi-village-map.tscn" id="1_kyhnp"]
|
||||
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="1_o0eha"]
|
||||
[ext_resource type="Script" path="res://scripts/maps/alexi-village.gd" id="1_rq7l4"]
|
||||
[ext_resource type="PackedScene" uid="uid://buyvavyuwmccw" path="res://joystick/virtual_joystick.tscn" id="3_j88gu"]
|
||||
|
||||
[sub_resource type="Shader" id="Shader_cg7kc"]
|
||||
code = "
|
||||
// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's ProceduralSkyMaterial.
|
||||
|
||||
shader_type sky;
|
||||
render_mode use_debanding;
|
||||
|
||||
uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0);
|
||||
uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float sky_curve : hint_range(0, 1) = 0.15;
|
||||
uniform float sky_energy = 1.0; // In Lux.
|
||||
uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black;
|
||||
uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0);
|
||||
uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float ground_curve : hint_range(0, 1) = 0.02;
|
||||
uniform float ground_energy = 1.0;
|
||||
uniform float sun_angle_max = 30.0;
|
||||
uniform float sun_curve : hint_range(0, 1) = 0.15;
|
||||
|
||||
uniform sampler2D cloud_texture;
|
||||
uniform sampler2D cloud_texture2;
|
||||
uniform vec2 cloud_direction;
|
||||
uniform vec2 cloud_direction2;
|
||||
uniform vec2 cloud_scale;
|
||||
uniform float cloud_distance;
|
||||
uniform float cloud_speed;
|
||||
uniform float cloud_speed2;
|
||||
|
||||
void sky() {
|
||||
float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));
|
||||
float c = (1.0 - v_angle / (PI * 0.5));
|
||||
vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0));
|
||||
sky *= sky_energy;
|
||||
|
||||
if (LIGHT0_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT0_SIZE) {
|
||||
sky = LIGHT0_COLOR * LIGHT0_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE);
|
||||
sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT1_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT1_SIZE) {
|
||||
sky = LIGHT1_COLOR * LIGHT1_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE);
|
||||
sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT2_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT2_SIZE) {
|
||||
sky = LIGHT2_COLOR * LIGHT2_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE);
|
||||
sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT3_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT3_SIZE) {
|
||||
sky = LIGHT3_COLOR * LIGHT3_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE);
|
||||
sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
vec4 sky_cover_texture = texture(sky_cover, SKY_COORDS);
|
||||
sky += (sky_cover_texture.rgb * sky_cover_modulate.rgb) * sky_cover_texture.a * sky_cover_modulate.a * sky_energy;
|
||||
|
||||
c = (v_angle - (PI * 0.5)) / (PI * 0.5);
|
||||
vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0));
|
||||
ground *= ground_energy;
|
||||
|
||||
vec2 sky_uv = EYEDIR.xz / EYEDIR.y;
|
||||
vec3 clouds = texture(cloud_texture, sky_uv * cloud_scale + TIME * cloud_direction * cloud_speed).rgb - texture(cloud_texture2, sky_uv * cloud_scale + TIME * cloud_direction2 * cloud_speed2).rgb;
|
||||
clouds = clouds - smoothstep(0.0, EYEDIR.y, cloud_distance);
|
||||
clouds = clamp(clouds,0,1);
|
||||
sky += clouds;
|
||||
|
||||
COLOR = mix(ground, sky, step(0.0, EYEDIR.y));
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_6glal"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_ovvby"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_6glal")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_3hqdm"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_1uff7"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_krh1g"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_3hqdm")
|
||||
noise = SubResource("FastNoiseLite_1uff7")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v3oi0"]
|
||||
shader = SubResource("Shader_cg7kc")
|
||||
shader_parameter/sky_top_color = Color(0.333333, 0.733333, 0.862745, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.556863, 0.8, 0.862745, 1)
|
||||
shader_parameter/sky_curve = 0.15
|
||||
shader_parameter/sky_energy = 1.0
|
||||
shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_bottom_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_horizon_color = Color(0.701961, 0.819608, 0.866667, 1)
|
||||
shader_parameter/ground_curve = 0.02
|
||||
shader_parameter/ground_energy = 1.0
|
||||
shader_parameter/sun_angle_max = 0.523599
|
||||
shader_parameter/sun_curve = 0.15
|
||||
shader_parameter/cloud_direction = Vector2(-1, 1)
|
||||
shader_parameter/cloud_direction2 = Vector2(1, -1)
|
||||
shader_parameter/cloud_scale = Vector2(0.05, 0.05)
|
||||
shader_parameter/cloud_distance = -0.025
|
||||
shader_parameter/cloud_speed = 0.005
|
||||
shader_parameter/cloud_speed2 = 0.004
|
||||
shader_parameter/cloud_texture = SubResource("NoiseTexture2D_ovvby")
|
||||
shader_parameter/cloud_texture2 = SubResource("NoiseTexture2D_krh1g")
|
||||
|
||||
[sub_resource type="Sky" id="Sky_1kp45"]
|
||||
sky_material = SubResource("ShaderMaterial_v3oi0")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_3dnl2"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_1kp45")
|
||||
|
||||
[node name="Alexi-village" type="Node3D"]
|
||||
script = ExtResource("1_rq7l4")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_3dnl2")
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("1_o0eha")]
|
||||
|
||||
[node name="village" parent="." instance=ExtResource("1_kyhnp")]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.0034906, -0.94887, 0.315647, 0, 0.315649, 0.948876, -0.999994, 0.00331215, -0.00110181, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="Virtual joystick" parent="." instance=ExtResource("3_j88gu")]
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://cv5bctupikqe7"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://cv5bctupikqe7"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/host.gd" id="1_r5rkm"]
|
||||
[ext_resource type="Texture2D" uid="uid://b8hvwlbkrib4k" path="res://2DArt/Main Menu/PlayScreenHOST.png" id="2_s15iu"]
|
||||
|
@ -6,6 +6,7 @@
|
|||
[ext_resource type="Texture2D" uid="uid://br7n6qfnfpm4v" path="res://2DArt/host/mapIcons/islands.png" id="4_gvop1"]
|
||||
[ext_resource type="Texture2D" uid="uid://6g3ltm1o5q38" path="res://2DArt/host/mapIcons/forest.png" id="5_4jx7h"]
|
||||
[ext_resource type="Texture2D" uid="uid://888gbreh0kwg" path="res://2DArt/host/mapIcons/toyfactory.png" id="6_y4i2t"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckhwk5qftif2t" path="res://2DArt/host/mapIcons/alexi-village.png" id="7_10b3n"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xhmtq"]
|
||||
|
||||
|
@ -57,6 +58,7 @@ offset_bottom = 202.0
|
|||
text = "MAP SELECTION"
|
||||
|
||||
[node name="playground" type="Button" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = 646.0
|
||||
offset_top = 206.0
|
||||
|
@ -64,22 +66,6 @@ offset_right = 797.0
|
|||
offset_bottom = 241.0
|
||||
text = "Toyland"
|
||||
|
||||
[node name="islandsButton" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 646.0
|
||||
offset_top = 249.0
|
||||
offset_right = 797.0
|
||||
offset_bottom = 284.0
|
||||
text = "Islands"
|
||||
|
||||
[node name="forrestButton" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 646.0
|
||||
offset_top = 291.0
|
||||
offset_right = 797.0
|
||||
offset_bottom = 326.0
|
||||
text = "Forest"
|
||||
|
||||
[node name="portBox" type="LineEdit" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 726.0
|
||||
|
@ -223,9 +209,15 @@ texture = ExtResource("5_4jx7h")
|
|||
[node name="Toyfactory" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(408, 287)
|
||||
scale = Vector2(0.10025, 0.10025)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("6_y4i2t")
|
||||
|
||||
[node name="Alexi-village" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(408, 287)
|
||||
scale = Vector2(0.2, 0.2)
|
||||
texture = ExtResource("7_10b3n")
|
||||
|
||||
[node name="Label2" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 351.0
|
||||
|
@ -279,18 +271,15 @@ offset_right = 725.0
|
|||
offset_bottom = 493.0
|
||||
text = "Time (mins):"
|
||||
|
||||
[node name="toyfactoryButton" type="Button" parent="."]
|
||||
[node name="mapSelectionButton" type="OptionButton" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 646.0
|
||||
offset_top = 332.0
|
||||
offset_top = 206.0
|
||||
offset_right = 797.0
|
||||
offset_bottom = 367.0
|
||||
text = "Toy Factory"
|
||||
offset_bottom = 241.0
|
||||
|
||||
[connection signal="pressed" from="close" to="." method="_on_close_pressed"]
|
||||
[connection signal="pressed" from="playground" to="." method="_on_playground_pressed"]
|
||||
[connection signal="pressed" from="islandsButton" to="." method="_on_islands_pressed"]
|
||||
[connection signal="pressed" from="forrestButton" to="." method="_on_forrest_button_pressed"]
|
||||
[connection signal="pressed" from="startButton" to="." method="_on_start_button_pressed"]
|
||||
[connection signal="pressed" from="joinButton" to="." method="_on_join_button_pressed"]
|
||||
[connection signal="text_changed" from="playerNameBox" to="." method="_on_player_name_box_text_changed"]
|
||||
|
@ -301,4 +290,4 @@ text = "Toy Factory"
|
|||
[connection signal="button_down" from="GamemodeRunner" to="." method="_on_gamemode_runner_button_down"]
|
||||
[connection signal="button_down" from="GamemodeTTT" to="." method="_on_gamemode_ttt_button_down"]
|
||||
[connection signal="text_changed" from="roundTimer" to="." method="_on_round_timer_text_changed"]
|
||||
[connection signal="pressed" from="toyfactoryButton" to="." method="_on_toyfactory_button_pressed"]
|
||||
[connection signal="item_selected" from="mapSelectionButton" to="." method="_on_map_selection_button_item_selected"]
|
||||
|
|
|
@ -1,25 +1,149 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://bartuuv8bwyjg"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://bartuuv8bwyjg"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/maps/islands.gd" id="1_3oilq"]
|
||||
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="2_2mo4q"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmrooias7kpru" path="res://scenes/islands-map.tscn" id="3_neuu1"]
|
||||
[ext_resource type="PackedScene" uid="uid://buyvavyuwmccw" path="res://joystick/virtual_joystick.tscn" id="4_03mxr"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_m1tut"]
|
||||
sky_top_color = Color(1, 0.509804, 0.384314, 1)
|
||||
sky_horizon_color = Color(0.572549, 0.427451, 0.380392, 1)
|
||||
sky_energy_multiplier = 2.0
|
||||
ground_horizon_color = Color(0.8, 0.669701, 0.629328, 1)
|
||||
ground_curve = 1.00427
|
||||
[sub_resource type="Shader" id="Shader_6rtqo"]
|
||||
code = "
|
||||
// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's ProceduralSkyMaterial.
|
||||
|
||||
[sub_resource type="Sky" id="Sky_iaa40"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_m1tut")
|
||||
shader_type sky;
|
||||
render_mode use_debanding;
|
||||
|
||||
[sub_resource type="Environment" id="Environment_fx5b2"]
|
||||
uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0);
|
||||
uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float sky_curve : hint_range(0, 1) = 0.15;
|
||||
uniform float sky_energy = 1.0; // In Lux.
|
||||
uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black;
|
||||
uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0);
|
||||
uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float ground_curve : hint_range(0, 1) = 0.02;
|
||||
uniform float ground_energy = 1.0;
|
||||
uniform float sun_angle_max = 30.0;
|
||||
uniform float sun_curve : hint_range(0, 1) = 0.15;
|
||||
|
||||
uniform sampler2D cloud_texture;
|
||||
uniform sampler2D cloud_texture2;
|
||||
uniform vec2 cloud_direction;
|
||||
uniform vec2 cloud_direction2;
|
||||
uniform vec2 cloud_scale;
|
||||
uniform float cloud_distance;
|
||||
uniform float cloud_speed;
|
||||
uniform float cloud_speed2;
|
||||
|
||||
void sky() {
|
||||
float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));
|
||||
float c = (1.0 - v_angle / (PI * 0.5));
|
||||
vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0));
|
||||
sky *= sky_energy;
|
||||
|
||||
if (LIGHT0_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT0_SIZE) {
|
||||
sky = LIGHT0_COLOR * LIGHT0_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE);
|
||||
sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT1_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT1_SIZE) {
|
||||
sky = LIGHT1_COLOR * LIGHT1_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE);
|
||||
sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT2_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT2_SIZE) {
|
||||
sky = LIGHT2_COLOR * LIGHT2_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE);
|
||||
sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT3_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT3_SIZE) {
|
||||
sky = LIGHT3_COLOR * LIGHT3_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE);
|
||||
sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
vec4 sky_cover_texture = texture(sky_cover, SKY_COORDS);
|
||||
sky += (sky_cover_texture.rgb * sky_cover_modulate.rgb) * sky_cover_texture.a * sky_cover_modulate.a * sky_energy;
|
||||
|
||||
c = (v_angle - (PI * 0.5)) / (PI * 0.5);
|
||||
vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0));
|
||||
ground *= ground_energy;
|
||||
|
||||
vec2 sky_uv = EYEDIR.xz / EYEDIR.y;
|
||||
vec3 clouds = texture(cloud_texture, sky_uv * cloud_scale + TIME * cloud_direction * cloud_speed).rgb - texture(cloud_texture2, sky_uv * cloud_scale + TIME * cloud_direction2 * cloud_speed2).rgb;
|
||||
clouds = clouds - smoothstep(0.0, EYEDIR.y, cloud_distance);
|
||||
clouds = clamp(clouds,0,1);
|
||||
sky += clouds;
|
||||
|
||||
COLOR = mix(ground, sky, step(0.0, EYEDIR.y));
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_xmuk5"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_s2hgb"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_xmuk5")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_pecsg"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_rw0pi"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pxixl"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_pecsg")
|
||||
noise = SubResource("FastNoiseLite_rw0pi")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ybu6k"]
|
||||
shader = SubResource("Shader_6rtqo")
|
||||
shader_parameter/sky_top_color = Color(1, 0.490803, 0.574236, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.556863, 0.8, 0.862745, 1)
|
||||
shader_parameter/sky_curve = 0.15
|
||||
shader_parameter/sky_energy = 1.0
|
||||
shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_bottom_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_horizon_color = Color(0.701961, 0.819608, 0.866667, 1)
|
||||
shader_parameter/ground_curve = 0.02
|
||||
shader_parameter/ground_energy = 1.0
|
||||
shader_parameter/sun_angle_max = 0.523599
|
||||
shader_parameter/sun_curve = 0.15
|
||||
shader_parameter/cloud_direction = Vector2(-1, 1)
|
||||
shader_parameter/cloud_direction2 = Vector2(1, -1)
|
||||
shader_parameter/cloud_scale = Vector2(0.05, 0.05)
|
||||
shader_parameter/cloud_distance = -0.025
|
||||
shader_parameter/cloud_speed = 0.005
|
||||
shader_parameter/cloud_speed2 = 0.004
|
||||
shader_parameter/cloud_texture = SubResource("NoiseTexture2D_s2hgb")
|
||||
shader_parameter/cloud_texture2 = SubResource("NoiseTexture2D_pxixl")
|
||||
|
||||
[sub_resource type="Sky" id="Sky_ppfx1"]
|
||||
sky_material = SubResource("ShaderMaterial_ybu6k")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_ofj6t"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_iaa40")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
sky = SubResource("Sky_ppfx1")
|
||||
|
||||
[node name="islands" type="Node3D"]
|
||||
script = ExtResource("1_3oilq")
|
||||
|
@ -30,7 +154,7 @@ light_color = Color(0.980392, 0.372549, 0.333333, 1)
|
|||
shadow_enabled = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_fx5b2")
|
||||
environment = SubResource("Environment_ofj6t")
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("2_2mo4q")]
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://8lhdy8kiejvt"]
|
||||
[gd_scene load_steps=15 format=3 uid="uid://8lhdy8kiejvt"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/mainmenu-background.gd" id="1_nn4qs"]
|
||||
[ext_resource type="PackedScene" uid="uid://b3l10agcjfgdx" path="res://characters/teddy/model_glb/teddy.glb" id="2_mie3v"]
|
||||
|
@ -6,21 +6,145 @@
|
|||
[ext_resource type="ArrayMesh" uid="uid://cfsnb4hd7rws7" path="res://characters/Mr. Brown/0_SFusion.obj" id="5_44sv4"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmrooias7kpru" path="res://scenes/islands-map.tscn" id="5_ep6fx"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_5ejs4"]
|
||||
sky_top_color = Color(1, 0.509804, 0.384314, 1)
|
||||
sky_horizon_color = Color(0.572549, 0.427451, 0.380392, 1)
|
||||
sky_energy_multiplier = 2.0
|
||||
ground_horizon_color = Color(0.8, 0.669701, 0.629328, 1)
|
||||
ground_curve = 1.00427
|
||||
[sub_resource type="Shader" id="Shader_ayl4w"]
|
||||
code = "
|
||||
// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's ProceduralSkyMaterial.
|
||||
|
||||
[sub_resource type="Sky" id="Sky_ddrwh"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_5ejs4")
|
||||
shader_type sky;
|
||||
render_mode use_debanding;
|
||||
|
||||
[sub_resource type="Environment" id="Environment_84qbp"]
|
||||
uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0);
|
||||
uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float sky_curve : hint_range(0, 1) = 0.15;
|
||||
uniform float sky_energy = 1.0; // In Lux.
|
||||
uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black;
|
||||
uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0);
|
||||
uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float ground_curve : hint_range(0, 1) = 0.02;
|
||||
uniform float ground_energy = 1.0;
|
||||
uniform float sun_angle_max = 30.0;
|
||||
uniform float sun_curve : hint_range(0, 1) = 0.15;
|
||||
|
||||
uniform sampler2D cloud_texture;
|
||||
uniform sampler2D cloud_texture2;
|
||||
uniform vec2 cloud_direction;
|
||||
uniform vec2 cloud_direction2;
|
||||
uniform vec2 cloud_scale;
|
||||
uniform float cloud_distance;
|
||||
uniform float cloud_speed;
|
||||
uniform float cloud_speed2;
|
||||
|
||||
void sky() {
|
||||
float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));
|
||||
float c = (1.0 - v_angle / (PI * 0.5));
|
||||
vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0));
|
||||
sky *= sky_energy;
|
||||
|
||||
if (LIGHT0_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT0_SIZE) {
|
||||
sky = LIGHT0_COLOR * LIGHT0_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE);
|
||||
sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT1_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT1_SIZE) {
|
||||
sky = LIGHT1_COLOR * LIGHT1_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE);
|
||||
sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT2_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT2_SIZE) {
|
||||
sky = LIGHT2_COLOR * LIGHT2_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE);
|
||||
sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT3_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT3_SIZE) {
|
||||
sky = LIGHT3_COLOR * LIGHT3_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE);
|
||||
sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
vec4 sky_cover_texture = texture(sky_cover, SKY_COORDS);
|
||||
sky += (sky_cover_texture.rgb * sky_cover_modulate.rgb) * sky_cover_texture.a * sky_cover_modulate.a * sky_energy;
|
||||
|
||||
c = (v_angle - (PI * 0.5)) / (PI * 0.5);
|
||||
vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0));
|
||||
ground *= ground_energy;
|
||||
|
||||
vec2 sky_uv = EYEDIR.xz / EYEDIR.y;
|
||||
vec3 clouds = texture(cloud_texture, sky_uv * cloud_scale + TIME * cloud_direction * cloud_speed).rgb - texture(cloud_texture2, sky_uv * cloud_scale + TIME * cloud_direction2 * cloud_speed2).rgb;
|
||||
clouds = clouds - smoothstep(0.0, EYEDIR.y, cloud_distance);
|
||||
clouds = clamp(clouds,0,1);
|
||||
sky += clouds;
|
||||
|
||||
COLOR = mix(ground, sky, step(0.0, EYEDIR.y));
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_0f7so"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_11c3r"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_0f7so")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_q5ykc"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_qcsi3"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_lcj8k"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_q5ykc")
|
||||
noise = SubResource("FastNoiseLite_qcsi3")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3n1o5"]
|
||||
shader = SubResource("Shader_ayl4w")
|
||||
shader_parameter/sky_top_color = Color(1, 0.490803, 0.574236, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.556863, 0.8, 0.862745, 1)
|
||||
shader_parameter/sky_curve = 0.15
|
||||
shader_parameter/sky_energy = 1.0
|
||||
shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_bottom_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_horizon_color = Color(0.701961, 0.819608, 0.866667, 1)
|
||||
shader_parameter/ground_curve = 0.02
|
||||
shader_parameter/ground_energy = 1.0
|
||||
shader_parameter/sun_angle_max = 0.523599
|
||||
shader_parameter/sun_curve = 0.15
|
||||
shader_parameter/cloud_direction = Vector2(-1, 1)
|
||||
shader_parameter/cloud_direction2 = Vector2(1, -1)
|
||||
shader_parameter/cloud_scale = Vector2(0.05, 0.05)
|
||||
shader_parameter/cloud_distance = -0.025
|
||||
shader_parameter/cloud_speed = 0.005
|
||||
shader_parameter/cloud_speed2 = 0.004
|
||||
shader_parameter/cloud_texture = SubResource("NoiseTexture2D_11c3r")
|
||||
shader_parameter/cloud_texture2 = SubResource("NoiseTexture2D_lcj8k")
|
||||
|
||||
[sub_resource type="Sky" id="Sky_3pmd7"]
|
||||
sky_material = SubResource("ShaderMaterial_3n1o5")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_f0wx0"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_ddrwh")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
sky = SubResource("Sky_3pmd7")
|
||||
|
||||
[node name="mainmenu-background" type="Node3D"]
|
||||
script = ExtResource("1_nn4qs")
|
||||
|
@ -50,7 +174,7 @@ light_color = Color(0.980392, 0.372549, 0.333333, 1)
|
|||
shadow_enabled = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_84qbp")
|
||||
environment = SubResource("Environment_f0wx0")
|
||||
|
||||
[node name="eye_left" type="OmniLight3D" parent="."]
|
||||
transform = Transform3D(0.198068, 0, 0.980188, 0, 1, 0, -0.980188, 0, 0.198068, 33.7271, 22.9874, 57.5761)
|
||||
|
|
|
@ -1,23 +1,149 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://ddy8gm0fq0dd3"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://ddy8gm0fq0dd3"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/maps/toyfactory.gd" id="1_xebe1"]
|
||||
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="2_irab1"]
|
||||
[ext_resource type="PackedScene" uid="uid://lqlwqgor8cas" path="res://scenes/toyfactory-map.tscn" id="3_3k25h"]
|
||||
[ext_resource type="PackedScene" uid="uid://buyvavyuwmccw" path="res://joystick/virtual_joystick.tscn" id="4_nof1r"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ell6n"]
|
||||
sky_top_color = Color(0.870588, 0.894118, 0.92549, 1)
|
||||
sky_horizon_color = Color(0.767647, 0.765779, 0.764623, 1)
|
||||
ground_horizon_color = Color(0.767647, 0.765779, 0.764623, 1)
|
||||
[sub_resource type="Shader" id="Shader_m1fpl"]
|
||||
code = "
|
||||
// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's ProceduralSkyMaterial.
|
||||
|
||||
[sub_resource type="Sky" id="Sky_lh0lw"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_ell6n")
|
||||
shader_type sky;
|
||||
render_mode use_debanding;
|
||||
|
||||
[sub_resource type="Environment" id="Environment_fnphj"]
|
||||
uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0);
|
||||
uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float sky_curve : hint_range(0, 1) = 0.15;
|
||||
uniform float sky_energy = 1.0; // In Lux.
|
||||
uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black;
|
||||
uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0);
|
||||
uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float ground_curve : hint_range(0, 1) = 0.02;
|
||||
uniform float ground_energy = 1.0;
|
||||
uniform float sun_angle_max = 30.0;
|
||||
uniform float sun_curve : hint_range(0, 1) = 0.15;
|
||||
|
||||
uniform sampler2D cloud_texture;
|
||||
uniform sampler2D cloud_texture2;
|
||||
uniform vec2 cloud_direction;
|
||||
uniform vec2 cloud_direction2;
|
||||
uniform vec2 cloud_scale;
|
||||
uniform float cloud_distance;
|
||||
uniform float cloud_speed;
|
||||
uniform float cloud_speed2;
|
||||
|
||||
void sky() {
|
||||
float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));
|
||||
float c = (1.0 - v_angle / (PI * 0.5));
|
||||
vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0));
|
||||
sky *= sky_energy;
|
||||
|
||||
if (LIGHT0_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT0_SIZE) {
|
||||
sky = LIGHT0_COLOR * LIGHT0_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE);
|
||||
sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT1_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT1_SIZE) {
|
||||
sky = LIGHT1_COLOR * LIGHT1_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE);
|
||||
sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT2_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT2_SIZE) {
|
||||
sky = LIGHT2_COLOR * LIGHT2_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE);
|
||||
sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT3_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT3_SIZE) {
|
||||
sky = LIGHT3_COLOR * LIGHT3_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE);
|
||||
sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
vec4 sky_cover_texture = texture(sky_cover, SKY_COORDS);
|
||||
sky += (sky_cover_texture.rgb * sky_cover_modulate.rgb) * sky_cover_texture.a * sky_cover_modulate.a * sky_energy;
|
||||
|
||||
c = (v_angle - (PI * 0.5)) / (PI * 0.5);
|
||||
vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0));
|
||||
ground *= ground_energy;
|
||||
|
||||
vec2 sky_uv = EYEDIR.xz / EYEDIR.y;
|
||||
vec3 clouds = texture(cloud_texture, sky_uv * cloud_scale + TIME * cloud_direction * cloud_speed).rgb - texture(cloud_texture2, sky_uv * cloud_scale + TIME * cloud_direction2 * cloud_speed2).rgb;
|
||||
clouds = clouds - smoothstep(0.0, EYEDIR.y, cloud_distance);
|
||||
clouds = clamp(clouds,0,1);
|
||||
sky += clouds;
|
||||
|
||||
COLOR = mix(ground, sky, step(0.0, EYEDIR.y));
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_gx4dj"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_xavvy"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_gx4dj")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_4euna"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_611vt"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_f5uun"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_4euna")
|
||||
noise = SubResource("FastNoiseLite_611vt")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_13ca0"]
|
||||
shader = SubResource("Shader_m1fpl")
|
||||
shader_parameter/sky_top_color = Color(0.333333, 0.733333, 0.862745, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.556863, 0.8, 0.862745, 1)
|
||||
shader_parameter/sky_curve = 0.15
|
||||
shader_parameter/sky_energy = 1.0
|
||||
shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_bottom_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_horizon_color = Color(0.701961, 0.819608, 0.866667, 1)
|
||||
shader_parameter/ground_curve = 0.02
|
||||
shader_parameter/ground_energy = 1.0
|
||||
shader_parameter/sun_angle_max = 0.523599
|
||||
shader_parameter/sun_curve = 0.15
|
||||
shader_parameter/cloud_direction = Vector2(-1, 1)
|
||||
shader_parameter/cloud_direction2 = Vector2(1, -1)
|
||||
shader_parameter/cloud_scale = Vector2(0.05, 0.05)
|
||||
shader_parameter/cloud_distance = -0.025
|
||||
shader_parameter/cloud_speed = 0.005
|
||||
shader_parameter/cloud_speed2 = 0.004
|
||||
shader_parameter/cloud_texture = SubResource("NoiseTexture2D_xavvy")
|
||||
shader_parameter/cloud_texture2 = SubResource("NoiseTexture2D_f5uun")
|
||||
|
||||
[sub_resource type="Sky" id="Sky_q0sn5"]
|
||||
sky_material = SubResource("ShaderMaterial_13ca0")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_wqonp"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_lh0lw")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
sky = SubResource("Sky_q0sn5")
|
||||
|
||||
[node name="toyfactory" type="Node3D"]
|
||||
script = ExtResource("1_xebe1")
|
||||
|
@ -26,7 +152,7 @@ script = ExtResource("1_xebe1")
|
|||
show_behind_parent = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_fnphj")
|
||||
environment = SubResource("Environment_wqonp")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.0034906, -0.94887, 0.315647, 0, 0.315649, 0.948876, -0.999994, 0.00331215, -0.00110181, 0, 0, 0)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[ext_resource type="Script" path="res://scripts/maps/toyland.gd" id="1_vq5un"]
|
||||
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="1_w2y7j"]
|
||||
[ext_resource type="PackedScene" uid="uid://1hbkdbrw4ulu" path="res://scenes/toyland-map.tscn" id="3_uudje"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsml5ghunpkn4" path="res://scenes/toyland-map.tscn" id="3_uudje"]
|
||||
[ext_resource type="PackedScene" uid="uid://buyvavyuwmccw" path="res://joystick/virtual_joystick.tscn" id="4_2bpwn"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_7x31f"]
|
||||
|
|
|
@ -1,31 +1,157 @@
|
|||
[gd_scene load_steps=10 format=3 uid="uid://dkokyp5lwhks4"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://dkokyp5lwhks4"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/maps/tutorial.gd" id="1_40ws8"]
|
||||
[ext_resource type="PackedScene" uid="uid://ytbacsuahxie" path="res://scenes/HUD.tscn" id="2_s3v8n"]
|
||||
[ext_resource type="PackedScene" uid="uid://y3fffh5cdbks" path="res://scenes/AI.tscn" id="4_fttoe"]
|
||||
[ext_resource type="PackedScene" uid="uid://k5k5qie1i16i" path="res://scenes/farmland-map.tscn" id="5_imhi6"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8xhrpvld10bl" path="res://scenes/farmland-map.tscn" id="5_imhi6"]
|
||||
[ext_resource type="PackedScene" uid="uid://buyvavyuwmccw" path="res://joystick/virtual_joystick.tscn" id="6_p8th3"]
|
||||
[ext_resource type="VideoStream" path="res://videos/trailer.ogv" id="7_4deue"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_i5hsu"]
|
||||
sky_top_color = Color(1, 1, 1, 1)
|
||||
sky_horizon_color = Color(0.8, 0.79225, 0.78325, 1)
|
||||
ground_horizon_color = Color(0.8, 0.79225, 0.78325, 1)
|
||||
[sub_resource type="Shader" id="Shader_al5hh"]
|
||||
code = "
|
||||
// NOTE: Shader automatically converted from Godot Engine 4.2.1.stable's ProceduralSkyMaterial.
|
||||
|
||||
[sub_resource type="Sky" id="Sky_74emm"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_i5hsu")
|
||||
shader_type sky;
|
||||
render_mode use_debanding;
|
||||
|
||||
[sub_resource type="Environment" id="Environment_jlsfy"]
|
||||
uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0);
|
||||
uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float sky_curve : hint_range(0, 1) = 0.15;
|
||||
uniform float sky_energy = 1.0; // In Lux.
|
||||
uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black;
|
||||
uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0);
|
||||
uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0);
|
||||
uniform float ground_curve : hint_range(0, 1) = 0.02;
|
||||
uniform float ground_energy = 1.0;
|
||||
uniform float sun_angle_max = 30.0;
|
||||
uniform float sun_curve : hint_range(0, 1) = 0.15;
|
||||
|
||||
uniform sampler2D cloud_texture;
|
||||
uniform sampler2D cloud_texture2;
|
||||
uniform vec2 cloud_direction;
|
||||
uniform vec2 cloud_direction2;
|
||||
uniform vec2 cloud_scale;
|
||||
uniform float cloud_distance;
|
||||
uniform float cloud_speed;
|
||||
uniform float cloud_speed2;
|
||||
|
||||
void sky() {
|
||||
float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));
|
||||
float c = (1.0 - v_angle / (PI * 0.5));
|
||||
vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0));
|
||||
sky *= sky_energy;
|
||||
|
||||
if (LIGHT0_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT0_SIZE) {
|
||||
sky = LIGHT0_COLOR * LIGHT0_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE);
|
||||
sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT1_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT1_SIZE) {
|
||||
sky = LIGHT1_COLOR * LIGHT1_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE);
|
||||
sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT2_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT2_SIZE) {
|
||||
sky = LIGHT2_COLOR * LIGHT2_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE);
|
||||
sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
if (LIGHT3_ENABLED) {
|
||||
float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR));
|
||||
if (sun_angle < LIGHT3_SIZE) {
|
||||
sky = LIGHT3_COLOR * LIGHT3_ENERGY;
|
||||
} else if (sun_angle < sun_angle_max) {
|
||||
float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE);
|
||||
sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0));
|
||||
}
|
||||
}
|
||||
|
||||
vec4 sky_cover_texture = texture(sky_cover, SKY_COORDS);
|
||||
sky += (sky_cover_texture.rgb * sky_cover_modulate.rgb) * sky_cover_texture.a * sky_cover_modulate.a * sky_energy;
|
||||
|
||||
c = (v_angle - (PI * 0.5)) / (PI * 0.5);
|
||||
vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0));
|
||||
ground *= ground_energy;
|
||||
|
||||
vec2 sky_uv = EYEDIR.xz / EYEDIR.y;
|
||||
vec3 clouds = texture(cloud_texture, sky_uv * cloud_scale + TIME * cloud_direction * cloud_speed).rgb - texture(cloud_texture2, sky_uv * cloud_scale + TIME * cloud_direction2 * cloud_speed2).rgb;
|
||||
clouds = clouds - smoothstep(0.0, EYEDIR.y, cloud_distance);
|
||||
clouds = clamp(clouds,0,1);
|
||||
sky += clouds;
|
||||
|
||||
COLOR = mix(ground, sky, step(0.0, EYEDIR.y));
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_8n5pl"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_05et8"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_8n5pl")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_2eua1"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_mawxw"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0oukt"]
|
||||
width = 1024
|
||||
height = 1024
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_2eua1")
|
||||
noise = SubResource("FastNoiseLite_mawxw")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_rppvg"]
|
||||
shader = SubResource("Shader_al5hh")
|
||||
shader_parameter/sky_top_color = Color(0.333333, 0.733333, 0.862745, 1)
|
||||
shader_parameter/sky_horizon_color = Color(0.556863, 0.8, 0.862745, 1)
|
||||
shader_parameter/sky_curve = 0.15
|
||||
shader_parameter/sky_energy = 1.0
|
||||
shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_bottom_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/ground_horizon_color = Color(0.701961, 0.819608, 0.866667, 1)
|
||||
shader_parameter/ground_curve = 0.02
|
||||
shader_parameter/ground_energy = 1.0
|
||||
shader_parameter/sun_angle_max = 0.523599
|
||||
shader_parameter/sun_curve = 0.15
|
||||
shader_parameter/cloud_direction = Vector2(-1, 1)
|
||||
shader_parameter/cloud_direction2 = Vector2(1, -1)
|
||||
shader_parameter/cloud_scale = Vector2(0.05, 0.05)
|
||||
shader_parameter/cloud_distance = -0.025
|
||||
shader_parameter/cloud_speed = 0.005
|
||||
shader_parameter/cloud_speed2 = 0.004
|
||||
shader_parameter/cloud_texture = SubResource("NoiseTexture2D_05et8")
|
||||
shader_parameter/cloud_texture2 = SubResource("NoiseTexture2D_0oukt")
|
||||
|
||||
[sub_resource type="Sky" id="Sky_iuu8p"]
|
||||
sky_material = SubResource("ShaderMaterial_rppvg")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_locyx"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_74emm")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
sky = SubResource("Sky_iuu8p")
|
||||
|
||||
[node name="tutorial" type="Node3D"]
|
||||
script = ExtResource("1_40ws8")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_jlsfy")
|
||||
environment = SubResource("Environment_locyx")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
extends Node
|
||||
var consoleEnabled = false # Change this to enable console
|
||||
var consoleEnabled = true # Change this to enable console
|
||||
var mouseSensitivity = 0.01 # Unless otherwise changed by user in settings
|
||||
var playingGame = false # Should be true while in a map, set by menus
|
||||
var fatigue = 100 # Makes it so you can't run forever, you have limited energy
|
||||
|
@ -220,4 +220,11 @@ func spawn_locations():
|
|||
spawnCoords_x[3] = -5.13
|
||||
spawnCoords_y[3] = -11.01
|
||||
spawnCoords_z[3] = -2.91
|
||||
elif mapName == "alexi-village":
|
||||
spawnCoords_x.resize(1)
|
||||
spawnCoords_y.resize(1)
|
||||
spawnCoords_z.resize(1)
|
||||
spawnCoords_x[0] = -17.42
|
||||
spawnCoords_y[0] = 2.88
|
||||
spawnCoords_z[0] = 3.11
|
||||
|
||||
|
|
|
@ -1,10 +1,20 @@
|
|||
extends Node
|
||||
|
||||
var SCENE
|
||||
@onready var mapSelection = $mapSelectionButton
|
||||
|
||||
func _ready():
|
||||
$playerNameBox.text = Global.playerName
|
||||
add_mapSelection_options()
|
||||
|
||||
func add_mapSelection_options():
|
||||
mapSelection.add_item("Alexi Village", 0)
|
||||
mapSelection.add_item("Forest", 1)
|
||||
mapSelection.add_item("Islands", 2)
|
||||
mapSelection.add_item("Toy Factory", 3)
|
||||
mapSelection.add_item("Toyland", 4)
|
||||
mapSelection.select(4)
|
||||
toyland()
|
||||
|
||||
func _process(delta):
|
||||
pass
|
||||
|
@ -14,13 +24,13 @@ func _on_close_pressed():
|
|||
self.queue_free()
|
||||
|
||||
|
||||
func _on_playground_pressed():
|
||||
func toyland():
|
||||
$mapSelected.text = "Toyland"
|
||||
Global.mapName = "Toyland"
|
||||
SCENE = "res://scenes/toyland.tscn"
|
||||
toggle_map_render("toyland")
|
||||
|
||||
func _on_islands_pressed():
|
||||
func islands():
|
||||
$mapSelected.text = "Islands"
|
||||
Global.mapName = "Islands"
|
||||
SCENE = "res://scenes/islands.tscn"
|
||||
|
@ -28,18 +38,24 @@ func _on_islands_pressed():
|
|||
$Toyland.visible = false
|
||||
toggle_map_render("islands")
|
||||
|
||||
func _on_forrest_button_pressed():
|
||||
func forest():
|
||||
$mapSelected.text = "Forest"
|
||||
Global.mapName = "Forrest"
|
||||
SCENE = "res://scenes/forrest.tscn"
|
||||
toggle_map_render("forest")
|
||||
|
||||
func _on_toyfactory_button_pressed():
|
||||
func toy_factory():
|
||||
$mapSelected.text = "Toy Factory"
|
||||
Global.mapName = "toyfactory"
|
||||
SCENE = "res://scenes/toyfactory.tscn"
|
||||
toggle_map_render("toyfactory")
|
||||
|
||||
func alexi_village():
|
||||
$mapSelected.text = "Alexi Village"
|
||||
Global.mapName = "alexi-village"
|
||||
SCENE = "res://scenes/alexi-village.tscn"
|
||||
toggle_map_render("alexi-village")
|
||||
|
||||
func _on_start_button_pressed():
|
||||
var PORT = $portBox.text
|
||||
var MAX_PLAYERS = $playerBox.text
|
||||
|
@ -138,6 +154,7 @@ func toggle_map_render(map):
|
|||
$Islands.visible = false
|
||||
$Forest.visible = false
|
||||
$Toyfactory.visible = false
|
||||
$"Alexi-village".visible = false
|
||||
if map == "toyland":
|
||||
$Toyland.visible = true
|
||||
elif map == "islands":
|
||||
|
@ -146,3 +163,22 @@ func toggle_map_render(map):
|
|||
$Forest.visible = true
|
||||
elif map == "toyfactory":
|
||||
$Toyfactory.visible = true
|
||||
elif map == "alexi-village":
|
||||
$"Alexi-village".visible = true
|
||||
|
||||
|
||||
|
||||
func _on_map_selection_button_item_selected(index):
|
||||
match index:
|
||||
0:
|
||||
alexi_village()
|
||||
1:
|
||||
forest()
|
||||
2:
|
||||
islands()
|
||||
3:
|
||||
toy_factory()
|
||||
4:
|
||||
toyland()
|
||||
_:
|
||||
toyland()
|
||||
|
|
46
scripts/maps/alexi-village.gd
Normal file
|
@ -0,0 +1,46 @@
|
|||
extends Node3D
|
||||
|
||||
|
||||
@onready var mapNode = get_node("/root/Alexi-village")
|
||||
var mapPath = "res://scenes/alexi-village.tscn"
|
||||
var audio_stream_player = AudioStreamPlayer.new()
|
||||
@onready var animationPlayer = get_node("/root/Alexi-village/village/AnimationPlayer")
|
||||
|
||||
func _ready():
|
||||
Global.currentMapNode = mapNode
|
||||
Global.currentMapPath = mapPath
|
||||
Global.playerHealth = 100
|
||||
Global.fatigue = 100
|
||||
Global.playerYDeath = -100
|
||||
|
||||
|
||||
func _process(delta):
|
||||
if audio_stream_player.playing == false:
|
||||
var randomnum = RandomNumberGenerator.new().randi_range(0, 3)
|
||||
if randomnum == 0:
|
||||
play_music(load("res://music/Dreamy-Hollow.mp3"))
|
||||
Global.musicName = "Dreamy Hollow"
|
||||
Global.musicAuthor = "Eric, Soundimage.org"
|
||||
elif randomnum == 1:
|
||||
play_music(load("res://music/Dungeons-and-Tunnels.mp3"))
|
||||
Global.musicName = "Dungeons and Tunnels"
|
||||
Global.musicAuthor = "Eric, Soundimage.org"
|
||||
elif randomnum == 2:
|
||||
play_music(load("res://music/Forward-Assault.mp3"))
|
||||
Global.musicName = "Forward Assault"
|
||||
Global.musicAuthor = "Eric, Soundimage.org"
|
||||
elif randomnum == 3:
|
||||
play_music(load("res://music/Frosty-Nights.mp3"))
|
||||
Global.musicName = "Frosty Nights"
|
||||
Global.musicAuthor = "Eric, Soundimage.org"
|
||||
else:
|
||||
print("This shouldn't ever be called, alexi-village.gd")
|
||||
Global.musicUpdated = true
|
||||
if not animationPlayer.is_playing():
|
||||
animationPlayer.play("Empty_001Action")
|
||||
|
||||
|
||||
func play_music(music):
|
||||
audio_stream_player.set_stream(music)
|
||||
add_child(audio_stream_player)
|
||||
audio_stream_player.play()
|