From 7cac7d8d20f84856ea7bb7a761029efdf5f0f10c Mon Sep 17 00:00:00 2001 From: Relintai <relintai@gmail.com> Date: Thu, 11 Jun 2020 12:23:35 +0200 Subject: [PATCH] Add the project. --- .gitignore | 16 ++ areas/ExitPortal.tscn | 39 +++ default_bus_layout.tres | 18 ++ default_env.tres | 7 + environments/red_env.tres | 23 ++ gi_probes/level1.tres | 13 + gi_probes/level2.tres | 12 + icon.png | Bin 0 -> 3305 bytes icon.png.import | 34 +++ levels/LICENSE.txt | 202 +++++++++++++++ levels/Level0.gd | 6 + levels/Level0.tscn | 382 ++++++++++++++++++++++++++++ levels/Level1.gd | 2 + levels/Level1.tscn | 335 ++++++++++++++++++++++++ levels/Level10.gd | 12 + levels/Level10.tscn | 298 ++++++++++++++++++++++ levels/Level2.tscn | 267 +++++++++++++++++++ levels/Level3.tscn | 270 ++++++++++++++++++++ levels/Level4.tscn | 284 +++++++++++++++++++++ levels/Level5.tscn | 317 +++++++++++++++++++++++ levels/Level6.tscn | 264 +++++++++++++++++++ levels/Level7.tscn | 248 ++++++++++++++++++ levels/Level8.tscn | 264 +++++++++++++++++++ levels/Level9.tscn | 280 ++++++++++++++++++++ levels/LevelKit.tscn | 133 ++++++++++ levels/Roboto-Black.ttf | Bin 0 -> 171072 bytes levels/title_font.tres | 7 + levels/title_subtext_font.tres | 7 + library/MainLibrary.tres | 38 +++ library/liquid_material.tres | 6 + library/main_atlas.png | Bin 0 -> 2654 bytes library/main_atlas.png.import | 34 +++ library/main_atlas.pxo | Bin 0 -> 363 bytes library/main_emission.png | Bin 0 -> 541 bytes library/main_emission.png.import | 34 +++ library/main_emission.pxo | Bin 0 -> 490 bytes library/surface_material.tres | 13 + particles/flake.png | Bin 0 -> 119 bytes particles/flake.png.import | 34 +++ particles/flake.pxo | Bin 0 -> 174 bytes player/Exit.gd | 4 + player/Menu.gd | 8 + player/Player.gd | 210 +++++++++++++++ player/Player.tscn | 71 ++++++ player/Volume.gd | 8 + player/VolumeControl.tscn | 26 ++ player/button.png | Bin 0 -> 630 bytes player/button.png.import | 34 +++ player/panel.png | Bin 0 -> 630 bytes player/panel.png.import | 34 +++ player/ui_theme.tres | 62 +++++ project.godot | 66 +++++ scenes/Main.gd | 34 +++ scenes/Main.tscn | 18 ++ scripts/Ladder.gd | 15 ++ scripts/exit_portal.gd | 16 ++ sounds/edited/README.txt | 32 +++ sounds/edited/stepdirt_1.wav | Bin 0 -> 22586 bytes sounds/edited/stepdirt_1.wav.import | 21 ++ 59 files changed, 4558 insertions(+) create mode 100644 .gitignore create mode 100644 areas/ExitPortal.tscn create mode 100644 default_bus_layout.tres create mode 100644 default_env.tres create mode 100644 environments/red_env.tres create mode 100644 gi_probes/level1.tres create mode 100644 gi_probes/level2.tres create mode 100644 icon.png create mode 100644 icon.png.import create mode 100644 levels/LICENSE.txt create mode 100644 levels/Level0.gd create mode 100644 levels/Level0.tscn create mode 100644 levels/Level1.gd create mode 100644 levels/Level1.tscn create mode 100644 levels/Level10.gd create mode 100644 levels/Level10.tscn create mode 100644 levels/Level2.tscn create mode 100644 levels/Level3.tscn create mode 100644 levels/Level4.tscn create mode 100644 levels/Level5.tscn create mode 100644 levels/Level6.tscn create mode 100644 levels/Level7.tscn create mode 100644 levels/Level8.tscn create mode 100644 levels/Level9.tscn create mode 100644 levels/LevelKit.tscn create mode 100644 levels/Roboto-Black.ttf create mode 100644 levels/title_font.tres create mode 100644 levels/title_subtext_font.tres create mode 100644 library/MainLibrary.tres create mode 100644 library/liquid_material.tres create mode 100644 library/main_atlas.png create mode 100644 library/main_atlas.png.import create mode 100644 library/main_atlas.pxo create mode 100644 library/main_emission.png create mode 100644 library/main_emission.png.import create mode 100644 library/main_emission.pxo create mode 100644 library/surface_material.tres create mode 100644 particles/flake.png create mode 100644 particles/flake.png.import create mode 100644 particles/flake.pxo create mode 100644 player/Exit.gd create mode 100644 player/Menu.gd create mode 100644 player/Player.gd create mode 100644 player/Player.tscn create mode 100644 player/Volume.gd create mode 100644 player/VolumeControl.tscn create mode 100644 player/button.png create mode 100644 player/button.png.import create mode 100644 player/panel.png create mode 100644 player/panel.png.import create mode 100644 player/ui_theme.tres create mode 100644 project.godot create mode 100644 scenes/Main.gd create mode 100644 scenes/Main.tscn create mode 100644 scripts/Ladder.gd create mode 100644 scripts/exit_portal.gd create mode 100644 sounds/edited/README.txt create mode 100644 sounds/edited/stepdirt_1.wav create mode 100644 sounds/edited/stepdirt_1.wav.import diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e9f4f1f --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +\exports/ +\.import/ + +addons/scene_notes/ + +addons/todo/ + +scene-notes\.ini + +todo\.cache\.ini + +todo\.config\.ini + +export_presets\.cfg + +export.cfg \ No newline at end of file diff --git a/areas/ExitPortal.tscn b/areas/ExitPortal.tscn new file mode 100644 index 0000000..aa48438 --- /dev/null +++ b/areas/ExitPortal.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://scripts/exit_portal.gd" type="Script" id=1] +[ext_resource path="res://particles/flake.png" type="Texture" id=2] + +[sub_resource type="ParticlesMaterial" id=1] +emission_shape = 2 +emission_box_extents = Vector3( 0.5, 1, 0.5 ) +gravity = Vector3( 0, 9.8, 0 ) +scale = 0.1 +color = Color( 0.258824, 0.329412, 0.835294, 1 ) + +[sub_resource type="SpatialMaterial" id=2] +flags_transparent = true +vertex_color_use_as_albedo = true +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 2 ) + +[sub_resource type="QuadMesh" id=3] +material = SubResource( 2 ) + +[sub_resource type="BoxShape" id=4] +extents = Vector3( 1, 1.65801, 1 ) + +[node name="ExitPortal" type="Area"] +script = ExtResource( 1 ) + +[node name="Particles" type="Particles" parent="."] +amount = 13 +lifetime = 0.63 +process_material = SubResource( 1 ) +draw_pass_1 = SubResource( 3 ) + +[node name="CollisionShape" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.67644, 0 ) +shape = SubResource( 4 ) diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..cdd188b --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,18 @@ +[gd_resource type="AudioBusLayout" load_steps=2 format=2] + +[sub_resource type="AudioEffectReverb" id=1] +resource_name = "Reverb" +room_size = 0.13 +damping = 0.09 +wet = 0.13 + +[resource] +bus/0/volume_db = 0.0672607 +bus/1/name = "Footsteps" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = -4.25003 +bus/1/send = "Master" +bus/1/effect/0/effect = SubResource( 1 ) +bus/1/effect/0/enabled = true diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/environments/red_env.tres b/environments/red_env.tres new file mode 100644 index 0000000..1908f2f --- /dev/null +++ b/environments/red_env.tres @@ -0,0 +1,23 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] +sky_top_color = Color( 0.490196, 0.364706, 0.45098, 1 ) +sky_horizon_color = Color( 0.52549, 0.168627, 0.203922, 1 ) +sky_curve = 0.564901 +ground_bottom_color = Color( 0.329412, 0.156863, 0.2, 1 ) +ground_horizon_color = Color( 0.498039, 0.117647, 0.235294, 1 ) +ground_curve = 0.0828212 +sun_color = Color( 0, 0, 0, 1 ) +sun_latitude = 30.76 +sun_angle_min = 5.24 +sun_curve = 0.237841 + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) +ambient_light_color = Color( 0.772549, 0.772549, 0.772549, 1 ) +fog_enabled = true +ss_reflections_enabled = true +ssao_enabled = true +dof_blur_far_distance = 11.61 +glow_enabled = true diff --git a/gi_probes/level1.tres b/gi_probes/level1.tres new file mode 100644 index 0000000..1fa1ac3 --- /dev/null +++ b/gi_probes/level1.tres @@ -0,0 +1,13 @@ +[gd_resource type="GIProbeData" format=2] + +[resource] +bounds = AABB( -13.3083, -8.74279, -16.0324, 26.6166, 17.4856, 32.0648 ) +cell_size = 0.250506 +to_cell_xform = Transform( 3.99192, 0, 0, 0, 3.99192, 0, 0, 0, 3.99192, 53.1256, 34.9005, 64 ) +dynamic_data = PoolIntArray( 0, 8, 128, 128, 128, 1, 0, 0, 253476880, 0, 319888848, 0, 220676784, 0, 1, 1082096526, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 4 +energy = 3.33 +bias = 1.772 +normal_bias = 0.816 +propagation = 0.41 +interior = true diff --git a/gi_probes/level2.tres b/gi_probes/level2.tres new file mode 100644 index 0000000..c50dbe5 --- /dev/null +++ b/gi_probes/level2.tres @@ -0,0 +1,12 @@ +[gd_resource type="GIProbeData" format=2] + +[resource] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 0, 0, 0, 0, 65536, 0, 0, 87420128, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c98fbb601c83c81ec8c22b1dba7d1d57c62b323c GIT binary patch literal 3305 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 literal 0 HcmV?d00001 diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..9678a81 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/levels/LICENSE.txt b/levels/LICENSE.txt new file mode 100644 index 0000000..75b5248 --- /dev/null +++ b/levels/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/levels/Level0.gd b/levels/Level0.gd new file mode 100644 index 0000000..48d2791 --- /dev/null +++ b/levels/Level0.gd @@ -0,0 +1,6 @@ +extends VoxelWorldBlocky + + +func _unhandled_key_input(event : InputEventKey) -> void: + if event.scancode == KEY_ENTER: + get_parent().next_level() diff --git a/levels/Level0.tscn b/levels/Level0.tscn new file mode 100644 index 0000000..eb0ab26 --- /dev/null +++ b/levels/Level0.tscn @@ -0,0 +1,382 @@ +[gd_scene load_steps=26 format=2] + +[ext_resource path="res://environments/red_env.tres" type="Environment" id=1] +[ext_resource path="res://levels/Level0.gd" type="Script" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=3] +[ext_resource path="res://gi_probes/level2.tres" type="GIProbeData" id=4] +[ext_resource path="res://particles/flake.png" type="Texture" id=5] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=6] +[ext_resource path="res://levels/title_font.tres" type="DynamicFont" id=7] +[ext_resource path="res://levels/title_subtext_font.tres" type="DynamicFont" id=8] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 35, 63, 1, 1, 1, 57, 0, 35, 15, 2, 0, 109, 14, 183, 0, 15, 18, 0, 0, 15, 222, 0, 84, 15, 68, 1, 255, 48, 47, 1, 1, 191, 1, 0, 15, 2, 0, 146, 14, 183, 0, 15, 18, 0, 0, 15, 136, 2, 84, 30, 2, 123, 0, 15, 2, 0, 108, 14, 145, 0, 15, 18, 0, 0, 15, 63, 3, 0, 15, 38, 0, 2, 14, 21, 0, 15, 2, 0, 63, 15, 102, 0, 83, 15, 2, 0, 26, 15, 247, 0, 81, 15, 2, 0, 58, 15, 204, 3, 128, 15, 68, 1, 106, 14, 125, 0, 15, 18, 0, 35, 15, 2, 0, 108, 14, 181, 0, 15, 2, 0, 106, 14, 143, 0, 15, 18, 0, 17, 15, 2, 0, 255, 32, 14, 86, 1, 15, 2, 0, 255, 32, 15, 68, 1, 126, 15, 145, 0, 126, 15, 2, 0, 160, 15, 68, 1, 255, 255, 255, 206, 14, 222, 3, 15, 18, 0, 14, 31, 1, 61, 12, 128, 15, 2, 0, 157, 14, 101, 1, 15, 2, 0, 255, 13, 14, 49, 1, 14, 79, 15, 14, 36, 0, 15, 2, 0, 251, 14, 32, 1, 29, 2, 33, 1, 14, 18, 0, 15, 2, 0, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 188, 47, 1, 1, 207, 2, 255, 255, 118, 15, 136, 2, 255, 50, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 15, 248, 10, 255, 50, 15, 68, 1, 255, 31, 14, 49, 1, 14, 76, 17, 15, 36, 0, 0, 15, 96, 12, 250, 14, 32, 1, 29, 2, 32, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 11, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 31, 1, 14, 19, 255, 49, 15, 68, 1, 255, 50, 15, 2, 0, 255, 27, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 46, 29, 1, 64, 2, 31, 2, 18, 0, 16, 15, 2, 0, 251, 14, 68, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 29, 1, 12, 19, 14, 18, 0, 15, 2, 0, 255, 14, 29, 2, 33, 1, 15, 68, 1, 255, 32, 14, 2, 0, 15, 68, 1, 255, 11, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 14, 31, 1, 34, 0, 14, 15, 2, 0, 253, 29, 2, 17, 1, 15, 68, 1, 255, 32, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 248, 29, 1, 12, 1, 31, 2, 18, 0, 16, 15, 2, 0, 251, 15, 68, 1, 35, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[0,0,0]" +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 67, 31, 1, 86, 1, 255, 49, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 29, 1, 223, 17, 44, 1, 1, 21, 0, 15, 18, 0, 0, 0, 57, 0, 9, 38, 0, 13, 36, 0, 61, 1, 2, 1, 20, 0, 0, 39, 0, 26, 1, 55, 0, 1, 19, 0, 0, 26, 0, 3, 2, 0, 0, 30, 0, 0, 4, 0, 9, 2, 0, 9, 34, 0, 33, 0, 2, 18, 0, 10, 20, 0, 1, 53, 0, 11, 56, 0, 15, 36, 0, 0, 0, 147, 0, 0, 45, 0, 15, 2, 0, 76, 12, 156, 0, 15, 2, 0, 149, 14, 29, 1, 15, 18, 0, 0, 15, 68, 1, 83, 15, 102, 0, 83, 15, 2, 0, 64, 15, 50, 1, 0, 13, 102, 0, 14, 154, 2, 15, 2, 0, 67, 15, 136, 2, 244, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=11] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 31, 1, 135, 20, 255, 255, 42, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=12] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 235, 29, 1, 249, 6, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 14, 18, 0, 15, 2, 0, 17, 14, 54, 0, 14, 18, 0, 15, 2, 0, 143, 14, 180, 0, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 53, 15, 90, 0, 71, 15, 2, 0, 71, 14, 180, 0, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="Gradient" id=13] + +[sub_resource type="GradientTexture" id=14] +gradient = SubResource( 13 ) + +[sub_resource type="ParticlesMaterial" id=15] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 14 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=16] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 5 ) + +[sub_resource type="QuadMesh" id=17] +material = SubResource( 16 ) + +[node name="Level0" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ] +script = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 1 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = ExtResource( 4 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 15 ) +draw_pass_1 = SubResource( 17 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) + +[node name="Texts" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Texts"] +margin_right = 1024.0 +margin_bottom = 600.0 + +[node name="Container" type="MarginContainer" parent="Texts/VBoxContainer"] +margin_right = 1024.0 +margin_bottom = 397.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 4.88 + +[node name="Label" type="Label" parent="Texts/VBoxContainer/Container"] +margin_top = 168.0 +margin_right = 1024.0 +margin_bottom = 228.0 +custom_fonts/font = ExtResource( 7 ) +text = "The Tower" +align = 1 +valign = 1 + +[node name="Label2" type="Label" parent="Texts/VBoxContainer"] +margin_top = 401.0 +margin_right = 1024.0 +margin_bottom = 425.0 +custom_fonts/font = ExtResource( 8 ) +text = "Press ENTER to begin" +align = 1 +valign = 1 + +[node name="Control2" type="Control" parent="Texts/VBoxContainer"] +margin_top = 429.0 +margin_right = 1024.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 2.1 + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.666715, 0, 0.745313, 0, 1, 0, -0.745313, 0, 0.666715, 0, 6.15975, -5.948 ) diff --git a/levels/Level1.gd b/levels/Level1.gd new file mode 100644 index 0000000..c995f10 --- /dev/null +++ b/levels/Level1.gd @@ -0,0 +1,2 @@ +extends VoxelWorldBlocky + diff --git a/levels/Level1.tscn b/levels/Level1.tscn new file mode 100644 index 0000000..44315ec --- /dev/null +++ b/levels/Level1.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=24 format=2] + +[ext_resource path="res://environments/red_env.tres" type="Environment" id=1] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=3] +[ext_resource path="res://gi_probes/level2.tres" type="GIProbeData" id=4] +[ext_resource path="res://particles/flake.png" type="Texture" id=5] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 35, 63, 1, 1, 1, 57, 0, 35, 15, 2, 0, 109, 14, 183, 0, 15, 18, 0, 0, 15, 222, 0, 84, 15, 68, 1, 255, 48, 47, 1, 1, 191, 1, 0, 15, 2, 0, 146, 14, 183, 0, 15, 18, 0, 0, 15, 136, 2, 84, 30, 2, 123, 0, 15, 2, 0, 108, 14, 145, 0, 15, 18, 0, 0, 15, 63, 3, 0, 15, 38, 0, 2, 14, 21, 0, 15, 2, 0, 63, 15, 102, 0, 83, 15, 2, 0, 26, 15, 247, 0, 81, 15, 2, 0, 58, 15, 204, 3, 128, 15, 68, 1, 106, 14, 125, 0, 15, 18, 0, 35, 15, 2, 0, 108, 14, 181, 0, 15, 2, 0, 106, 14, 143, 0, 15, 18, 0, 17, 15, 2, 0, 255, 32, 14, 86, 1, 15, 2, 0, 255, 32, 15, 68, 1, 126, 15, 145, 0, 126, 15, 2, 0, 160, 15, 68, 1, 255, 255, 255, 206, 14, 222, 3, 15, 18, 0, 14, 31, 1, 61, 12, 128, 15, 2, 0, 157, 14, 101, 1, 15, 2, 0, 255, 13, 14, 49, 1, 14, 79, 15, 14, 36, 0, 15, 2, 0, 251, 14, 32, 1, 29, 2, 33, 1, 14, 18, 0, 15, 2, 0, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 188, 47, 1, 1, 207, 2, 255, 255, 118, 15, 136, 2, 255, 50, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 15, 248, 10, 255, 50, 15, 68, 1, 255, 31, 14, 49, 1, 14, 76, 17, 15, 36, 0, 0, 15, 96, 12, 250, 14, 32, 1, 29, 2, 32, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 11, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 31, 1, 14, 19, 255, 49, 15, 68, 1, 255, 50, 15, 2, 0, 255, 27, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 46, 29, 1, 64, 2, 31, 2, 18, 0, 16, 15, 2, 0, 251, 14, 68, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 29, 1, 12, 19, 14, 18, 0, 15, 2, 0, 255, 14, 29, 2, 33, 1, 15, 68, 1, 255, 32, 14, 2, 0, 15, 68, 1, 255, 11, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 14, 31, 1, 34, 0, 14, 15, 2, 0, 253, 29, 2, 17, 1, 15, 68, 1, 255, 32, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 248, 29, 1, 12, 1, 31, 2, 18, 0, 16, 15, 2, 0, 251, 15, 68, 1, 35, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[0,0,0]" +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 67, 31, 1, 86, 1, 255, 49, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 29, 1, 223, 17, 44, 1, 1, 21, 0, 15, 18, 0, 0, 0, 57, 0, 9, 38, 0, 13, 36, 0, 61, 1, 2, 1, 20, 0, 0, 39, 0, 26, 1, 55, 0, 1, 19, 0, 0, 26, 0, 3, 2, 0, 0, 30, 0, 0, 4, 0, 9, 2, 0, 9, 34, 0, 33, 0, 2, 18, 0, 10, 20, 0, 1, 53, 0, 11, 56, 0, 15, 36, 0, 0, 0, 147, 0, 0, 45, 0, 15, 2, 0, 76, 12, 156, 0, 15, 2, 0, 149, 14, 29, 1, 15, 18, 0, 0, 15, 68, 1, 83, 15, 102, 0, 83, 15, 2, 0, 64, 15, 50, 1, 0, 13, 102, 0, 14, 154, 2, 15, 2, 0, 67, 15, 136, 2, 244, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=11] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 31, 1, 135, 20, 255, 255, 42, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=12] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 235, 29, 1, 249, 6, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 14, 18, 0, 15, 2, 0, 17, 14, 54, 0, 14, 18, 0, 15, 2, 0, 143, 14, 180, 0, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 53, 15, 90, 0, 71, 15, 2, 0, 71, 14, 180, 0, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="Gradient" id=13] + +[sub_resource type="GradientTexture" id=14] +gradient = SubResource( 13 ) + +[sub_resource type="ParticlesMaterial" id=15] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 14 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=16] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 5 ) + +[sub_resource type="QuadMesh" id=17] +material = SubResource( 16 ) + +[node name="Level1" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 1 ) + +[node name="Player" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.165382, 0 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = ExtResource( 4 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 15 ) +draw_pass_1 = SubResource( 17 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) diff --git a/levels/Level10.gd b/levels/Level10.gd new file mode 100644 index 0000000..ae661ab --- /dev/null +++ b/levels/Level10.gd @@ -0,0 +1,12 @@ +extends VoxelWorldBlocky + +var time : float = 0 + +func _process(delta): + time += delta + + if time > 3: + if get_parent().has_method("next_level"): + get_parent().next_level() + + set_process(false) diff --git a/levels/Level10.tscn b/levels/Level10.tscn new file mode 100644 index 0000000..f78c6bb --- /dev/null +++ b/levels/Level10.tscn @@ -0,0 +1,298 @@ +[gd_scene load_steps=21 format=2] + +[ext_resource path="res://levels/title_font.tres" type="DynamicFont" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://levels/Level10.gd" type="Script" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 31, 1, 79, 20, 255, 255, 98, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 193, 31, 1, 213, 0, 52, 14, 72, 0, 14, 18, 0, 15, 2, 0, 197, 15, 234, 0, 35, 14, 54, 0, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 31, 1, 6, 16, 255, 49, 14, 68, 1, 31, 1, 19, 0, 0, 15, 105, 1, 255, 12, 14, 49, 1, 15, 2, 0, 255, 31, 15, 117, 2, 0, 15, 2, 0, 255, 31, 15, 135, 2, 53, 14, 72, 0, 14, 18, 0, 15, 2, 0, 197, 15, 234, 0, 35, 14, 54, 0, 15, 18, 0, 15, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 64, 31, 1, 83, 1, 255, 64, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 186, 31, 1, 202, 4, 255, 49, 15, 68, 1, 255, 68, 14, 86, 1, 15, 18, 0, 17, 15, 2, 0, 233, 14, 32, 1, 15, 2, 0, 255, 255, 255, 255, 255, 255, 53, 15, 84, 6, 249, 15, 12, 1, 37, 15, 56, 0, 37, 15, 2, 0, 193, 14, 12, 1, 45, 1, 1, 20, 0, 14, 18, 0, 29, 0, 36, 0, 15, 2, 0, 232, 15, 12, 1, 249, 15, 2, 0, 37, 15, 68, 1, 255, 50, 15, 2, 0, 255, 171, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 72, 29, 1, 86, 6, 15, 18, 0, 0, 13, 19, 0, 14, 18, 0, 15, 37, 0, 0, 31, 0, 37, 0, 0, 13, 110, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 29, 1, 55, 15, 14, 18, 0, 15, 2, 0, 255, 14, 29, 2, 33, 1, 13, 68, 1, 28, 1, 18, 0, 28, 1, 18, 0, 12, 16, 0, 15, 2, 0, 220, 15, 68, 1, 16, 15, 2, 0, 15, 12, 101, 1, 15, 2, 0, 220, 14, 255, 0, 14, 18, 0, 15, 2, 0, 14, 15, 51, 0, 32, 15, 2, 0, 255, 255, 255, 56, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 29, 1, 51, 16, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 107, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=9] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 1140378789, 1058757252, 1025358976, 1061895146, 1069779988, 1057062291, 1062748971, 1043518650, 1070762029, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=10] + +[sub_resource type="GradientTexture" id=11] +gradient = SubResource( 10 ) + +[sub_resource type="ParticlesMaterial" id=12] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 11 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=13] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=14] +material = SubResource( 13 ) + +[node name="Level10" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 9 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 12 ) +draw_pass_1 = SubResource( 14 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.922967, 6.98507, -18.9305 ) + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.689822, -0.472154, 0.548832, 0, 0.758077, 0.652165, -0.723979, -0.449877, 0.522938, 5.55108, 12.3711, -5.69769 ) + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="MarginContainer"] +margin_top = 270.0 +margin_right = 1024.0 +margin_bottom = 330.0 +custom_fonts/font = ExtResource( 1 ) +text = "The End" +align = 1 +valign = 1 diff --git a/levels/Level2.tscn b/levels/Level2.tscn new file mode 100644 index 0000000..1929cb6 --- /dev/null +++ b/levels/Level2.tscn @@ -0,0 +1,267 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://levels/Level1.gd" type="Script" id=1] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=3] +[ext_resource path="res://scripts/Ladder.gd" type="Script" id=4] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=5] +[ext_resource path="res://gi_probes/level1.tres" type="GIProbeData" id=6] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=7] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-2,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 16, 0 ) +position_x = -2 +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 31, 1, 241, 9, 255, 70, 15, 89, 1, 255, 47, 15, 65, 1, 255, 47, 15, 2, 0, 255, 255, 255, 138, 12, 219, 4, 28, 1, 17, 0, 29, 0, 17, 0, 15, 18, 0, 18, 15, 2, 0, 233, 44, 1, 1, 70, 1, 12, 16, 0, 14, 120, 1, 15, 18, 0, 1, 15, 2, 0, 255, 32, 14, 172, 2, 15, 2, 0, 255, 13, 15, 49, 1, 255, 14, 14, 32, 1, 14, 18, 0, 15, 2, 0, 7, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-2,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 16, 16 ) +position_x = -2 +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 18, 31, 1, 37, 1, 255, 13, 14, 32, 1, 14, 18, 0, 15, 2, 0, 255, 14, 15, 50, 1, 17, 14, 36, 0, 14, 18, 0, 15, 2, 0, 251, 14, 32, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 240, 14, 35, 5, 15, 2, 0, 255, 14, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 255, 101, 15, 136, 2, 255, 50, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 255, 255, 255, 78, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 16 ) +position_x = -1 +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 21, 31, 1, 41, 0, 21, 11, 2, 0, 27, 2, 16, 0, 15, 73, 0, 38, 15, 2, 0, 15, 14, 90, 0, 15, 18, 0, 17, 15, 2, 0, 88, 14, 143, 0, 15, 2, 0, 19, 14, 56, 0, 14, 18, 0, 13, 2, 0, 14, 35, 0, 15, 18, 0, 89, 15, 2, 0, 34, 15, 161, 0, 17, 15, 2, 0, 90, 15, 145, 0, 17, 15, 36, 0, 71, 15, 2, 0, 8, 14, 117, 0, 4, 2, 0, 14, 26, 0, 14, 18, 0, 15, 2, 0, 90, 14, 127, 0, 15, 18, 0, 35, 15, 2, 0, 62, 14, 135, 0, 15, 2, 0, 134, 15, 171, 0, 17, 15, 36, 0, 53, 15, 2, 0, 26, 31, 1, 118, 0, 17, 15, 2, 0, 79, 14, 134, 0, 14, 153, 0, 15, 36, 0, 0, 13, 153, 0, 15, 36, 0, 35, 15, 2, 0, 26, 15, 99, 0, 0, 13, 19, 0, 13, 17, 0, 15, 2, 0, 63, 15, 99, 0, 17, 14, 36, 0, 14, 18, 0, 14, 2, 0, 14, 36, 0, 44, 1, 1, 5, 8, 14, 36, 0, 15, 2, 0, 26, 15, 221, 1, 0, 15, 82, 0, 25, 15, 44, 0, 25, 15, 2, 0, 9, 14, 72, 0, 14, 18, 0, 15, 2, 0, 36, 13, 73, 0, 15, 243, 0, 44, 14, 2, 0, 15, 81, 0, 26, 13, 143, 0, 15, 60, 3, 0, 15, 2, 0, 17, 15, 72, 0, 17, 15, 36, 0, 16, 14, 35, 0, 15, 2, 0, 0, 14, 37, 0, 15, 243, 0, 17, 14, 54, 0, 6, 2, 0, 14, 28, 0, 15, 18, 0, 35, 15, 2, 0, 7, 15, 80, 0, 35, 15, 54, 0, 34, 14, 13, 1, 15, 2, 0, 18, 14, 55, 0, 14, 18, 0, 15, 2, 0, 9, 15, 172, 0, 34, 28, 0, 64, 4, 6, 2, 0, 15, 80, 0, 17, 15, 2, 0, 2, 11, 57, 0, 11, 15, 0, 15, 226, 2, 38, 14, 2, 0, 15, 90, 0, 0, 13, 19, 0, 15, 68, 1, 125, 15, 2, 0, 0, 13, 180, 0, 14, 3, 4, 14, 198, 0, 15, 53, 0, 16, 15, 2, 0, 37, 15, 91, 0, 44, 15, 63, 0, 17, 15, 36, 0, 17, 15, 2, 0, 26, 22, 1, 1, 0, 3, 56, 0, 5, 9, 0, 4, 2, 0, 31, 1, 18, 0, 0, 4, 28, 0, 4, 2, 0, 14, 18, 0, 15, 2, 0, 36, 15, 225, 0, 44, 14, 63, 0, 15, 2, 0, 63, 14, 50, 1, 36, 0, 3, 1, 0, 4, 110, 0, 12, 136, 0, 29, 1, 155, 2, 14, 50, 1, 14, 36, 0, 15, 2, 0, 36, 12, 125, 0, 15, 18, 0, 1, 15, 2, 0, 8, 14, 63, 0, 15, 2, 0, 64, 1, 255, 0, 7, 90, 2, 22, 1, 87, 1, 3, 110, 0, 5, 9, 0, 4, 2, 0, 7, 46, 0, 3, 2, 0, 15, 18, 0, 18, 3, 44, 0, 15, 2, 0, 28, 15, 5, 1, 82, 15, 2, 0, 48, 11, 168, 0, 4, 69, 1, 4, 90, 0, 2, 16, 0, 4, 14, 0, 0, 47, 0, 1, 18, 0, 0, 11, 0, 3, 2, 0, 12, 16, 0, 0, 70, 5, 9, 33, 0, 15, 2, 0, 39, 11, 156, 0, 15, 2, 0, 131, 14, 165, 0, 14, 18, 0, 15, 2, 0, 13, 14, 48, 1, 15, 68, 0, 31, 15, 2, 0, 255, 187, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 0 ) +position_x = -1 +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 31, 1, 42, 10, 255, 46, 15, 65, 1, 255, 47, 15, 2, 0, 164, 15, 248, 1, 251, 15, 14, 1, 35, 14, 54, 0, 14, 18, 0, 15, 2, 0, 180, 15, 217, 0, 16, 15, 35, 0, 16, 15, 36, 0, 18, 15, 2, 0, 106, 14, 161, 0, 14, 18, 0, 15, 2, 0, 18, 29, 1, 56, 0, 13, 17, 0, 15, 36, 0, 17, 15, 35, 0, 0, 47, 1, 2, 129, 0, 18, 11, 2, 0, 14, 126, 0, 15, 2, 0, 70, 14, 107, 0, 15, 18, 0, 0, 13, 19, 0, 15, 234, 0, 0, 13, 233, 0, 13, 53, 0, 15, 72, 0, 19, 13, 55, 0, 13, 17, 0, 61, 0, 1, 0, 109, 0, 15, 2, 0, 124, 14, 180, 0, 15, 2, 0, 72, 13, 100, 2, 15, 158, 1, 0, 15, 127, 0, 35, 15, 199, 0, 87, 15, 106, 0, 17, 15, 36, 0, 17, 15, 2, 0, 1, 13, 45, 2, 15, 73, 0, 37, 15, 2, 0, 15, 14, 90, 0, 15, 18, 0, 17, 15, 2, 0, 88, 14, 143, 0, 15, 2, 0, 19, 14, 56, 0, 14, 18, 0, 13, 2, 0, 14, 35, 0, 15, 18, 0, 89, 15, 2, 0, 24, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 32, 16 ) +position_x = -1 +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 34, 31, 1, 48, 6, 255, 49, 15, 68, 1, 255, 32, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 14, 14, 50, 1, 14, 18, 0, 15, 2, 0, 251, 14, 32, 1, 15, 18, 0, 17, 15, 2, 0, 251, 15, 50, 1, 17, 14, 36, 0, 15, 2, 0, 251, 14, 32, 1, 15, 18, 0, 17, 15, 2, 0, 251, 15, 50, 1, 17, 14, 36, 0, 15, 2, 0, 53, 31, 1, 91, 0, 71, 15, 2, 0, 88, 15, 197, 0, 89, 14, 50, 1, 47, 3, 3, 235, 0, 88, 15, 2, 0, 70, 15, 68, 1, 90, 13, 198, 0, 14, 86, 1, 15, 2, 0, 255, 32, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 60, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 0 ) +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 16 ) +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 133, 31, 1, 151, 2, 255, 49, 15, 68, 1, 255, 51, 15, 69, 1, 255, 49, 14, 68, 1, 13, 17, 0, 15, 2, 0, 255, 15, 14, 68, 1, 15, 2, 0, 255, 32, 15, 68, 1, 255, 50, 15, 187, 3, 0, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 116, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,1,2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 32 ) +position_x = -1 +position_y = 1 +position_z = 2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 26, 29, 1, 46, 0, 14, 18, 0, 15, 2, 0, 13, 29, 1, 51, 0, 13, 17, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-2,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 32, 16 ) +position_x = -2 +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 32, 16 ) +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 29, 1, 50, 10, 15, 18, 0, 17, 15, 2, 0, 251, 29, 2, 15, 1, 14, 18, 0, 14, 86, 1, 15, 2, 0, 251, 14, 50, 1, 14, 18, 0, 15, 68, 1, 255, 14, 14, 32, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 132, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="BoxShape" id=11] +extents = Vector3( 0.470313, 4.46225, 0.754098 ) + +[node name="Level2" type="VoxelWorldBlocky"] +editable = true +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ) ] +script = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 1, 0, 0, 0, 0.238161, 0.971226, 0, -0.971226, 0.238161, 0, 14.9531, 0 ) +light_color = Color( 0.298039, 0.627451, 0.784314, 1 ) +light_energy = 0.19 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 1, 0, 0, 0, -0.498533, 0.866871, 0, -0.866871, -0.498533, 0, 14.9531, -0.0236439 ) +light_color = Color( 0.894118, 0.901961, 0.905882, 1 ) +light_energy = 0.19 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3737, 22.2862, 17.3319 ) +light_color = Color( 0.545098, 0.803922, 0.403922, 1 ) +shadow_enabled = true + +[node name="Player" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.12439, 25.2891, 17.5787 ) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 5 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -9.24192, 27.1703, 21.894 ) +extents = Vector3( 13.3083, 8.74279, 16.0324 ) +energy = 3.33 +propagation = 0.41 +bias = 1.772 +normal_bias = 0.816 +interior = true +compress = true +data = ExtResource( 6 ) + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96332, 24.167, 17.7326 ) +light_color = Color( 0.627451, 0.0862745, 0.776471, 1 ) +light_energy = 1.65 +shadow_enabled = true + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -13.3812, 25.2187, 20.8924 ) +light_energy = 0.96 +light_indirect_energy = 5.3 +light_negative = true +light_specular = 0.98 +shadow_enabled = true +omni_range = 12.7 +omni_attenuation = 2.82842 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.639428, 24.7962, 15.2102 ) +light_color = Color( 0.517647, 0.623529, 0.180392, 1 ) +shadow_enabled = true + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11.1076, 29.5305, 27.24 ) +light_color = Color( 0.815686, 0.831373, 0.764706, 1 ) +shadow_enabled = true +omni_range = 8.8008 + +[node name="ExitPortal" parent="." instance=ExtResource( 7 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.95379, 32.0067, 25.0291 ) + +[node name="Ladder" type="Area" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -12.039, 25.5516, 28.331 ) +script = ExtResource( 4 ) + +[node name="CollisionShape" type="CollisionShape" parent="Ladder"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.519846, 2.90384, 0.339609 ) +shape = SubResource( 11 ) diff --git a/levels/Level3.tscn b/levels/Level3.tscn new file mode 100644 index 0000000..4a89a20 --- /dev/null +++ b/levels/Level3.tscn @@ -0,0 +1,270 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://gi_probes/level2.tres" type="GIProbeData" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 31, 1, 76, 12, 255, 49, 15, 68, 1, 255, 68, 14, 86, 1, 13, 18, 0, 29, 1, 18, 0, 15, 2, 0, 255, 32, 15, 67, 1, 255, 49, 15, 68, 1, 255, 255, 119, 15, 15, 5, 255, 68, 14, 221, 3, 14, 18, 0, 15, 2, 0, 251, 14, 32, 1, 13, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 12, 29, 1, 32, 0, 15, 18, 0, 17, 15, 2, 0, 233, 15, 32, 1, 17, 14, 36, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 9, 29, 1, 28, 1, 14, 18, 0, 15, 2, 0, 255, 14, 14, 50, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 162, 31, 1, 177, 5, 255, 49, 15, 68, 1, 255, 255, 255, 188, 15, 2, 0, 255, 255, 255, 188, 15, 152, 7, 255, 255, 80, 14, 97, 2, 15, 18, 0, 0, 46, 1, 1, 21, 0, 15, 2, 0, 194, 14, 231, 0, 15, 18, 0, 35, 15, 2, 0, 233, 15, 50, 1, 17, 15, 2, 0, 215, 15, 14, 1, 17, 15, 36, 0, 17, 15, 2, 0, 251, 15, 50, 1, 255, 13, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 187, 31, 1, 207, 0, 187, 15, 2, 0, 42, 13, 12, 1, 61, 1, 1, 1, 20, 0, 31, 0, 18, 0, 17, 15, 2, 0, 248, 14, 47, 1, 15, 2, 0, 255, 255, 255, 255, 255, 255, 105, 15, 202, 7, 0, 15, 2, 0, 255, 31, 15, 68, 1, 255, 46, 0, 12, 9, 0, 4, 0, 15, 2, 0, 255, 42, 15, 64, 1, 255, 46, 0, 2, 0, 14, 68, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 171, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 127, 47, 1, 1, 147, 1, 255, 127, 15, 2, 0, 255, 255, 40, 14, 203, 3, 11, 18, 0, 17, 1, 3, 0, 8, 2, 0, 11, 33, 0, 13, 16, 0, 15, 2, 0, 255, 0, 14, 34, 1, 12, 18, 0, 31, 1, 84, 5, 255, 49, 12, 84, 1, 15, 2, 0, 255, 34, 15, 68, 1, 255, 50, 15, 2, 0, 255, 255, 255, 188, 15, 16, 5, 255, 50, 15, 68, 1, 255, 49, 15, 30, 10, 255, 49, 15, 2, 0, 255, 255, 255, 255, 109, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 47, 1, 1, 211, 17, 32, 15, 53, 0, 34, 15, 2, 0, 255, 255, 255, 134, 15, 203, 3, 222, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 29, 1, 255, 15, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 16, 31, 1, 54, 0, 34, 15, 2, 0, 144, 14, 216, 0, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 15, 2, 0, 231, 13, 12, 1, 47, 1, 1, 60, 3, 0, 13, 38, 0, 15, 18, 0, 0, 15, 2, 0, 75, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="Gradient" id=9] + +[sub_resource type="GradientTexture" id=10] +gradient = SubResource( 9 ) + +[sub_resource type="ParticlesMaterial" id=11] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 10 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=12] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=13] +material = SubResource( 12 ) + +[node name="Level3" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, -0.947732, 0 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = ExtResource( 1 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 11 ) +draw_pass_1 = SubResource( 13 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.00102, 9.20603, -19.3076 ) diff --git a/levels/Level4.tscn b/levels/Level4.tscn new file mode 100644 index 0000000..f1f21cc --- /dev/null +++ b/levels/Level4.tscn @@ -0,0 +1,284 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 31, 1, 198, 17, 255, 49, 15, 68, 1, 255, 255, 119, 15, 2, 0, 255, 31, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 9, 44, 1, 1, 29, 1, 13, 17, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 212, 31, 1, 232, 0, 212, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 231, 15, 219, 8, 255, 50, 15, 68, 1, 255, 255, 255, 255, 255, 1, 29, 1, 16, 5, 13, 17, 0, 15, 2, 0, 255, 15, 15, 50, 1, 255, 32, 14, 2, 0, 15, 68, 1, 17, 15, 172, 2, 17, 15, 72, 0, 17, 15, 2, 0, 255, 14, 15, 68, 1, 255, 32, 15, 154, 2, 17, 15, 2, 0, 255, 49, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 29, 1, 85, 19, 15, 18, 0, 52, 29, 1, 72, 0, 15, 18, 0, 0, 15, 125, 0, 16, 15, 2, 0, 255, 32, 13, 121, 1, 15, 2, 0, 255, 120, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 43, 1, 1, 1, 19, 15, 17, 0, 15, 15, 35, 0, 34, 14, 53, 0, 15, 18, 0, 1, 11, 140, 0, 15, 35, 0, 1, 12, 176, 0, 14, 53, 0, 15, 18, 0, 0, 15, 2, 0, 255, 32, 13, 103, 1, 15, 2, 0, 255, 136, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-2,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -32 ) +position_x = -2 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 58, 1, 1, 1, 186, 19, 15, 17, 0, 17, 10, 50, 0, 43, 0, 0, 67, 0, 0, 69, 0, 0, 6, 0, 8, 2, 0, 13, 18, 0, 13, 17, 0, 15, 2, 0, 168, 15, 204, 0, 185, 15, 2, 0, 48, 13, 15, 2, 14, 33, 2, 15, 18, 0, 18, 15, 2, 0, 92, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 169, 47, 1, 1, 190, 0, 169, 15, 2, 0, 62, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=9] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 1120403456, -1097435647, 0, 1064612430, 0, 0, 1057843183, 1062561503, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=10] + +[sub_resource type="GradientTexture" id=11] +gradient = SubResource( 10 ) + +[sub_resource type="ParticlesMaterial" id=12] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 11 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=13] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=14] +material = SubResource( 13 ) + +[node name="Level4" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.379907, 0.165382, -0.480157 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9561, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 9 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 12 ) +draw_pass_1 = SubResource( 14 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -23.7753, 10.3203, -13.9228 ) diff --git a/levels/Level5.tscn b/levels/Level5.tscn new file mode 100644 index 0000000..57e820d --- /dev/null +++ b/levels/Level5.tscn @@ -0,0 +1,317 @@ +[gd_scene load_steps=22 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 157, 31, 1, 177, 0, 157, 15, 2, 0, 56, 15, 252, 0, 90, 14, 109, 0, 14, 18, 0, 15, 2, 0, 160, 15, 197, 0, 178, 15, 2, 0, 38, 14, 254, 0, 14, 18, 0, 15, 2, 0, 15, 15, 52, 0, 33, 15, 2, 0, 255, 255, 231, 14, 44, 3, 14, 18, 0, 15, 2, 0, 255, 255, 101, 15, 136, 2, 255, 255, 119, 13, 2, 0, 31, 1, 154, 2, 255, 48, 15, 67, 1, 255, 255, 117, 31, 0, 201, 3, 255, 48, 15, 2, 0, 255, 255, 255, 255, 241, 14, 66, 6, 13, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 63, 29, 1, 82, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 78, 29, 1, 96, 2, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 31, 1, 116, 11, 255, 48, 31, 1, 68, 1, 255, 48, 15, 67, 1, 255, 49, 31, 0, 134, 2, 255, 48, 15, 2, 0, 255, 255, 255, 255, 255, 22, 14, 102, 6, 14, 18, 0, 15, 2, 0, 232, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 247, 29, 1, 10, 2, 14, 18, 0, 15, 2, 0, 255, 141, 14, 177, 1, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 62, 29, 1, 115, 3, 13, 17, 0, 15, 2, 0, 255, 255, 102, 15, 136, 2, 255, 255, 119, 13, 2, 0, 14, 51, 5, 15, 2, 0, 255, 32, 15, 221, 3, 255, 88, 15, 106, 1, 255, 50, 15, 68, 1, 255, 255, 255, 188, 15, 2, 0, 255, 255, 112, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 92, 31, 1, 101, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 31, 1, 241, 20, 232, 15, 252, 0, 90, 14, 109, 0, 14, 18, 0, 15, 2, 0, 50, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 203, 44, 1, 1, 220, 4, 13, 17, 0, 15, 18, 0, 0, 15, 2, 0, 255, 255, 255, 255, 204, 15, 237, 4, 255, 255, 255, 255, 222, 15, 2, 0, 255, 49, 14, 48, 6, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 130, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[-2,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, -16, -16 ) +position_x = -2 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 219, 29, 1, 235, 4, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=11] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 21, 23, 22, 22, 24, 23, 23, 25, 24, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=12] + +[sub_resource type="GradientTexture" id=13] +gradient = SubResource( 12 ) + +[sub_resource type="ParticlesMaterial" id=14] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 13 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=15] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=16] +material = SubResource( 15 ) + +[node name="Level5" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, -0.91547, 0.534943 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 11 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 14 ) +draw_pass_1 = SubResource( 16 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -18.0323, 2.06599, -2.96928 ) diff --git a/levels/Level6.tscn b/levels/Level6.tscn new file mode 100644 index 0000000..4c18f0c --- /dev/null +++ b/levels/Level6.tscn @@ -0,0 +1,264 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 31, 1, 80, 20, 255, 255, 97, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 128, 29, 1, 148, 0, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 251, 14, 68, 1, 15, 2, 0, 255, 32, 15, 68, 1, 195, 14, 214, 0, 14, 18, 0, 15, 2, 0, 35, 14, 72, 0, 46, 1, 1, 20, 0, 15, 2, 0, 177, 15, 214, 0, 195, 15, 2, 0, 90, 15, 26, 2, 196, 15, 2, 0, 89, 15, 67, 1, 255, 49, 15, 202, 3, 255, 50, 15, 68, 1, 255, 51, 15, 2, 0, 255, 255, 175, 15, 72, 5, 255, 50, 15, 2, 0, 255, 121, 13, 91, 9, 13, 17, 0, 15, 246, 6, 36, 14, 40, 3, 14, 18, 0, 15, 2, 0, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 194, 29, 1, 214, 0, 14, 18, 0, 15, 2, 0, 17, 14, 54, 0, 14, 18, 0, 15, 2, 0, 255, 14, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 31, 1, 103, 10, 255, 48, 31, 1, 68, 1, 255, 50, 15, 135, 2, 255, 48, 15, 68, 1, 255, 51, 15, 2, 0, 255, 255, 255, 255, 255, 129, 13, 90, 9, 14, 108, 9, 13, 35, 0, 15, 2, 0, 18, 14, 54, 0, 14, 18, 0, 15, 2, 0, 255, 14, 14, 50, 1, 11, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 65, 31, 1, 84, 1, 255, 65, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=19] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 161, 44, 1, 1, 182, 0, 13, 17, 0, 15, 2, 0, 255, 104, 14, 139, 1, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 29, 1, 212, 20, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 80, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=8] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 1120403456, -1091222646, 0, 1063303008, 0, 0, 1059679456, 1061153291, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=9] + +[sub_resource type="GradientTexture" id=10] +gradient = SubResource( 9 ) + +[sub_resource type="ParticlesMaterial" id=11] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 10 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=12] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=13] +material = SubResource( 12 ) + +[node name="Level6" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 7 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.995627, 1.18497, 0.0195603 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 8 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 11 ) +draw_pass_1 = SubResource( 13 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6.98108, 4.06104, -14.9795 ) diff --git a/levels/Level7.tscn b/levels/Level7.tscn new file mode 100644 index 0000000..c2e7ed2 --- /dev/null +++ b/levels/Level7.tscn @@ -0,0 +1,248 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=13] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 47, 1, 1, 181, 13, 255, 48, 15, 68, 1, 255, 49, 31, 1, 68, 1, 255, 51, 15, 203, 3, 255, 49, 15, 67, 1, 255, 48, 15, 68, 1, 255, 33, 14, 132, 7, 15, 18, 0, 35, 15, 2, 0, 255, 32, 12, 104, 1, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 64, 31, 1, 83, 1, 255, 64, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 229, 29, 1, 249, 0, 15, 18, 0, 35, 15, 2, 0, 255, 32, 14, 104, 1, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 31, 1, 79, 20, 255, 255, 98, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 38, 31, 1, 58, 0, 34, 14, 54, 0, 29, 2, 72, 0, 14, 18, 0, 14, 54, 0, 15, 2, 0, 179, 14, 216, 0, 15, 18, 0, 89, 15, 2, 0, 179, 14, 50, 1, 15, 2, 0, 255, 32, 15, 68, 1, 255, 255, 137, 14, 154, 2, 15, 18, 0, 17, 15, 2, 0, 255, 32, 14, 86, 1, 15, 2, 0, 255, 255, 255, 255, 237, 29, 1, 15, 5, 13, 17, 0, 15, 18, 0, 0, 15, 2, 0, 35, 14, 72, 0, 12, 18, 0, 30, 1, 143, 0, 15, 2, 0, 255, 31, 15, 67, 1, 255, 49, 15, 68, 1, 255, 52, 15, 186, 3, 255, 31, 15, 2, 0, 255, 255, 255, 255, 18, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 29, 1, 40, 18, 15, 18, 0, 35, 15, 2, 0, 179, 14, 252, 0, 15, 2, 0, 17, 14, 54, 0, 29, 2, 55, 0, 14, 18, 0, 14, 54, 0, 15, 2, 0, 179, 15, 216, 0, 35, 14, 54, 0, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 179, 14, 216, 0, 15, 18, 0, 89, 15, 2, 0, 116, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=7] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 1120141312, 0, 1119617024, 649100670, 1120141312, 0, 1119617024, -1065353216, 1119617024, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=8] + +[sub_resource type="GradientTexture" id=9] +gradient = SubResource( 8 ) + +[sub_resource type="ParticlesMaterial" id=10] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 9 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=11] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=12] +material = SubResource( 11 ) + +[node name="Level7" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.41305, 0.165382, 0 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 7 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 10 ) +draw_pass_1 = SubResource( 12 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96747, 4.02385, -16.9428 ) diff --git a/levels/Level8.tscn b/levels/Level8.tscn new file mode 100644 index 0000000..73604f4 --- /dev/null +++ b/levels/Level8.tscn @@ -0,0 +1,264 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 29, 1, 85, 10, 15, 18, 0, 53, 15, 2, 0, 35, 15, 126, 0, 17, 15, 2, 0, 125, 14, 180, 0, 15, 2, 0, 255, 255, 11, 15, 46, 2, 255, 49, 31, 1, 68, 1, 255, 50, 15, 164, 4, 255, 49, 15, 135, 2, 255, 49, 15, 136, 2, 255, 255, 138, 15, 222, 3, 255, 32, 14, 50, 1, 11, 18, 0, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 64, 29, 1, 82, 2, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 11, 29, 1, 30, 1, 14, 18, 0, 15, 2, 0, 255, 14, 14, 50, 1, 14, 18, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 65, 31, 1, 84, 1, 255, 65, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 31, 1, 80, 20, 255, 255, 97, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 29, 1, 69, 10, 15, 18, 0, 53, 15, 2, 0, 35, 15, 126, 0, 17, 15, 2, 0, 36, 30, 1, 92, 0, 15, 2, 0, 51, 15, 89, 0, 70, 15, 2, 0, 127, 15, 235, 0, 71, 15, 157, 1, 69, 15, 2, 0, 126, 15, 67, 1, 71, 15, 2, 0, 214, 15, 67, 1, 255, 49, 15, 112, 3, 215, 15, 2, 0, 72, 15, 68, 1, 37, 14, 56, 0, 15, 18, 0, 17, 15, 2, 0, 195, 14, 250, 0, 15, 2, 0, 19, 14, 56, 0, 14, 18, 0, 15, 2, 0, 213, 15, 250, 0, 231, 15, 2, 0, 55, 14, 68, 1, 14, 18, 0, 15, 2, 0, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 29, 1, 248, 15, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 18, 0, 35, 15, 2, 0, 179, 15, 252, 0, 35, 14, 54, 0, 14, 2, 0, 14, 36, 0, 14, 18, 0, 15, 2, 0, 255, 255, 112, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=18] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=9] + +[sub_resource type="GradientTexture" id=10] +gradient = SubResource( 9 ) + +[sub_resource type="ParticlesMaterial" id=11] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 10 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=12] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=13] +material = SubResource( 12 ) + +[node name="Level8" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.758311, 0 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 18 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 11 ) +draw_pass_1 = SubResource( 13 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9552, 2.02718, -3.01009 ) diff --git a/levels/Level9.tscn b/levels/Level9.tscn new file mode 100644 index 0000000..18b0c5a --- /dev/null +++ b/levels/Level9.tscn @@ -0,0 +1,280 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 31, 1, 79, 20, 255, 255, 98, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 193, 31, 1, 213, 0, 52, 14, 72, 0, 14, 18, 0, 15, 2, 0, 197, 15, 234, 0, 35, 14, 54, 0, 15, 18, 0, 17, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 31, 1, 6, 16, 255, 49, 14, 68, 1, 31, 1, 19, 0, 0, 15, 105, 1, 255, 12, 14, 49, 1, 15, 2, 0, 255, 31, 15, 117, 2, 0, 15, 2, 0, 255, 31, 15, 135, 2, 53, 14, 72, 0, 14, 18, 0, 15, 2, 0, 197, 15, 234, 0, 35, 14, 54, 0, 15, 18, 0, 15, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 64, 31, 1, 83, 1, 255, 64, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 186, 31, 1, 202, 4, 255, 49, 15, 68, 1, 255, 68, 14, 86, 1, 15, 18, 0, 17, 15, 2, 0, 233, 14, 32, 1, 15, 2, 0, 255, 255, 255, 255, 255, 255, 53, 15, 84, 6, 249, 15, 12, 1, 37, 15, 56, 0, 37, 15, 2, 0, 193, 14, 12, 1, 45, 1, 1, 20, 0, 14, 18, 0, 29, 0, 36, 0, 15, 2, 0, 232, 15, 12, 1, 249, 15, 2, 0, 37, 15, 68, 1, 255, 50, 15, 2, 0, 255, 171, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 72, 29, 1, 86, 6, 15, 18, 0, 0, 13, 19, 0, 14, 18, 0, 15, 37, 0, 0, 31, 0, 37, 0, 0, 13, 110, 0, 15, 2, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 29, 1, 55, 15, 14, 18, 0, 15, 2, 0, 255, 14, 29, 2, 33, 1, 13, 68, 1, 28, 1, 18, 0, 28, 1, 18, 0, 12, 16, 0, 15, 2, 0, 220, 15, 68, 1, 16, 15, 2, 0, 15, 12, 101, 1, 15, 2, 0, 220, 14, 255, 0, 14, 18, 0, 15, 2, 0, 14, 15, 51, 0, 32, 15, 2, 0, 255, 255, 255, 56, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( 31, 0, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 29, 1, 51, 16, 15, 18, 0, 35, 15, 2, 0, 233, 14, 50, 1, 29, 2, 15, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 14, 50, 1, 14, 18, 0, 14, 54, 0, 15, 2, 0, 233, 14, 14, 1, 15, 18, 0, 35, 15, 2, 0, 255, 255, 107, 80, 0, 0, 0, 0, 0 ) + +[sub_resource type="GIProbeData" id=19] +bounds = AABB( -16.5585, -7.39551, -12.7828, 33.117, 14.791, 25.5656 ) +cell_size = 0.258727 +to_cell_xform = Transform( 3.86508, 0, 0, 0, 3.86508, 0, 0, 0, 3.86508, 64, 28.5843, 49.4066 ) +dynamic_data = PoolIntArray( 0, 8, 128, 64, 128, 1, 0, 1120403456, -1091222646, 0, 1063303008, 0, 0, 1059679456, 1061153291, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 8355711, 0 ) +dynamic_range = 8 +bias = 1.5 +normal_bias = 0.0 +propagation = 0.7 +interior = true + +[sub_resource type="Gradient" id=10] + +[sub_resource type="GradientTexture" id=11] +gradient = SubResource( 10 ) + +[sub_resource type="ParticlesMaterial" id=12] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 11 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=13] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=14] +material = SubResource( 13 ) + +[node name="Level9" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ) ] +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.290306, 0.122863 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true +data = SubResource( 19 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 12 ) +draw_pass_1 = SubResource( 14 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.922967, 6.98507, -18.9305 ) diff --git a/levels/LevelKit.tscn b/levels/LevelKit.tscn new file mode 100644 index 0000000..4b20f53 --- /dev/null +++ b/levels/LevelKit.tscn @@ -0,0 +1,133 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://environments/red_env.tres" type="Environment" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelmanLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] +[ext_resource path="res://particles/flake.png" type="Texture" id=6] + +[sub_resource type="Gradient" id=1] + +[sub_resource type="GradientTexture" id=2] +gradient = SubResource( 1 ) + +[sub_resource type="ParticlesMaterial" id=3] +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale = 0.4 +color_ramp = SubResource( 2 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 + +[sub_resource type="SpatialMaterial" id=4] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 6 ) + +[sub_resource type="QuadMesh" id=5] +material = SubResource( 4 ) + +[node name="LevelKit" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource( 3 ) + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.165382, 0 ) + +[node name="GIProbe" type="GIProbe" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53486, 2.91956, -10.1021 ) +extents = Vector3( 16.5585, 7.39551, 12.7828 ) +dynamic_range = 8 +interior = true + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" type="Particles" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1743, 5.65334, -9.91923 ) +amount = 50 +lifetime = 8.41 +speed_scale = 4.44 +randomness = 0.38 +visibility_aabb = AABB( -61.9632, -36.4177, -64.4469, 123.926, 72.8355, 128.894 ) +process_material = SubResource( 3 ) +draw_pass_1 = SubResource( 5 ) + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) diff --git a/levels/Roboto-Black.ttf b/levels/Roboto-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2d452383651a6ef279743a9926b90234b8b79366 GIT binary patch literal 171072 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� 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 literal 0 HcmV?d00001 diff --git a/levels/title_font.tres b/levels/title_font.tres new file mode 100644 index 0000000..bf0c970 --- /dev/null +++ b/levels/title_font.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://levels/Roboto-Black.ttf" type="DynamicFontData" id=1] + +[resource] +size = 50 +font_data = ExtResource( 1 ) diff --git a/levels/title_subtext_font.tres b/levels/title_subtext_font.tres new file mode 100644 index 0000000..5fb9704 --- /dev/null +++ b/levels/title_subtext_font.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://levels/Roboto-Black.ttf" type="DynamicFontData" id=1] + +[resource] +size = 20 +font_data = ExtResource( 1 ) diff --git a/library/MainLibrary.tres b/library/MainLibrary.tres new file mode 100644 index 0000000..30dfe5f --- /dev/null +++ b/library/MainLibrary.tres @@ -0,0 +1,38 @@ +[gd_resource type="VoxelmanLibrarySimple" load_steps=7 format=2] + +[ext_resource path="res://library/liquid_material.tres" type="Material" id=1] +[ext_resource path="res://library/surface_material.tres" type="Material" id=2] + +[sub_resource type="VoxelSurfaceSimple" id=1] +resource_name = "A" +voxel_name = "A" + +[sub_resource type="VoxelSurfaceSimple" id=2] +resource_name = "B" +id = 1 +voxel_name = "B" +top_atlas_x = 1 +bottom_atlas_x = 1 +side_atlas_x = 1 + +[sub_resource type="VoxelSurfaceSimple" id=3] +resource_name = "Ladder" +voxel_name = "Ladder" +top_atlas_x = 2 +bottom_atlas_x = 2 +side_atlas_x = 2 + +[sub_resource type="VoxelSurfaceSimple" id=4] +resource_name = "Water" +voxel_name = "Water" +liquid = true +top_atlas_x = 3 +bottom_atlas_x = 3 +side_atlas_x = 3 + +[resource] +materials = [ ExtResource( 2 ), ExtResource( 2 ), ExtResource( 2 ), ExtResource( 2 ) ] +liquid_materials = [ ExtResource( 1 ), ExtResource( 1 ), ExtResource( 1 ), ExtResource( 1 ) ] +atlas_columns = 4 +atlas_rows = 4 +voxel_surfaces = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ) ] diff --git a/library/liquid_material.tres b/library/liquid_material.tres new file mode 100644 index 0000000..ff9e644 --- /dev/null +++ b/library/liquid_material.tres @@ -0,0 +1,6 @@ +[gd_resource type="SpatialMaterial" load_steps=2 format=2] + +[ext_resource path="res://icon.png" type="Texture" id=1] + +[resource] +albedo_texture = ExtResource( 1 ) diff --git a/library/main_atlas.png b/library/main_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e4ca55f0b90dfb585171c4400ddcd4ddda8207 GIT binary patch literal 2654 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 A4FCWD literal 0 HcmV?d00001 diff --git a/library/main_atlas.png.import b/library/main_atlas.png.import new file mode 100644 index 0000000..016e74e --- /dev/null +++ b/library/main_atlas.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/main_atlas.png-b5c8475f969ccbf3571485ba0e461048.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/main_atlas.png" +dest_files=[ "res://.import/main_atlas.png-b5c8475f969ccbf3571485ba0e461048.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/library/main_atlas.pxo b/library/main_atlas.pxo new file mode 100644 index 0000000000000000000000000000000000000000..903fe4e91e711554814832c47be60d5a670c4796 GIT binary patch literal 363 zcmZ>F4sc^)00IF9hSd%X4AX#2Q6!uPWNU2I|C_+TpUT2u!cu0SXU?U^<&#*MTBKmW z#mK<G0aPK(;OgfR@9yL8<meOc;~4206wIZo%jLk}z@W=@=*;#1S0297F*5$caR1q- zuTl&hjm}(sN+0rAraf!D$Dr7{nq!C4gQ^b)jUTo?;0@r9-h1Hgng3M`+9?wl!Z-vN z*b*H1zCFkfTi|H5W%AEcOqbr-7#OfYT@}l~pzt4PFeAgy`{gdA2`a4CWoBSu1!-qs zXs`$Q0qS`7P)`?Ew;)Gf*I+IYpa=PYc;f~GyOSq8?9QI?u>&dp`=`bpD9rHSe!M*+ nqf=05ut$7|qkAwHJA==LxTeH}%hsLDi+8ew&e!912L>|$F{yXX literal 0 HcmV?d00001 diff --git a/library/main_emission.png b/library/main_emission.png new file mode 100644 index 0000000000000000000000000000000000000000..7a04597f7b6f77f50717dabf03bb3b07a112d672 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zuY0;UhE&XX zJ7cfkVFQs?|A|gg6T4Koor5+$lZ`m!Bz~{0{N?PF<cG3WB`U%zqLl@MIt^|X%@R_n zTAh65w`Z8_b+5kt$LwFRIJ6r-dn976+bqHm&~kFY+PqJ}HlNOSaB3W4Nu98WCrGDk zYOXo6`H{<450<Ij-MEzJ(z?8&X#GP+t}&LBPA)H<d^`KH+Q*zmrQ*d(K2=IREDU#z z=6z?`sbr&J)NDTgo&N2#!1v<j_jkU1qqK?5raq5>!9QNG;o+aW%_pwa&idW(L2tv2 z(2AM4^>2%R{$gCP-+P0=eYW@cW)W|+wnVm+)&5T2ujKPa`mkG$ooHgx^=7kfw%3ij z9e!=%?%2zimN)zBfu(1ae&3pH*MI$eP`@3QA!GUNnQM1<-?K|zB+<cP&|LKV%i-Hs z7sT7d-V9#E&%MAg<=y-FUl_iu`|jV~V7}b(=F#^T9`JWY94r2I;3-Q_=f{MG#i>a; zbF|fe+CQ*g$aI78#tMcq1~aV&*@j-O1oni*G!r^&&ey1`FxBgvD=@wpJYD@<);T3K F0RWZk<%<9S literal 0 HcmV?d00001 diff --git a/library/main_emission.png.import b/library/main_emission.png.import new file mode 100644 index 0000000..ba74cfd --- /dev/null +++ b/library/main_emission.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/main_emission.png-bed3b454d6b789e788e1a92ce7e197d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/main_emission.png" +dest_files=[ "res://.import/main_emission.png-bed3b454d6b789e788e1a92ce7e197d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/library/main_emission.pxo b/library/main_emission.pxo new file mode 100644 index 0000000000000000000000000000000000000000..82850bdb5ad3909d7d3c284b1a57bfe2923912a3 GIT binary patch literal 490 zcmZ>F4sc^)00IF9hSd%X3=)hC45C0T3}*w`8e8@MCNS`qaxkQ@lo{xmbLnyUBvz&t zDHw18RdWDU2s60)xx~Bs_&YiJ#QQi#x&{Sv>FRPhFgP&iaslQ4Z)cTtVi)=HLu&?) z{4Y7qk`)J+f3s&;z$D1D;}L_<17!}zjY6{y3Hf<^{NE{`P?Nvy6;Ij1xC{Fuo%i|+ za9d8?bN2M&zrE!%zN9)7=gt3{)BOFD@>E9q|Jpy(*ynF+suj`G`ON-i_J(g$pTFj6 znt1>Jto4>JXDZ%ukbIXYpKTo^`QY^<i#Dx)Rt+=O9kklC!F!r@;ex3(Q|GN^e`bFB z&fXWCUU$wiZ(3V^`i}5}KXOGst8V?>p1(W)Fy}J0PkT$Qo6h-Mt+uyYW|Pb+?X`>Z zeogaV{D%=5F0l*@3jcwgWMuexzubj1L50<#%nVmpK-wGZL173DJoivf7gx6+M_<=q zE)k$49}w@@Zf?JD!2+9?FJ9P!l()9D*gbskzy>JB$mkRl8tf4t;^-dC#m?ZfA+9O$ U!XNAT%qw<A%%9)K;SP*t0I)N-bpQYW literal 0 HcmV?d00001 diff --git a/library/surface_material.tres b/library/surface_material.tres new file mode 100644 index 0000000..0af99d4 --- /dev/null +++ b/library/surface_material.tres @@ -0,0 +1,13 @@ +[gd_resource type="SpatialMaterial" load_steps=3 format=2] + +[ext_resource path="res://library/main_atlas.png" type="Texture" id=1] +[ext_resource path="res://library/main_emission.png" type="Texture" id=2] + +[resource] +albedo_texture = ExtResource( 1 ) +emission_enabled = true +emission = Color( 0, 0, 0, 1 ) +emission_energy = 2.92 +emission_operator = 0 +emission_on_uv2 = false +emission_texture = ExtResource( 2 ) diff --git a/particles/flake.png b/particles/flake.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1584aabdab21d0066d81415dff1cb8ebd19100 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2{=7>k44ofy`glX(f`7<#%mhH%W( zJ?Y5HpultBfVZ1K2an7GhMCn$49qqW^|^=B7b-`eT%-6(hUbn$*q$5w+j`j^{EOT8 Q8mO7U)78&qol`;+0Im5WApigX literal 0 HcmV?d00001 diff --git a/particles/flake.png.import b/particles/flake.png.import new file mode 100644 index 0000000..84455c1 --- /dev/null +++ b/particles/flake.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flake.png-e35d9e06b95683c10cf763d53898bb0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://particles/flake.png" +dest_files=[ "res://.import/flake.png-e35d9e06b95683c10cf763d53898bb0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/particles/flake.pxo b/particles/flake.pxo new file mode 100644 index 0000000000000000000000000000000000000000..c7b7ae6fa28c1373b16ecd7700d20d5e63118ce5 GIT binary patch literal 174 zcmV;f08#%(Lr_Kn000005C8z{0001%0000ewJ-f3>um%8g2oslkf{*>Gvbdi#;97# z*(+HZm!wL@YG&K&LGPYwrenw7ye1zi-!i5_I<ck1Aclw}1Ac)@m)KZv&B1vL`j6V= z_CM=dt#mDw(KQxMxNQO7Y!vRmuY6Kw0C_wPsEZO7CK3?<Ot4;pg?Ak9+z6cf0M%t< civ(h@3Je2TK)##CFTsLQ0K+kWF-JpCMt<-|ivR!s literal 0 HcmV?d00001 diff --git a/player/Exit.gd b/player/Exit.gd new file mode 100644 index 0000000..9106104 --- /dev/null +++ b/player/Exit.gd @@ -0,0 +1,4 @@ +extends Button + +func _pressed(): + get_tree().quit() diff --git a/player/Menu.gd b/player/Menu.gd new file mode 100644 index 0000000..956d0c4 --- /dev/null +++ b/player/Menu.gd @@ -0,0 +1,8 @@ +extends CenterContainer + +func _ready(): + $Main/VBoxContainer/Resume.connect("pressed", self, "on_pressed") + +func on_pressed(): + hide() + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) diff --git a/player/Player.gd b/player/Player.gd new file mode 100644 index 0000000..d8e9646 --- /dev/null +++ b/player/Player.gd @@ -0,0 +1,210 @@ +extends KinematicBody + +var camera_angle : float = 0 +var mouse_sensitivity : float = 0.3 +var camera_change : Vector2 + +var velocity : Vector3 +var direction : Vector3 + +#flying +const FLY_SPEED = 10 +const FLY_ACCEL = 8 +var flying : bool = false + +#waling +var gravity : float = -9.8 * 4 +const MAX_SPEED = 10 +const MAX_RUNNING_SPEED = 16 +const ACCEL = 14 +const DEACCEL = 14 + +#jumping +var jump_height = 12 +var has_contact : bool = false +var double_jumped : bool = false + +var jump_height_modifier : float = 1 +var gravity_modifier : float = 1 +var walk_speed_modifier : float = 1 +var run_speed_modifier : float = 1 +var accel_modifier : float = 1 + +#audio player +const WALK_STEP_TIME = 0.5 +const MIN_SOUND_TIME_LIMIT = 0.3 + +var foot_audio : AudioStreamPlayer3D +var step_timer : float = 0 +var foot : bool = false +var last_sound_timer : float = 0 + +func _ready(): + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + + foot_audio = $foot as AudioStreamPlayer3D + +func _process(delta): + if Input.is_action_just_pressed("ui_cancel"): + if not $Menu.visible: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + $Menu.show() + else: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + $Menu.hide() + + if Input.is_action_just_pressed("restart"): + if get_node("../../").has_method("reload"): + get_node("../../").reload() + +func _physics_process(delta): + aim() + + last_sound_timer += delta + + if flying: + fly(delta) + else: + walk(delta) + +func fly(delta): + direction = Vector3() + + var aim : Basis = $Head/Camera.global_transform.basis + + if Input.is_action_pressed("move_forward"): + direction -= aim.z + + if Input.is_action_pressed("move_backward"): + direction += aim.z + + if Input.is_action_pressed("move_left"): + direction -= aim.x + + if Input.is_action_pressed("move_right"): + direction += aim.x + + if Input.is_action_pressed("move_jump"): + direction.y += 1 + + direction = direction.normalized() + + var target : Vector3 = direction * FLY_SPEED * run_speed_modifier + velocity = velocity.linear_interpolate(target, FLY_ACCEL * delta) + + move_and_slide(velocity) + +func walk(delta): + direction = Vector3() + + var aim : Basis = $Head/Camera.global_transform.basis + + if Input.is_action_pressed("move_forward"): + direction -= aim.z + + if Input.is_action_pressed("move_backward"): + direction += aim.z + + if Input.is_action_pressed("move_left"): + direction -= aim.x + + if Input.is_action_pressed("move_right"): + direction += aim.x + + direction = direction.normalized() + + if is_on_floor(): + has_contact = true + else: + if !$Contact.is_colliding(): + has_contact = false + + if has_contact and !is_on_floor(): + move_and_collide(Vector3(0, -1, 0)) + + velocity.y += gravity * delta * gravity_modifier + + var temp_velocity : Vector3 = velocity + temp_velocity.y = 0 + + var speed : float + var accel_multiplier : float = 1 + if Input.is_action_pressed("move_sprint"): + accel_multiplier = 1.2 + speed = MAX_RUNNING_SPEED * run_speed_modifier + else: + speed = MAX_SPEED * walk_speed_modifier + + var accel : float + if direction.dot(temp_velocity) > 0: + accel = ACCEL * accel_multiplier + else: + accel = DEACCEL * accel_multiplier + + var target : Vector3 = direction * speed + temp_velocity = temp_velocity.linear_interpolate(target, ACCEL * delta) + + velocity.x = temp_velocity.x + velocity.z = temp_velocity.z + + if not has_contact and not double_jumped and Input.is_action_just_pressed("move_jump"): + double_jumped = true + velocity.y = jump_height * jump_height_modifier + + if has_contact and Input.is_action_just_pressed("move_jump"): + velocity.y = jump_height * jump_height_modifier + has_contact = false + double_jumped = false + + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + step_timer = 0 + + velocity = move_and_slide(velocity, Vector3(0, 1, 0), true) + + if not has_contact and is_on_floor(): + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + step_timer = 0 + + var v : Vector3 = velocity + v.y = 0 + if has_contact and v.length() > 1: + step_timer += delta + + if step_timer >= WALK_STEP_TIME: + step_timer = 0 + + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + +func _unhandled_input(event): + if event is InputEventMouseMotion: + camera_change = event.relative + +func aim(): + if camera_change.length() > 0: + $Head.rotate_y(deg2rad(-camera_change.x * mouse_sensitivity)) + + var change : float = -camera_change.y * mouse_sensitivity + + if camera_angle + change > -90 and camera_angle + change < 90: + $Head/Camera.rotate_x(deg2rad(change)) + camera_angle += change + + camera_change = Vector2() + +func ladder_area_entered(ladder): + flying = true + +func ladder_area_exited(ladder): + flying = false + +func is_player(): + return true diff --git a/player/Player.tscn b/player/Player.tscn new file mode 100644 index 0000000..692de35 --- /dev/null +++ b/player/Player.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://player/Player.gd" type="Script" id=1] +[ext_resource path="res://sounds/edited/stepdirt_1.wav" type="AudioStream" id=2] +[ext_resource path="res://player/VolumeControl.tscn" type="PackedScene" id=3] +[ext_resource path="res://player/Menu.gd" type="Script" id=4] +[ext_resource path="res://player/Exit.gd" type="Script" id=5] +[ext_resource path="res://player/ui_theme.tres" type="Theme" id=6] + +[sub_resource type="CapsuleShape" id=1] +radius = 0.5 +height = 1.6 + +[node name="Player" type="KinematicBody"] +script = ExtResource( 1 ) + +[node name="Capsule" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 1.30561, 0 ) +shape = SubResource( 1 ) + +[node name="Head" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25899, 0 ) + +[node name="Camera" type="Camera" parent="Head"] +current = true + +[node name="Contact" type="RayCast" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.209, 0 ) +enabled = true +cast_to = Vector3( 0, -0.4, 0 ) + +[node name="foot" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource( 2 ) +bus = "Footsteps" + +[node name="Menu" type="CenterContainer" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 6 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Main" type="PanelContainer" parent="Menu"] +margin_left = 508.0 +margin_top = 296.0 +margin_right = 515.401 +margin_bottom = 303.085 + +[node name="VBoxContainer" type="VBoxContainer" parent="Menu/Main"] +margin_left = 7.0 +margin_top = 7.0 +margin_right = 160.0 +margin_bottom = 89.0 +custom_constants/separation = 13 + +[node name="Resume" type="Button" parent="Menu/Main/VBoxContainer"] +margin_right = 153.0 +margin_bottom = 20.0 +text = "Resume" + +[node name="VolumeControl" parent="Menu/Main/VBoxContainer" instance=ExtResource( 3 )] + +[node name="Exit" type="Button" parent="Menu/Main/VBoxContainer"] +margin_top = 62.0 +margin_right = 153.0 +margin_bottom = 82.0 +text = "Exit" +script = ExtResource( 5 ) diff --git a/player/Volume.gd b/player/Volume.gd new file mode 100644 index 0000000..5c8abf9 --- /dev/null +++ b/player/Volume.gd @@ -0,0 +1,8 @@ +extends HSlider + +func _ready(): + connect("value_changed", self, "on_value_changed") + +func on_value_changed(value): + AudioServer.set_bus_volume_db(0, value) + diff --git a/player/VolumeControl.tscn b/player/VolumeControl.tscn new file mode 100644 index 0000000..99575b3 --- /dev/null +++ b/player/VolumeControl.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://player/Volume.gd" type="Script" id=1] + +[node name="VolumeControl" type="HBoxContainer"] +margin_top = 33.0 +margin_right = 153.0 +margin_bottom = 49.0 + +[node name="Label" type="Label" parent="."] +margin_top = 1.0 +margin_right = 49.0 +margin_bottom = 15.0 +text = "Volume" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Volume" type="HSlider" parent="."] +margin_left = 53.0 +margin_right = 153.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 100, 0 ) +min_value = -80.0 +max_value = 0.0 +script = ExtResource( 1 ) diff --git a/player/button.png b/player/button.png new file mode 100644 index 0000000000000000000000000000000000000000..be3b35b38fc46b9ffe1904effe06d9db05e8f023 GIT binary patch literal 630 zcmV-+0*U>JP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKp2MKrk09S1nnRqlA-EiK~%(1t5Adrp;l<s!Q|3EXws0h zxHt-~1qXi?s}3&Cx;nTDg5VE`lcSTOi<J0XQfLw59mhSq_q{K7-vL6s#5Aj89MJTN znT*H8bY@iyz9N8Lnxhz!nPtpLQUadi>mEM7-$i+rcio?(Tg_Sw@QK8;%rGm&8^qI_ z6@&9WahMfkmH3=^%%lqvKXP4h`HgelVS#6c%~W!pI7}?&+gNF1RxmZ<DdLE#>69;| zT~;}7an?#z*1RWwVJNGwEOVXKAmUiW5+sOFP(=|XR1l?IC&faN&SM__0mm<qOCeVg zj2sInLxb%2!T;cQZ>`+qgqswK0f86W{ul;=yFjC6+uz5w-8cdK&%l-5@|Wwt%qQu! zmKHezdbWX!>z1bM0hc>K|C1q`vLpFv3Ar5ben#Jv0s3x%t~IxB&2yYS04eHK;s!W4 z1V-|dz3%bu&i20jThr{{4}AY}t3@QpumAu624YJ`L;xcIjQ|38!3R_T000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jm435-I=#I9O%?000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0000@Nkl<ZILl*XfP%Ga*QPR10D^;qXEQJ`FfdZXFl0j+ zsbv@pupo1+t*yy2<ml0(a5fVImBFZiqXv!|I6Mqw!BuLI3#ebfQo9NO0Ln`j;~iBc QaR2}S07*qoM6N<$f(5Ar*#H0l literal 0 HcmV?d00001 diff --git a/player/button.png.import b/player/button.png.import new file mode 100644 index 0000000..eaa20aa --- /dev/null +++ b/player/button.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button.png-53465f78fd94fd9aec24f3f23eb81fdf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/button.png" +dest_files=[ "res://.import/button.png-53465f78fd94fd9aec24f3f23eb81fdf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/player/panel.png b/player/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4b3547c9008d8e695d6fada6ba2cdb889c17db GIT binary patch literal 630 zcmV-+0*U>JP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKp2MKrk09S1nnRqlA-EiK~%(1t5Adrp;l<s!Q|3EXws0h zxHt-~1qXi?s}3&Cx;nTDg5VE`lcSTOi<J0XQfLw59mhSq_q{K7-vL6s#5Aj89MJTN znT*H8bY@iyz9N8Lnxhz!nPtpLQUadi>mEM7-$i+rcio?(Tg_Sw@QK8;%rGm&8^qI_ z6@&9WahMfkmH3=^%%lqvKXP4h`HgelVS#6c%~W!pI7}?&+gNF1RxmZ<DdLE#>69;| zT~;}7an?#z*1RWwVJNGwEOVXKAmUiW5+sOFP(=|XR1l?IC&faN&SM__0mm<qOCeVg zj2sInLxb%2!T;cQZ>`+qgqswK0f86W{ul;=yFjC6+uz5w-8cdK&%l-5@|Wwt%qQu! zmKHezdbWX!>z1bM0hc>K|C1q`vLpFv3Ar5ben#Jv0s3x%t~IxB&2yYS04eHK;s!W4 z1V-|dz3%bu&i20jThr{{4}AY}t3@QpumAu624YJ`L;xcIjQ|38!3R_T000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jm435-&QqLv@h=000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0000@Nkl<ZILl*XfP%Ga*Dhh800ajI$1pH3FfdZXFl0j+ zsbv@pupo1+t*yy2<ml0(a5fVImBFZiqXv!|I6Mqw!BuLI3#ebfQo9NO0COuCA{B!| Q%m4rY07*qoM6N<$f>#m*bpQYW literal 0 HcmV?d00001 diff --git a/player/panel.png.import b/player/panel.png.import new file mode 100644 index 0000000..b71d777 --- /dev/null +++ b/player/panel.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/panel.png-e188ef6e7ca785861bf20b8a2e99961c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/panel.png" +dest_files=[ "res://.import/panel.png-e188ef6e7ca785861bf20b8a2e99961c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/player/ui_theme.tres b/player/ui_theme.tres new file mode 100644 index 0000000..5ad62d5 --- /dev/null +++ b/player/ui_theme.tres @@ -0,0 +1,62 @@ +[gd_resource type="Theme" load_steps=8 format=2] + +[ext_resource path="res://player/button.png" type="Texture" id=1] +[ext_resource path="res://player/panel.png" type="Texture" id=2] + +[sub_resource type="StyleBoxTexture" id=1] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 4.12948 +margin_right = 4.27187 +margin_top = 4.55666 +margin_bottom = 3.84469 + +[sub_resource type="StyleBoxTexture" id=2] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.59834 +margin_right = 3.98388 +margin_top = 3.59834 +margin_bottom = 3.72685 +modulate_color = Color( 0.752941, 0.752941, 0.752941, 1 ) + +[sub_resource type="StyleBoxTexture" id=3] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 4.36941 +margin_right = 4.2409 +margin_top = 4.49793 +margin_bottom = 4.62644 + +[sub_resource type="StyleBoxTexture" id=4] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.78773 +margin_right = 3.923 +margin_top = 3.78773 +margin_bottom = 3.78773 +modulate_color = Color( 0.505882, 0.505882, 0.505882, 1 ) + +[sub_resource type="StyleBoxTexture" id=5] +texture = ExtResource( 2 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.74726 +margin_right = 3.65383 +margin_top = 3.59737 +margin_bottom = 3.48775 +modulate_color = Color( 0.184314, 0.184314, 0.184314, 1 ) + +[resource] +Button/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = null +Button/styles/disabled = null +Button/styles/focus = SubResource( 1 ) +Button/styles/hover = SubResource( 2 ) +Button/styles/normal = SubResource( 3 ) +Button/styles/pressed = SubResource( 4 ) +Panel/styles/panel = SubResource( 5 ) +PanelContainer/styles/panel = SubResource( 5 ) diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..4c855d7 --- /dev/null +++ b/project.godot @@ -0,0 +1,66 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ ] +_global_script_class_icons={ + +} + +[application] + +config/name="The Tower" +run/main_scene="res://scenes/Main.tscn" +config/icon="res://icon.png" + +[display] + +window/size/fullscreen=true + +[input] + +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) + ] +} +move_forward={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) + ] +} +move_backward={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) + ] +} +move_sprint={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null) + ] +} +move_jump={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) + ] +} +restart={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"unicode":0,"echo":false,"script":null) + ] +} + +[rendering] + +environment/default_environment="res://default_env.tres" diff --git a/scenes/Main.gd b/scenes/Main.gd new file mode 100644 index 0000000..53c77b5 --- /dev/null +++ b/scenes/Main.gd @@ -0,0 +1,34 @@ +extends Node + +export(Array, PackedScene) var levels + +var current_level_index : int = 0 + +var level : Node = null + +func _enter_tree(): + level = levels[current_level_index].instance() + add_child(level) + +func next_level(): + call_deferred("next") + +func next(): + level.queue_free() + remove_child(level) + current_level_index += 1 + + if current_level_index >= levels.size(): + current_level_index = 0 + + level = levels[current_level_index].instance() + add_child(level) + +func reload(): + call_deferred("reload_deferred") + +func reload_deferred(): + level.queue_free() + remove_child(level) + level = levels[current_level_index].instance() + add_child(level) diff --git a/scenes/Main.tscn b/scenes/Main.tscn new file mode 100644 index 0000000..40f1275 --- /dev/null +++ b/scenes/Main.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://scenes/Main.gd" type="Script" id=1] +[ext_resource path="res://levels/Level2.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/Level1.tscn" type="PackedScene" id=3] +[ext_resource path="res://levels/Level0.tscn" type="PackedScene" id=4] +[ext_resource path="res://levels/Level3.tscn" type="PackedScene" id=5] +[ext_resource path="res://levels/Level4.tscn" type="PackedScene" id=6] +[ext_resource path="res://levels/Level5.tscn" type="PackedScene" id=7] +[ext_resource path="res://levels/Level6.tscn" type="PackedScene" id=8] +[ext_resource path="res://levels/Level7.tscn" type="PackedScene" id=9] +[ext_resource path="res://levels/Level9.tscn" type="PackedScene" id=10] +[ext_resource path="res://levels/Level8.tscn" type="PackedScene" id=11] +[ext_resource path="res://levels/Level10.tscn" type="PackedScene" id=12] + +[node name="Main" type="Node"] +script = ExtResource( 1 ) +levels = [ ExtResource( 4 ), ExtResource( 3 ), ExtResource( 2 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 11 ), ExtResource( 10 ), ExtResource( 12 ) ] diff --git a/scripts/Ladder.gd b/scripts/Ladder.gd new file mode 100644 index 0000000..de0dfb5 --- /dev/null +++ b/scripts/Ladder.gd @@ -0,0 +1,15 @@ +extends Area + + +func _ready(): + connect("body_entered", self, "on_body_entered") + connect("body_exited", self, "on_body_exited") + +func on_body_entered(body): + if body.has_method("ladder_area_entered"): + body.ladder_area_entered(self) + + +func on_body_exited(body): + if body.has_method("ladder_area_exited"): + body.ladder_area_exited(self) diff --git a/scripts/exit_portal.gd b/scripts/exit_portal.gd new file mode 100644 index 0000000..2f7c6c8 --- /dev/null +++ b/scripts/exit_portal.gd @@ -0,0 +1,16 @@ +extends Area + + +func _ready(): + connect("body_entered", self, "on_body_entered") + +func on_body_entered(body): + if body.has_method("is_player"): + if body.is_player(): + var parent : Node = get_parent() + while parent != null: + if parent.has_method("next_level"): + parent.next_level() + return + parent = parent.get_parent() + diff --git a/sounds/edited/README.txt b/sounds/edited/README.txt new file mode 100644 index 0000000..699453c --- /dev/null +++ b/sounds/edited/README.txt @@ -0,0 +1,32 @@ +Author: +Jute +(Submitted by qubodup) +Thursday, February 11, 2010 - 02:27 +Art Type: +Sound Effect +Tags: +snow +step +walk +walking +movement +dirt +Wood +water +wet +footstep +foot +run +Action +RPG +Fantasy +Other +License(s): +GPL 3.0 +GPL 2.0 + + +These sounds were made by Jute for DungeonHack. They are based on sounds from pdsounds.org. + + +https://opengameart.org/content/foot-walking-step-sounds-on-stone-water-snow-wood-and-dirt diff --git a/sounds/edited/stepdirt_1.wav b/sounds/edited/stepdirt_1.wav new file mode 100644 index 0000000000000000000000000000000000000000..af0c999cf903f5c0644ae14c85ed49a290685ab0 GIT binary patch literal 22586 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 literal 0 HcmV?d00001 diff --git a/sounds/edited/stepdirt_1.wav.import b/sounds/edited/stepdirt_1.wav.import new file mode 100644 index 0000000..2268865 --- /dev/null +++ b/sounds/edited/stepdirt_1.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/stepdirt_1.wav-477ef04dfa836bd223c0f17f39122ed4.sample" + +[deps] + +source_file="res://sounds/edited/stepdirt_1.wav" +dest_files=[ "res://.import/stepdirt_1.wav-477ef04dfa836bd223c0f17f39122ed4.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0