Add finished creature artwork
BIN
art/exported/creatures/101.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
42
art/exported/creatures/101.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://x5e744k11k70"
|
||||
path.s3tc="res://.godot/imported/101.png-81f7f90e29292575c1a9727aa6060fa0.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/101.png-81f7f90e29292575c1a9727aa6060fa0.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/101.png"
|
||||
dest_files=["res://.godot/imported/101.png-81f7f90e29292575c1a9727aa6060fa0.s3tc.ctex", "res://.godot/imported/101.png-81f7f90e29292575c1a9727aa6060fa0.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=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=0
|
||||
BIN
art/exported/creatures/102.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
42
art/exported/creatures/102.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1kla4jewitot"
|
||||
path.s3tc="res://.godot/imported/102.png-2ab8ac9408a482b1042b6ba3cd3bd718.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/102.png-2ab8ac9408a482b1042b6ba3cd3bd718.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/102.png"
|
||||
dest_files=["res://.godot/imported/102.png-2ab8ac9408a482b1042b6ba3cd3bd718.s3tc.ctex", "res://.godot/imported/102.png-2ab8ac9408a482b1042b6ba3cd3bd718.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=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=0
|
||||
BIN
art/exported/creatures/103.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
42
art/exported/creatures/103.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cfdsg4tevv0jm"
|
||||
path.s3tc="res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/103.png"
|
||||
dest_files=["res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.s3tc.ctex", "res://.godot/imported/103.png-f8985f10e04b19499cd6f5ffbadc83c9.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=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=0
|
||||
BIN
art/exported/creatures/104.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
42
art/exported/creatures/104.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://pgm364g5qlgs"
|
||||
path.s3tc="res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/104.png"
|
||||
dest_files=["res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.s3tc.ctex", "res://.godot/imported/104.png-e164f67032648af2cc0a545d2a861c7d.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=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=0
|
||||
BIN
art/exported/creatures/105.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
42
art/exported/creatures/105.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dwanip2j561n7"
|
||||
path.s3tc="res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/105.png"
|
||||
dest_files=["res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.s3tc.ctex", "res://.godot/imported/105.png-a2b440912e59b3375c6e61e17d08287b.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=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=0
|
||||
BIN
art/exported/creatures/106.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
42
art/exported/creatures/106.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cr7tc11ievso5"
|
||||
path.s3tc="res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/106.png"
|
||||
dest_files=["res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.s3tc.ctex", "res://.godot/imported/106.png-306ce449448588714e5a0e883ae441ac.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=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=0
|
||||
BIN
art/exported/creatures/107.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
42
art/exported/creatures/107.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c8rf4tnxx8mov"
|
||||
path.s3tc="res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/107.png"
|
||||
dest_files=["res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.s3tc.ctex", "res://.godot/imported/107.png-062740d0bdad6e3ac4ecc1cf92ee6b9d.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=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=0
|
||||
BIN
art/exported/creatures/3906.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
42
art/exported/creatures/3906.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bdmm1jfod7gq0"
|
||||
path.s3tc="res://.godot/imported/3906.png-39cc349a6d3e716822bc9e12bd0ac7a2.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/3906.png-39cc349a6d3e716822bc9e12bd0ac7a2.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/3906.png"
|
||||
dest_files=["res://.godot/imported/3906.png-39cc349a6d3e716822bc9e12bd0ac7a2.s3tc.ctex", "res://.godot/imported/3906.png-39cc349a6d3e716822bc9e12bd0ac7a2.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=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=0
|
||||
BIN
art/exported/creatures/4401.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
42
art/exported/creatures/4401.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://7dbcbicxwvlo"
|
||||
path.s3tc="res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/4401.png"
|
||||
dest_files=["res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.s3tc.ctex", "res://.godot/imported/4401.png-0fd242cb090b49614af9b4d07503b2db.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=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=0
|
||||
BIN
art/exported/creatures/4701.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
42
art/exported/creatures/4701.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://do6hcv3omivv5"
|
||||
path.s3tc="res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/4701.png"
|
||||
dest_files=["res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.s3tc.ctex", "res://.godot/imported/4701.png-dcb44d4ce6dfdc812a2e185e7f9511be.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=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=0
|
||||
BIN
art/exported/creatures/5702.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
42
art/exported/creatures/5702.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dxwr7yv5h30s"
|
||||
path.s3tc="res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/5702.png"
|
||||
dest_files=["res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.s3tc.ctex", "res://.godot/imported/5702.png-b0cead42bd9a5851c3f6775a7d0e469e.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=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=0
|
||||
BIN
art/exported/creatures/5901.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
42
art/exported/creatures/5901.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dovitajskavmi"
|
||||
path.s3tc="res://.godot/imported/5901.png-10c9e77992ad31ce54d34b95a6db6f61.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/5901.png-10c9e77992ad31ce54d34b95a6db6f61.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/5901.png"
|
||||
dest_files=["res://.godot/imported/5901.png-10c9e77992ad31ce54d34b95a6db6f61.s3tc.ctex", "res://.godot/imported/5901.png-10c9e77992ad31ce54d34b95a6db6f61.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=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=0
|
||||
BIN
art/exported/creatures/6103.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
42
art/exported/creatures/6103.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://k3ser2dy6wj7"
|
||||
path.s3tc="res://.godot/imported/6103.png-5fc95bf908f801d5397114bde5081f55.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/6103.png-5fc95bf908f801d5397114bde5081f55.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/6103.png"
|
||||
dest_files=["res://.godot/imported/6103.png-5fc95bf908f801d5397114bde5081f55.s3tc.ctex", "res://.godot/imported/6103.png-5fc95bf908f801d5397114bde5081f55.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=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=0
|
||||
BIN
art/exported/creatures/6804.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
42
art/exported/creatures/6804.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b5ejex5wtfoun"
|
||||
path.s3tc="res://.godot/imported/6804.png-28bcc10060d656f6d7f080ea81e2d1d3.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/6804.png-28bcc10060d656f6d7f080ea81e2d1d3.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/6804.png"
|
||||
dest_files=["res://.godot/imported/6804.png-28bcc10060d656f6d7f080ea81e2d1d3.s3tc.ctex", "res://.godot/imported/6804.png-28bcc10060d656f6d7f080ea81e2d1d3.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=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=0
|
||||
BIN
art/exported/creatures/6905.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
42
art/exported/creatures/6905.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c4d8x6qyhahvn"
|
||||
path.s3tc="res://.godot/imported/6905.png-a52c1647421059618698e17d7a3f8f98.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/6905.png-a52c1647421059618698e17d7a3f8f98.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/6905.png"
|
||||
dest_files=["res://.godot/imported/6905.png-a52c1647421059618698e17d7a3f8f98.s3tc.ctex", "res://.godot/imported/6905.png-a52c1647421059618698e17d7a3f8f98.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=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=0
|
||||
BIN
art/exported/creatures/7403.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
42
art/exported/creatures/7403.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bl7ru6gm5xnpb"
|
||||
path.s3tc="res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/7403.png"
|
||||
dest_files=["res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.s3tc.ctex", "res://.godot/imported/7403.png-54b51089a6ff5c2091372d659ba4bdc7.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=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=0
|
||||
BIN
art/exported/creatures/7508.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
42
art/exported/creatures/7508.png.import
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bnw0dw14iyxbh"
|
||||
path.s3tc="res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/exported/creatures/7508.png"
|
||||
dest_files=["res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.s3tc.ctex", "res://.godot/imported/7508.png-555eff33a2cb66622ccca9d7f063522e.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=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=0
|
||||
|
|
@ -12,14 +12,14 @@ publicly credited as Voyager and Endeavour and operating collectively as the
|
|||
independent team Woofmeow.
|
||||
|
||||
- Voyager: co-owner, developer, project director, creator of the game's
|
||||
current provisional fish artwork and original 3D work except where another
|
||||
creator is credited, and composer of the original title track
|
||||
provisional fish placeholder artwork and original 3D work except where
|
||||
another creator is credited, and composer of the original title track
|
||||
`audio/music/title/as_in_four_wolves.ogg`, dusk/world track
|
||||
`audio/music/world/craft.mp3`, and the synthesized robot animalese tones.
|
||||
- Endeavour: co-owner, developer, and 2D artist. Her incorporated work includes
|
||||
character pattern/channel-map art, environment and UI art, and item art.
|
||||
Planned work is not described as incorporated until its files enter the
|
||||
project.
|
||||
character pattern/channel-map art, environment and UI art, item art, and
|
||||
finished fish and creature artwork. Planned work is not described as
|
||||
incorporated until its files enter the project.
|
||||
- chillnfill: contributor of original 3D models for the character bodies and
|
||||
arms, ears and tails, and multiple world props and decorative assets,
|
||||
including trees and bridges. The contributor requested to be credited as
|
||||
|
|
@ -132,17 +132,18 @@ locations only and must never appear in scenes or resources.
|
|||
|
||||
## Project-created artwork and music
|
||||
|
||||
The current in-game fish images are provisional artwork by Voyager. Endeavour
|
||||
is creating replacement fish artwork, but work that has not been incorporated
|
||||
into this repository is not presented here as part of the game or attributed
|
||||
as a shipped asset.
|
||||
Fish entries without finished replacement artwork use provisional placeholder
|
||||
artwork by Voyager. Incorporated finished fish and creature artwork is by
|
||||
Endeavour; work that has not entered this repository is not presented here as
|
||||
part of the game or attributed as a shipped asset.
|
||||
|
||||
Endeavour's incorporated 2D contributions include the inventory notepad,
|
||||
environment and UI artwork, item artwork, and character customization pattern
|
||||
and channel-map artwork. Voyager's incorporated original work includes 3D
|
||||
assets, the provisional fish artwork, the title and dusk music identified
|
||||
above, and the robot animalese tones. Specific contributor exceptions are
|
||||
recorded below and in the in-game credits.
|
||||
environment and UI artwork, item artwork, finished fish and creature artwork,
|
||||
and character customization pattern and channel-map artwork. Voyager's
|
||||
incorporated original work includes 3D assets, the provisional fish
|
||||
placeholder artwork, the title and dusk music identified above, and the robot
|
||||
animalese tones. Specific contributor exceptions are recorded below and in the
|
||||
in-game credits.
|
||||
|
||||
These credits intentionally describe work by creator and contribution family
|
||||
instead of maintaining a second file-by-file asset catalog. Runtime resources
|
||||
|
|
@ -192,9 +193,10 @@ https://creativecommons.org/licenses/by/3.0/legalcode.
|
|||
### Endeavour 2D contribution record
|
||||
|
||||
Endeavour created the incorporated character customization patterns and
|
||||
channel maps as well as additional UI, environment, and item artwork. The
|
||||
current provisional fish artwork is not part of this credit. New or replacement
|
||||
art is added to this record only after it is accepted into the repository.
|
||||
channel maps as well as additional UI, environment, item, fish, and creature
|
||||
artwork. Voyager's provisional fish placeholder is not part of this credit.
|
||||
New or replacement art is added to this record only after it is accepted into
|
||||
the repository.
|
||||
|
||||
The exact current filenames and bytes are intentionally not copied into this
|
||||
document. The character appearance resources and Git history are the
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/7508.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/101.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/5901.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/5702.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Texture2D" path="res://fish/species/crab_brown/crab_brown.png" id="3_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/3906.png" id="3_texture"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_fish_data")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/103.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/106.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/6103.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/7403.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/107.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/4701.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/6804.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/104.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" uid="uid://h7hg45b7wmst" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/bass_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" uid="uid://bs7cqi88csolc" path="res://fish/fish_availability.gd" id="3_availability_script"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/4401.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="AtlanticSalmonAvailability"]
|
||||
script = ExtResource("3_availability_script")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="99_fish_placeholder"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/6905.png" id="99_fish_placeholder"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/102.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
[ext_resource type="Script" path="res://fish/fish_data.gd" id="1_fish_data"]
|
||||
[ext_resource type="Resource" path="res://fishing/common_catch_profile.tres" id="2_profile"]
|
||||
[ext_resource type="Script" path="res://fish/fish_availability.gd" id="3_availability"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/fish_placeholder.png" id="4_texture"]
|
||||
[ext_resource type="Texture2D" path="res://art/exported/creatures/105.png" id="4_texture"]
|
||||
|
||||
[sub_resource type="Resource" id="Availability"]
|
||||
script = ExtResource("3_availability")
|
||||
|
|
|
|||
|
|
@ -40,6 +40,25 @@ const StarterRegionScene = preload(
|
|||
const SharedFishPlaceholder: Texture2D = preload(
|
||||
"res://art/exported/creatures/fish_placeholder.png"
|
||||
)
|
||||
const FINAL_CREATURE_TEXTURE_PATHS: Dictionary[StringName, String] = {
|
||||
&"bowfin": "res://art/exported/creatures/101.png",
|
||||
&"sturgeon_lake": "res://art/exported/creatures/102.png",
|
||||
&"gar_longnose": "res://art/exported/creatures/103.png",
|
||||
&"paddlefish": "res://art/exported/creatures/104.png",
|
||||
&"sturgeon_shovelnose": "res://art/exported/creatures/105.png",
|
||||
&"gar_spotted": "res://art/exported/creatures/106.png",
|
||||
&"lungfish_west_african": "res://art/exported/creatures/107.png",
|
||||
&"crab_brown": "res://art/exported/creatures/3906.png",
|
||||
&"salmon_atlantic": "res://art/exported/creatures/4401.png",
|
||||
&"mahi_mahi": "res://art/exported/creatures/4701.png",
|
||||
&"clownfish_ocellaris": "res://art/exported/creatures/5702.png",
|
||||
&"chromis_blue_green": "res://art/exported/creatures/5901.png",
|
||||
&"hogfish": "res://art/exported/creatures/6103.png",
|
||||
&"mullet_striped": "res://art/exported/creatures/6804.png",
|
||||
&"sheepshead": "res://art/exported/creatures/6905.png",
|
||||
&"ladyfish": "res://art/exported/creatures/7403.png",
|
||||
&"betta_siamese": "res://art/exported/creatures/7508.png",
|
||||
}
|
||||
|
||||
const ACTIVE_CATALOG_COUNT: int = 313
|
||||
const INACTIVE_CATALOG_COUNT: int = 3
|
||||
|
|
@ -186,6 +205,8 @@ func _validate_catalog_and_pools() -> void:
|
|||
var active_count: int = 0
|
||||
var inactive_count: int = 0
|
||||
var fishing_count: int = 0
|
||||
var final_art_count: int = 0
|
||||
var placeholder_fishing_count: int = 0
|
||||
var catalog_numbers: Dictionary[int, bool] = {}
|
||||
for fish: FishDataType in Catalog.candidates:
|
||||
assert(fish != null and not fish.id.is_empty())
|
||||
|
|
@ -204,13 +225,24 @@ func _validate_catalog_and_pools() -> void:
|
|||
inactive_count += 1
|
||||
assert(not fish.is_selectable())
|
||||
assert(fish.display_texture == null)
|
||||
if FINAL_CREATURE_TEXTURE_PATHS.has(fish.id):
|
||||
var expected_texture: Texture2D = load(
|
||||
FINAL_CREATURE_TEXTURE_PATHS[fish.id]
|
||||
) as Texture2D
|
||||
assert(expected_texture != null)
|
||||
assert(fish.display_texture == expected_texture)
|
||||
final_art_count += 1
|
||||
if fish.collection_method == FishDataType.CollectionMethod.FISHING:
|
||||
fishing_count += 1
|
||||
assert(fish.active)
|
||||
if not FINAL_CREATURE_TEXTURE_PATHS.has(fish.id):
|
||||
assert(fish.display_texture == SharedFishPlaceholder)
|
||||
placeholder_fishing_count += 1
|
||||
assert(active_count == ACTIVE_CATALOG_COUNT)
|
||||
assert(inactive_count == INACTIVE_CATALOG_COUNT)
|
||||
assert(fishing_count == FISHING_SPECIES_COUNT)
|
||||
assert(final_art_count == FINAL_CREATURE_TEXTURE_PATHS.size())
|
||||
assert(placeholder_fishing_count == 294)
|
||||
var chum: FishDataType = Catalog.get_fish_by_id(&"salmon_chum")
|
||||
assert(chum != null)
|
||||
assert(chum.get_season_text() == "fall")
|
||||
|
|
|
|||
230
tools/art/export_creature_art.py
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Export cataloged creature artwork with consistent transparent margins."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import re
|
||||
import sys
|
||||
import zipfile
|
||||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
|
||||
from PIL import Image
|
||||
|
||||
|
||||
TABLE_NAMESPACE = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"
|
||||
TABLE_ATTRIBUTE = "{%s}" % TABLE_NAMESPACE
|
||||
NAMESPACES = {"table": TABLE_NAMESPACE}
|
||||
VALID_EXPORT_SIZES = {64, 128, 256, 512}
|
||||
SAFE_AREA_RATIO = 0.875
|
||||
KNOWN_SOURCE_ALIASES = {
|
||||
# The delivered filename predates the catalog's authoritative species ID.
|
||||
"bowfish": "bowfin",
|
||||
}
|
||||
|
||||
|
||||
def parse_arguments() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
description=(
|
||||
"Export PNG creature art according to the catalog's recommended "
|
||||
"canvas size, using alpha-bound trimming and nearest-neighbor scaling."
|
||||
)
|
||||
)
|
||||
parser.add_argument("--tracker", required=True, type=Path)
|
||||
parser.add_argument("--source", required=True, type=Path)
|
||||
parser.add_argument("--output", required=True, type=Path)
|
||||
parser.add_argument(
|
||||
"--skip",
|
||||
action="append",
|
||||
default=[],
|
||||
help="Catalog creature ID or source filename stem to skip; repeat as needed.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
help="Validate and report the batch without writing output files.",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def normalize_name(value: str) -> str:
|
||||
normalized = value.strip().lower().replace("&", " and ")
|
||||
normalized = re.sub(r"[^a-z0-9]+", "_", normalized)
|
||||
return normalized.strip("_")
|
||||
|
||||
|
||||
def expanded_row_values(row: ET.Element) -> list[str]:
|
||||
values: list[str] = []
|
||||
for cell in row.findall("table:table-cell", NAMESPACES):
|
||||
repeat = int(
|
||||
cell.attrib.get(
|
||||
TABLE_ATTRIBUTE + "number-columns-repeated",
|
||||
"1",
|
||||
)
|
||||
)
|
||||
values.extend(["".join(cell.itertext()).strip()] * repeat)
|
||||
return values
|
||||
|
||||
|
||||
def load_catalog(tracker_path: Path) -> list[dict[str, str]]:
|
||||
with zipfile.ZipFile(tracker_path) as archive:
|
||||
root = ET.fromstring(archive.read("content.xml"))
|
||||
table = root.find(".//table:table", NAMESPACES)
|
||||
if table is None:
|
||||
raise ValueError("tracker does not contain a table")
|
||||
rows = table.findall("table:table-row", NAMESPACES)
|
||||
if not rows:
|
||||
raise ValueError("tracker table is empty")
|
||||
headers = expanded_row_values(rows[0])
|
||||
required_headers = {
|
||||
"catalog_number",
|
||||
"display_name",
|
||||
"id",
|
||||
"recommended_export_canvas_px",
|
||||
}
|
||||
missing_headers = required_headers.difference(headers)
|
||||
if missing_headers:
|
||||
raise ValueError(
|
||||
"tracker is missing required columns: "
|
||||
+ ", ".join(sorted(missing_headers))
|
||||
)
|
||||
records: list[dict[str, str]] = []
|
||||
for row in rows[1:]:
|
||||
values = expanded_row_values(row)
|
||||
if not any(values):
|
||||
continue
|
||||
record = dict(zip(headers, values))
|
||||
if record.get("id", "").strip():
|
||||
records.append(record)
|
||||
return records
|
||||
|
||||
|
||||
def catalog_lookup(records: list[dict[str, str]]) -> dict[str, dict[str, str]]:
|
||||
lookup: dict[str, dict[str, str]] = {}
|
||||
for record in records:
|
||||
keys = {
|
||||
normalize_name(record["id"]),
|
||||
normalize_name(record["display_name"]),
|
||||
}
|
||||
for key in keys:
|
||||
previous = lookup.get(key)
|
||||
if previous is not None and previous["id"] != record["id"]:
|
||||
raise ValueError(
|
||||
f"ambiguous normalized catalog name {key!r}: "
|
||||
f"{previous['id']} and {record['id']}"
|
||||
)
|
||||
lookup[key] = record
|
||||
return lookup
|
||||
|
||||
|
||||
def resolve_record(
|
||||
source_path: Path,
|
||||
lookup: dict[str, dict[str, str]],
|
||||
) -> dict[str, str]:
|
||||
source_key = normalize_name(source_path.stem)
|
||||
catalog_key = KNOWN_SOURCE_ALIASES.get(source_key, source_key)
|
||||
record = lookup.get(catalog_key)
|
||||
if record is None:
|
||||
raise ValueError(
|
||||
f"cannot map source {source_path.name!r} to one catalog creature"
|
||||
)
|
||||
return record
|
||||
|
||||
|
||||
def normalize_artwork(source_path: Path, canvas_size: int) -> tuple[Image.Image, tuple[int, int, int, int], tuple[int, int]]:
|
||||
with Image.open(source_path) as source_image:
|
||||
artwork = source_image.convert("RGBA")
|
||||
alpha_bounds = artwork.getchannel("A").getbbox()
|
||||
if alpha_bounds is None:
|
||||
raise ValueError(f"source {source_path.name!r} is fully transparent")
|
||||
visible = artwork.crop(alpha_bounds)
|
||||
safe_long_side = round(canvas_size * SAFE_AREA_RATIO)
|
||||
scale = safe_long_side / max(visible.width, visible.height)
|
||||
scaled_size = (
|
||||
max(1, round(visible.width * scale)),
|
||||
max(1, round(visible.height * scale)),
|
||||
)
|
||||
visible = visible.resize(scaled_size, Image.Resampling.NEAREST)
|
||||
canvas = Image.new("RGBA", (canvas_size, canvas_size), (0, 0, 0, 0))
|
||||
offset = (
|
||||
(canvas_size - scaled_size[0]) // 2,
|
||||
(canvas_size - scaled_size[1]) // 2,
|
||||
)
|
||||
canvas.alpha_composite(visible, offset)
|
||||
return canvas, alpha_bounds, scaled_size
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
digest = hashlib.sha256()
|
||||
with path.open("rb") as source:
|
||||
for block in iter(lambda: source.read(1024 * 1024), b""):
|
||||
digest.update(block)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
arguments = parse_arguments()
|
||||
records = load_catalog(arguments.tracker)
|
||||
lookup = catalog_lookup(records)
|
||||
skip_keys = {normalize_name(value) for value in arguments.skip}
|
||||
source_paths = sorted(arguments.source.glob("*.png"))
|
||||
if not source_paths:
|
||||
raise ValueError(f"no PNG files found under {arguments.source}")
|
||||
|
||||
resolved: list[tuple[Path, dict[str, str]]] = []
|
||||
output_names: set[str] = set()
|
||||
for source_path in source_paths:
|
||||
record = resolve_record(source_path, lookup)
|
||||
source_key = normalize_name(source_path.stem)
|
||||
creature_key = normalize_name(record["id"])
|
||||
if source_key in skip_keys or creature_key in skip_keys:
|
||||
print(f"SKIP {source_path.name} -> {record['id']}")
|
||||
continue
|
||||
output_name = f"{record['catalog_number']}.png"
|
||||
if output_name in output_names:
|
||||
raise ValueError(f"duplicate output filename {output_name}")
|
||||
output_names.add(output_name)
|
||||
resolved.append((source_path, record))
|
||||
|
||||
if not arguments.dry_run:
|
||||
arguments.output.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for source_path, record in resolved:
|
||||
canvas_size = int(record["recommended_export_canvas_px"])
|
||||
if canvas_size not in VALID_EXPORT_SIZES:
|
||||
raise ValueError(
|
||||
f"{record['id']} has invalid export size {canvas_size}"
|
||||
)
|
||||
image, alpha_bounds, scaled_size = normalize_artwork(
|
||||
source_path,
|
||||
canvas_size,
|
||||
)
|
||||
output_path = arguments.output / f"{record['catalog_number']}.png"
|
||||
if not arguments.dry_run:
|
||||
image.save(output_path, format="PNG", optimize=False, compress_level=6)
|
||||
output_hash = sha256(output_path)
|
||||
else:
|
||||
output_hash = "dry-run"
|
||||
print(
|
||||
"EXPORT "
|
||||
f"{source_path.name} -> {output_path.name} "
|
||||
f"id={record['id']} canvas={canvas_size}x{canvas_size} "
|
||||
f"alpha_bounds={alpha_bounds} visible={scaled_size[0]}x{scaled_size[1]} "
|
||||
f"source_sha256={sha256(source_path)} output_sha256={output_hash}"
|
||||
)
|
||||
|
||||
print(
|
||||
f"Complete: {len(resolved)} export(s), "
|
||||
f"{len(source_paths) - len(resolved)} skipped."
|
||||
)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
raise SystemExit(main())
|
||||
except (OSError, ValueError, zipfile.BadZipFile) as error:
|
||||
print(f"ERROR: {error}", file=sys.stderr)
|
||||
raise SystemExit(1)
|
||||