diff --git a/LICENSE b/LICENSE index 1409c8a..0144fa7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,16 +1,20 @@ -## Project License(s) +## Project License(s) (Mixes) -Mixed (see various licenses listed in this file) +See various licenses listed in this file. + +See details of individual licenses in their respective *.txt files (see project files). + +TLDR: Code (*.gd files) are licensed under MIT, but assets (shaders, music, art, writing) are licensed under various CC licenses by respective creators. ## Code License (MIT) -- all files except those listed alongside another license (see licenses listed below, in this file "LICENSE") are licensed under MIT License (https://mit-license.org/) +- all files except those listed alongside another license (see licenses listed below), are licensed under MIT License (https://mit-license.org/) MIT License -Copyright (c) 2024 by (GitHub Contributors): @TinyTakinTeller, @alexmunoz502, @mielifica, @BurkeZerk, @AlexTheAbyssalNovelist, @debris, @Reed-lzy +Copyright (c) 2024 by (https://github.com/TinyTakinTeller/GodotProjectZero/graphs/contributors) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -32,8 +36,13 @@ SOFTWARE. -## Godot License -- https://godotengine.org/license/ +## Addons License(s) + +SEE VARIOUS LICENSES CONTAINED WITHIN RESPECTIVE DIRECTORIES UNDER "addons/" : +- res://addons/resources_spreadsheet_view/ | (https://godotengine.org/asset-library/asset/1479) licensed under MIT License (https://opensource.org/license/mit) +- res://addons/gdLinter/ | (https://godotengine.org/asset-library/asset/2520) licensed under MIT License (https://opensource.org/license/mit) +- res://addons/format_on_save/ | (https://godotengine.org/asset-library/asset/2340) licensed under MIT License (https://opensource.org/license/mit) +- res://addons/BulletUpHell/ (https://github.com/Dark-Peace/BulletUpHell) licensed under MIT License (https://opensource.org/license/mit) @@ -50,27 +59,25 @@ SEE VARIOUS LICENSES CONTAINED WITHIN RESPECTIVE DIRECTORIES UNDER "resources/" -## Assets License(s) +## Audio License(s) SEE VARIOUS LICENSES CONTAINED WITHIN RESPECTIVE DIRECTORIES UNDER "assets/" : +- audio music track "To The Death" (to_the_death.mp3) by junipersona licensed under Pixabay (https://pixabay.com/service/license-summary/) - audio music track "Corpse Rot" (corpse_rot.mp3) by UNIVERSFIELD licensed under CC-BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) - audio music track "Criminal District" (criminal_district.mp3) by UNIVERSFIELD licensed under CC-BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) - audio music tracks ["Forest Song 1", "20 Axes to a Bed", "There's a Strong Chill in the Air", "Lacrimosa (Requiem Abridged)"] by BurkeZerk licensed under CC-BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/) +audio music tracks ["axes_arr_mstr_loop.mp3", "forest_arr_mstr_loop.mp3", "strong_chill_arr_mstr_loop.mp3", "lacrimosa_arr_mstr_loop.mp3"] by Skyler licensed under CC-BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/) - audio SFX sounds "Indie Friendly Sounds Survival" & "Indie Friendly Sounds RPG Sounds Pack" by Place Holder Assets licensed under "for-purchasing-individuals" (contact creator for licensing) - audio SFX sound "Keyboard Typing" by Trollarch2 licensed under CC0 (https://creativecommons.org/public-domain/cc0/) - audio SFX sound "Short, definite fart" by ycbcr licensed under CC0 (https://creativecommons.org/public-domain/cc0/) - audio "heartbeat-80bpm.wav" by loudernoises licensed under CC0 (https://creativecommons.org/public-domain/cc0/) -- art "res://assets/image/" : Placeholders / WIP -## Addons License(s) +## Art License(s) -SEE VARIOUS LICENSES CONTAINED WITHIN RESPECTIVE DIRECTORIES UNDER "addons/" : -- res://addons/resources_spreadsheet_view/ | (https://godotengine.org/asset-library/asset/1479) licensed under MIT License (https://opensource.org/license/mit) -- res://addons/gdLinter/ | (https://godotengine.org/asset-library/asset/2520) licensed under MIT License (https://opensource.org/license/mit) -- res://addons/format_on_save/ | (https://godotengine.org/asset-library/asset/2340) licensed under MIT License (https://opensource.org/license/mit) -- res://addons/BulletUpHell/ (https://github.com/Dark-Peace/BulletUpHell) licensed under MIT License (https://opensource.org/license/mit) +- image "res://assets/image/soul/soul_16_16.png" licensed under "all rights reserved" by TinyTakinTeller +- other images "res://assets/image/" were created by TinyTakinTeller, but from templates by generative AI @@ -79,3 +86,7 @@ SEE VARIOUS LICENSES CONTAINED WITHIN RESPECTIVE DIRECTORIES UNDER "addons/" : - res://global/const/locale/locale_en.gd by Abyssal_Novelist, Reed, TinyTakinTeller licensed under CC-BY-NC-SA 4.0 (https://creativecommons.org/licenses/by-nc-sa/4.0/) + +## Godot License(s) + +- https://godotengine.org/license/ \ No newline at end of file diff --git a/addons/resources_spreadsheet_view/saved_state.json b/addons/resources_spreadsheet_view/saved_state.json index 8721b2e..b7c23b2 100644 --- a/addons/resources_spreadsheet_view/saved_state.json +++ b/addons/resources_spreadsheet_view/saved_state.json @@ -1,110 +1,110 @@ { "hidden_columns": { - "res://resources/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/enemy_data/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/event_data/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/event_data/res/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/event_data/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/npc_event/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/resource_generator/": { - "id": true, - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/resource_generator/cost_function/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/resource_generator/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/substance_data/tres/charm/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/tab_data/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/tab_data/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/worker_role/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/game_data/worker_role/tres/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/resource_generator/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/resource_generator/res/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/theme/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/worker_role/": { - "resource_local_to_scene": true, - "resource_name": true - }, - "res://resources/worker_role/res/": { - "resource_local_to_scene": true, - "resource_name": true - } + "res://resources/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/enemy_data/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/event_data/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/event_data/res/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/event_data/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/npc_event/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/resource_generator/": { + "id": true, + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/resource_generator/cost_function/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/resource_generator/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/substance_data/tres/charm/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/tab_data/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/tab_data/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/worker_role/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/game_data/worker_role/tres/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/resource_generator/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/resource_generator/res/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/theme/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/worker_role/": { + "resource_local_to_scene": true, + "resource_name": true + }, + "res://resources/worker_role/res/": { + "resource_local_to_scene": true, + "resource_name": true + } }, "recent_paths": [ - "res://resources/theme/", - "res://resources/worker_role/", - "res://resources/resource_generator/", - "res://resources/", - "res://resources/game_data/resource_generator/cost_function/", - "res://resources/game_data/tab_data/", - "res://resources/game_data/event_data/", - "res://resources/game_data/resource_generator/", - "res://resources/game_data/worker_role/", - "res://resources/game_data/event_data/tres/", - "res://resources/game_data/npc_event/tres/", - "res://resources/resource_generator/res/", - "res://resources/game_data/resource_generator/tres/", - "res://resources/game_data/worker_role/tres/", - "res://resources/worker_role/res/", - "res://resources/game_data/tab_data/tres/", - "res://resources/game_data/enemy_data/tres/", - "res://resources/game_data/event_data/res/", - "res://resources/game_data/substance_data/tres/charm/" + "res://resources/theme/", + "res://resources/worker_role/", + "res://resources/resource_generator/", + "res://resources/", + "res://resources/game_data/resource_generator/cost_function/", + "res://resources/game_data/tab_data/", + "res://resources/game_data/event_data/", + "res://resources/game_data/resource_generator/", + "res://resources/game_data/worker_role/", + "res://resources/game_data/event_data/tres/", + "res://resources/game_data/npc_event/tres/", + "res://resources/resource_generator/res/", + "res://resources/game_data/resource_generator/tres/", + "res://resources/game_data/worker_role/tres/", + "res://resources/worker_role/res/", + "res://resources/game_data/tab_data/tres/", + "res://resources/game_data/enemy_data/tres/", + "res://resources/game_data/event_data/res/", + "res://resources/game_data/substance_data/tres/charm/" ], "table_functions": { - "filter": [ - "return true" - ], - "process": [ - "return value" - ] + "filter": [ + "return true" + ], + "process": [ + "return value" + ] } -} \ No newline at end of file +} diff --git a/assets/audio/20 Axes Arr MSTR LOOP.mp3.import b/assets/audio/20 Axes Arr MSTR LOOP.mp3.import deleted file mode 100644 index 2af87fe..0000000 --- a/assets/audio/20 Axes Arr MSTR LOOP.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://boao20b74vwfi" -path="res://.godot/imported/20 Axes Arr MSTR LOOP.mp3-f940619e5d2b0fe2acdf8de18cf8e643.mp3str" - -[deps] - -source_file="res://assets/audio/20 Axes Arr MSTR LOOP.mp3" -dest_files=["res://.godot/imported/20 Axes Arr MSTR LOOP.mp3-f940619e5d2b0fe2acdf8de18cf8e643.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/20 Axes Arr MSTR.mp3 b/assets/audio/20 Axes Arr MSTR.mp3 deleted file mode 100644 index f0da7c3..0000000 Binary files a/assets/audio/20 Axes Arr MSTR.mp3 and /dev/null differ diff --git a/assets/audio/20 Axes Arr MSTR.mp3.import b/assets/audio/20 Axes Arr MSTR.mp3.import deleted file mode 100644 index 34a1883..0000000 --- a/assets/audio/20 Axes Arr MSTR.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://esxco7hisjn4" -path="res://.godot/imported/20 Axes Arr MSTR.mp3-8052d34821ab7d75e7c36c2068bba6f9.mp3str" - -[deps] - -source_file="res://assets/audio/20 Axes Arr MSTR.mp3" -dest_files=["res://.godot/imported/20 Axes Arr MSTR.mp3-8052d34821ab7d75e7c36c2068bba6f9.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Forest Arr MSTR LOOP.mp3.import b/assets/audio/Forest Arr MSTR LOOP.mp3.import deleted file mode 100644 index 7938352..0000000 --- a/assets/audio/Forest Arr MSTR LOOP.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://tksoficve1me" -path="res://.godot/imported/Forest Arr MSTR LOOP.mp3-d49adb80243c3f8f86bcd42d589cb318.mp3str" - -[deps] - -source_file="res://assets/audio/Forest Arr MSTR LOOP.mp3" -dest_files=["res://.godot/imported/Forest Arr MSTR LOOP.mp3-d49adb80243c3f8f86bcd42d589cb318.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Forest Arr MSTR.mp3 b/assets/audio/Forest Arr MSTR.mp3 deleted file mode 100644 index ea63d9d..0000000 Binary files a/assets/audio/Forest Arr MSTR.mp3 and /dev/null differ diff --git a/assets/audio/Forest Arr MSTR.mp3.import b/assets/audio/Forest Arr MSTR.mp3.import deleted file mode 100644 index cb78c7c..0000000 --- a/assets/audio/Forest Arr MSTR.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://dupl0hftpvc1d" -path="res://.godot/imported/Forest Arr MSTR.mp3-7084a65e9250e30ba686f9dee6d5e8a1.mp3str" - -[deps] - -source_file="res://assets/audio/Forest Arr MSTR.mp3" -dest_files=["res://.godot/imported/Forest Arr MSTR.mp3-7084a65e9250e30ba686f9dee6d5e8a1.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Lacrimosa Arr MSTR LOOP.mp3.import b/assets/audio/Lacrimosa Arr MSTR LOOP.mp3.import deleted file mode 100644 index e9f3b50..0000000 --- a/assets/audio/Lacrimosa Arr MSTR LOOP.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://ckapo5gkwp0wk" -path="res://.godot/imported/Lacrimosa Arr MSTR LOOP.mp3-0ac175e535c1b60e74a118d3d3a9b73f.mp3str" - -[deps] - -source_file="res://assets/audio/Lacrimosa Arr MSTR LOOP.mp3" -dest_files=["res://.godot/imported/Lacrimosa Arr MSTR LOOP.mp3-0ac175e535c1b60e74a118d3d3a9b73f.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Lacrimosa Arr MSTR.mp3 b/assets/audio/Lacrimosa Arr MSTR.mp3 deleted file mode 100644 index a4e8aeb..0000000 Binary files a/assets/audio/Lacrimosa Arr MSTR.mp3 and /dev/null differ diff --git a/assets/audio/Lacrimosa Arr MSTR.mp3.import b/assets/audio/Lacrimosa Arr MSTR.mp3.import deleted file mode 100644 index a3be7e1..0000000 --- a/assets/audio/Lacrimosa Arr MSTR.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://d1s187yettg14" -path="res://.godot/imported/Lacrimosa Arr MSTR.mp3-5c3a5bc1e7a6a175233290c9fae8f303.mp3str" - -[deps] - -source_file="res://assets/audio/Lacrimosa Arr MSTR.mp3" -dest_files=["res://.godot/imported/Lacrimosa Arr MSTR.mp3-5c3a5bc1e7a6a175233290c9fae8f303.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Strong Chill Arr MSTR LOOP.mp3.import b/assets/audio/Strong Chill Arr MSTR LOOP.mp3.import deleted file mode 100644 index 5b929cc..0000000 --- a/assets/audio/Strong Chill Arr MSTR LOOP.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://b8g4auk7xg3qw" -path="res://.godot/imported/Strong Chill Arr MSTR LOOP.mp3-e0915a30e802db8434e1fc772ee0c88f.mp3str" - -[deps] - -source_file="res://assets/audio/Strong Chill Arr MSTR LOOP.mp3" -dest_files=["res://.godot/imported/Strong Chill Arr MSTR LOOP.mp3-e0915a30e802db8434e1fc772ee0c88f.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/Strong Chill Arr MSTR.mp3 b/assets/audio/Strong Chill Arr MSTR.mp3 deleted file mode 100644 index cdbac6f..0000000 Binary files a/assets/audio/Strong Chill Arr MSTR.mp3 and /dev/null differ diff --git a/assets/audio/Strong Chill Arr MSTR.mp3.import b/assets/audio/Strong Chill Arr MSTR.mp3.import deleted file mode 100644 index 56fadfb..0000000 --- a/assets/audio/Strong Chill Arr MSTR.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://beueo2bfr8fkt" -path="res://.godot/imported/Strong Chill Arr MSTR.mp3-c53599ff540cd575897c08b8775607c2.mp3str" - -[deps] - -source_file="res://assets/audio/Strong Chill Arr MSTR.mp3" -dest_files=["res://.godot/imported/Strong Chill Arr MSTR.mp3-c53599ff540cd575897c08b8775607c2.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/audio/joseph_philip_burke/license_CC_BY_NC_SA_4_0.txt b/assets/audio/joseph_philip_burke/license_CC_BY_NC_SA_4_0.txt index d30148f..d648469 100644 --- a/assets/audio/joseph_philip_burke/license_CC_BY_NC_SA_4_0.txt +++ b/assets/audio/joseph_philip_burke/license_CC_BY_NC_SA_4_0.txt @@ -1,6 +1,6 @@ All of the recordings in this directory are the exclusive copyrighted work of the composer Joseph Philip Burke, also known under the names "Joe Burke" and "BurkeZerk" and is licensed for use under the CC BY-NC-SA 4.0 license terms. -(https://creativecommons.org/licenses/by-nc-sa/4.0/) Joseph Burke reserves the right to license to any entity more permissive +(https://creativecommons.org/licenses/by-nc-sa/4.0/). Joseph Burke reserves the right to license to any entity more permissive rights than this license for the works licensed under it in the future. All songs were composed by Joseph Burke, except where otherwise noted, and he owns all compositions he has written, and all those compositions are licensed under the same license as the recordings. diff --git a/assets/audio/20 Axes Arr MSTR LOOP.mp3 b/assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3 similarity index 100% rename from assets/audio/20 Axes Arr MSTR LOOP.mp3 rename to assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3 diff --git a/assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3.import b/assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3.import new file mode 100644 index 0000000..dd183d7 --- /dev/null +++ b/assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://boao20b74vwfi" +path="res://.godot/imported/axes_arr_mstr_loop.mp3-ea6304ae84abeb62a6ba70fc3513524d.mp3str" + +[deps] + +source_file="res://assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3" +dest_files=["res://.godot/imported/axes_arr_mstr_loop.mp3-ea6304ae84abeb62a6ba70fc3513524d.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/Forest Arr MSTR LOOP.mp3 b/assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3 similarity index 100% rename from assets/audio/Forest Arr MSTR LOOP.mp3 rename to assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3 diff --git a/assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3.import b/assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3.import new file mode 100644 index 0000000..b4b95e0 --- /dev/null +++ b/assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://tksoficve1me" +path="res://.godot/imported/forest_arr_mstr_loop.mp3-40d0a76195693e552dfb18bf348c6dab.mp3str" + +[deps] + +source_file="res://assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3" +dest_files=["res://.godot/imported/forest_arr_mstr_loop.mp3-40d0a76195693e552dfb18bf348c6dab.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/Lacrimosa Arr MSTR LOOP.mp3 b/assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3 similarity index 100% rename from assets/audio/Lacrimosa Arr MSTR LOOP.mp3 rename to assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3 diff --git a/assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3.import b/assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3.import new file mode 100644 index 0000000..2cdf300 --- /dev/null +++ b/assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://ckapo5gkwp0wk" +path="res://.godot/imported/lacrimosa_arr_mstr_loop.mp3-c3a092e97928ba5f1e474339bdb1eb70.mp3str" + +[deps] + +source_file="res://assets/audio/skyler_newsome/lacrimosa_arr_mstr_loop.mp3" +dest_files=["res://.godot/imported/lacrimosa_arr_mstr_loop.mp3-c3a092e97928ba5f1e474339bdb1eb70.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/skyler_newsome/license_CC_BY_NC_SA_4_0.txt b/assets/audio/skyler_newsome/license_CC_BY_NC_SA_4_0.txt new file mode 100644 index 0000000..b3363b3 --- /dev/null +++ b/assets/audio/skyler_newsome/license_CC_BY_NC_SA_4_0.txt @@ -0,0 +1,16 @@ +All of the recordings in this directory are the exclusive copyrighted work of the composer Skyler Newsome, +also known under the names "Skyler" and "circlesinthesky" and is licensed for use under the CC BY-NC-SA 4.0 license terms. +(https://creativecommons.org/licenses/by-nc-sa/4.0/). Skyler Newsome reserves the right to license to any entity more permissive +rights than this license for the works licensed under it in the future. All songs were composed by Skyler Newsome, +except where otherwise noted, and he owns all compositions he has written, and all those compositions are licensed +under the same license as the recordings. + +Note, these works are based on Joseph Philip Burke works (see directory joseph_philip_burke), who granted the rights to do so. + +Works currently licensed in this directory under this license: +* "axes_arr_mstr_loop.mp3" +* "forest_arr_mstr_loop.mp3" +* "strong_chill_arr_mstr_loop.mp3" +* "lacrimosa_arr_mstr_loop.mp3" [Originally Composed by W.A. Mozart, Public Domain Composition] + +Last License Update: 10/1/2024 (mmddYYYY) diff --git a/assets/audio/Strong Chill Arr MSTR LOOP.mp3 b/assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3 similarity index 100% rename from assets/audio/Strong Chill Arr MSTR LOOP.mp3 rename to assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3 diff --git a/assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3.import b/assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3.import new file mode 100644 index 0000000..af63e61 --- /dev/null +++ b/assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://b8g4auk7xg3qw" +path="res://.godot/imported/strong_chill_arr_mstr_loop.mp3-9a1fc4122351442f45621e4a6e3409d2.mp3str" + +[deps] + +source_file="res://assets/audio/skyler_newsome/strong_chill_arr_mstr_loop.mp3" +dest_files=["res://.godot/imported/strong_chill_arr_mstr_loop.mp3-9a1fc4122351442f45621e4a6e3409d2.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/global/autoload/audio/audio.gd b/global/autoload/audio/audio.gd index f8e8ebc..b1ef64d 100644 --- a/global/autoload/audio/audio.gd +++ b/global/autoload/audio/audio.gd @@ -19,6 +19,11 @@ var _current_audio_player: AudioPlayer ############### +func _input(event: InputEvent) -> void: + if event.is_action_pressed("swap_music_next"): + swap_crossfade_music_next() + + func _ready() -> void: _initalize() _connect_signals() @@ -32,6 +37,7 @@ func _ready() -> void: func _initalize() -> void: + _track = randi() % music_tracks.get_child_count() _current_audio_player = music_tracks.get_child(_track) _current_audio_player.fade_in() @@ -44,6 +50,8 @@ func _initalize() -> void: func swap_crossfade_music_next() -> void: _track = (_track + 1) % music_tracks.get_child_count() swap_crossfade_audio(music_tracks.get_child(_track)) + if Game.PARAMS_DEBUG["debug_logs"]: + prints("track", _track) func swap_crossfade_audio(audio_player: AudioPlayer) -> void: diff --git a/global/autoload/audio/audio.tscn b/global/autoload/audio/audio.tscn index 03cd268..eada4c9 100644 --- a/global/autoload/audio/audio.tscn +++ b/global/autoload/audio/audio.tscn @@ -1,12 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://bp61l7vkkscuw"] +[gd_scene load_steps=14 format=3 uid="uid://bp61l7vkkscuw"] [ext_resource type="Script" path="res://global/autoload/audio/audio.gd" id="1_7i6rq"] [ext_resource type="PackedScene" uid="uid://f1stqtkpi6rl" path="res://global/autoload/audio/audio_queue/audio_queue.tscn" id="2_bb4fe"] [ext_resource type="PackedScene" uid="uid://bu2l4l0jhesyw" path="res://global/autoload/audio/sfx_map/sfx_map.tscn" id="3_4nox4"] [ext_resource type="PackedScene" uid="uid://cragwwd3j3bqt" path="res://global/autoload/audio/audio_player/audio_player.tscn" id="4_gols3"] -[ext_resource type="Resource" uid="uid://cuwcu7njbtvqn" path="res://resources/songs/forest_song.tres" id="5_ftjyd"] [ext_resource type="Resource" uid="uid://d1yl7vrmvavit" path="res://resources/songs/axes_to_a_bed.tres" id="5_gma2y"] [ext_resource type="AudioStream" uid="uid://cjg7wv1kxy1ye" path="res://assets/audio/freesound_org/heartbeat_80bpm/loudernoises_heartbeat_80bpm.wav" id="5_s525l"] +[ext_resource type="AudioStream" uid="uid://tksoficve1me" path="res://assets/audio/skyler_newsome/forest_arr_mstr_loop.mp3" id="6_egdi5"] +[ext_resource type="AudioStream" uid="uid://b5ad2ujlpx4s8" path="res://assets/audio/joseph_philip_burke/forest_song_compressed.mp3" id="7_ompd1"] +[ext_resource type="Script" path="res://resources/songs/song.gd" id="8_tgyec"] +[ext_resource type="AudioStream" uid="uid://b44xi3ebx4ju3" path="res://assets/audio/freemusicarchive_org/universfield/corpse_rot/corpse_rot.mp3" id="9_86iap"] +[ext_resource type="AudioStream" uid="uid://blrw2u3jb1fbm" path="res://assets/audio/freemusicarchive_org/universfield/criminal_district/criminal_district.mp3" id="10_5odgy"] + +[sub_resource type="Resource" id="Resource_gc3pj"] +script = ExtResource("8_tgyec") +idle_audio_stream = ExtResource("7_ompd1") +combat_audio_stream = ExtResource("6_egdi5") + +[sub_resource type="Resource" id="Resource_e4642"] +script = ExtResource("8_tgyec") +idle_audio_stream = ExtResource("10_5odgy") +combat_audio_stream = ExtResource("9_86iap") [node name="Audio" type="Node"] script = ExtResource("1_7i6rq") @@ -21,15 +35,23 @@ unique_name_in_owner = true [node name="Music" type="Node" parent="."] unique_name_in_owner = true -[node name="ForestSong" parent="Music" instance=ExtResource("4_gols3")] -default_audio = ExtResource("5_ftjyd") - [node name="20AxesToABed" parent="Music" instance=ExtResource("4_gols3")] default_audio = ExtResource("5_gma2y") +max_volume_combat = 0.333 + +[node name="ForestSong" parent="Music" instance=ExtResource("4_gols3")] +default_audio = SubResource("Resource_gc3pj") +max_volume_combat = 0.4 + +[node name="Universfield" parent="Music" instance=ExtResource("4_gols3")] +default_audio = SubResource("Resource_e4642") +max_volume_idle = 3.0 [node name="Ambience" type="Node" parent="."] [node name="Heartbeat" parent="Ambience" instance=ExtResource("4_gols3")] unique_name_in_owner = true default_audio = ExtResource("5_s525l") +max_volume_idle = 1.25 +max_volume_combat = 1.25 is_looping = true diff --git a/global/autoload/audio/audio_player/audio_player.gd b/global/autoload/audio/audio_player/audio_player.gd index 25627fd..d2b9e45 100644 --- a/global/autoload/audio/audio_player/audio_player.gd +++ b/global/autoload/audio/audio_player/audio_player.gd @@ -8,10 +8,11 @@ const TWEEN_FADE_AUDIO_DURATION: float = 2.0 @export_enum(&"Master", &"Music", &"SFX") var default_bus: String = &"Music" @export var default_audio: Resource # AudioStream | Song, can't union type in gdscript :( @export var autoplay: bool = false -@export var max_volume: float = 1.0 +@export var max_volume_idle: float = 1.0 +@export var max_volume_combat: float = 1.0 @export var is_looping: bool = false -var master_volume: float = max_volume +var master_volume: float = _idle_playback_position var _current_audio: Resource var _fade_tween: Tween @@ -40,6 +41,10 @@ func _ready() -> void: ## methods ## ############# +func get_max_volume() -> float: + if states.current.name == "Combat": + return max_volume_combat + return max_volume_idle func set_bus(bus: StringName) -> void: idle_track.bus = bus @@ -93,7 +98,7 @@ func _fade_out_callback(pause: bool) -> void: func fade_out(pause: bool = true) -> void: - var from_volume: float = max_volume + var from_volume: float = get_max_volume() var to_volume: float = 0.0 transition_master_volume(from_volume, to_volume) _fade_tween.tween_callback(_fade_out_callback.bind(pause)) @@ -101,7 +106,7 @@ func fade_out(pause: bool = true) -> void: func fade_in(restart: bool = false) -> void: var from_volume: float = 0.0 - var to_volume: float = max_volume + var to_volume: float = get_max_volume() transition_master_volume(from_volume, to_volume) play(restart) diff --git a/global/autoload/audio/audio_player/track_state.gd b/global/autoload/audio/audio_player/track_state.gd index 20fc57a..54f9204 100644 --- a/global/autoload/audio/audio_player/track_state.gd +++ b/global/autoload/audio/audio_player/track_state.gd @@ -21,7 +21,8 @@ func on_ready() -> void: func on_state_enter() -> void: - print("entered state: %s" % self.name) + if Game.PARAMS["debug_logs"]: + print("entered state: %s" % self.name) _is_active = true var from_volume: float = 0.0 var to_volume: float = audio_player.master_volume @@ -29,7 +30,8 @@ func on_state_enter() -> void: func on_state_exit() -> void: - print("exited state: %s" % self.name) + if Game.PARAMS["debug_logs"]: + print("exited state: %s" % self.name) _is_active = false var from_volume: float = audio_player.master_volume var to_volume: float = 0.0 diff --git a/global/const/locale/locale_en.gd b/global/const/locale/locale_en.gd index 3f7aaa2..f99b1c8 100644 --- a/global/const/locale/locale_en.gd +++ b/global/const/locale/locale_en.gd @@ -29,6 +29,7 @@ const EN: Dictionary = { # gdlint:disable = max-line-length const UI_LABEL: Dictionary = { + "shortcuts_label": "Ctrl+N changes soundtrack", "death": "Death", "heart": "Heart", "singularity": "Singularity", diff --git a/project.godot b/project.godot index 545624e..0f0057c 100644 --- a/project.godot +++ b/project.godot @@ -86,6 +86,16 @@ developer_console_clear_command={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":4194305,"key_label":4194305,"unicode":0,"location":0,"echo":false,"script":null) ] } +swap_music_next={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":78,"key_label":0,"unicode":78,"location":0,"echo":false,"script":null) +] +} +master_music_toggle={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":77,"key_label":0,"unicode":109,"location":0,"echo":false,"script":null) +] +} [rendering] diff --git a/resources/songs/axes_to_a_bed.tres b/resources/songs/axes_to_a_bed.tres index ab664cb..484d945 100644 --- a/resources/songs/axes_to_a_bed.tres +++ b/resources/songs/axes_to_a_bed.tres @@ -1,10 +1,10 @@ [gd_resource type="Resource" script_class="Song" load_steps=4 format=3 uid="uid://d1yl7vrmvavit"] [ext_resource type="Script" path="res://resources/songs/song.gd" id="1_4i0cq"] -[ext_resource type="AudioStream" uid="uid://boao20b74vwfi" path="res://assets/audio/20 Axes Arr MSTR LOOP.mp3" id="1_s067o"] +[ext_resource type="AudioStream" uid="uid://boao20b74vwfi" path="res://assets/audio/skyler_newsome/axes_arr_mstr_loop.mp3" id="1_xamir"] [ext_resource type="AudioStream" uid="uid://cvo3kjga80knk" path="res://assets/audio/joseph_philip_burke/axes_to_a_bed_compressed.mp3" id="2_tpojr"] [resource] script = ExtResource("1_4i0cq") idle_audio_stream = ExtResource("2_tpojr") -combat_audio_stream = ExtResource("1_s067o") +combat_audio_stream = ExtResource("1_xamir") diff --git a/resources/songs/forest_song.tres b/resources/songs/forest_song.tres index 33bda78..acd9c69 100644 --- a/resources/songs/forest_song.tres +++ b/resources/songs/forest_song.tres @@ -1,10 +1,10 @@ [gd_resource type="Resource" script_class="Song" load_steps=4 format=3 uid="uid://cuwcu7njbtvqn"] -[ext_resource type="AudioStream" uid="uid://tksoficve1me" path="res://assets/audio/Forest Arr MSTR LOOP.mp3" id="1_ngt8i"] +[ext_resource type="AudioStream" uid="uid://b44xi3ebx4ju3" path="res://assets/audio/freemusicarchive_org/universfield/corpse_rot/corpse_rot.mp3" id="1_6v402"] [ext_resource type="Script" path="res://resources/songs/song.gd" id="1_rw51e"] -[ext_resource type="AudioStream" uid="uid://b5ad2ujlpx4s8" path="res://assets/audio/joseph_philip_burke/forest_song_compressed.mp3" id="2_6gcgk"] +[ext_resource type="AudioStream" uid="uid://blrw2u3jb1fbm" path="res://assets/audio/freemusicarchive_org/universfield/criminal_district/criminal_district.mp3" id="2_26588"] [resource] script = ExtResource("1_rw51e") -idle_audio_stream = ExtResource("2_6gcgk") -combat_audio_stream = ExtResource("1_ngt8i") +idle_audio_stream = ExtResource("2_26588") +combat_audio_stream = ExtResource("1_6v402") diff --git a/scenes/ui/screen/settings_screen/settings_screen.gd b/scenes/ui/screen/settings_screen/settings_screen.gd index 5266766..d41eca3 100644 --- a/scenes/ui/screen/settings_screen/settings_screen.gd +++ b/scenes/ui/screen/settings_screen/settings_screen.gd @@ -4,6 +4,8 @@ const TAB_DATA_ID: String = "settings" @export var shake_shader_component_scene: PackedScene +@onready var shortcuts_label: Label = %ShortcutsLabel + @onready var master_settings_slider: SettingsSlider = %MasterSettingsSlider @onready var music_settings_slider: SettingsSlider = %MusicSettingsSlider @onready var sfx_settings_slider: SettingsSlider = %SFXSettingsSlider @@ -19,6 +21,11 @@ const TAB_DATA_ID: String = "settings" ############### +func _input(event: InputEvent) -> void: + if event.is_action_pressed("master_music_toggle"): + pass # TODO toggle master music setting and update UI + + func _ready() -> void: _initialize() _connect_signals() @@ -36,6 +43,8 @@ func _initialize() -> void: func _set_ui_labels() -> void: + shortcuts_label.text = Locale.get_ui_label("shortcuts_label") + master_settings_slider.get_title_label().text = Locale.get_ui_label("master") music_settings_slider.get_title_label().text = Locale.get_ui_label("music") sfx_settings_slider.get_title_label().text = Locale.get_ui_label("sfx") diff --git a/scenes/ui/screen/settings_screen/settings_screen.tscn b/scenes/ui/screen/settings_screen/settings_screen.tscn index 770add4..5c1610e 100644 --- a/scenes/ui/screen/settings_screen/settings_screen.tscn +++ b/scenes/ui/screen/settings_screen/settings_screen.tscn @@ -33,9 +33,19 @@ size_flags_vertical = 4 theme_override_constants/margin_top = 16 theme_override_constants/margin_bottom = 8 -[node name="TitleLabel" type="Label" parent="MarginContainer/VBoxContainer/TitleMarginContainerAudio"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TitleMarginContainerAudio"] +layout_mode = 2 + +[node name="TitleLabel" type="Label" parent="MarginContainer/VBoxContainer/TitleMarginContainerAudio/VBoxContainer"] layout_mode = 2 text = "Audio" +horizontal_alignment = 1 + +[node name="ShortcutsLabel" type="Label" parent="MarginContainer/VBoxContainer/TitleMarginContainerAudio/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 10 +horizontal_alignment = 1 [node name="MasterSettingsSlider" parent="MarginContainer/VBoxContainer" instance=ExtResource("2_usuby")] unique_name_in_owner = true @@ -133,7 +143,8 @@ text = "English" [node name="Watermark" type="MarginContainer" parent="MarginContainer/VBoxContainer"] modulate = Color(1, 0, 1, 1) layout_mode = 2 -theme_override_constants/margin_top = 16 +size_flags_horizontal = 4 +size_flags_vertical = 4 [node name="WatermarkLabel" type="Label" parent="MarginContainer/VBoxContainer/Watermark"] layout_mode = 2 diff --git a/scenes/ui/screen/settings_screen/settings_slider/settings_slider.gd b/scenes/ui/screen/settings_screen/settings_slider/settings_slider.gd index 67ce460..433aef4 100644 --- a/scenes/ui/screen/settings_screen/settings_slider/settings_slider.gd +++ b/scenes/ui/screen/settings_screen/settings_slider/settings_slider.gd @@ -37,7 +37,7 @@ func set_data(toggle: bool, value: float) -> void: func get_title_label() -> LabelTyping: return title_label - + ############# ## helpers ##