Структура проекта: папки по назначению, карты самодостаточны, инструменты, README
- Перенос: Net→net, Player→player, World/*→maps/{hub,sandbox,backrooms}, core, objects,
models/*→chasers/{rock,verity} и maps/*/models. Имена внутри папок с .glb не менялись
(рядом лежат извлечённые текстуры). Все пути, пресеты экспорта и автолоады обновлены.
- Преследователи: rock-follow.gd → chasers/chaser.gd; камень в песочнице теперь инстанс
chasers/rock/rock.tscn (как Верити).
- Удалён мусор: неиспользуемое небо sunflowers, Tree_01.glb, rock-path.gd, старая
модель Верити, unwrap_cache (теперь в .gitignore).
- Основной пакет игры 70 КБ (камень и Верити уехали в пакеты карт).
- tools/: export_all.sh, serve_web.py (nginx-подобный dev-сервер), deploy_server.sh,
test/ (боты, временный проект и сервер). Net: флаг --client для headless-клиента.
- deploy/: боевые nginx.conf и my-world.service, project.godot выделенного сервера.
- README переписан: что есть и чего нет, структура, карты, преследователи, сеть, пакеты,
деплой, грабли, дорожная карта (телефон).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@@ -0,0 +1,56 @@
|
||||
extends Node3D
|
||||
# Backrooms на готовой модели. Сцена живёт в отдельном пакете (backrooms.pck) и качается
|
||||
# только при первом входе в портал. Коллизии строим по мешам модели при загрузке,
|
||||
# навмеш для камня запечён заранее (backrooms_nav.res) — в вебе запекать на лету долго.
|
||||
|
||||
func _ready() -> void:
|
||||
Net.enter_map("backrooms")
|
||||
_build_colliders()
|
||||
_build_environment()
|
||||
_build_hum()
|
||||
|
||||
func _build_colliders() -> void:
|
||||
for mi in $Map.find_children("*", "MeshInstance3D", true, false):
|
||||
mi.create_trimesh_collision()
|
||||
|
||||
func _build_environment() -> void:
|
||||
var env := Environment.new()
|
||||
env.background_mode = Environment.BG_COLOR
|
||||
env.background_color = Color(0.06, 0.05, 0.03)
|
||||
env.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
|
||||
env.ambient_light_color = Color(1.0, 0.95, 0.8)
|
||||
env.ambient_light_energy = 0.7
|
||||
env.fog_enabled = true
|
||||
env.fog_light_color = Color(0.25, 0.2, 0.09)
|
||||
env.fog_density = 0.012
|
||||
var we := WorldEnvironment.new()
|
||||
we.environment = env
|
||||
add_child(we)
|
||||
|
||||
# Гул ламп: 2 секунды, частоты кратны 0.5 Гц — петля без щелчка
|
||||
func _build_hum() -> void:
|
||||
const RATE := 11025
|
||||
var n := RATE * 2
|
||||
var data := PackedByteArray()
|
||||
data.resize(n * 2)
|
||||
var rng := RandomNumberGenerator.new()
|
||||
rng.seed = 5
|
||||
for i in n:
|
||||
var t := float(i) / RATE
|
||||
var s := 0.50 * sin(TAU * 60.0 * t) + 0.25 * sin(TAU * 120.0 * t) \
|
||||
+ 0.12 * sin(TAU * 180.0 * t) + 0.06 * sin(TAU * 240.0 * t)
|
||||
s += rng.randf_range(-1.0, 1.0) * 0.03
|
||||
data.encode_s16(i * 2, int(clampf(s, -1.0, 1.0) * 12000.0))
|
||||
var wav := AudioStreamWAV.new()
|
||||
wav.format = AudioStreamWAV.FORMAT_16_BITS
|
||||
wav.mix_rate = RATE
|
||||
wav.stereo = false
|
||||
wav.loop_mode = AudioStreamWAV.LOOP_FORWARD
|
||||
wav.loop_begin = 0
|
||||
wav.loop_end = n
|
||||
wav.data = data
|
||||
var player := AudioStreamPlayer.new()
|
||||
player.stream = wav
|
||||
player.volume_db = -12.0
|
||||
player.autoplay = true
|
||||
add_child(player)
|
||||
@@ -0,0 +1 @@
|
||||
uid://gmpkjl6m3415
|
||||
@@ -0,0 +1,36 @@
|
||||
[gd_scene format=3 uid="uid://djgkggvwiaaoy"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://gmpkjl6m3415" path="res://maps/backrooms/backrooms.gd" id="1_level"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ef3wy1pthgm" path="res://maps/backrooms/model/backrooms_vr.glb" id="2_map"]
|
||||
[ext_resource type="PackedScene" uid="uid://c3efk6k8xnf57" path="res://player/player.tscn" id="3_player"]
|
||||
[ext_resource type="PackedScene" path="res://chasers/verity/verity.tscn" id="4_rock"]
|
||||
[ext_resource type="Script" uid="uid://bu8v0ivhmnykt" path="res://objects/portal.gd" id="5_portal"]
|
||||
[ext_resource type="NavigationMesh" path="res://maps/backrooms/backrooms_nav.res" id="6_nav"]
|
||||
|
||||
[node name="Backrooms" type="Node3D" unique_id=511186617]
|
||||
script = ExtResource("1_level")
|
||||
|
||||
[node name="Map" parent="." unique_id=82811432 instance=ExtResource("2_map")]
|
||||
transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, 0, 0, 0)
|
||||
|
||||
[node name="Player" parent="." unique_id=143512730 instance=ExtResource("3_player")]
|
||||
transform = Transform3D(0, 0, 1, 0, 1, 0, -1, 0, 0, -0.4838078, 1.2, 2.0468445)
|
||||
|
||||
[node name="Verity" parent="." unique_id=311663607 instance=ExtResource("4_rock")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48, 0, 3)
|
||||
model_scale = 0.5
|
||||
speed = 10.0
|
||||
catch_distance = 2.0
|
||||
catch_height = 3.0
|
||||
sight_limited = true
|
||||
|
||||
[node name="Exit" type="Area3D" parent="." unique_id=1540431614]
|
||||
transform = Transform3D(0, 0, 1, 0, 1, 0, -1, 0, 0, -92.93203, -0.15, 10.390619)
|
||||
script = ExtResource("5_portal")
|
||||
target_map = "hub"
|
||||
target_scene = "res://maps/hub/hub.tscn"
|
||||
title = "EXIT"
|
||||
color = Color(0.3, 1, 0.45, 1)
|
||||
|
||||
[node name="Navigation" type="NavigationRegion3D" parent="." unique_id=122126248]
|
||||
navigation_mesh = ExtResource("6_nav")
|
||||
@@ -0,0 +1,5 @@
|
||||
# Backrooms VR
|
||||
|
||||
Модель «Backrooms VR» — автор VTX (https://sketchfab.com/VTX_car)
|
||||
Источник: https://sketchfab.com/3d-models/backrooms-vr-1a5c397f0a43408fa38b09ea5c041149
|
||||
Лицензия: CC-BY 4.0 (http://creativecommons.org/licenses/by/4.0/)
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b8ef3wy1pthgm"
|
||||
path="res://.godot/imported/backrooms_vr.glb-a44db63c437b581310f90765822ced16.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr.glb"
|
||||
dest_files=["res://.godot/imported/backrooms_vr.glb-a44db63c437b581310f90765822ced16.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
|
After Width: | Height: | Size: 687 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b6weikavgdbap"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_0.png-2be6c844f99fa11d85c6f7f7ea9febaf.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "dd26a9d7692e3436812fe8332db11362"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_0.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_0.png-2be6c844f99fa11d85c6f7f7ea9febaf.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 549 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dpud2naqkm4xs"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_1.png-58eff1a40efb7f44ec9e5051210a83fb.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "79c774f9175bf99b66d6647fc9276dd6"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_1.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_1.png-58eff1a40efb7f44ec9e5051210a83fb.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 609 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b8nb23j42isps"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_10.png-66735878c6a889d3b78eb86dd9d140a6.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "bdf490cf7f9a54efba63ed6886a31481"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_10.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_10.png-66735878c6a889d3b78eb86dd9d140a6.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 1018 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://djx5e3wiwgqex"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_11.png-1b4bc124dd509717784a19ff35407041.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "0eff7867078fb002c73e86db307b5cac"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_11.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_11.png-1b4bc124dd509717784a19ff35407041.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 897 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://djyh6v1wlujbx"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_12.png-4b9b409931a846aa266212c354316816.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "af3cabe8076ab6902c5ef8de7f304b52"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_12.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_12.png-4b9b409931a846aa266212c354316816.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 457 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dw68nfgta46bg"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_13.png-0fc1704bbe3dc42d01705e5699474f84.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "80b3f1544049ca7469516fae963a8b53"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_13.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_13.png-0fc1704bbe3dc42d01705e5699474f84.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 722 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cgx5ip8cpgxly"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_14.png-ef53db6b8d8b9de93738fb3214c4a754.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "f29e6fa0df4712e220723a81961d2409"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_14.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_14.png-ef53db6b8d8b9de93738fb3214c4a754.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 376 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dxvxjwfnpxqyb"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_15.png-bdd518883610319d83796f212056da76.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "be89a770b865d0c2b831e2bd61ec5d60"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_15.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_15.png-bdd518883610319d83796f212056da76.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 814 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://yjj1swxlp5le"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_16.png-a9e77912985bd57ee651e6170a096b24.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a354b1ade1b355ac5f4faf756def42da"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_16.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_16.png-a9e77912985bd57ee651e6170a096b24.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 81 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://decg78uck2mqa"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_17.png-19b989596eb512a37eeb8e755657cf6c.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a4ff81f7c103ef7064fdcdf9579550bd"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_17.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_17.png-19b989596eb512a37eeb8e755657cf6c.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 727 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://brljydqpvgko0"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_18.png-715bde8336c095d043c0cd3f1be4f502.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "1f8b3f56208dfb1ccc4cf99aead75a96"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_18.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_18.png-715bde8336c095d043c0cd3f1be4f502.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 1.2 MiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dciao7v0fkii1"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_19.png-49227045cdea27d1b381e3b9a831ee24.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "e093a35dfb48ed90dfee7417cb40b8aa"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_19.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_19.png-49227045cdea27d1b381e3b9a831ee24.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 206 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://eorb1lixjtbv"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_2.png-f1a53db9b9d3fd8a5ada6b370f18b647.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "6f80af8f00ff83fa14604341d717c0a1"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_2.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_2.png-f1a53db9b9d3fd8a5ada6b370f18b647.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 288 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xbcxlgw40igt"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_20.png-1d10fd330e1a8c0fc61d7486329ee063.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c089944811fd6841d24c05ff96888a0d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_20.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_20.png-1d10fd330e1a8c0fc61d7486329ee063.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 971 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://crx06wyll47ou"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_21.png-222e2c54fbdeedd6c0487b075650545f.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "8e67b33967174d08949af75bbfdbf99b"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_21.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_21.png-222e2c54fbdeedd6c0487b075650545f.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 219 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cqareamgsajs"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_22.png-b8965588f76146db08bcab06a453e84c.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "1f9cbe82491c2b29517d2e7170fcc8d2"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_22.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_22.png-b8965588f76146db08bcab06a453e84c.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 547 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dy57qg8yhs4cx"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_23.png-4090a5fff0cc06e162bacc68b3fd83ce.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "afc73e7b0ceed0e68711ee2553fc102c"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_23.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_23.png-4090a5fff0cc06e162bacc68b3fd83ce.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 463 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bt548bd7s4get"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_24.png-bf9b213fc302459f00c11b5b6a489a2d.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "2bfbf2416d5c593dbdd1bfa9d7ccdb2a"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_24.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_24.png-bf9b213fc302459f00c11b5b6a489a2d.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 210 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://doneeapv77gj1"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_25.png-7986d2b08dc2f459f7a7b7872e6a16e1.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "d4edeb415eeadc87ba7e8b618df82951"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_25.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_25.png-7986d2b08dc2f459f7a7b7872e6a16e1.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cg4knissk32f0"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_26.png-258a94dd265e35223b36b7a90dfee344.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "b00013d16cea649dbfcad40105ea95c2"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_26.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_26.png-258a94dd265e35223b36b7a90dfee344.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 815 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://3gy68ac2rkdx"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_3.png-4355c26a3df456240cd49a319f1cd5de.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "27c87342265c1142652ee5c1c7de8578"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_3.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_3.png-4355c26a3df456240cd49a319f1cd5de.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 714 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d3verocm47dx8"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_4.png-4a8967702e5eee6c2b19c6c5d1c0c555.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c0f85dfdeb975bc1438901e114ee54f5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_4.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_4.png-4a8967702e5eee6c2b19c6c5d1c0c555.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 635 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cnhk7o54biy8d"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_5.png-92bd0164b916a3cf31302520ddb50d1d.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "db8e48feaa1472c07f9e3131a9d5455d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_5.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_5.png-92bd0164b916a3cf31302520ddb50d1d.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 888 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cjglgsq24tgpr"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_6.png-087f2ed0886aa3d81ebc9b5b30ba5bb4.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "396d37118c519e43f39dc17472ac44ac"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_6.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_6.png-087f2ed0886aa3d81ebc9b5b30ba5bb4.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://7ctu8yeskavl"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_7.png-6349183f10a2172a16f16a287d42d208.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "01930a0b90aed513040fd3d9eedbb6fe"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_7.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_7.png-6349183f10a2172a16f16a287d42d208.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 898 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dsjo2hg0a0tel"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_8.png-8b4d0917952d2be94fc1f557297f0e1b.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "59fd1284dc8ae6306679984e51bd09f4"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_8.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_8.png-8b4d0917952d2be94fc1f557297f0e1b.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 1.1 MiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://lg637sqtxhyx"
|
||||
path.s3tc="res://.godot/imported/backrooms_vr_9.png-b548090fbf6542758b82625ab5195ef5.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "8c6549152c886a78b26090750a2ac1a4"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/backrooms/model/backrooms_vr_9.png"
|
||||
dest_files=["res://.godot/imported/backrooms_vr_9.png-b548090fbf6542758b82625ab5195ef5.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
@@ -0,0 +1,119 @@
|
||||
extends Node3D
|
||||
# Стартовая комната: ничего тяжёлого, только пол, стены и порталы на карты. Сами карты качаются
|
||||
# отдельными пакетами при входе в портал (World/map_loader.gd) — поэтому игра стартует быстро.
|
||||
# Чтобы добавить карту — допиши запись в PORTALS: порталы встанут в ряд по центру (влезает 6).
|
||||
|
||||
const PORTALS := [
|
||||
{"title": "SANDBOX", "map": "world", "scene": "res://maps/sandbox/sandbox.tscn", "pack": "world.pck", "color": Color(0.2, 0.9, 1.0)},
|
||||
{"title": "BACKROOMS", "map": "backrooms", "scene": "res://maps/backrooms/backrooms.tscn", "pack": "backrooms.pck", "color": Color(1.0, 0.85, 0.25)},
|
||||
]
|
||||
|
||||
const ROOM_WIDTH := 28.0
|
||||
const ROOM_DEPTH := 18.0
|
||||
const ROOM_HEIGHT := 6.0
|
||||
const WALL := 0.5
|
||||
const PORTAL_SPACING := 4.5
|
||||
|
||||
const GRID_SHADER := """
|
||||
shader_type spatial;
|
||||
varying vec3 wpos;
|
||||
void vertex() { wpos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; }
|
||||
void fragment() {
|
||||
vec2 cell = wpos.xz / 2.0;
|
||||
vec2 g = abs(fract(cell - 0.5) - 0.5) / fwidth(cell);
|
||||
float line = 1.0 - min(min(g.x, g.y), 1.0);
|
||||
ALBEDO = mix(vec3(0.03, 0.04, 0.06), vec3(0.1, 0.65, 0.85), line * 0.8);
|
||||
EMISSION = vec3(0.04, 0.3, 0.4) * line;
|
||||
ROUGHNESS = 0.9;
|
||||
}
|
||||
"""
|
||||
|
||||
func _ready() -> void:
|
||||
Net.enter_map("hub")
|
||||
_build_room()
|
||||
_build_portals()
|
||||
_build_environment()
|
||||
|
||||
func _build_room() -> void:
|
||||
var body := StaticBody3D.new()
|
||||
body.name = "Room"
|
||||
add_child(body)
|
||||
|
||||
var floor_mat := ShaderMaterial.new()
|
||||
floor_mat.shader = Shader.new()
|
||||
floor_mat.shader.code = GRID_SHADER
|
||||
var wall_mat := StandardMaterial3D.new()
|
||||
wall_mat.albedo_color = Color(0.09, 0.1, 0.14)
|
||||
wall_mat.roughness = 1.0
|
||||
var ceiling_mat := StandardMaterial3D.new()
|
||||
ceiling_mat.albedo_color = Color(0.05, 0.055, 0.08)
|
||||
|
||||
var hw := ROOM_WIDTH * 0.5
|
||||
var hd := ROOM_DEPTH * 0.5
|
||||
_add_box(body, Vector3(ROOM_WIDTH + WALL * 2, 0.5, ROOM_DEPTH + WALL * 2), Vector3(0, -0.25, 0), floor_mat)
|
||||
_add_box(body, Vector3(ROOM_WIDTH + WALL * 2, 0.5, ROOM_DEPTH + WALL * 2), Vector3(0, ROOM_HEIGHT + 0.25, 0), ceiling_mat)
|
||||
_add_box(body, Vector3(ROOM_WIDTH + WALL * 2, ROOM_HEIGHT, WALL), Vector3(0, ROOM_HEIGHT * 0.5, -hd - WALL * 0.5), wall_mat)
|
||||
_add_box(body, Vector3(ROOM_WIDTH + WALL * 2, ROOM_HEIGHT, WALL), Vector3(0, ROOM_HEIGHT * 0.5, hd + WALL * 0.5), wall_mat)
|
||||
_add_box(body, Vector3(WALL, ROOM_HEIGHT, ROOM_DEPTH), Vector3(-hw - WALL * 0.5, ROOM_HEIGHT * 0.5, 0), wall_mat)
|
||||
_add_box(body, Vector3(WALL, ROOM_HEIGHT, ROOM_DEPTH), Vector3(hw + WALL * 0.5, ROOM_HEIGHT * 0.5, 0), wall_mat)
|
||||
|
||||
func _add_box(body: StaticBody3D, size: Vector3, pos: Vector3, mat: Material) -> void:
|
||||
var shape := BoxShape3D.new()
|
||||
shape.size = size
|
||||
var cs := CollisionShape3D.new()
|
||||
cs.shape = shape
|
||||
cs.position = pos
|
||||
body.add_child(cs)
|
||||
|
||||
var mesh := BoxMesh.new()
|
||||
mesh.size = size
|
||||
mesh.material = mat
|
||||
var mi := MeshInstance3D.new()
|
||||
mi.mesh = mesh
|
||||
mi.position = pos
|
||||
mi.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
|
||||
add_child(mi)
|
||||
|
||||
# Порталы вдоль северной стены лицом в комнату, по центру
|
||||
func _build_portals() -> void:
|
||||
var portal_script := load("res://objects/portal.gd")
|
||||
var z := -ROOM_DEPTH * 0.5 + 1.0
|
||||
for i in PORTALS.size():
|
||||
var info: Dictionary = PORTALS[i]
|
||||
var portal := Area3D.new()
|
||||
portal.set_script(portal_script)
|
||||
portal.target_map = info.map
|
||||
portal.target_scene = info.scene
|
||||
portal.pack_name = info.pack
|
||||
portal.title = info.title
|
||||
portal.color = info.color
|
||||
portal.position = Vector3((i - (PORTALS.size() - 1) * 0.5) * PORTAL_SPACING, 0.0, z)
|
||||
add_child(portal)
|
||||
|
||||
var label := Label3D.new()
|
||||
label.text = "CHOOSE A MAP"
|
||||
label.pixel_size = 0.012
|
||||
label.font_size = 64
|
||||
label.outline_size = 12
|
||||
label.modulate = Color(0.7, 0.9, 1.0)
|
||||
label.position = Vector3(0, ROOM_HEIGHT - 0.35, -ROOM_DEPTH * 0.5 + 0.1)
|
||||
add_child(label)
|
||||
|
||||
func _build_environment() -> void:
|
||||
var env := Environment.new()
|
||||
env.background_mode = Environment.BG_COLOR
|
||||
env.background_color = Color(0.02, 0.025, 0.04)
|
||||
env.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
|
||||
env.ambient_light_color = Color(0.5, 0.58, 0.75)
|
||||
env.ambient_light_energy = 0.55
|
||||
var we := WorldEnvironment.new()
|
||||
we.environment = env
|
||||
add_child(we)
|
||||
|
||||
var lamp := OmniLight3D.new()
|
||||
lamp.position = Vector3(0, ROOM_HEIGHT - 0.6, 2.0)
|
||||
lamp.omni_range = 22.0
|
||||
lamp.light_energy = 0.8
|
||||
lamp.light_color = Color(0.8, 0.9, 1.0)
|
||||
lamp.shadow_enabled = false
|
||||
add_child(lamp)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dac7t22u2s6to
|
||||
@@ -0,0 +1,10 @@
|
||||
[gd_scene format=3]
|
||||
|
||||
[ext_resource type="Script" path="res://maps/hub/hub.gd" id="1_hub"]
|
||||
[ext_resource type="PackedScene" uid="uid://c3efk6k8xnf57" path="res://player/player.tscn" id="2_player"]
|
||||
|
||||
[node name="Hub" type="Node3D"]
|
||||
script = ExtResource("1_hub")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_player")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 5)
|
||||
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://ddsynauqeoppw"
|
||||
path="res://.godot/imported/tron_01.ogg-e0fa4b053d4048643e525d26032ad38e.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/audio/tron_01.ogg"
|
||||
dest_files=["res://.godot/imported/tron_01.ogg-e0fa4b053d4048643e525d26032ad38e.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@@ -0,0 +1,116 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
# Киберпанк-птицы кружат вокруг цели. Один MultiMesh, взмахи крыльев считает шейдер.
|
||||
|
||||
@export var target_path: NodePath
|
||||
|
||||
var target: Node3D
|
||||
@export var count := 12
|
||||
@export var min_radius := 55.0
|
||||
@export var max_radius := 100.0
|
||||
@export var min_height := 15.0
|
||||
@export var max_height := 150.0
|
||||
@export var speed_range := Vector2(0.15, 0.35) # рад/с вокруг цели
|
||||
@export var bird_scale := 1.6
|
||||
@export var seed_value := 7
|
||||
|
||||
const SHADER := """
|
||||
shader_type spatial;
|
||||
render_mode cull_disabled, unshaded, fog_disabled;
|
||||
uniform float flap_speed = 9.0;
|
||||
uniform float flap_amp = 0.9;
|
||||
varying vec3 col;
|
||||
void vertex() {
|
||||
float ph = INSTANCE_CUSTOM.x;
|
||||
// COLOR.r — вес крыла (0 у тела, 1 на кончике)
|
||||
VERTEX.y += sin(TIME * flap_speed * (0.8 + INSTANCE_CUSTOM.y * 0.4) + ph) * flap_amp * COLOR.r;
|
||||
VERTEX.z += COLOR.r * 0.25 * cos(TIME * flap_speed + ph);
|
||||
col = INSTANCE_CUSTOM.z > 0.5 ? vec3(1.0, 0.1, 0.8) : vec3(0.0, 0.95, 1.0);
|
||||
}
|
||||
void fragment() {
|
||||
// Светлее к кончикам крыльев — HDR для свечения
|
||||
ALBEDO = col * (5.0 + 3.0 * COLOR.r);
|
||||
}
|
||||
"""
|
||||
|
||||
var _mm: MultiMesh
|
||||
var _orbit: Array[Dictionary] = []
|
||||
|
||||
func _ready() -> void:
|
||||
target = get_node_or_null(target_path) as Node3D
|
||||
_build()
|
||||
|
||||
func _build() -> void:
|
||||
var rng := RandomNumberGenerator.new()
|
||||
rng.seed = seed_value
|
||||
|
||||
var mat := ShaderMaterial.new()
|
||||
var sh := Shader.new()
|
||||
sh.code = SHADER
|
||||
mat.shader = sh
|
||||
|
||||
_mm = MultiMesh.new()
|
||||
_mm.transform_format = MultiMesh.TRANSFORM_3D
|
||||
_mm.use_custom_data = true
|
||||
_mm.mesh = _make_mesh()
|
||||
_mm.mesh.surface_set_material(0, mat)
|
||||
_mm.instance_count = count
|
||||
for i in count:
|
||||
_orbit.append({
|
||||
"r": rng.randf_range(min_radius, max_radius),
|
||||
"h": rng.randf_range(min_height, max_height),
|
||||
"w": rng.randf_range(speed_range.x, speed_range.y) * (1.0 if rng.randf() > 0.3 else -1.0),
|
||||
"a": rng.randf() * TAU,
|
||||
"bob": rng.randf() * TAU,
|
||||
})
|
||||
_mm.set_instance_custom_data(i, Color(rng.randf() * TAU, rng.randf(), 1.0 if rng.randf() < 0.3 else 0.0, 0.0))
|
||||
|
||||
var mmi := MultiMeshInstance3D.new()
|
||||
mmi.name = "Flock"
|
||||
mmi.multimesh = _mm
|
||||
mmi.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
|
||||
mmi.custom_aabb = AABB(Vector3(-400, -50, -400), Vector3(800, 400, 800))
|
||||
mmi.top_level = true # координаты глобальные
|
||||
add_child(mmi)
|
||||
_update(0.0)
|
||||
|
||||
# Угловатая птица: тело-ромб, хвост и два крыла-«клинка» (вес крыла в цвете вершины)
|
||||
func _make_mesh() -> ArrayMesh:
|
||||
var st := SurfaceTool.new()
|
||||
st.begin(Mesh.PRIMITIVE_TRIANGLES)
|
||||
var tris := [
|
||||
# [вершина, вес крыла]
|
||||
# тело (носом в -Z)
|
||||
[Vector3(0, 0, -1.2), 0.0], [Vector3(-0.25, 0, 0.3), 0.0], [Vector3(0.25, 0, 0.3), 0.0],
|
||||
[Vector3(0, 0.2, 0.0), 0.0], [Vector3(-0.25, 0, 0.3), 0.0], [Vector3(0, 0, -1.2), 0.0],
|
||||
[Vector3(0, 0.2, 0.0), 0.0], [Vector3(0, 0, -1.2), 0.0], [Vector3(0.25, 0, 0.3), 0.0],
|
||||
# хвост
|
||||
[Vector3(-0.2, 0, 0.3), 0.0], [Vector3(0, 0, 1.4), 0.0], [Vector3(0.2, 0, 0.3), 0.0],
|
||||
# левое крыло
|
||||
[Vector3(-0.2, 0, -0.5), 0.0], [Vector3(-2.6, 0, 0.5), 1.0], [Vector3(-0.2, 0, 0.4), 0.0],
|
||||
# правое крыло
|
||||
[Vector3(0.2, 0, -0.5), 0.0], [Vector3(0.2, 0, 0.4), 0.0], [Vector3(2.6, 0, 0.5), 1.0],
|
||||
]
|
||||
for t in tris:
|
||||
st.set_color(Color(t[1], 0, 0))
|
||||
st.add_vertex(t[0])
|
||||
return st.commit()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_update(delta)
|
||||
|
||||
func _update(delta: float) -> void:
|
||||
if _mm == null or target == null:
|
||||
return
|
||||
var c := target.global_position
|
||||
var t := Time.get_ticks_msec() * 0.001
|
||||
for i in _orbit.size():
|
||||
var o: Dictionary = _orbit[i]
|
||||
o["a"] += o["w"] * delta
|
||||
var a: float = o["a"]
|
||||
var pos := c + Vector3(cos(a) * o["r"], o["h"] + sin(t * 0.7 + o["bob"]) * 3.0, sin(a) * o["r"])
|
||||
# Летим по касательной, лёгкий крен в сторону поворота
|
||||
var dir := Vector3(-sin(a), 0, cos(a)) * signf(o["w"])
|
||||
var b := Basis.looking_at(dir, Vector3.UP)
|
||||
b = b.rotated(dir, -0.35 * signf(o["w"])).scaled(Vector3.ONE * bird_scale)
|
||||
_mm.set_instance_transform(i, Transform3D(b, pos))
|
||||
@@ -0,0 +1 @@
|
||||
uid://j5ultotjrstk
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cvrj2ay2fq4x8"
|
||||
path="res://.godot/imported/Floor.glb-4d6193c3b6fd9b68511a715ce5a0aefb.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/floor/Floor.glb"
|
||||
dest_files=["res://.godot/imported/Floor.glb-4d6193c3b6fd9b68511a715ce5a0aefb.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
|
After Width: | Height: | Size: 428 B |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b882qi7w2eavh"
|
||||
path.s3tc="res://.godot/imported/Floor_Вставленное изображение.png-91526e6b18f388bd08e95ab0add9fc52.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "ef13298d57c1fcbde5ed5019868d1029"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/floor/Floor_Вставленное изображение.png"
|
||||
dest_files=["res://.godot/imported/Floor_Вставленное изображение.png-91526e6b18f388bd08e95ab0add9fc52.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
@@ -0,0 +1,127 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
# Лес одним MultiMesh: одна отрисовка на все деревья, удобно для веба.
|
||||
|
||||
@export var tree_scene: PackedScene:
|
||||
set(v):
|
||||
tree_scene = v
|
||||
_queue_rebuild()
|
||||
@export var count := 60:
|
||||
set(v):
|
||||
count = v
|
||||
_queue_rebuild()
|
||||
@export var area_radius := 220.0 # Радиус леса вокруг центра
|
||||
@export var spawn_clear_radius := 12.0 # Свободная зона вокруг старта
|
||||
@export var building_clear_radius := 14.0 # Свободная зона вокруг построек
|
||||
@export var path_clear_radius := 7.0 # Свободная зона вокруг пути камня
|
||||
@export var scale_range := Vector2(1.3, 2.0)
|
||||
@export var seed_value := 1:
|
||||
set(v):
|
||||
seed_value = v
|
||||
_queue_rebuild()
|
||||
@export var visible_distance := 160.0 # Дальше — деревья не рисуются
|
||||
@export var trunk_radius := 1.4 # Коллизия ствола (до масштабирования)
|
||||
@export var trunk_height := 9.0
|
||||
@export var cast_shadows := false # Тени от 150 деревьев тяжелы для веба
|
||||
|
||||
func _ready() -> void:
|
||||
_rebuild()
|
||||
|
||||
func _queue_rebuild() -> void:
|
||||
if is_node_ready():
|
||||
_rebuild.call_deferred()
|
||||
|
||||
func _rebuild() -> void:
|
||||
if tree_scene == null:
|
||||
return
|
||||
for n in ["Trees", "TrunkColliders"]:
|
||||
var old := get_node_or_null(n)
|
||||
if old:
|
||||
remove_child(old)
|
||||
old.queue_free()
|
||||
var inst := tree_scene.instantiate()
|
||||
var mi := _find_mesh(inst)
|
||||
if mi == null:
|
||||
push_error("forest: в tree_scene нет MeshInstance3D")
|
||||
return
|
||||
var mesh := mi.mesh
|
||||
var base := mi.transform # смещение меша внутри glb
|
||||
|
||||
var keep_out := _collect_keep_out()
|
||||
var rng := RandomNumberGenerator.new()
|
||||
rng.seed = seed_value
|
||||
|
||||
var xforms: Array[Transform3D] = []
|
||||
var tries := 0
|
||||
while xforms.size() < count and tries < count * 30:
|
||||
tries += 1
|
||||
var p := Vector2.from_angle(rng.randf() * TAU) * sqrt(rng.randf()) * area_radius
|
||||
if p.length() < spawn_clear_radius or _blocked(p, keep_out):
|
||||
continue
|
||||
var s := rng.randf_range(scale_range.x, scale_range.y)
|
||||
var b := Basis(Vector3.UP, rng.randf() * TAU).scaled(Vector3(s, s * rng.randf_range(0.9, 1.15), s))
|
||||
xforms.append(Transform3D(b, Vector3(p.x, 0.0, p.y)) * base)
|
||||
|
||||
var mm := MultiMesh.new()
|
||||
mm.transform_format = MultiMesh.TRANSFORM_3D
|
||||
mm.mesh = mesh
|
||||
mm.instance_count = xforms.size()
|
||||
for i in xforms.size():
|
||||
mm.set_instance_transform(i, xforms[i])
|
||||
|
||||
var mmi := MultiMeshInstance3D.new()
|
||||
mmi.name = "Trees"
|
||||
mmi.multimesh = mm
|
||||
mmi.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_ON if cast_shadows else GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
|
||||
mmi.visibility_range_end = visible_distance
|
||||
mmi.visibility_range_end_margin = 20.0
|
||||
mmi.visibility_range_fade_mode = GeometryInstance3D.VISIBILITY_RANGE_FADE_DISABLED
|
||||
mmi.custom_aabb = AABB(Vector3(-area_radius - 20, -5, -area_radius - 20), Vector3(area_radius * 2 + 40, 60, area_radius * 2 + 40))
|
||||
add_child(mmi)
|
||||
inst.free()
|
||||
if not Engine.is_editor_hint():
|
||||
_add_colliders(xforms)
|
||||
|
||||
# Мультимеш коллизий не даёт — ставим по цилиндру на ствол каждого дерева
|
||||
func _add_colliders(xforms: Array[Transform3D]) -> void:
|
||||
var body := StaticBody3D.new()
|
||||
body.name = "TrunkColliders"
|
||||
add_child(body)
|
||||
for t in xforms:
|
||||
var s := t.basis.get_scale()
|
||||
var shape := CylinderShape3D.new()
|
||||
shape.radius = trunk_radius * s.x
|
||||
shape.height = trunk_height * s.y
|
||||
var cs := CollisionShape3D.new()
|
||||
cs.shape = shape
|
||||
cs.position = Vector3(t.origin.x, t.origin.y + shape.height * 0.5, t.origin.z)
|
||||
body.add_child(cs)
|
||||
|
||||
func _find_mesh(n: Node) -> MeshInstance3D:
|
||||
if n is MeshInstance3D:
|
||||
return n
|
||||
for c in n.get_children():
|
||||
var r := _find_mesh(c)
|
||||
if r:
|
||||
return r
|
||||
return null
|
||||
|
||||
# Круги (x, z, радиус), куда деревья ставить нельзя
|
||||
func _collect_keep_out() -> Array[Vector3]:
|
||||
var out: Array[Vector3] = []
|
||||
var arch := get_node_or_null("../Architecture")
|
||||
if arch:
|
||||
for c in arch.get_children():
|
||||
if c is Path3D:
|
||||
for pt in c.curve.get_baked_points():
|
||||
var g: Vector3 = c.to_global(pt)
|
||||
out.append(Vector3(g.x, g.z, path_clear_radius))
|
||||
elif c is Node3D:
|
||||
out.append(Vector3(c.global_position.x, c.global_position.z, building_clear_radius))
|
||||
return out
|
||||
|
||||
func _blocked(p: Vector2, keep_out: Array[Vector3]) -> bool:
|
||||
for k in keep_out:
|
||||
if p.distance_squared_to(Vector2(k.x, k.y)) < k.z * k.z:
|
||||
return true
|
||||
return false
|
||||
@@ -0,0 +1 @@
|
||||
uid://cx16mgkh4bldx
|
||||
@@ -0,0 +1,19 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
# Плавное парение вверх-вниз вокруг стартовой высоты.
|
||||
|
||||
@export var amplitude := 4.0
|
||||
@export var period := 7.0
|
||||
|
||||
var _base_y: float
|
||||
var _t := 0.0
|
||||
|
||||
func _ready() -> void:
|
||||
_base_y = position.y
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_t += delta
|
||||
if Engine.is_editor_hint():
|
||||
position.y = _base_y # в редакторе не двигаем, чтобы не сохранить смещение
|
||||
return
|
||||
position.y = _base_y + sin(_t * TAU / period) * amplitude
|
||||
@@ -0,0 +1 @@
|
||||
uid://chtck5eaaddrw
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://d4evo4b0wv23h"
|
||||
path="res://.godot/imported/building_02.glb-7683ad03a325df125ca30c299b7738c4.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/building_02.glb"
|
||||
dest_files=["res://.godot/imported/building_02.glb-7683ad03a325df125ca30c299b7738c4.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c7tg5v5vpe77k"
|
||||
path="res://.godot/imported/cyber_office.glb-4e9e397c287323dff6881877bf6113c5.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/cyber_office/cyber_office.glb"
|
||||
dest_files=["res://.godot/imported/cyber_office.glb-4e9e397c287323dff6881877bf6113c5.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bmprcwbt78ghq"
|
||||
path="res://.godot/imported/Empire-State.glb-1ba5256795481fde942d050aee006b20.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/empire_state/Empire-State.glb"
|
||||
dest_files=["res://.godot/imported/Empire-State.glb-1ba5256795481fde942d050aee006b20.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dr2udwp3pu8g1"
|
||||
path="res://.godot/imported/house_02-col.glb-2730eb4dc06c6be90d365a835430b326.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/house_02/house_02-col.glb"
|
||||
dest_files=["res://.godot/imported/house_02-col.glb-2730eb4dc06c6be90d365a835430b326.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://rwgorah4jgx1"
|
||||
path.s3tc="res://.godot/imported/house_02-col_бревно.webp-0af3ef7ea172ac797ba1d04b51a2b9d0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "0404fc78a37a73b82a32d7e096573c1d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/house_02/house_02-col_бревно.webp"
|
||||
dest_files=["res://.godot/imported/house_02-col_бревно.webp-0af3ef7ea172ac797ba1d04b51a2b9d0.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 8.9 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://e2e5vo80xstq"
|
||||
path.s3tc="res://.godot/imported/house_02-col_булыжник.jpg-93c44c998d0f4037569be1a6e8303832.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "af0846b9aad4c40eeab5f735a92a1129"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/house_02/house_02-col_булыжник.jpg"
|
||||
dest_files=["res://.godot/imported/house_02-col_булыжник.jpg-93c44c998d0f4037569be1a6e8303832.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b3my1h6q7jfwn"
|
||||
path.s3tc="res://.godot/imported/house_02-col_доски.png-baea634ed5ee5838c4787b8bd0e58f80.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "50c5a5ae6740cb2b091e5a15318d913b"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/house_02/house_02-col_доски.png"
|
||||
dest_files=["res://.godot/imported/house_02-col_доски.png-baea634ed5ee5838c4787b8bd0e58f80.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://evml2s8rmerw"
|
||||
path="res://.godot/imported/Obelisk.glb-05c41c7cffd184a06825322551c2ab18.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/obelisk_01/Obelisk.glb"
|
||||
dest_files=["res://.godot/imported/Obelisk.glb-05c41c7cffd184a06825322551c2ab18.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://db05x4f444mr2"
|
||||
path="res://.godot/imported/Tower_01.glb-8a914eb64fe3506b2bab9e6cd24092c9.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/tower_01/Tower_01.glb"
|
||||
dest_files=["res://.godot/imported/Tower_01.glb-8a914eb64fe3506b2bab9e6cd24092c9.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=2
|
||||
meshes/lightmap_texel_size=1.781
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b6d4btx7xn51j"
|
||||
path="res://.godot/imported/Tree_01_low.glb-be77d2014f7bf6921365444dceccbcb7.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://maps/sandbox/models/tree_01/Tree_01_low.glb"
|
||||
dest_files=["res://.godot/imported/Tree_01_low.glb-be77d2014f7bf6921365444dceccbcb7.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
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
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
@@ -0,0 +1,47 @@
|
||||
extends NavigationRegion3D
|
||||
# Запекает навмеш при старте игры по статическим коллизиям уровня (пол, здания, деревья).
|
||||
|
||||
const SOURCE_GROUP := "nav_source"
|
||||
|
||||
@export var exclude: Array[NodePath] = [] # Узлы, которые не должны попасть в навмеш (например, сам камень)
|
||||
@export var bake_half_size := 300.0 # Половина стороны квадрата запекания вокруг центра мира
|
||||
@export var cell_size := 1.0 # Крупная ячейка — быстрое запекание (в вебе нет потоков)
|
||||
@export var agent_radius := 2.0
|
||||
@export var agent_height := 5.0
|
||||
|
||||
func _ready() -> void:
|
||||
var nm := NavigationMesh.new()
|
||||
nm.cell_size = cell_size
|
||||
nm.cell_height = 0.25
|
||||
nm.agent_radius = agent_radius
|
||||
nm.agent_height = agent_height
|
||||
nm.agent_max_climb = 0.5
|
||||
nm.geometry_parsed_geometry_type = NavigationMesh.PARSED_GEOMETRY_STATIC_COLLIDERS
|
||||
nm.geometry_source_geometry_mode = NavigationMesh.SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN
|
||||
nm.geometry_source_group_name = SOURCE_GROUP
|
||||
nm.filter_baking_aabb = AABB(Vector3(-bake_half_size, -10, -bake_half_size), Vector3(bake_half_size * 2, 60, bake_half_size * 2))
|
||||
navigation_mesh = nm
|
||||
|
||||
var map := get_world_3d().navigation_map
|
||||
NavigationServer3D.map_set_cell_size(map, nm.cell_size)
|
||||
NavigationServer3D.map_set_cell_height(map, nm.cell_height)
|
||||
|
||||
# Ждём кадр, чтобы процедурные узлы (лес) успели создать коллизии
|
||||
await get_tree().process_frame
|
||||
var excluded: Array[Node] = []
|
||||
for p in exclude:
|
||||
var n := get_node_or_null(p)
|
||||
if n:
|
||||
excluded.append(n)
|
||||
_mark_sources(get_parent(), excluded)
|
||||
bake_navigation_mesh(true)
|
||||
|
||||
# Помечает всё дерево сцены как источник геометрии, обходя исключённые узлы
|
||||
func _mark_sources(node: Node, excluded: Array[Node]) -> void:
|
||||
for c in node.get_children():
|
||||
if c == self or c in excluded:
|
||||
continue
|
||||
if excluded.any(func(e): return c.is_ancestor_of(e)):
|
||||
_mark_sources(c, excluded)
|
||||
else:
|
||||
c.add_to_group(SOURCE_GROUP)
|
||||
@@ -0,0 +1 @@
|
||||
uid://c2k1kj4a2s2su
|
||||
@@ -0,0 +1,141 @@
|
||||
[gd_scene format=3 uid="uid://6vc0m7mc73f1"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c7tg5v5vpe77k" path="res://maps/sandbox/models/cyber_office/cyber_office.glb" id="1_2cqfq"]
|
||||
[ext_resource type="Texture2D" uid="uid://mdxwd8w6hbax" path="res://maps/sandbox/sky/overcast_soil_puresky_2k.hdr" id="2_5vw27"]
|
||||
[ext_resource type="PackedScene" uid="uid://c3efk6k8xnf57" path="res://player/player.tscn" id="2_h2yge"]
|
||||
[ext_resource type="PackedScene" uid="uid://cvrj2ay2fq4x8" path="res://maps/sandbox/floor/Floor.glb" id="3_h2yge"]
|
||||
[ext_resource type="PackedScene" uid="uid://d4evo4b0wv23h" path="res://maps/sandbox/models/building_02.glb" id="4_7mycd"]
|
||||
[ext_resource type="PackedScene" uid="uid://db05x4f444mr2" path="res://maps/sandbox/models/tower_01/Tower_01.glb" id="5_272bh"]
|
||||
[ext_resource type="PackedScene" uid="uid://dr2udwp3pu8g1" path="res://maps/sandbox/models/house_02/house_02-col.glb" id="6_5vw27"]
|
||||
[ext_resource type="AudioStream" uid="uid://ddsynauqeoppw" path="res://maps/sandbox/audio/tron_01.ogg" id="7_272bh"]
|
||||
[ext_resource type="PackedScene" uid="uid://evml2s8rmerw" path="res://maps/sandbox/models/obelisk_01/Obelisk.glb" id="9_kek77"]
|
||||
[ext_resource type="Script" uid="uid://cx16mgkh4bldx" path="res://maps/sandbox/forest.gd" id="12_forest"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6d4btx7xn51j" path="res://maps/sandbox/models/tree_01/Tree_01_low.glb" id="13_treelow"]
|
||||
[ext_resource type="Script" uid="uid://j5ultotjrstk" path="res://maps/sandbox/birds.gd" id="14_birds"]
|
||||
[ext_resource type="Script" uid="uid://chtck5eaaddrw" path="res://maps/sandbox/levitate.gd" id="15_levitate"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmprcwbt78ghq" path="res://maps/sandbox/models/empire_state/Empire-State.glb" id="17_yaehf"]
|
||||
[ext_resource type="Script" uid="uid://c2k1kj4a2s2su" path="res://maps/sandbox/nav_bake.gd" id="18_navbake"]
|
||||
[ext_resource type="Script" uid="uid://bu8v0ivhmnykt" path="res://objects/portal.gd" id="19_portal"]
|
||||
[ext_resource type="PackedScene" path="res://chasers/verity/verity.tscn" id="20_verity"]
|
||||
[ext_resource type="PackedScene" path="res://chasers/rock/rock.tscn" id="21_rock"]
|
||||
|
||||
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_6opy2"]
|
||||
panorama = ExtResource("2_5vw27")
|
||||
energy_multiplier = 0.4
|
||||
|
||||
[sub_resource type="Sky" id="Sky_5dpsc"]
|
||||
sky_material = SubResource("PanoramaSkyMaterial_6opy2")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_x7k75"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_5dpsc")
|
||||
ssao_enabled = true
|
||||
ssao_radius = 2.32
|
||||
ssao_intensity = 3.24
|
||||
glow_enabled = true
|
||||
fog_enabled = true
|
||||
fog_light_color = Color(0.34900904, 0.38130295, 0.42570883, 1)
|
||||
fog_light_energy = 0.91
|
||||
fog_sun_scatter = 0.06
|
||||
fog_density = 0.021
|
||||
fog_sky_affect = 0.902
|
||||
adjustment_enabled = true
|
||||
|
||||
[node name="Node3D" type="Node3D" unique_id=402787459]
|
||||
|
||||
[node name="Architecture" type="Node3D" parent="." unique_id=1485328160]
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="building_02" parent="Architecture" unique_id=405025941 instance=ExtResource("4_7mycd")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -12.292704, 0, -5.969286)
|
||||
|
||||
[node name="Tower_01" parent="Architecture" unique_id=1436461045 instance=ExtResource("5_272bh")]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -12.874907, 9.536743e-07, 21.923906)
|
||||
|
||||
[node name="minecraft-house_02-col" parent="Architecture" unique_id=497625491 instance=ExtResource("6_5vw27")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.864338, -0.0029354095, 18.549324)
|
||||
|
||||
[node name="Obelisk" parent="Architecture" unique_id=94486605 instance=ExtResource("9_kek77")]
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 78.88046, 25, 38.156742)
|
||||
script = ExtResource("15_levitate")
|
||||
amplitude = 5.0
|
||||
period = 8.0
|
||||
|
||||
[node name="rock" parent="Architecture" unique_id=1419147983 instance=ExtResource("21_rock")]
|
||||
transform = Transform3D(-0.4002386, 0, -0.916411, 0, 1, 0, 0.916411, 0, -0.4002386, 8.31884, -0.0029411316, 40.503094)
|
||||
sight_limited = true
|
||||
sight_range = 45.0
|
||||
sight_fov = 130.0
|
||||
hearing_radius = 8.0
|
||||
lose_time = 5.0
|
||||
wander_radius = 40.0
|
||||
|
||||
[node name="cyber_office" parent="Architecture" unique_id=1003431047 instance=ExtResource("1_2cqfq")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.9035664, -0.2606399, -24.004528)
|
||||
|
||||
[node name="Environment" type="Node3D" parent="." unique_id=786334107]
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Environment" unique_id=1278575418]
|
||||
stream = ExtResource("7_272bh")
|
||||
autoplay = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="Environment" unique_id=726373494]
|
||||
environment = SubResource("Environment_x7k75")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment/WorldEnvironment" unique_id=1584854505]
|
||||
transform = Transform3D(-0.72657466, -0.6383954, -0.25404838, 0, -0.36974674, 0.92913264, -0.68708754, 0.6750842, 0.26864862, 0, 3.2902045, 0)
|
||||
light_color = Color(0, 0.24562582, 0.24562573, 1)
|
||||
light_indirect_energy = 0.921
|
||||
shadow_enabled = true
|
||||
shadow_normal_bias = 6.01
|
||||
shadow_opacity = 0.63
|
||||
shadow_blur = 7.0
|
||||
directional_shadow_split_1 = 0.14
|
||||
directional_shadow_split_2 = 0.185
|
||||
directional_shadow_max_distance = 186.7
|
||||
|
||||
[node name="Floor" parent="Environment" unique_id=1320100733 instance=ExtResource("3_h2yge")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.63628197, -0.002937317, 0.7328758)
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Nature" type="Node3D" parent="." unique_id=950189180]
|
||||
script = ExtResource("12_forest")
|
||||
tree_scene = ExtResource("13_treelow")
|
||||
|
||||
[node name="Birds" type="Node3D" parent="Nature" unique_id=770000001]
|
||||
script = ExtResource("14_birds")
|
||||
target_path = NodePath("../../Architecture/Tower_01")
|
||||
min_radius = 18.0
|
||||
max_radius = 32.0
|
||||
min_height = 6.0
|
||||
max_height = 55.0
|
||||
bird_scale = 0.9
|
||||
|
||||
[node name="CharacterBody3D" parent="." unique_id=365865796 instance=ExtResource("2_h2yge")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0830812, 5.621685, 0.44329834)
|
||||
|
||||
[node name="Empire-State" parent="." unique_id=913942978 instance=ExtResource("17_yaehf")]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 188.18842, -0.0029239655, 0.5043459)
|
||||
|
||||
[node name="Navigation" type="NavigationRegion3D" parent="." unique_id=1471038126]
|
||||
script = ExtResource("18_navbake")
|
||||
exclude = Array[NodePath]([NodePath("../Architecture/rock"), NodePath("../CharacterBody3D")])
|
||||
|
||||
[node name="HubPortal" type="Area3D" parent="." unique_id=982018721]
|
||||
transform = Transform3D(-0.49999985, 0, -0.8660255, 0, 1, 0, 0.8660255, 0, -0.49999985, -14.694777, 7.7547903, 22.85205)
|
||||
script = ExtResource("19_portal")
|
||||
target_map = "hub"
|
||||
target_scene = "res://maps/hub/hub.tscn"
|
||||
title = "HUB"
|
||||
color = Color(0.85, 0.9, 1, 1)
|
||||
|
||||
[node name="Verity" parent="." instance=ExtResource("20_verity")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -60, 0, 40)
|
||||
speed = 12.0
|
||||
sight_limited = true
|
||||
sight_range = 55.0
|
||||
sight_fov = 110.0
|
||||
hearing_radius = 10.0
|
||||
lose_time = 6.0
|
||||
wander_radius = 50.0
|
||||