Compare commits
21 Commits
main
..
534b7f45ca
| Author | SHA1 | Date | |
|---|---|---|---|
| 534b7f45ca | |||
| 524a222b6c | |||
| 9ca6f282f5 | |||
| 64a8a9863d | |||
| c5ef68e82a | |||
| 4569d3f5d4 | |||
| 7b6a141767 | |||
| b839252fe0 | |||
| ac0da2a6fc | |||
| c3f92d8758 | |||
| 9c4563a973 | |||
| ffe3052468 | |||
| f02185e859 | |||
| 70274f1773 | |||
| 973db7d8b8 | |||
| 1ea7f7a744 | |||
| 64fabb688f | |||
| 9122a601d0 | |||
| a6f938a0da | |||
| 994ce3be73 | |||
| 39aacc3c87 |
@@ -9,10 +9,9 @@
|
|||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
# Blender render previews (generated by render_anim_preview.py)
|
# Blender render previews (generated by render_anim_preview.py)
|
||||||
art/blender/preview/
|
Blender/preview/
|
||||||
|
|
||||||
# Blender auto-save backups (.blend1, .blend2, … — Blender rewrites these on every save)
|
Blender/*.blend1
|
||||||
art/blender/*.blend[0-9]
|
|
||||||
|
|
||||||
# Test output (generated screenshots, frame strips)
|
# Test output (generated screenshots, frame strips)
|
||||||
tests/output/
|
tests/output/
|
||||||
|
|||||||
@@ -0,0 +1,93 @@
|
|||||||
|
[gd_resource type="Animation" format=3 uid="uid://bq71flatfddll"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "Bear_fx_smash_hit"
|
||||||
|
length = 0.23333333
|
||||||
|
tracks/0/type = "position_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Bear_fx_smash_hit")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, 0, -0.51246816, 7.1560388, 0.033333335, 1, 0, -0.51246816, 7.1560388, 0.06666667, 1, 1.2735307, -1.4730668, 5.139501, 0.1, 1, 1.3610363, 0.27301335, 5.141279, 0.13333334, 1, 1.3735371, 2.1639488, 5.153728, 0.16666667, 1, 1.3573295, -0.04170864, 5.1945124, 0.2, 1, 1.3061407, -0.3338372, 5.1877995, 0.23333333, 1, 1.2735307, -0.37556988, 5.1810856)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Bear_fx_smash_hit")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.033333335, 1, 0, 0, 0, 1, 0.06666667, 1, 0.045591418, -0.036703378, -0.0016762356, 0.9982843, 0.1, 1, 0.06741002, -0.02538766, 0.014408795, 0.99729824, 0.13333334, 1, 0.05603578, -0.017236687, 0.029419938, 0.99784636, 0.16666667, 1, -0.071329094, -0.014488678, 0.036211126, 0.9966901, 0.23333333, 1, -0.039237745, -0.015645763, 0.035726424, 0.99846846)
|
||||||
|
tracks/2/type = "scale_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Bear_fx_smash_hit")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, 0, 0, 0, 0.033333335, 1, 0, 0, 0, 0.06666667, 1, 0.55657715, 0.55657715, 0.5565772, 0.23333333, 1, 0.55657715, 0.55657715, 0.55657715)
|
||||||
|
tracks/3/type = "position_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Bear_fx_jump_smash")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, 0, -0.51246816, 0)
|
||||||
|
tracks/4/type = "scale_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Bear_fx_jump_smash")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||||
|
tracks/5/type = "position_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Bear_fx_claw_attack_R")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, -3.188013, 1.0970955, 1.7545929)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("Bear_fx_claw_attack_R")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
|
||||||
|
tracks/7/type = "scale_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("Bear_fx_claw_attack_R")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||||
|
tracks/8/type = "position_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("Bear_fx_claw_attack_L")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, -3.188013, 1.0970955, 1.7545929)
|
||||||
|
tracks/9/type = "rotation_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("Bear_fx_claw_attack_L")
|
||||||
|
tracks/9/interp = 1
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
|
||||||
|
tracks/10/type = "scale_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("Bear_fx_claw_attack_L")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||||
|
tracks/11/type = "method"
|
||||||
|
tracks/11/imported = false
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("..")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = {
|
||||||
|
"times": PackedFloat32Array(),
|
||||||
|
"transitions": PackedFloat32Array(),
|
||||||
|
"values": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
add_to_group(&"public") # excluded from debug overlays — see publikum_controller.gd
|
||||||
|
var anim := get_node_or_null(^"AnimationPlayer") as AnimationPlayer
|
||||||
|
if anim:
|
||||||
|
anim.play(&"Juubeldab")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://wj6tgh8nb0ka
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$AnimationPlayer.play("ArmatureAction")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://gt3kfchac3m3
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://cmxqocsdbgufr"
|
uid="uid://cmxqocsdbgufr"
|
||||||
path="res://.godot/imported/crowd_clap.glb-8bb3f532af711440142a67228d380ce0.scn"
|
path="res://.godot/imported/mees_plaksutab.glb-0ce4e4ee8c8f92069abfac9352f0f4b9.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/anim/crowd_clap.glb"
|
source_file="res://Animations/mees_plaksutab.glb"
|
||||||
dest_files=["res://.godot/imported/crowd_clap.glb-8bb3f532af711440142a67228d380ce0.scn"]
|
dest_files=["res://.godot/imported/mees_plaksutab.glb-0ce4e4ee8c8f92069abfac9352f0f4b9.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://cl54dt38yj2x"
|
uid="uid://cl54dt38yj2x"
|
||||||
path="res://.godot/imported/arena.glb-264984213b895d6f3700ac45a3723e1b.scn"
|
path="res://.godot/imported/Arena.glb-bf6b057edaab2fa44513d7f705517361.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/arena.glb"
|
source_file="res://Assets/Arena.glb"
|
||||||
dest_files=["res://.godot/imported/arena.glb-264984213b895d6f3700ac45a3723e1b.scn"]
|
dest_files=["res://.godot/imported/Arena.glb-bf6b057edaab2fa44513d7f705517361.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 598 KiB After Width: | Height: | Size: 598 KiB |
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dye0tdpci2tkq"
|
uid="uid://dk6xuwwa0mfpe"
|
||||||
path.s3tc="res://.godot/imported/arena_sand.png-4cc22eb5e14e50f1db5a7a89ceff8004.s3tc.ctex"
|
path.s3tc="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex"
|
||||||
path.etc2="res://.godot/imported/arena_sand.png-4cc22eb5e14e50f1db5a7a89ceff8004.etc2.ctex"
|
path.etc2="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -15,8 +15,8 @@ generator_parameters={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/arena_sand.png"
|
source_file="res://Assets/Arena_sand.png"
|
||||||
dest_files=["res://.godot/imported/arena_sand.png-4cc22eb5e14e50f1db5a7a89ceff8004.s3tc.ctex", "res://.godot/imported/arena_sand.png-4cc22eb5e14e50f1db5a7a89ceff8004.etc2.ctex"]
|
dest_files=["res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex", "res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 412 KiB After Width: | Height: | Size: 412 KiB |
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dm1okamastgng"
|
uid="uid://b4gkpa7jypcsm"
|
||||||
path.s3tc="res://.godot/imported/arena_wall.png-f64c5b0c4dea0a0dcf6990f8e3c784c1.s3tc.ctex"
|
path.s3tc="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex"
|
||||||
path.etc2="res://.godot/imported/arena_wall.png-f64c5b0c4dea0a0dcf6990f8e3c784c1.etc2.ctex"
|
path.etc2="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -15,8 +15,8 @@ generator_parameters={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/arena_wall.png"
|
source_file="res://Assets/Arena_wall.png"
|
||||||
dest_files=["res://.godot/imported/arena_wall.png-f64c5b0c4dea0a0dcf6990f8e3c784c1.s3tc.ctex", "res://.godot/imported/arena_wall.png-f64c5b0c4dea0a0dcf6990f8e3c784c1.etc2.ctex"]
|
dest_files=["res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex", "res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dryuo2ki5chup"
|
uid="uid://yercpq3y2o0x"
|
||||||
path.s3tc="res://.godot/imported/arena_wood.png-d9cdb61161159d26fad03930575509f8.s3tc.ctex"
|
path.s3tc="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex"
|
||||||
path.etc2="res://.godot/imported/arena_wood.png-d9cdb61161159d26fad03930575509f8.etc2.ctex"
|
path.etc2="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -15,8 +15,8 @@ generator_parameters={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/arena_wood.png"
|
source_file="res://Assets/Arena_wood.png"
|
||||||
dest_files=["res://.godot/imported/arena_wood.png-d9cdb61161159d26fad03930575509f8.s3tc.ctex", "res://.godot/imported/arena_wood.png-d9cdb61161159d26fad03930575509f8.etc2.ctex"]
|
dest_files=["res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex", "res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ch1wqha62vhtb"
|
||||||
|
path="res://.godot/imported/IG_square.png-c38dd1a0a4601b6ff4ffec2910ed2ce0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/IG_square.png"
|
||||||
|
dest_files=["res://.godot/imported/IG_square.png-c38dd1a0a4601b6ff4ffec2910ed2ce0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
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=false
|
||||||
|
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=1
|
||||||
@@ -3,13 +3,13 @@
|
|||||||
importer="scene"
|
importer="scene"
|
||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://cofv5dbavesis"
|
uid="uid://cwmo5vh738x6w"
|
||||||
path="res://.godot/imported/bear.glb-75dd9ad1d0d42d959c02624cfc22996d.scn"
|
path="res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/characters/bear.glb"
|
source_file="res://Assets/Lobby_level.glb"
|
||||||
dest_files=["res://.godot/imported/bear.glb-75dd9ad1d0d42d959c02624cfc22996d.scn"]
|
dest_files=["res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 598 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://xtv6u00w4nmy"
|
||||||
|
path.s3tc="res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "c8b9b7d6205ce80dfcfaa38152b996fe"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Lobby_level_sand.png"
|
||||||
|
dest_files=["res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.s3tc.ctex", "res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.etc2.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: 412 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://csy5f3l5lufp5"
|
||||||
|
path.s3tc="res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "0e7ed34c3c812d96732bd32f9dca0c93"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Lobby_level_wall.png"
|
||||||
|
dest_files=["res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.s3tc.ctex", "res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.etc2.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: 180 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ym5273astq46"
|
||||||
|
path.s3tc="res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "23a7a951553ffe271c47693fd71314ca"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Lobby_level_wood.png"
|
||||||
|
dest_files=["res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.s3tc.ctex", "res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.etc2.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
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://dctmlh4hnuux1"
|
uid="uid://dctmlh4hnuux1"
|
||||||
path="res://.godot/imported/lobby.glb-1d34dfaf6904dec848c685068e3efc3c.scn"
|
path="res://.godot/imported/Lobby_underground.glb-55ed49331d7074ef560bfa0a498b89a7.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/lobby.glb"
|
source_file="res://Assets/Lobby_underground.glb"
|
||||||
dest_files=["res://.godot/imported/lobby.glb-1d34dfaf6904dec848c685068e3efc3c.scn"]
|
dest_files=["res://.godot/imported/Lobby_underground.glb-55ed49331d7074ef560bfa0a498b89a7.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cbm5a523ff5ug"
|
uid="uid://dc4gf36fgsabp"
|
||||||
path.s3tc="res://.godot/imported/lobby_rock.png-66f142adb44f06651f707bc164b6c921.s3tc.ctex"
|
path.s3tc="res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.s3tc.ctex"
|
||||||
path.etc2="res://.godot/imported/lobby_rock.png-66f142adb44f06651f707bc164b6c921.etc2.ctex"
|
path.etc2="res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -15,8 +15,8 @@ generator_parameters={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/lobby_rock.png"
|
source_file="res://Assets/Lobby_underground_rock.png"
|
||||||
dest_files=["res://.godot/imported/lobby_rock.png-66f142adb44f06651f707bc164b6c921.s3tc.ctex", "res://.godot/imported/lobby_rock.png-66f142adb44f06651f707bc164b6c921.etc2.ctex"]
|
dest_files=["res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://v0hdo12xule3"
|
||||||
|
path.s3tc="res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "335b739e743244a64c47e2564a9a3652"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Lobby_underground_rock_B.jpg"
|
||||||
|
dest_files=["res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.etc2.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
|
||||||
|
Before Width: | Height: | Size: 183 KiB After Width: | Height: | Size: 183 KiB |
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://ys0s83ja56wq"
|
uid="uid://dcy7fdio5k84j"
|
||||||
path.s3tc="res://.godot/imported/lobby_rock_B.png-37b0a005360cf97293be6283cf071710.s3tc.ctex"
|
path.s3tc="res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.s3tc.ctex"
|
||||||
path.etc2="res://.godot/imported/lobby_rock_B.png-37b0a005360cf97293be6283cf071710.etc2.ctex"
|
path.etc2="res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
@@ -15,8 +15,8 @@ generator_parameters={
|
|||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/lobby_rock_B.png"
|
source_file="res://Assets/Lobby_underground_rock_B.png"
|
||||||
dest_files=["res://.godot/imported/lobby_rock_B.png-37b0a005360cf97293be6283cf071710.s3tc.ctex", "res://.godot/imported/lobby_rock_B.png-37b0a005360cf97293be6283cf071710.etc2.ctex"]
|
dest_files=["res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://eu2lqjhowj4t"
|
uid="uid://eu2lqjhowj4t"
|
||||||
path="res://.godot/imported/matador.glb-d61955edf618ff60a81602b44843dd9c.scn"
|
path="res://.godot/imported/Matador.glb-84387af784b13addc4467fc8edace9ff.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/characters/matador.glb"
|
source_file="res://Assets/Matador.glb"
|
||||||
dest_files=["res://.godot/imported/matador.glb-d61955edf618ff60a81602b44843dd9c.scn"]
|
dest_files=["res://.godot/imported/Matador.glb-84387af784b13addc4467fc8edace9ff.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://dio67r8ambe7h"
|
uid="uid://dio67r8ambe7h"
|
||||||
path="res://.godot/imported/arena_placeholder.glb-68e73f8a6bb217cac98b8f818c5695f3.scn"
|
path="res://.godot/imported/arena_placeholder_v01.glb-fc11365d8ec7ae6778e90b13ba508b8a.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/arena_placeholder.glb"
|
source_file="res://Assets/arena_placeholder_v01.glb"
|
||||||
dest_files=["res://.godot/imported/arena_placeholder.glb-68e73f8a6bb217cac98b8f818c5695f3.scn"]
|
dest_files=["res://.godot/imported/arena_placeholder_v01.glb-fc11365d8ec7ae6778e90b13ba508b8a.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://bm6rmt3xprhjs"
|
uid="uid://bm6rmt3xprhjs"
|
||||||
path="res://.godot/imported/bear_arena.glb-a77a1f382b9484329a86c918e0bd3248.scn"
|
path="res://.godot/imported/bear_level_arena.glb-b6a9df3b338c8b0345fe2642d8b715eb.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/levels/bear_arena.glb"
|
source_file="res://Assets/bear_level_arena.glb"
|
||||||
dest_files=["res://.godot/imported/bear_arena.glb-a77a1f382b9484329a86c918e0bd3248.scn"]
|
dest_files=["res://.godot/imported/bear_level_arena.glb-b6a9df3b338c8b0345fe2642d8b715eb.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -3,13 +3,13 @@
|
|||||||
importer="scene"
|
importer="scene"
|
||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://bdbx0wwa73rhp"
|
uid="uid://dnltsqmuqcxh1"
|
||||||
path="res://.godot/imported/bear_fx.glb-ec36223896f7444a4dbe06fe70380d22.scn"
|
path="res://.godot/imported/Barrel.glb-8809615fbcbd5dc5b64a229316967555.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/fx/bear_fx.glb"
|
source_file="res://Assets/breakables/Barrel.glb"
|
||||||
dest_files=["res://.godot/imported/bear_fx.glb-ec36223896f7444a4dbe06fe70380d22.scn"]
|
dest_files=["res://.godot/imported/Barrel.glb-8809615fbcbd5dc5b64a229316967555.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://bun14xmk20pcj"
|
uid="uid://bun14xmk20pcj"
|
||||||
path="res://.godot/imported/bull.fbx-ffca5aad6fa2fef7c6aaeff23784274e.scn"
|
path="res://.godot/imported/bull.fbx-50f6d03a92c862695bbeaeba563be0db.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/characters/bull.fbx"
|
source_file="res://Assets/bull.fbx"
|
||||||
dest_files=["res://.godot/imported/bull.fbx-ffca5aad6fa2fef7c6aaeff23784274e.scn"]
|
dest_files=["res://.godot/imported/bull.fbx-50f6d03a92c862695bbeaeba563be0db.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -3,15 +3,15 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://ml0ntjv5injp"
|
uid="uid://ml0ntjv5injp"
|
||||||
path="res://.godot/imported/bull_hud_bg.png-f67a00a60afb8883b839ecb4166de64a.ctex"
|
path="res://.godot/imported/bull_hud_bg.png-4645abe7114935a3d4a8e0f88ccce15c.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/ui/bull_hud_bg.png"
|
source_file="res://Assets/bull_hud_bg.png"
|
||||||
dest_files=["res://.godot/imported/bull_hud_bg.png-f67a00a60afb8883b839ecb4166de64a.ctex"]
|
dest_files=["res://.godot/imported/bull_hud_bg.png-4645abe7114935a3d4a8e0f88ccce15c.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
@@ -3,15 +3,15 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://d166u18p3wqiy"
|
uid="uid://d166u18p3wqiy"
|
||||||
path="res://.godot/imported/crowd_clap_sheet.png-e361ca997775492752318ae9e07bc029.ctex"
|
path="res://.godot/imported/crowd_clap_sheet.png-a110e7d663af8fcbe9ebf5de44188c85.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/textures/crowd_clap_sheet.png"
|
source_file="res://Assets/crowd_clap_sheet.png"
|
||||||
dest_files=["res://.godot/imported/crowd_clap_sheet.png-e361ca997775492752318ae9e07bc029.ctex"]
|
dest_files=["res://.godot/imported/crowd_clap_sheet.png-a110e7d663af8fcbe9ebf5de44188c85.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 552 KiB After Width: | Height: | Size: 552 KiB |
@@ -3,15 +3,15 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dct1d88g015el"
|
uid="uid://dct1d88g015el"
|
||||||
path="res://.godot/imported/icon.png-f2b5120aa271a1069de1845e9f11551a.ctex"
|
path="res://.godot/imported/kleeps_v2.png-55aa0dd25620611263a8b3000c5e2a49.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/ui/icon.png"
|
source_file="res://Assets/kleeps_v2.png"
|
||||||
dest_files=["res://.godot/imported/icon.png-f2b5120aa271a1069de1845e9f11551a.ctex"]
|
dest_files=["res://.godot/imported/kleeps_v2.png-55aa0dd25620611263a8b3000c5e2a49.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.5 MiB After Width: | Height: | Size: 3.5 MiB |
@@ -3,15 +3,15 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bh5nuyudh7x44"
|
uid="uid://bh5nuyudh7x44"
|
||||||
path="res://.godot/imported/loading_screen.png-f9bd8b25f6725636a7d0bb2eedf9e88d.ctex"
|
path="res://.godot/imported/loading_screen.png-253743b71eb7ab3f4f9e2b29cbabf407.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/ui/loading_screen.png"
|
source_file="res://Assets/loading_screen.png"
|
||||||
dest_files=["res://.godot/imported/loading_screen.png-f9bd8b25f6725636a7d0bb2eedf9e88d.ctex"]
|
dest_files=["res://.godot/imported/loading_screen.png-253743b71eb7ab3f4f9e2b29cbabf407.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -11,4 +11,5 @@ func _process(_delta: float) -> void:
|
|||||||
if Run.bear_gate_open() or DP.b("gate_unlocked_bear"):
|
if Run.bear_gate_open() or DP.b("gate_unlocked_bear"):
|
||||||
bear_gate_open = true
|
bear_gate_open = true
|
||||||
$AnimationPlayer.play("Gate_opening")
|
$AnimationPlayer.play("Gate_opening")
|
||||||
Controls.vibrate_for(0, 0.5, .5, 7.0)
|
if DP.b("gamepad_vibration"):
|
||||||
|
Input.start_joy_vibration(0, 0.5, .5, 7)
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
extends Node3D
|
||||||
|
|
||||||
|
|
||||||
|
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
animation_player.play("Taunt")
|
||||||
|
animation_player.animation_finished.connect(_on_animation_finished)
|
||||||
|
|
||||||
|
func _on_animation_finished(anim_name):
|
||||||
|
if anim_name == "Taunt":
|
||||||
|
animation_player.play("Taunt")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dycnoiadljbb1
|
||||||
|
After Width: | Height: | Size: 296 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bxv1uuymonrp6"
|
||||||
|
path="res://.godot/imported/menu_bg.png-3906063022fa3c81090e3c663f8866b0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/menu_bg.png"
|
||||||
|
dest_files=["res://.godot/imported/menu_bg.png-3906063022fa3c81090e3c663f8866b0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
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=false
|
||||||
|
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=1
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://jepc74w8opbu"
|
uid="uid://jepc74w8opbu"
|
||||||
path="res://.godot/imported/spear.glb-897aa70a590414c6ce29e470f6faaa27.scn"
|
path="res://.godot/imported/spear.glb-0139879d219c93f9dd35db2304db7d5d.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/weapons/spear.glb"
|
source_file="res://Assets/spear.glb"
|
||||||
dest_files=["res://.godot/imported/spear.glb-897aa70a590414c6ce29e470f6faaa27.scn"]
|
dest_files=["res://.godot/imported/spear.glb-0139879d219c93f9dd35db2304db7d5d.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -4,12 +4,12 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://xyvank512l5n"
|
uid="uid://xyvank512l5n"
|
||||||
path="res://.godot/imported/sword.glb-9c669a3bcaf2239bd86713b316bcf806.scn"
|
path="res://.godot/imported/sword.glb-a20d99f4c597d7fdae7f36c74685e1ff.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://art/weapons/sword.glb"
|
source_file="res://Assets/sword.glb"
|
||||||
dest_files=["res://.godot/imported/sword.glb-9c669a3bcaf2239bd86713b316bcf806.scn"]
|
dest_files=["res://.godot/imported/sword.glb-a20d99f4c597d7fdae7f36c74685e1ff.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
Blender 5.1 script: create walk + idle animations for matador.
|
Blender 5.1 script: create walk + idle animations for matador_v02.
|
||||||
Run: blender --background matador.blend --python create_matador_anims.py
|
Run: blender --background matador_v02.blend --python create_matador_anims.py
|
||||||
"""
|
"""
|
||||||
import bpy, math, os
|
import bpy, math, os
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ ti.name = 'idle'
|
|||||||
si = ti.strips.new('idle', 0, idle)
|
si = ti.strips.new('idle', 0, idle)
|
||||||
|
|
||||||
# ── export FBX ─────────────────────────────────────────────────────────────────
|
# ── export FBX ─────────────────────────────────────────────────────────────────
|
||||||
fbx_path = os.path.join(os.path.dirname(bpy.data.filepath), 'matador.fbx')
|
fbx_path = os.path.join(os.path.dirname(bpy.data.filepath), 'matador_v02.fbx')
|
||||||
bpy.ops.export_scene.fbx(
|
bpy.ops.export_scene.fbx(
|
||||||
filepath=fbx_path,
|
filepath=fbx_path,
|
||||||
use_selection=False,
|
use_selection=False,
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ymaeifakqovf
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
"""
|
"""
|
||||||
Blender 5.1 script: render preview frames of matador animations to PNG.
|
Blender 5.1 script: render preview frames of matador animations to PNG.
|
||||||
Run: blender --background matador.blend --python render_anim_preview.py
|
Run: blender --background matador_v02.blend --python render_anim_preview.py
|
||||||
|
|
||||||
Outputs to art/blender/preview/ directory:
|
Outputs to Blender/preview/ directory:
|
||||||
walk_frame_00.png .. walk_frame_09.png
|
walk_frame_00.png .. walk_frame_09.png
|
||||||
idle_frame_00.png
|
idle_frame_00.png
|
||||||
|
|
||||||
@@ -27,12 +27,7 @@ ui/ hud, mobile_hud, main_menu, ui_theme/fonts, over
|
|||||||
props/ barrels, torch
|
props/ barrels, torch
|
||||||
levels/ game_shell.tscn + level modules
|
levels/ game_shell.tscn + level modules
|
||||||
tools/ tests/ editor/bake scripts, headless tests
|
tools/ tests/ editor/bake scripts, headless tests
|
||||||
art/ all raw art, grouped by role (snake_case):
|
Assets/ Animations/ fonts/ HUD/ raw art (not yet consolidated under art/)
|
||||||
characters/ levels/ weapons/ bull/matador/bear, arena/lobby geometry, spear/sword
|
|
||||||
fx/ anim/ textures/ bear_fx, crowd_clap, baked sheets
|
|
||||||
ui/ icons/ fonts/ menu art, ability icons, Cinzel fonts
|
|
||||||
hdri/ materials/ sky HDRIs, shared StandardMaterial3D resources
|
|
||||||
blender/ Siim's .blend working files (Godot-ignored)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
| Path | Purpose |
|
| Path | Purpose |
|
||||||
@@ -43,9 +38,7 @@ art/ all raw art, grouped by role (snake_case):
|
|||||||
| `levels/arena_level.tscn` | The arena **level module**: floor + wall colliders, arena meshes, `MatadorSpawner` (with child `Node3D` spawn points placed by the designer), lighting, audience (`PublikNode`). Instanced into the shell's `LevelRoot` |
|
| `levels/arena_level.tscn` | The arena **level module**: floor + wall colliders, arena meshes, `MatadorSpawner` (with child `Node3D` spawn points placed by the designer), lighting, audience (`PublikNode`). Instanced into the shell's `LevelRoot` |
|
||||||
| `levels/bear_level.tscn` | The Bear's Den **level module**: bear-arena mesh, its own floor collider, lighting, and a `BearSpawner` (`bear_spawn.gd`) that places the bear at center. Instanced into the shell's `LevelRoot` |
|
| `levels/bear_level.tscn` | The Bear's Den **level module**: bear-arena mesh, its own floor collider, lighting, and a `BearSpawner` (`bear_spawn.gd`) that places the bear at center. Instanced into the shell's `LevelRoot` |
|
||||||
| `actors/player/player.tscn` | Player scene root (`CharacterBody3D`) |
|
| `actors/player/player.tscn` | Player scene root (`CharacterBody3D`) |
|
||||||
| `actors/player/player.gd` | Movement, charge, turning, and abilities (kick/dash/slam/roll). Ability & movement particle FX are **not** built here — they're authored scenes in `systems/fx/` (`bull_*.tscn`), fired via `Fx.spawn()` (one-shots) / `Fx.attach()` (continuous) |
|
| `actors/player/player.gd` | Movement, charge, turning logic |
|
||||||
| `actors/player/bull_impact_fx.gd` | Bull's coded, non-particle impact FX (the slam shockwave rings + kick flash-pop — tweened meshes, not CPUParticles3D, so they can't be `systems/fx/` scenes). Created by `player.gd` |
|
|
||||||
| `actors/player/bull_legs.gd` | Bull body-wobble + tail Verlet-chain simulation. Created by `player.gd` |
|
|
||||||
| `camera_spring_arm.gd` | Mouse-look pivot (`Node3D` + `SpringArm3D`) |
|
| `camera_spring_arm.gd` | Mouse-look pivot (`Node3D` + `SpringArm3D`) |
|
||||||
| `camera_follow.gd` | Smooth camera follow (`Camera3D`) |
|
| `camera_follow.gd` | Smooth camera follow (`Camera3D`) |
|
||||||
| `actors/matador/matador.gd` | Matador AI (wander / ragdoll state machine) |
|
| `actors/matador/matador.gd` | Matador AI (wander / ragdoll state machine) |
|
||||||
@@ -54,8 +47,10 @@ art/ all raw art, grouped by role (snake_case):
|
|||||||
| `actors/bear/bear.tscn` / `actors/bear/bear.gd` | Dark-Souls-style bear boss (`CharacterBody3D`). Routine state machine (wind-up → active → recovery) picking telegraphed moves by range band: Double Swipe / Overhead Smash (close), Leap Slam (mid-far), plus Stalk (2-leg walk-in) / Prowl (4-leg lope) positioning. Melee steps in during the swing (`bear_lunge_speed`) + tracks the bull; the leap is frame-synced to JUMP_SMASH so the paws hit ground on the impact frame (`bear_leap_impact_frame`); slams kick up dust + shake. Combos chain, hyper-armour mid-swing + poise (`bear_stagger_cd`), phase 2 enrage under `bear_enrage_frac` HP. Never damages the bull by colliding — only swings/slams. A horns-first bull charge wounds it (`_sweep_bull_ram`: swept prev→now so a tunnelling/point-blank charge still lands, gated by `bear_ram_reach` + `bull_gore_arc`, edge-triggered = one charge per wound). Joins `&"matador"` so bull abilities already hit it. Tuning under the `Bear` DP section |
|
| `actors/bear/bear.tscn` / `actors/bear/bear.gd` | Dark-Souls-style bear boss (`CharacterBody3D`). Routine state machine (wind-up → active → recovery) picking telegraphed moves by range band: Double Swipe / Overhead Smash (close), Leap Slam (mid-far), plus Stalk (2-leg walk-in) / Prowl (4-leg lope) positioning. Melee steps in during the swing (`bear_lunge_speed`) + tracks the bull; the leap is frame-synced to JUMP_SMASH so the paws hit ground on the impact frame (`bear_leap_impact_frame`); slams kick up dust + shake. Combos chain, hyper-armour mid-swing + poise (`bear_stagger_cd`), phase 2 enrage under `bear_enrage_frac` HP. Never damages the bull by colliding — only swings/slams. A horns-first bull charge wounds it (`_sweep_bull_ram`: swept prev→now so a tunnelling/point-blank charge still lands, gated by `bear_ram_reach` + `bull_gore_arc`, edge-triggered = one charge per wound). Joins `&"matador"` so bull abilities already hit it. Tuning under the `Bear` DP section |
|
||||||
| `actors/bear/bear_attack_hitboxes.tscn` | The bear's attack colliders as a self-contained sub-scene (instanced under `bear_model`): a `LeapSlamHitbox` (Hitbox + cylinder = ground circle) and `SmashHitbox` (Hitbox + box = forward shockwave lane), plus an `AnimationPlayer` whose `leap_slam` / `smash_travel` clips author each collider's size + travel — scrub to tweak, like `Bear_FX`. `actors/bear/bear.gd` only fires the clip, arms the knock-up shaping, and sweeps for overlaps while it runs (see `_setup_attack_hitboxes` / `_start_attack_hitbox`) |
|
| `actors/bear/bear_attack_hitboxes.tscn` | The bear's attack colliders as a self-contained sub-scene (instanced under `bear_model`): a `LeapSlamHitbox` (Hitbox + cylinder = ground circle) and `SmashHitbox` (Hitbox + box = forward shockwave lane), plus an `AnimationPlayer` whose `leap_slam` / `smash_travel` clips author each collider's size + travel — scrub to tweak, like `Bear_FX`. `actors/bear/bear.gd` only fires the clip, arms the knock-up shaping, and sweeps for overlaps while it runs (see `_setup_attack_hitboxes` / `_start_attack_hitbox`) |
|
||||||
| `actors/matador/sword.tscn` / `systems/combat/hitbox.gd` | The matador's sword wrapper (glb + editor-tweakable `BladeHitbox`). `systems/combat/hitbox.gd` (`class_name Hitbox`, Area3D) is the shared attack collider: `activate()`/`deactivate()` gate an active window, `sweep()` catches bodies already inside (AoE), and knock-up can ramp by distance (`knock_up_min_dist`/`_max_dist`) for the bear's outer-ring launch / further-hit-flies-higher |
|
| `actors/matador/sword.tscn` / `systems/combat/hitbox.gd` | The matador's sword wrapper (glb + editor-tweakable `BladeHitbox`). `systems/combat/hitbox.gd` (`class_name Hitbox`, Area3D) is the shared attack collider: `activate()`/`deactivate()` gate an active window, `sweep()` catches bodies already inside (AoE), and knock-up can ramp by distance (`knock_up_min_dist`/`_max_dist`) for the bear's outer-ring launch / further-hit-flies-higher |
|
||||||
| `levels/run_state.gd` | Run progression autoload (`Run`) — the lobby hub and which level is being fought, across scene reloads |
|
| `levels/run_state.gd` | Run progression autoload (`Run`) — Slay-the-Spire map + player position across fights |
|
||||||
| `levels/level_def.gd` | `LevelDef` resource — a level's name / `scene_path` (always the shell) / `level_scene` (the level module instanced into the shell) / optional `enemy_scene` (arena wave vs. a boss like the bear) |
|
| `levels/level_def.gd` | `LevelDef` resource — a level's name / map colour / `scene_path` (always the shell) / `level_scene` (the level module instanced into the shell) / optional `enemy_scene` (arena wave vs. a boss like the bear) |
|
||||||
|
| `levels/map_node.gd` | `MapNode` — one runtime node on the run map (position, level, links) |
|
||||||
|
| `levels/MapScreen.tscn` / `levels/map_screen.gd` | Between-fights map screen; win → pick a node → next level |
|
||||||
| `systems/crowd/crowd_marker.gd` | `CrowdMarker` (`@tool Node3D`, `class_name`) — designer drops one per billboard spectator via the editor's Add-Node dialog; picks one of six 60°-spaced facings from the `orientation` dropdown. Draws an editor-only preview (slab + forward arrow, never serialised) and joins the `&"crowd_marker"` group |
|
| `systems/crowd/crowd_marker.gd` | `CrowdMarker` (`@tool Node3D`, `class_name`) — designer drops one per billboard spectator via the editor's Add-Node dialog; picks one of six 60°-spaced facings from the `orientation` dropdown. Draws an editor-only preview (slab + forward arrow, never serialised) and joins the `&"crowd_marker"` group |
|
||||||
| `systems/crowd/crowd_billboards.gd` / `systems/crowd/crowd_billboard.gdshader` | `MultiMeshInstance3D` that harvests every `CrowdMarker` (group `&"crowd_marker"`) into one draw call, using each marker's world position + chosen facing. Front/back sprite sheet baked by `tools/bake_crowd_sheet.gd`; falls back to a generated inward-facing ring when no markers are placed |
|
| `systems/crowd/crowd_billboards.gd` / `systems/crowd/crowd_billboard.gdshader` | `MultiMeshInstance3D` that harvests every `CrowdMarker` (group `&"crowd_marker"`) into one draw call, using each marker's world position + chosen facing. Front/back sprite sheet baked by `tools/bake_crowd_sheet.gd`; falls back to a generated inward-facing ring when no markers are placed |
|
||||||
| `systems/debug/debug_params.gd` | Runtime-tunable parameter registry (autoload `DP`). Mobile-relevant flags: `force_touch_controls`, `touch_debug` (also enabled on-device with `?debug=1` in the page URL — shows the live profiler overlay in `systems/input/touch_controls.gd`), and `use_rigid_skin` (default **off** — native GPU skinning everywhere now that the 4.7 web templates fixed the Mali/ANGLE invisible-skinning bug; `systems/render/rigid_skin.gd` is a retained opt-in fallback). Rigid-skin is gated through `Controls.rigid_skin_enabled()`, which a page URL param overrides for on-device A/B with no console: `?skin=1` forces the workaround on (for a device where native skinning still fails), `?noskin=1` forces native off. Turning the workaround off also removes its per-spawn SurfaceTool rebuild, which was the arena's matador-spawn lag |
|
| `systems/debug/debug_params.gd` | Runtime-tunable parameter registry (autoload `DP`). Mobile-relevant flags: `force_touch_controls`, `touch_debug` (also enabled on-device with `?debug=1` in the page URL — shows the live profiler overlay in `systems/input/touch_controls.gd`), and `use_rigid_skin` (default **off** — native GPU skinning everywhere now that the 4.7 web templates fixed the Mali/ANGLE invisible-skinning bug; `systems/render/rigid_skin.gd` is a retained opt-in fallback). Rigid-skin is gated through `Controls.rigid_skin_enabled()`, which a page URL param overrides for on-device A/B with no console: `?skin=1` forces the workaround on (for a device where native skinning still fails), `?noskin=1` forces native off. Turning the workaround off also removes its per-spawn SurfaceTool rebuild, which was the arena's matador-spawn lag |
|
||||||
@@ -63,11 +58,11 @@ art/ all raw art, grouped by role (snake_case):
|
|||||||
| `ui/web_start_gate.gd` | Autoload `WebStartGate` — "TAP TO PLAY" panel shown on web+touch before play; the tap drives `Controls.request_fullscreen_landscape()` so the fullscreen/orientation churn happens with no in-flight touch to lose. Re-armable: polls browser fullscreen state and returns if the player leaves it (iPhone Safari can't fullscreen, so it stops nagging once a request never takes) |
|
| `ui/web_start_gate.gd` | Autoload `WebStartGate` — "TAP TO PLAY" panel shown on web+touch before play; the tap drives `Controls.request_fullscreen_landscape()` so the fullscreen/orientation churn happens with no in-flight touch to lose. Re-armable: polls browser fullscreen state and returns if the player leaves it (iPhone Safari can't fullscreen, so it stops nagging once a request never takes) |
|
||||||
| `ui/mobile_hud.gd` | Mobile-only health readouts (`CanvasLayer`, instanced by `ui/hud.gd` only on touch): big bull pip row top-left + a Souls-style bear boss bar top-centre (discovered via group `&"bear"`, tracks `health_changed`). The desktop bottom pip cluster is hidden on touch |
|
| `ui/mobile_hud.gd` | Mobile-only health readouts (`CanvasLayer`, instanced by `ui/hud.gd` only on touch): big bull pip row top-left + a Souls-style bear boss bar top-centre (discovered via group `&"bear"`, tracks `health_changed`). The desktop bottom pip cluster is hidden on touch |
|
||||||
| `ui/orientation_guard.gd` | Autoload `OrientationGuard` — full-screen "rotate your device" prompt shown on touch devices while portrait |
|
| `ui/orientation_guard.gd` | Autoload `OrientationGuard` — full-screen "rotate your device" prompt shown on touch devices while portrait |
|
||||||
| `art/` | All raw art, grouped by role (`characters/ levels/ weapons/ fx/ anim/ textures/ ui/ icons/ fonts/`). GLBs use **Extract Textures** import, so their embedded textures land beside them (e.g. `art/levels/arena_*.png`) named from the GLB — expected, keep them tracked |
|
| `Assets/` | Raw 3D assets (`.glb`, `.fbx`) |
|
||||||
| `art/blender/` | Blender source files, animation scripts, FBX exports (Godot-ignored via `.gdignore`) |
|
| `Blender/` | Blender source files, animation scripts, FBX exports |
|
||||||
| `art/blender/create_matador_anims.py` | Creates walk + idle animations and exports FBX |
|
| `Blender/create_matador_anims.py` | Creates walk + idle animations and exports FBX |
|
||||||
| `art/blender/render_anim_preview.py` | Renders animation preview PNGs for visual verification |
|
| `Blender/render_anim_preview.py` | Renders animation preview PNGs for visual verification |
|
||||||
| `art/blender/preview/` | Output directory for animation preview images |
|
| `Blender/preview/` | Output directory for animation preview images |
|
||||||
| `tests/` | Headless test scripts (screenshot capture, logic validation) |
|
| `tests/` | Headless test scripts (screenshot capture, logic validation) |
|
||||||
| `addons/rider-plugin/` | JetBrains Rider IDE integration |
|
| `addons/rider-plugin/` | JetBrains Rider IDE integration |
|
||||||
|
|
||||||
@@ -101,7 +96,7 @@ art/ all raw art, grouped by role (snake_case):
|
|||||||
|
|
||||||
## Animation & bone conventions
|
## Animation & bone conventions
|
||||||
|
|
||||||
### Blender rig (matador)
|
### Blender rig (matador_v02)
|
||||||
- **Armature bones:** `matador` (root) → `COG` → `chest` → `head`, `collarbone_L/R` → `arm_L/R` → `forearm_L/R` → `hand_L/R`, `leg_L/R` → `shin_L/R` → `foot_L/R`
|
- **Armature bones:** `matador` (root) → `COG` → `chest` → `head`, `collarbone_L/R` → `arm_L/R` → `forearm_L/R` → `hand_L/R`, `leg_L/R` → `shin_L/R` → `foot_L/R`
|
||||||
- **Rotation mode:** All animated bones use **XYZ Euler** (set in `create_matador_anims.py`)
|
- **Rotation mode:** All animated bones use **XYZ Euler** (set in `create_matador_anims.py`)
|
||||||
- **Bone-local axes:** Swing (forward/back) is on **local X**. Arm lowering from T-pose is on **local Y** (positive = left arm down, negative = right arm down). Knee bend is **positive X** (shins only bend backward).
|
- **Bone-local axes:** Swing (forward/back) is on **local X**. Arm lowering from T-pose is on **local Y** (positive = left arm down, negative = right arm down). Knee bend is **positive X** (shins only bend backward).
|
||||||
@@ -119,8 +114,8 @@ After FBX import, animations appear as `Armature|walk` and `Armature|idle` in An
|
|||||||
|
|
||||||
### Verification workflow
|
### Verification workflow
|
||||||
1. Edit bones/animations in Blender (`create_matador_anims.py`)
|
1. Edit bones/animations in Blender (`create_matador_anims.py`)
|
||||||
2. Run render preview: `blender --background art/blender/matador.blend --python art/blender/render_anim_preview.py`
|
2. Run render preview: `blender --background Blender/matador_v02.blend --python Blender/render_anim_preview.py`
|
||||||
3. Inspect PNGs in `art/blender/preview/` — check bone orientations **before** exporting to Godot
|
3. Inspect PNGs in `Blender/preview/` — check bone orientations **before** exporting to Godot
|
||||||
4. Export FBX (done automatically by `create_matador_anims.py`)
|
4. Export FBX (done automatically by `create_matador_anims.py`)
|
||||||
5. Re-import in Godot and test in-game
|
5. Re-import in Godot and test in-game
|
||||||
|
|
||||||
|
|||||||