diff --git a/.gitattributes b/.gitattributes index cc548e725d14974fb72b8fec0930ad5e93125afb..407f8b983be293b03ad06b7f10a4ac4a24c62aa3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -43,3 +43,6 @@ task[[:space:]]complete.mp3 filter=lfs diff=lfs merge=lfs -text team_cheer.ogg filter=lfs diff=lfs merge=lfs -text universfield-game-bonus-144751.mp3 filter=lfs diff=lfs merge=lfs -text walking[[:space:]]effect.mp3 filter=lfs diff=lfs merge=lfs -text +*.glb filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/Models/GLB format/Textures/colormap.png b/Models/GLB format/Textures/colormap.png new file mode 100644 index 0000000000000000000000000000000000000000..946340d5e925c25dbe1a342c7ab61516ce957bd8 --- /dev/null +++ b/Models/GLB format/Textures/colormap.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:439dfcac935cfd75dc16f28333a4c8284fffcc4b24f857c61cfb4c8a964a15bd +size 11140 diff --git a/Models/GLB format/barrel.glb b/Models/GLB format/barrel.glb new file mode 100644 index 0000000000000000000000000000000000000000..c339dac1f38ce0af21a65bb0b978d775e4c9257f --- /dev/null +++ b/Models/GLB format/barrel.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a65835b830699e58810f4f9afdd54ddff9537fd6d23f6f2bd3af1a59bbdff149 +size 14092 diff --git a/Models/GLB format/character-oobi.glb b/Models/GLB format/character-oobi.glb new file mode 100644 index 0000000000000000000000000000000000000000..9248a1a2f71b8f446c870bb1412fa16d43382190 --- /dev/null +++ b/Models/GLB format/character-oobi.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42cb1889e1ef6404f3d6b5d5ac6b79c9d9a60bc54fd82df83c63c664705873e4 +size 236392 diff --git a/Models/GLB format/chest.glb b/Models/GLB format/chest.glb new file mode 100644 index 0000000000000000000000000000000000000000..aacfae8ce5254ab30837b8d2fbd127bb44fed0cf --- /dev/null +++ b/Models/GLB format/chest.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba92d21be71649e608de4c76859f04e83308efc699508b2ddb1221678102e274 +size 28012 diff --git a/Models/GLB format/coin-gold.glb b/Models/GLB format/coin-gold.glb new file mode 100644 index 0000000000000000000000000000000000000000..926785a74ad501f5eb750522664aa1db1ec61127 --- /dev/null +++ b/Models/GLB format/coin-gold.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2179e57721b943d88283d38678c4b1b8422e9a4dd44f631acfb35007c223a8 +size 10608 diff --git a/Models/GLB format/coin-silver.glb b/Models/GLB format/coin-silver.glb new file mode 100644 index 0000000000000000000000000000000000000000..142b53054fff3335623c1b32d0afb85059f1a2a5 --- /dev/null +++ b/Models/GLB format/coin-silver.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:267012feb04e773cbb6c82a477f38743a69a34249b506a6eb551370392acc55c +size 10580 diff --git a/Models/GLB format/crate.glb b/Models/GLB format/crate.glb new file mode 100644 index 0000000000000000000000000000000000000000..3a8cd78bbee4aa8fb52d843cb7edcfe52c5e7497 --- /dev/null +++ b/Models/GLB format/crate.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eb6b633b71d7459c7ef9b0bf6e138a719175e107d4d52faca8fc7d0a059a45a +size 14336 diff --git a/Models/GLB format/fence-straight.glb b/Models/GLB format/fence-straight.glb new file mode 100644 index 0000000000000000000000000000000000000000..11e8b1ea922999aa0c3d9d69d073a6ba0a6765a6 --- /dev/null +++ b/Models/GLB format/fence-straight.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:008d1895b4ac463bb7438d7ba4b34d66548cdb547130b228cc3526e575291f0a +size 6468 diff --git a/Models/GLB format/flag.glb b/Models/GLB format/flag.glb new file mode 100644 index 0000000000000000000000000000000000000000..e840517fec8c3dcb7541df8922a561887d8f8cec --- /dev/null +++ b/Models/GLB format/flag.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41dc8355080ed9f73adeefa7befaec44b6956ba1353c23bc9ff73d97a53fc143 +size 11396 diff --git a/Models/GLB format/flowers-tall.glb b/Models/GLB format/flowers-tall.glb new file mode 100644 index 0000000000000000000000000000000000000000..526aaffe1f1a17b036ed76677bd7e8f235e9699c --- /dev/null +++ b/Models/GLB format/flowers-tall.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5702718a07ec1cf44e390d166a60bed43226c95527aa74f13ebbc76893f0309e +size 39256 diff --git a/Models/GLB format/flowers.glb b/Models/GLB format/flowers.glb new file mode 100644 index 0000000000000000000000000000000000000000..c0deef0c8ab3361b07f180835e0274c2e3b690db --- /dev/null +++ b/Models/GLB format/flowers.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4d459bf014a534a79a6763e59d9c548902600fe0e0e025654bd58a979139be6 +size 25928 diff --git a/Models/GLB format/grass.glb b/Models/GLB format/grass.glb new file mode 100644 index 0000000000000000000000000000000000000000..1e581d721904d00a8f118673c06f5b1940f79517 --- /dev/null +++ b/Models/GLB format/grass.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:601ae2a507f4bccbe93c08433479c07ccaea0fcd8a3769264505a9cfeec4baa5 +size 8964 diff --git a/Models/GLB format/jewel.glb b/Models/GLB format/jewel.glb new file mode 100644 index 0000000000000000000000000000000000000000..2f5c8f700550d545ef7563558f791965de193471 --- /dev/null +++ b/Models/GLB format/jewel.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cec20d8ae2678c292b3885aaee468ba39d165a7e2043af5ba8102b6cd974c2c3 +size 3580 diff --git a/Models/GLB format/mushrooms.glb b/Models/GLB format/mushrooms.glb new file mode 100644 index 0000000000000000000000000000000000000000..cefefac455bcb03c3652e2297c02caf8cd6184bf --- /dev/null +++ b/Models/GLB format/mushrooms.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81971dad14f9947d70897f1f76d7b3e723b7ee3737a32274ed8cc0355ea55c66 +size 13728 diff --git a/Models/GLB format/plant.glb b/Models/GLB format/plant.glb new file mode 100644 index 0000000000000000000000000000000000000000..547181bfd6798b49d1454ae1995c5c1583e6d9e9 --- /dev/null +++ b/Models/GLB format/plant.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0881669528fcc01038a104a89c5290d1cbe0cb4aa90c4f78e78ebe1de2281d7a +size 13124 diff --git a/Models/GLB format/rocks.glb b/Models/GLB format/rocks.glb new file mode 100644 index 0000000000000000000000000000000000000000..de4d828026770b9c30d02317044393c6b6747b83 --- /dev/null +++ b/Models/GLB format/rocks.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40a7cb558466510ca1976b0e007e351e53c89ac6b61f0b6a277b3226026c3326 +size 9556 diff --git a/Models/GLB format/sign.glb b/Models/GLB format/sign.glb new file mode 100644 index 0000000000000000000000000000000000000000..7e55477c3d9524541b061489b274b118450e74c2 --- /dev/null +++ b/Models/GLB format/sign.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:657a32a0d4585ffc1d85ccdf83bc6615890b9d4ec37d190248692ad3ae25c1b1 +size 8844 diff --git a/Models/GLB format/star.glb b/Models/GLB format/star.glb new file mode 100644 index 0000000000000000000000000000000000000000..6e850482c476ef9253d9ae52d0774aba51d600fe --- /dev/null +++ b/Models/GLB format/star.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a102a1b961fe0932c98ca29200ee6becae711b42437f14d58703388114eeff3c +size 6268 diff --git a/Models/GLB format/stones.glb b/Models/GLB format/stones.glb new file mode 100644 index 0000000000000000000000000000000000000000..bd82caa4fa1a3e7243b3d7080a1b2d84c7f9edd9 --- /dev/null +++ b/Models/GLB format/stones.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0468bd937ffe5a7bcaa4cddb08e4660533df4c2079e885da2c3d32df07ff77d6 +size 13752 diff --git a/Models/GLB format/tree-pine.glb b/Models/GLB format/tree-pine.glb new file mode 100644 index 0000000000000000000000000000000000000000..eee0a6451158a23ab6eedd69630cf2f24c957ac8 --- /dev/null +++ b/Models/GLB format/tree-pine.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:520ddf910ae7904871fc906169d5e76364d5ff643a92cb983563c1a24d995ebb +size 22396 diff --git a/Models/GLB format/tree.glb b/Models/GLB format/tree.glb new file mode 100644 index 0000000000000000000000000000000000000000..0d61d73ac0666bfc4384553e372ba0ba5e0622aa --- /dev/null +++ b/Models/GLB format/tree.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:632eb83a4359afd110594ea6f69db4db0c9512c79ae2c88741cf68e527253e41 +size 42680 diff --git a/Models/hero/RobotExpressive.glb b/Models/hero/RobotExpressive.glb new file mode 100644 index 0000000000000000000000000000000000000000..7cb755065a9a92bb9bdbd723f3f617b59e84fbf1 --- /dev/null +++ b/Models/hero/RobotExpressive.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:047f5e5fb3bb6d378bd1df16ca6137f2a596c99b3a1b5690b4020c05aaf6f319 +size 463988 diff --git a/README.md b/README.md index acef59a5559adee5f1d43e83b4b028cd3645654d..ea85fb5baca2609945c7a358fc79fda12b1771b3 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,20 @@ --- -title: Game -emoji: 📉 -colorFrom: yellow -colorTo: indigo -sdk: gradio -sdk_version: 6.19.0 -python_version: '3.13' -app_file: app.py +title: Magic Forest – Learn & Play! +emoji: 🦊 +colorFrom: green +colorTo: blue +sdk: static +app_file: index.html pinned: false -short_description: game +short_description: A 3D kids learning game – numbers, letters & coins --- -Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# Magic Forest – Learn & Play! + +A colorful 3D forest game for kids built with Three.js. Explore, jump, find the +right numbers and spell their words to clear levels — with cheerful voice +prompts, sound effects and music. + +Controls: arrow keys / on-screen pad to move, Space / JUMP to jump. + +Served as a static Space (`index.html` entry point). diff --git a/cheer_0.mp3 b/audio/cheer_0.mp3 similarity index 100% rename from cheer_0.mp3 rename to audio/cheer_0.mp3 diff --git a/cheer_1.mp3 b/audio/cheer_1.mp3 similarity index 100% rename from cheer_1.mp3 rename to audio/cheer_1.mp3 diff --git a/cheer_2.mp3 b/audio/cheer_2.mp3 similarity index 100% rename from cheer_2.mp3 rename to audio/cheer_2.mp3 diff --git a/cheer_3.mp3 b/audio/cheer_3.mp3 similarity index 100% rename from cheer_3.mp3 rename to audio/cheer_3.mp3 diff --git a/cheer_4.mp3 b/audio/cheer_4.mp3 similarity index 100% rename from cheer_4.mp3 rename to audio/cheer_4.mp3 diff --git a/cheer_5.mp3 b/audio/cheer_5.mp3 similarity index 100% rename from cheer_5.mp3 rename to audio/cheer_5.mp3 diff --git a/cheer_6.mp3 b/audio/cheer_6.mp3 similarity index 100% rename from cheer_6.mp3 rename to audio/cheer_6.mp3 diff --git a/cheer_7.mp3 b/audio/cheer_7.mp3 similarity index 100% rename from cheer_7.mp3 rename to audio/cheer_7.mp3 diff --git a/find_1.mp3 b/audio/find_1.mp3 similarity index 100% rename from find_1.mp3 rename to audio/find_1.mp3 diff --git a/find_10.mp3 b/audio/find_10.mp3 similarity index 100% rename from find_10.mp3 rename to audio/find_10.mp3 diff --git a/find_2.mp3 b/audio/find_2.mp3 similarity index 100% rename from find_2.mp3 rename to audio/find_2.mp3 diff --git a/find_3.mp3 b/audio/find_3.mp3 similarity index 100% rename from find_3.mp3 rename to audio/find_3.mp3 diff --git a/find_4.mp3 b/audio/find_4.mp3 similarity index 100% rename from find_4.mp3 rename to audio/find_4.mp3 diff --git a/find_5.mp3 b/audio/find_5.mp3 similarity index 100% rename from find_5.mp3 rename to audio/find_5.mp3 diff --git a/find_6.mp3 b/audio/find_6.mp3 similarity index 100% rename from find_6.mp3 rename to audio/find_6.mp3 diff --git a/find_7.mp3 b/audio/find_7.mp3 similarity index 100% rename from find_7.mp3 rename to audio/find_7.mp3 diff --git a/find_8.mp3 b/audio/find_8.mp3 similarity index 100% rename from find_8.mp3 rename to audio/find_8.mp3 diff --git a/find_9.mp3 b/audio/find_9.mp3 similarity index 100% rename from find_9.mp3 rename to audio/find_9.mp3 diff --git a/greet.mp3 b/audio/greet.mp3 similarity index 100% rename from greet.mp3 rename to audio/greet.mp3 diff --git a/instr_move.mp3 b/audio/instr_move.mp3 similarity index 100% rename from instr_move.mp3 rename to audio/instr_move.mp3 diff --git a/level_complete.mp3 b/audio/level_complete.mp3 similarity index 100% rename from level_complete.mp3 rename to audio/level_complete.mp3 diff --git a/name_a.mp3 b/audio/name_a.mp3 similarity index 100% rename from name_a.mp3 rename to audio/name_a.mp3 diff --git a/name_b.mp3 b/audio/name_b.mp3 similarity index 100% rename from name_b.mp3 rename to audio/name_b.mp3 diff --git a/name_c.mp3 b/audio/name_c.mp3 similarity index 100% rename from name_c.mp3 rename to audio/name_c.mp3 diff --git a/name_d.mp3 b/audio/name_d.mp3 similarity index 100% rename from name_d.mp3 rename to audio/name_d.mp3 diff --git a/name_e.mp3 b/audio/name_e.mp3 similarity index 100% rename from name_e.mp3 rename to audio/name_e.mp3 diff --git a/name_f.mp3 b/audio/name_f.mp3 similarity index 100% rename from name_f.mp3 rename to audio/name_f.mp3 diff --git a/name_g.mp3 b/audio/name_g.mp3 similarity index 100% rename from name_g.mp3 rename to audio/name_g.mp3 diff --git a/name_h.mp3 b/audio/name_h.mp3 similarity index 100% rename from name_h.mp3 rename to audio/name_h.mp3 diff --git a/name_i.mp3 b/audio/name_i.mp3 similarity index 100% rename from name_i.mp3 rename to audio/name_i.mp3 diff --git a/name_j.mp3 b/audio/name_j.mp3 similarity index 100% rename from name_j.mp3 rename to audio/name_j.mp3 diff --git a/name_k.mp3 b/audio/name_k.mp3 similarity index 100% rename from name_k.mp3 rename to audio/name_k.mp3 diff --git a/name_l.mp3 b/audio/name_l.mp3 similarity index 100% rename from name_l.mp3 rename to audio/name_l.mp3 diff --git a/name_m.mp3 b/audio/name_m.mp3 similarity index 100% rename from name_m.mp3 rename to audio/name_m.mp3 diff --git a/name_n.mp3 b/audio/name_n.mp3 similarity index 100% rename from name_n.mp3 rename to audio/name_n.mp3 diff --git a/name_o.mp3 b/audio/name_o.mp3 similarity index 100% rename from name_o.mp3 rename to audio/name_o.mp3 diff --git a/name_p.mp3 b/audio/name_p.mp3 similarity index 100% rename from name_p.mp3 rename to audio/name_p.mp3 diff --git a/name_q.mp3 b/audio/name_q.mp3 similarity index 100% rename from name_q.mp3 rename to audio/name_q.mp3 diff --git a/name_r.mp3 b/audio/name_r.mp3 similarity index 100% rename from name_r.mp3 rename to audio/name_r.mp3 diff --git a/name_s.mp3 b/audio/name_s.mp3 similarity index 100% rename from name_s.mp3 rename to audio/name_s.mp3 diff --git a/name_t.mp3 b/audio/name_t.mp3 similarity index 100% rename from name_t.mp3 rename to audio/name_t.mp3 diff --git a/name_u.mp3 b/audio/name_u.mp3 similarity index 100% rename from name_u.mp3 rename to audio/name_u.mp3 diff --git a/name_v.mp3 b/audio/name_v.mp3 similarity index 100% rename from name_v.mp3 rename to audio/name_v.mp3 diff --git a/name_w.mp3 b/audio/name_w.mp3 similarity index 100% rename from name_w.mp3 rename to audio/name_w.mp3 diff --git a/name_x.mp3 b/audio/name_x.mp3 similarity index 100% rename from name_x.mp3 rename to audio/name_x.mp3 diff --git a/name_y.mp3 b/audio/name_y.mp3 similarity index 100% rename from name_y.mp3 rename to audio/name_y.mp3 diff --git a/name_z.mp3 b/audio/name_z.mp3 similarity index 100% rename from name_z.mp3 rename to audio/name_z.mp3 diff --git a/num_1.mp3 b/audio/num_1.mp3 similarity index 100% rename from num_1.mp3 rename to audio/num_1.mp3 diff --git a/num_10.mp3 b/audio/num_10.mp3 similarity index 100% rename from num_10.mp3 rename to audio/num_10.mp3 diff --git a/num_2.mp3 b/audio/num_2.mp3 similarity index 100% rename from num_2.mp3 rename to audio/num_2.mp3 diff --git a/num_3.mp3 b/audio/num_3.mp3 similarity index 100% rename from num_3.mp3 rename to audio/num_3.mp3 diff --git a/num_4.mp3 b/audio/num_4.mp3 similarity index 100% rename from num_4.mp3 rename to audio/num_4.mp3 diff --git a/num_5.mp3 b/audio/num_5.mp3 similarity index 100% rename from num_5.mp3 rename to audio/num_5.mp3 diff --git a/num_6.mp3 b/audio/num_6.mp3 similarity index 100% rename from num_6.mp3 rename to audio/num_6.mp3 diff --git a/num_7.mp3 b/audio/num_7.mp3 similarity index 100% rename from num_7.mp3 rename to audio/num_7.mp3 diff --git a/num_8.mp3 b/audio/num_8.mp3 similarity index 100% rename from num_8.mp3 rename to audio/num_8.mp3 diff --git a/num_9.mp3 b/audio/num_9.mp3 similarity index 100% rename from num_9.mp3 rename to audio/num_9.mp3 diff --git a/spell_1.mp3 b/audio/spell_1.mp3 similarity index 100% rename from spell_1.mp3 rename to audio/spell_1.mp3 diff --git a/spell_10.mp3 b/audio/spell_10.mp3 similarity index 100% rename from spell_10.mp3 rename to audio/spell_10.mp3 diff --git a/spell_2.mp3 b/audio/spell_2.mp3 similarity index 100% rename from spell_2.mp3 rename to audio/spell_2.mp3 diff --git a/spell_3.mp3 b/audio/spell_3.mp3 similarity index 100% rename from spell_3.mp3 rename to audio/spell_3.mp3 diff --git a/spell_4.mp3 b/audio/spell_4.mp3 similarity index 100% rename from spell_4.mp3 rename to audio/spell_4.mp3 diff --git a/spell_5.mp3 b/audio/spell_5.mp3 similarity index 100% rename from spell_5.mp3 rename to audio/spell_5.mp3 diff --git a/spell_6.mp3 b/audio/spell_6.mp3 similarity index 100% rename from spell_6.mp3 rename to audio/spell_6.mp3 diff --git a/spell_7.mp3 b/audio/spell_7.mp3 similarity index 100% rename from spell_7.mp3 rename to audio/spell_7.mp3 diff --git a/spell_8.mp3 b/audio/spell_8.mp3 similarity index 100% rename from spell_8.mp3 rename to audio/spell_8.mp3 diff --git a/spell_9.mp3 b/audio/spell_9.mp3 similarity index 100% rename from spell_9.mp3 rename to audio/spell_9.mp3 diff --git a/try_again.mp3 b/audio/try_again.mp3 similarity index 100% rename from try_again.mp3 rename to audio/try_again.mp3 diff --git a/celebrate_letters.mp3 b/celebrate_letters.mp3 deleted file mode 100644 index 775687fda58199b5857276a2f73ccd9092c2a792..0000000000000000000000000000000000000000 Binary files a/celebrate_letters.mp3 and /dev/null differ diff --git a/celebrate_numbers.mp3 b/celebrate_numbers.mp3 deleted file mode 100644 index 65b9adb350e975b240b20053a053be4de83eef38..0000000000000000000000000000000000000000 Binary files a/celebrate_numbers.mp3 and /dev/null differ diff --git a/delon_boomkin-video-game-collect-item-short-468888.mp3 b/delon_boomkin-video-game-collect-item-short-468888.mp3 deleted file mode 100644 index 1eb4a1b8f687bf05ca6a592e31d870eb23aef1a1..0000000000000000000000000000000000000000 Binary files a/delon_boomkin-video-game-collect-item-short-468888.mp3 and /dev/null differ diff --git a/Coin collect.mp3 b/efx/Coin collect.mp3 similarity index 100% rename from Coin collect.mp3 rename to efx/Coin collect.mp3 diff --git a/applause.ogg b/efx/applause.ogg similarity index 100% rename from applause.ogg rename to efx/applause.ogg diff --git a/cheer_crowd.ogg b/efx/cheer_crowd.ogg similarity index 100% rename from cheer_crowd.ogg rename to efx/cheer_crowd.ogg diff --git a/collecting effect.mp3 b/efx/collecting effect.mp3 similarity index 100% rename from collecting effect.mp3 rename to efx/collecting effect.mp3 diff --git a/item-pickup.mp3 b/efx/item-pickup.mp3 similarity index 100% rename from item-pickup.mp3 rename to efx/item-pickup.mp3 diff --git a/jump effect.mp3 b/efx/jump effect.mp3 similarity index 100% rename from jump effect.mp3 rename to efx/jump effect.mp3 diff --git a/level_up.ogg b/efx/level_up.ogg similarity index 100% rename from level_up.ogg rename to efx/level_up.ogg diff --git a/efx/oh no.mp3 b/efx/oh no.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e4a4301f5771012eb25ad26e8221592349139729 Binary files /dev/null and b/efx/oh no.mp3 differ diff --git a/player wow.mp3 b/efx/player wow.mp3 similarity index 100% rename from player wow.mp3 rename to efx/player wow.mp3 diff --git a/task complete.mp3 b/efx/task complete.mp3 similarity index 100% rename from task complete.mp3 rename to efx/task complete.mp3 diff --git a/team_cheer.ogg b/efx/team_cheer.ogg similarity index 100% rename from team_cheer.ogg rename to efx/team_cheer.ogg diff --git a/universfield-game-bonus-144751.mp3 b/efx/universfield-game-bonus-144751.mp3 similarity index 100% rename from universfield-game-bonus-144751.mp3 rename to efx/universfield-game-bonus-144751.mp3 diff --git a/walking effect.mp3 b/efx/walking effect.mp3 similarity index 100% rename from walking effect.mp3 rename to efx/walking effect.mp3 diff --git a/wow.mp3 b/efx/wow.mp3 similarity index 100% rename from wow.mp3 rename to efx/wow.mp3 diff --git a/generate_audio.py b/generate_audio.py deleted file mode 100644 index 7a7e7d4cbbcbbb2eac6fa6d253b4185c88693c73..0000000000000000000000000000000000000000 --- a/generate_audio.py +++ /dev/null @@ -1,82 +0,0 @@ -""" -Generate all kids' voice clips for the educational forest game using edge-tts. -Neural female voice (Jenny), loud + cheerful, English. Outputs to ./audio/*.mp3 -Run: python generate_audio.py -""" -import asyncio, edge_tts - -VOICE = "en-US-JennyNeural" # friendly adult lady voice -RATE = "+5%" # a touch lively -VOLUME = "+100%" # boosted loud (max edge-tts boost) -PITCH = "+10Hz" # cheerful - -# letter -> (word) for "A for Apple" -LETTERS = { - "a": "Apple", "b": "Ball", "c": "Cat", "d": "Dog", "e": "Elephant", - "f": "Fish", "g": "Goat", "h": "Hat", "i": "Igloo", "j": "Jug", - "k": "Kite", "l": "Lion", "m": "Monkey", "n": "Nest", "o": "Orange", - "p": "Pig", "q": "Queen", "r": "Rabbit", "s": "Sun", "t": "Tiger", - "u": "Umbrella", "v": "Van", "w": "Watch", "x": "Xylophone", - "y": "Yak", "z": "Zebra", -} -NUM_WORDS = ["One", "Two", "Three", "Four", "Five", - "Six", "Seven", "Eight", "Nine", "Ten"] - -CLIPS = {} - -# greeting & instructions -CLIPS["greet"] = "Hello little explorer! Welcome to the magic forest! Let's learn our numbers and letters together. Are you ready? Let's go!" -CLIPS["instr_move"] = "Use the arrow keys to move. Walk over the coins to collect them!" -CLIPS["instr_numbers"] = "Let's count! Collect the coins to learn your numbers, one to ten!" -CLIPS["instr_letters"] = "Now let's learn our A B C! Find every letter!" -CLIPS["instr_infinity"] = "Coin time! Collect as many shiny coins as you can! Go, go, go!" - -# numbers -for i, w in enumerate(NUM_WORDS, start=1): - CLIPS[f"num_{i}"] = f"{w}!" - -# letters: "A for Apple!" -for ltr, word in LETTERS.items(): - CLIPS[f"letter_{ltr}"] = f"{ltr.upper()} for {word}!" - -# cheers -CHEERS = ["Well done!", "Great job!", "Wow! Amazing!", "You did it!", - "Super star!", "Fantastic!", "Hooray!", "You are so clever!"] -for i, c in enumerate(CHEERS): - CLIPS[f"cheer_{i}"] = c - -# big celebrations -CLIPS["celebrate_numbers"] = "Yay! You counted all the way to ten! You are amazing!" -CLIPS["celebrate_letters"] = "Wonderful! You learned all your letters! Well done, little star!" - -# ── LEVEL / SPELLING GAME PROMPTS ── -# "Find the number One!" (collect the right digit) -for i, w in enumerate(NUM_WORDS, start=1): - CLIPS[f"find_{i}"] = f"Find the number {w}!" -# "Let's spell ONE! O. N. E." (collect the letters in order) -for i, w in enumerate(NUM_WORDS, start=1): - spelled = ". ".join(list(w.upper())) - CLIPS[f"spell_{i}"] = f"Now let's spell {w}! {spelled}." -# letter NAMES said as each spelling letter is collected: "A!", "B!", ... -for ch in "abcdefghijklmnopqrstuvwxyz": - CLIPS[f"name_{ch}"] = f"{ch.upper()}!" -# feedback -CLIPS["try_again"] = "Oops! Try again!" -CLIPS["level_complete"] = "Hooray! You did it! Here come the coins!" -CLIPS["level_start"] = "Here we go! Let's play!" - -async def gen(name, text): - comm = edge_tts.Communicate(text, VOICE, rate=RATE, volume=VOLUME, pitch=PITCH) - await comm.save(f"audio/{name}.mp3") - print(f" ok {name}.mp3") - -async def main(): - print(f"Generating {len(CLIPS)} clips with {VOICE} ...") - items = list(CLIPS.items()) - # small concurrency so we don't hammer the service - for i in range(0, len(items), 4): - await asyncio.gather(*(gen(n, t) for n, t in items[i:i+4])) - print("Done.") - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/glTF/BirchTree_1.bin b/glTF/BirchTree_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..3465f9217be55041ea1672bed346b8ef8523d666 --- /dev/null +++ b/glTF/BirchTree_1.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1b14d1c82ebb8153991de4156b77ceaa1143d64469679147c0ee249c8b90b83 +size 201976 diff --git a/glTF/BirchTree_1.gltf b/glTF/BirchTree_1.gltf new file mode 100644 index 0000000000000000000000000000000000000000..1210d1c1cf11bc511a30f5a253ae14baab00c2a7 --- /dev/null +++ b/glTF/BirchTree_1.gltf @@ -0,0 +1,237 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"BirchTree_1" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"BirchTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"BirchTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"BirchTree_1", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"BirchTree_Bark_Normal", + "uri":"BirchTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"BirchTree_Bark", + "uri":"BirchTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"BirchTree_Leaves", + "uri":"BirchTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1634, + "max":[ + 0.9670372009277344, + 4.8608198165893555, + 0.6318668127059937 + ], + "min":[ + -0.8300637602806091, + -0.01774914562702179, + -0.5289766192436218 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1634, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1634, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":8064, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":3816, + "max":[ + 1.3658959865570068, + 5.43514347076416, + 1.068799376487732 + ], + "min":[ + -1.341935396194458, + 2.142258405685425, + -0.8737319111824036 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":3816, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":3816, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":5724, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":19608, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":19608, + "byteOffset":19608, + "target":34962 + }, + { + "buffer":0, + "byteLength":13072, + "byteOffset":39216, + "target":34962 + }, + { + "buffer":0, + "byteLength":16128, + "byteOffset":52288, + "target":34963 + }, + { + "buffer":0, + "byteLength":45792, + "byteOffset":68416, + "target":34962 + }, + { + "buffer":0, + "byteLength":45792, + "byteOffset":114208, + "target":34962 + }, + { + "buffer":0, + "byteLength":30528, + "byteOffset":160000, + "target":34962 + }, + { + "buffer":0, + "byteLength":11448, + "byteOffset":190528, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":201976, + "uri":"BirchTree_1.bin" + } + ] +} diff --git a/glTF/BirchTree_3.bin b/glTF/BirchTree_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..d92ff0a233c78c863c48e27f8ee73b3b865ee2c1 --- /dev/null +++ b/glTF/BirchTree_3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d3a00145beeab868c0e7eb8dbb1118115cb00a44a8a801244eae837805d602 +size 437788 diff --git a/glTF/BirchTree_3.gltf b/glTF/BirchTree_3.gltf new file mode 100644 index 0000000000000000000000000000000000000000..cf66b242c84ed337fe9119fe65b9dbed129c3c19 --- /dev/null +++ b/glTF/BirchTree_3.gltf @@ -0,0 +1,263 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"BirchTree_3" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"BirchTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"BirchTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.000", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "TEXCOORD_1":3 + }, + "indices":4, + "material":0 + }, + { + "attributes":{ + "POSITION":5, + "NORMAL":6, + "TEXCOORD_0":7, + "TEXCOORD_1":8 + }, + "indices":9, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"BirchTree_Bark_Normal", + "uri":"BirchTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"BirchTree_Bark", + "uri":"BirchTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"BirchTree_Leaves", + "uri":"BirchTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1646, + "max":[ + 1.4055445194244385, + 5.545559406280518, + 0.8506550192832947 + ], + "min":[ + -1.446382761001587, + -0.008469140157103539, + -0.5328736305236816 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1646, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1646, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5126, + "count":1646, + "type":"VEC2" + }, + { + "bufferView":4, + "componentType":5123, + "count":8040, + "type":"SCALAR" + }, + { + "bufferView":5, + "componentType":5126, + "count":8276, + "max":[ + 1.7693895101547241, + 5.745725154876709, + 1.3416640758514404 + ], + "min":[ + -1.66342294216156, + 2.2327804565429688, + -0.9253931045532227 + ], + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":8276, + "type":"VEC3" + }, + { + "bufferView":7, + "componentType":5126, + "count":8276, + "type":"VEC2" + }, + { + "bufferView":8, + "componentType":5126, + "count":8276, + "type":"VEC2" + }, + { + "bufferView":9, + "componentType":5123, + "count":12414, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":19752, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":19752, + "byteOffset":19752, + "target":34962 + }, + { + "buffer":0, + "byteLength":13168, + "byteOffset":39504, + "target":34962 + }, + { + "buffer":0, + "byteLength":13168, + "byteOffset":52672, + "target":34962 + }, + { + "buffer":0, + "byteLength":16080, + "byteOffset":65840, + "target":34963 + }, + { + "buffer":0, + "byteLength":99312, + "byteOffset":81920, + "target":34962 + }, + { + "buffer":0, + "byteLength":99312, + "byteOffset":181232, + "target":34962 + }, + { + "buffer":0, + "byteLength":66208, + "byteOffset":280544, + "target":34962 + }, + { + "buffer":0, + "byteLength":66208, + "byteOffset":346752, + "target":34962 + }, + { + "buffer":0, + "byteLength":24828, + "byteOffset":412960, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":437788, + "uri":"BirchTree_3.bin" + } + ] +} diff --git a/glTF/BirchTree_5.bin b/glTF/BirchTree_5.bin new file mode 100644 index 0000000000000000000000000000000000000000..b16cdbf3919b4d690339762cb381647a34260ad0 --- /dev/null +++ b/glTF/BirchTree_5.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d1f1009a7609ae1b59b3e0131d63c9b8660aa0fac1aea01ebd7caaa2e6ddab5 +size 180720 diff --git a/glTF/BirchTree_5.gltf b/glTF/BirchTree_5.gltf new file mode 100644 index 0000000000000000000000000000000000000000..149b27aab066352ac793be4b4e793262c05b753d --- /dev/null +++ b/glTF/BirchTree_5.gltf @@ -0,0 +1,237 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"BirchTree_5" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"BirchTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"BirchTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.009", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"BirchTree_Bark_Normal", + "uri":"BirchTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"BirchTree_Bark", + "uri":"BirchTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"BirchTree_Leaves", + "uri":"BirchTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1872, + "max":[ + 1.748803734779358, + 5.186513900756836, + 1.0935114622116089 + ], + "min":[ + -1.3307640552520752, + -0.014205191284418106, + -1.4230836629867554 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1872, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1872, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":9168, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":2928, + "max":[ + 1.8894633054733276, + 5.508197784423828, + 1.7623989582061768 + ], + "min":[ + -1.6922731399536133, + 2.5803983211517334, + -1.752392053604126 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":2928, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":2928, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":4392, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":22464, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":22464, + "byteOffset":22464, + "target":34962 + }, + { + "buffer":0, + "byteLength":14976, + "byteOffset":44928, + "target":34962 + }, + { + "buffer":0, + "byteLength":18336, + "byteOffset":59904, + "target":34963 + }, + { + "buffer":0, + "byteLength":35136, + "byteOffset":78240, + "target":34962 + }, + { + "buffer":0, + "byteLength":35136, + "byteOffset":113376, + "target":34962 + }, + { + "buffer":0, + "byteLength":23424, + "byteOffset":148512, + "target":34962 + }, + { + "buffer":0, + "byteLength":8784, + "byteOffset":171936, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":180720, + "uri":"BirchTree_5.bin" + } + ] +} diff --git a/glTF/BirchTree_Bark.jpg b/glTF/BirchTree_Bark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d47b3af228b0961df7caa07950c990fae4fd793d --- /dev/null +++ b/glTF/BirchTree_Bark.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f796f02e47bc5afddd17dc2385bbef53a352628ceb348deb1188ef04fe5deff9 +size 1015231 diff --git a/glTF/BirchTree_Bark_Normal.png b/glTF/BirchTree_Bark_Normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ec92e742b1abc434a51623ffebcb09975a7dad74 --- /dev/null +++ b/glTF/BirchTree_Bark_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e30ee9c7561742523340d5657056f8392bc0f944da5145f0af7690cd1d2e6a11 +size 22721595 diff --git a/glTF/BirchTree_Leaves.png b/glTF/BirchTree_Leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cc77e6f7506a90538472fdf85a1b6f53c7bf43 --- /dev/null +++ b/glTF/BirchTree_Leaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b674a02017d987f8ec0448bd2a52ad788d1235f91b7f00499b4ca071f8e69fe +size 77836 diff --git a/glTF/Bush.bin b/glTF/Bush.bin new file mode 100644 index 0000000000000000000000000000000000000000..80cb2ba6805a1c8ccb225bd1fe1da2d6a4f1edcd --- /dev/null +++ b/glTF/Bush.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8a583d0741f37ec5e256d8dfc05d82f94689cf93bf3fb7b95e716d1e05ba11f +size 28000 diff --git a/glTF/Bush.gltf b/glTF/Bush.gltf new file mode 100644 index 0000000000000000000000000000000000000000..e11faed1a5d16c62add9479b5a2f872cf2d47566 --- /dev/null +++ b/glTF/Bush.gltf @@ -0,0 +1,144 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Bush", + "rotation":[ + 0.7904141545295715, + 0.20954930782318115, + -0.402734637260437, + 0.4112655818462372 + ] + } + ], + "materials":[ + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Bush_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.012", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Bush_Leaves", + "uri":"Bush_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":800, + "max":[ + 0.5290597081184387, + 0.47277382016181946, + 0.36149728298187256 + ], + "min":[ + -0.5728190541267395, + -0.6429753303527832, + -0.652008593082428 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":800, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":800, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":1200, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":9600, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":9600, + "byteOffset":9600, + "target":34962 + }, + { + "buffer":0, + "byteLength":6400, + "byteOffset":19200, + "target":34962 + }, + { + "buffer":0, + "byteLength":2400, + "byteOffset":25600, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":28000, + "uri":"Bush.bin" + } + ] +} diff --git a/glTF/Bush_Flowers.bin b/glTF/Bush_Flowers.bin new file mode 100644 index 0000000000000000000000000000000000000000..5cfb39c70a00dbff9ac7fdb95266d71e95c0ca82 --- /dev/null +++ b/glTF/Bush_Flowers.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0b734b66250927042c6b00cf567cc11095fac72a5719cb1c05edaad4d665e0e +size 31380 diff --git a/glTF/Bush_Flowers.gltf b/glTF/Bush_Flowers.gltf new file mode 100644 index 0000000000000000000000000000000000000000..c90cbd928253621bafc8c30c654750461553131c --- /dev/null +++ b/glTF/Bush_Flowers.gltf @@ -0,0 +1,232 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Bush_Flowers", + "rotation":[ + 0.7904141545295715, + 0.20954930782318115, + -0.402734637260437, + 0.4112655818462372 + ] + } + ], + "materials":[ + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Bush_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Flowers", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.003", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Bush_Leaves", + "uri":"Bush_Leaves.png" + }, + { + "mimeType":"image/png", + "name":"Flowers", + "uri":"Flowers.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":800, + "max":[ + 0.5290597081184387, + 0.47277382016181946, + 0.36149728298187256 + ], + "min":[ + -0.5728190541267395, + -0.6429753303527832, + -0.652008593082428 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":800, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":800, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":1200, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":91, + "max":[ + 0.5439478754997253, + 0.42564618587493896, + 0.3131656348705292 + ], + "min":[ + -0.5594223141670227, + -0.6218320727348328, + -0.6686300039291382 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":91, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":91, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":234, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":9600, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":9600, + "byteOffset":9600, + "target":34962 + }, + { + "buffer":0, + "byteLength":6400, + "byteOffset":19200, + "target":34962 + }, + { + "buffer":0, + "byteLength":2400, + "byteOffset":25600, + "target":34963 + }, + { + "buffer":0, + "byteLength":1092, + "byteOffset":28000, + "target":34962 + }, + { + "buffer":0, + "byteLength":1092, + "byteOffset":29092, + "target":34962 + }, + { + "buffer":0, + "byteLength":728, + "byteOffset":30184, + "target":34962 + }, + { + "buffer":0, + "byteLength":468, + "byteOffset":30912, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":31380, + "uri":"Bush_Flowers.bin" + } + ] +} diff --git a/glTF/Bush_Large_Flowers.bin b/glTF/Bush_Large_Flowers.bin new file mode 100644 index 0000000000000000000000000000000000000000..80272f04e5339c58367cb7e16ed0abafd8c4ad00 --- /dev/null +++ b/glTF/Bush_Large_Flowers.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:780b50270f5bb264c5642eae514191a372a7799eafc444cc9afb5ce501b9109a +size 24780 diff --git a/glTF/Bush_Large_Flowers.gltf b/glTF/Bush_Large_Flowers.gltf new file mode 100644 index 0000000000000000000000000000000000000000..941db73edabe3d543f0e3f0cca23e936f4fe5765 --- /dev/null +++ b/glTF/Bush_Large_Flowers.gltf @@ -0,0 +1,232 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Bush_Large_Flowers", + "rotation":[ + 0.8006435632705688, + 0.26975396275520325, + -0.040793512016534805, + 0.5334215760231018 + ] + } + ], + "materials":[ + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Bush_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Flowers", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.029", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Bush_Leaves", + "uri":"Bush_Leaves.png" + }, + { + "mimeType":"image/png", + "name":"Flowers", + "uri":"Flowers.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":552, + "max":[ + 1.149157166481018, + 0.5573542714118958, + 0.4012354910373688 + ], + "min":[ + -0.8172093629837036, + -0.7824836373329163, + -1.0758378505706787 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":552, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":552, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":828, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":147, + "max":[ + 1.1831327676773071, + 0.4660194218158722, + 0.07130126655101776 + ], + "min":[ + -0.6124211549758911, + -0.8222407698631287, + -1.1121408939361572 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":147, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":147, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":378, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":6624, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":6624, + "byteOffset":6624, + "target":34962 + }, + { + "buffer":0, + "byteLength":4416, + "byteOffset":13248, + "target":34962 + }, + { + "buffer":0, + "byteLength":1656, + "byteOffset":17664, + "target":34963 + }, + { + "buffer":0, + "byteLength":1764, + "byteOffset":19320, + "target":34962 + }, + { + "buffer":0, + "byteLength":1764, + "byteOffset":21084, + "target":34962 + }, + { + "buffer":0, + "byteLength":1176, + "byteOffset":22848, + "target":34962 + }, + { + "buffer":0, + "byteLength":756, + "byteOffset":24024, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":24780, + "uri":"Bush_Large_Flowers.bin" + } + ] +} diff --git a/glTF/Bush_Leaves.png b/glTF/Bush_Leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a7650b0146a2d5518849704f3d8002b7739ca7 --- /dev/null +++ b/glTF/Bush_Leaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f662296a285ca56b1ed56e952a198b93b466ae39ab7b6ee1c1ac1bd1c46242f +size 74828 diff --git a/glTF/DeadTree_2.bin b/glTF/DeadTree_2.bin new file mode 100644 index 0000000000000000000000000000000000000000..2bc77605034e4fe31eb7a1f7d79c5df1dc2c5d08 --- /dev/null +++ b/glTF/DeadTree_2.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a03195deef2ed00d77e33930b88683f35852e6b4ee35fb9cede73b4bad4a8126 +size 135936 diff --git a/glTF/DeadTree_2.gltf b/glTF/DeadTree_2.gltf new file mode 100644 index 0000000000000000000000000000000000000000..5c5ac616bbc271515397bea5525167647a6b2d5b --- /dev/null +++ b/glTF/DeadTree_2.gltf @@ -0,0 +1,149 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"DeadTree_2" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"NormalTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cylinder.004", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"NormalTree_Bark_Normal", + "uri":"NormalTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"NormalTree_Bark", + "uri":"NormalTree_Bark.jpg" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":3246, + "max":[ + 1.635667324066162, + 6.185760498046875, + 0.6366407871246338 + ], + "min":[ + -1.7882426977157593, + -0.010010119527578354, + -0.8091591000556946 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":3246, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":3246, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":16032, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":38952, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":38952, + "byteOffset":38952, + "target":34962 + }, + { + "buffer":0, + "byteLength":25968, + "byteOffset":77904, + "target":34962 + }, + { + "buffer":0, + "byteLength":32064, + "byteOffset":103872, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":135936, + "uri":"DeadTree_2.bin" + } + ] +} diff --git a/glTF/DeadTree_6.bin b/glTF/DeadTree_6.bin new file mode 100644 index 0000000000000000000000000000000000000000..00bb43ed920aa46037f259d093c0fd7107730687 --- /dev/null +++ b/glTF/DeadTree_6.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ea86ef84307394d6808d91d61b1685d483ad91862de828b3207b099816477ef +size 75984 diff --git a/glTF/DeadTree_6.gltf b/glTF/DeadTree_6.gltf new file mode 100644 index 0000000000000000000000000000000000000000..5eb9ef882a6b23ff40a8ef784f8ed57839ba19a7 --- /dev/null +++ b/glTF/DeadTree_6.gltf @@ -0,0 +1,149 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"DeadTree_6" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MapleTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.005", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"MapleTree_Bark_Normal", + "uri":"MapleTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"MapleTree_Bark", + "uri":"MapleTree_Bark.jpg" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1815, + "max":[ + 3.7677536010742188, + 6.415181636810303, + 1.930820345878601 + ], + "min":[ + -1.6392756700515747, + 0.0006941246683709323, + -1.368160605430603 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1815, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1815, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":8952, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":21780, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":21780, + "byteOffset":21780, + "target":34962 + }, + { + "buffer":0, + "byteLength":14520, + "byteOffset":43560, + "target":34962 + }, + { + "buffer":0, + "byteLength":17904, + "byteOffset":58080, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":75984, + "uri":"DeadTree_6.bin" + } + ] +} diff --git a/glTF/Flower_1_Clump.bin b/glTF/Flower_1_Clump.bin new file mode 100644 index 0000000000000000000000000000000000000000..4b7ce0059a0a19acb86a11689f4ffcceaf7e1ab5 --- /dev/null +++ b/glTF/Flower_1_Clump.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26d8534f5e7a9e843270acd397dca7b0ca1926a108a75f0dff18ca90cc449d2f +size 23368 diff --git a/glTF/Flower_1_Clump.gltf b/glTF/Flower_1_Clump.gltf new file mode 100644 index 0000000000000000000000000000000000000000..cbff64d00a36bf5d0cf58c759efc64def01eb620 --- /dev/null +++ b/glTF/Flower_1_Clump.gltf @@ -0,0 +1,138 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Flower_1_Clump" + } + ], + "materials":[ + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Flowers", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.049", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Flowers", + "uri":"Flowers.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":614, + "max":[ + 0.23249699175357819, + 0.666481614112854, + 0.2129351645708084 + ], + "min":[ + -0.23863986134529114, + -0.004863256588578224, + -0.22226478159427643 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":614, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":614, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":1860, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":7368, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":7368, + "byteOffset":7368, + "target":34962 + }, + { + "buffer":0, + "byteLength":4912, + "byteOffset":14736, + "target":34962 + }, + { + "buffer":0, + "byteLength":3720, + "byteOffset":19648, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":23368, + "uri":"Flower_1_Clump.bin" + } + ] +} diff --git a/glTF/Flower_4_Clump.bin b/glTF/Flower_4_Clump.bin new file mode 100644 index 0000000000000000000000000000000000000000..4a0c6ab377882d29fcf21750758cbfae221e048d --- /dev/null +++ b/glTF/Flower_4_Clump.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:174f2e1a4c63b6d22ed997af806b541523a3e825a015453392edfeaf30695310 +size 3760 diff --git a/glTF/Flower_4_Clump.gltf b/glTF/Flower_4_Clump.gltf new file mode 100644 index 0000000000000000000000000000000000000000..9ac7c312f8a163aac29baf3c663e81a9258a2fa4 --- /dev/null +++ b/glTF/Flower_4_Clump.gltf @@ -0,0 +1,138 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Flower_4_Clump" + } + ], + "materials":[ + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"Flowers", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.069", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Flowers", + "uri":"Flowers.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":92, + "max":[ + 0.3156799376010895, + 0.6022393703460693, + 0.24488729238510132 + ], + "min":[ + -0.252328097820282, + 0.0011882712133228779, + -0.25304919481277466 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":92, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":92, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":408, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":1104, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":1104, + "byteOffset":1104, + "target":34962 + }, + { + "buffer":0, + "byteLength":736, + "byteOffset":2208, + "target":34962 + }, + { + "buffer":0, + "byteLength":816, + "byteOffset":2944, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":3760, + "uri":"Flower_4_Clump.bin" + } + ] +} diff --git a/glTF/Flowers.png b/glTF/Flowers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a66c05eae9313ba194b79547e605f4684f28fde --- /dev/null +++ b/glTF/Flowers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23673fc87e55d8f7cbc699581a164cffec505376bd8b0b90b593dc387aa569fd +size 318021 diff --git a/glTF/Grass.png b/glTF/Grass.png new file mode 100644 index 0000000000000000000000000000000000000000..ce968b85fa63aae638e82844a672390bfae77525 --- /dev/null +++ b/glTF/Grass.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facde747020acfefdc84d176dd4037282895d200a66fc20b0d9baca470f310f1 +size 734927 diff --git a/glTF/Grass_Large.bin b/glTF/Grass_Large.bin new file mode 100644 index 0000000000000000000000000000000000000000..c2bdaed497fd0f26633d683fad061aeb01f22291 --- /dev/null +++ b/glTF/Grass_Large.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee07cde133dc9163279170c72d1713708e6433eeb60dd1cc23b18f4ebb690eb7 +size 5448 diff --git a/glTF/Grass_Large.gltf b/glTF/Grass_Large.gltf new file mode 100644 index 0000000000000000000000000000000000000000..5112235e721e37e17bc455ad351b3b3ff29b72ab --- /dev/null +++ b/glTF/Grass_Large.gltf @@ -0,0 +1,137 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Grass_Large" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"Grass", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":0 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane.001", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"Grass", + "uri":"Grass.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":150, + "max":[ + 0.3720705807209015, + 0.4822842478752136, + 0.17142699658870697 + ], + "min":[ + -0.33639466762542725, + -0.002809834200888872, + -0.32657596468925476 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":150, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":150, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":324, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":1800, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":1800, + "byteOffset":1800, + "target":34962 + }, + { + "buffer":0, + "byteLength":1200, + "byteOffset":3600, + "target":34962 + }, + { + "buffer":0, + "byteLength":648, + "byteOffset":4800, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":5448, + "uri":"Grass_Large.bin" + } + ] +} diff --git a/glTF/MapleTree_1.bin b/glTF/MapleTree_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..33b8a6d68f542c30f8205c1a9592e4b3d2e705d7 --- /dev/null +++ b/glTF/MapleTree_1.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03cfea606b55f8f38220f2922e28efb92d724abac801f76191ba062c398bf09c +size 136464 diff --git a/glTF/MapleTree_1.gltf b/glTF/MapleTree_1.gltf new file mode 100644 index 0000000000000000000000000000000000000000..af6cda33094959c4b076e5aebe1473c52dcbd12c --- /dev/null +++ b/glTF/MapleTree_1.gltf @@ -0,0 +1,237 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"MapleTree_1" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MapleTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"MapleTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.005", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"MapleTree_Bark_Normal", + "uri":"MapleTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"MapleTree_Bark", + "uri":"MapleTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"MapleTree_Leaves", + "uri":"MapleTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1815, + "max":[ + 3.7677536010742188, + 6.415181636810303, + 1.930820345878601 + ], + "min":[ + -1.6392756700515747, + 0.0006941246683709323, + -1.368160605430603 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1815, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1815, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":8952, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":1728, + "max":[ + 4.153177738189697, + 6.644845962524414, + 2.4542856216430664 + ], + "min":[ + -2.075911045074463, + 2.7419381141662598, + -2.4494659900665283 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":1728, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":1728, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":2592, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":21780, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":21780, + "byteOffset":21780, + "target":34962 + }, + { + "buffer":0, + "byteLength":14520, + "byteOffset":43560, + "target":34962 + }, + { + "buffer":0, + "byteLength":17904, + "byteOffset":58080, + "target":34963 + }, + { + "buffer":0, + "byteLength":20736, + "byteOffset":75984, + "target":34962 + }, + { + "buffer":0, + "byteLength":20736, + "byteOffset":96720, + "target":34962 + }, + { + "buffer":0, + "byteLength":13824, + "byteOffset":117456, + "target":34962 + }, + { + "buffer":0, + "byteLength":5184, + "byteOffset":131280, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":136464, + "uri":"MapleTree_1.bin" + } + ] +} diff --git a/glTF/MapleTree_3.bin b/glTF/MapleTree_3.bin new file mode 100644 index 0000000000000000000000000000000000000000..f6f27267e8e45ac312c28a289106928de1cda65d --- /dev/null +++ b/glTF/MapleTree_3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c26fd0be6947b3d955a1b64e3f7a57d2d521d652618380d354042621c1b23be1 +size 247012 diff --git a/glTF/MapleTree_3.gltf b/glTF/MapleTree_3.gltf new file mode 100644 index 0000000000000000000000000000000000000000..cf81b715c340414b12b00b04fbd2a7f5f8e8ec9e --- /dev/null +++ b/glTF/MapleTree_3.gltf @@ -0,0 +1,237 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"MapleTree_3" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MapleTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"MapleTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.008", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"MapleTree_Bark_Normal", + "uri":"MapleTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"MapleTree_Bark", + "uri":"MapleTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"MapleTree_Leaves", + "uri":"MapleTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":2999, + "max":[ + 4.147934913635254, + 6.277482986450195, + 1.93081796169281 + ], + "min":[ + -4.017767429351807, + 0.0006945766508579254, + -2.8707633018493652 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":2999, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":2999, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":14832, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":3468, + "max":[ + 4.569456577301025, + 6.987350940704346, + 2.6775949001312256 + ], + "min":[ + -4.410184383392334, + 2.417171001434326, + -3.935764789581299 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":3468, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":3468, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":5202, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":35988, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":35988, + "byteOffset":35988, + "target":34962 + }, + { + "buffer":0, + "byteLength":23992, + "byteOffset":71976, + "target":34962 + }, + { + "buffer":0, + "byteLength":29664, + "byteOffset":95968, + "target":34963 + }, + { + "buffer":0, + "byteLength":41616, + "byteOffset":125632, + "target":34962 + }, + { + "buffer":0, + "byteLength":41616, + "byteOffset":167248, + "target":34962 + }, + { + "buffer":0, + "byteLength":27744, + "byteOffset":208864, + "target":34962 + }, + { + "buffer":0, + "byteLength":10404, + "byteOffset":236608, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":247012, + "uri":"MapleTree_3.bin" + } + ] +} diff --git a/glTF/MapleTree_5.bin b/glTF/MapleTree_5.bin new file mode 100644 index 0000000000000000000000000000000000000000..5918dac0ebcb867d1826f384e19be6e3a236140a --- /dev/null +++ b/glTF/MapleTree_5.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccabdf8936019ffade3677971eaa889140d0d88b047c3fba67b6e81279e53399 +size 172432 diff --git a/glTF/MapleTree_5.gltf b/glTF/MapleTree_5.gltf new file mode 100644 index 0000000000000000000000000000000000000000..2075ad0dffd6a546673405add6a6fedc0efc17ea --- /dev/null +++ b/glTF/MapleTree_5.gltf @@ -0,0 +1,237 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.0.44", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"MapleTree_5" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MapleTree_Bark", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "alphaMode":"BLEND", + "doubleSided":true, + "name":"MapleTree_Leaves", + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":2 + }, + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Cube.010", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + }, + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + }, + { + "sampler":0, + "source":2 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"MapleTree_Bark_Normal", + "uri":"MapleTree_Bark_Normal.png" + }, + { + "mimeType":"image/jpeg", + "name":"MapleTree_Bark", + "uri":"MapleTree_Bark.jpg" + }, + { + "mimeType":"image/png", + "name":"MapleTree_Leaves", + "uri":"MapleTree_Leaves.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":1952, + "max":[ + 2.441612482070923, + 7.126369953155518, + 1.9308204650878906 + ], + "min":[ + -3.0191519260406494, + 0.0006941246683709323, + -1.3140323162078857 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":1952, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":1952, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":9624, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":2592, + "max":[ + 3.4032061100006104, + 7.280647277832031, + 2.6457133293151855 + ], + "min":[ + -3.6091811656951904, + 2.538853883743286, + -2.430192708969116 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":2592, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":2592, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":3888, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":23424, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":23424, + "byteOffset":23424, + "target":34962 + }, + { + "buffer":0, + "byteLength":15616, + "byteOffset":46848, + "target":34962 + }, + { + "buffer":0, + "byteLength":19248, + "byteOffset":62464, + "target":34963 + }, + { + "buffer":0, + "byteLength":31104, + "byteOffset":81712, + "target":34962 + }, + { + "buffer":0, + "byteLength":31104, + "byteOffset":112816, + "target":34962 + }, + { + "buffer":0, + "byteLength":20736, + "byteOffset":143920, + "target":34962 + }, + { + "buffer":0, + "byteLength":7776, + "byteOffset":164656, + "target":34963 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":172432, + "uri":"MapleTree_5.bin" + } + ] +} diff --git a/glTF/MapleTree_Bark.jpg b/glTF/MapleTree_Bark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f331d2694ded65281367bc3666aec995f124842c --- /dev/null +++ b/glTF/MapleTree_Bark.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be9d53e27f5af458a8122bfb6a88c93020fd5707f697d2288ea0af04b3019a97 +size 817140 diff --git a/glTF/MapleTree_Bark_Normal.png b/glTF/MapleTree_Bark_Normal.png new file mode 100644 index 0000000000000000000000000000000000000000..9466c34392cc647544a590f32073c0851a5a9982 --- /dev/null +++ b/glTF/MapleTree_Bark_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e3d97d57838d6e8203f0fab2858bada8ad1e6d6f240c0e898f8e88c110f2f5d +size 22064128 diff --git a/glTF/MapleTree_Leaves.png b/glTF/MapleTree_Leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..9a45d450066a2e00a2bf5e0954ee87ac312aa0e5 --- /dev/null +++ b/glTF/MapleTree_Leaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:915f0836e9889e28032662c7aa0d0eb9601ba999eda042c9a4e38690786d6c7b +size 212333 diff --git a/glTF/NormalTree_Bark.jpg b/glTF/NormalTree_Bark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87c54f98e1627d481eb995bd15e3f4844ce0431e --- /dev/null +++ b/glTF/NormalTree_Bark.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1176fee60864e7d47c342309bbaeaf04e4d7dea3821209bc2d35f0a0dd9fd3b +size 630690 diff --git a/glTF/NormalTree_Bark_Normal.png b/glTF/NormalTree_Bark_Normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f83115589bbc58d9bad41efdb85f1c7e2fc2ee21 --- /dev/null +++ b/glTF/NormalTree_Bark_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8136a8d6dc18e6b055c7cb53cf42bc6bac41319e102289d8ba25ee5837fbc39b +size 19087640 diff --git a/index.html b/index.html index 68f49c7fd3b59b84f7ffc6e23000ca2d9c2b6453..f40950607720eebc0dab501e97b4897f9237148d 100644 --- a/index.html +++ b/index.html @@ -365,10 +365,11 @@ let actx = null, masterGain = null, comp = null, sfxGain = null, audioReady = fa const buffers = {}; const voiceQueue = []; let voicePlaying = false; // sound-effect & music files the user added const EFX = { - wow:'player wow.mp3', collect:'Coin collect.mp3', collect2:'collecting effect.mp3', + wow:'wow.mp3', playerwow:'player wow.mp3', collect:'Coin collect.mp3', collect2:'collecting effect.mp3', pickup:'item-pickup.mp3', jump:'jump effect.mp3', walk:'walking effect.mp3', complete:'task complete.mp3', bonus:'universfield-game-bonus-144751.mp3', - cheer:'cheer_crowd.ogg', applause:'applause.ogg', teamcheer:'team_cheer.ogg' + cheer:'cheer_crowd.ogg', applause:'applause.ogg', teamcheer:'team_cheer.ogg', + ohno:'oh no.mp3', levelup:'level_up.ogg' }; const efxBuf = {}; const MUSIC = ['audiocoffee-game-116679','denis-pavlov-music-marimba-tropical-african-travel-game-197517', @@ -421,17 +422,6 @@ function sfxWrong() { // gentle low "uh-oh" buzz g.gain.exponentialRampToValueAtTime(0.0001, t0 + 0.3); o.connect(g); g.connect(sfxGain); o.start(t0); o.stop(t0 + 0.32); } -function sfxStep() { // soft footstep thud while walking - if (!audioReady || muted) return; const t0 = actx.currentTime; - const o = actx.createOscillator(), g = actx.createGain(); - o.type = 'sine'; o.frequency.setValueAtTime(95 + Math.random()*30, t0); - o.frequency.exponentialRampToValueAtTime(55, t0 + 0.09); - g.gain.setValueAtTime(0.0001, t0); - g.gain.exponentialRampToValueAtTime(0.16, t0 + 0.01); - g.gain.exponentialRampToValueAtTime(0.0001, t0 + 0.1); - o.connect(g); g.connect(sfxGain); o.start(t0); o.stop(t0 + 0.12); -} - // ── REAL SOUND-EFFECT FILES (efx/) ── function loadEfx(key) { if (efxBuf[key]) return Promise.resolve(efxBuf[key]); @@ -549,6 +539,11 @@ function buildWorld() { place('chest', 9, -9, { rotY: -0.6 }); registerObstacle(9, -9, 0.8, 1.0); place('flag', -9, -8, { rotY: 0.5 }); registerObstacle(-9, -8, 0.5, 99); + // decorative fence ring marking the edge of the play clearing (no collision — purely scenery) + const FENCE_R = 30, FENCE_N = 28; + for (let i = 0; i < FENCE_N; i++) { const ang = (i / FENCE_N) * Math.PI*2; + place('fence-straight', Math.cos(ang)*FENCE_R, Math.sin(ang)*FENCE_R, { rotY: ang + Math.PI/2 }); } + // HIGH-POLY NATURE — kept FAR away as a background ring (so the camera never clips them) const natTrees = ['nat_BirchTree_1','nat_BirchTree_3','nat_BirchTree_5','nat_MapleTree_1','nat_MapleTree_3','nat_MapleTree_5','nat_DeadTree_2','nat_DeadTree_6']; const natBush = ['nat_Bush','nat_Bush_Flowers','nat_Bush_Large_Flowers']; @@ -611,6 +606,7 @@ function startLevel(n) { level = ((n - 1) % 10) + 1; word = NUM_WORDS[level - 1]; document.getElementById('levelbadge').textContent = 'Level ' + level; + playEfx('levelup', 1.1); startFind(); } @@ -675,12 +671,14 @@ function accept(c) { c.collected = true; c.group.visible = false; score += c.value; updateScore(); burst(c.group.position, c.glow.material.color.getHex()); - playEfx('collect', 1.8); // louder coin-collect sound on success + if (c.value >= 5) playEfx('bonus', 1.4); // big jingle for stars/jewels + else if (c.kind === 'reward') playEfx('pickup', 1.6); // free-coin pickup + else playEfx(Math.random() < 0.5 ? 'collect' : 'collect2', 1.8); // louder coin-collect sound on success sfxCollect(); // + a bright sparkle note } function reject(c) { const now = performance.now(); - if (now - lastReject > 850) { lastReject = now; sfxWrong(); say('try_again'); } + if (now - lastReject > 850) { lastReject = now; playEfx('ohno', 1.5); sfxWrong(); say('try_again'); } // nudge the player off the wrong coin so they can try another const dx = playerGroup.position.x - c.x, dz = playerGroup.position.z - c.z, d = Math.hypot(dx, dz) || 1; playerGroup.position.x += dx/d * 0.7; playerGroup.position.z += dz/d * 0.7; @@ -689,15 +687,18 @@ function reject(c) { // ── level finished: celebrate + reward coins, then next level ── function celebrateLevel() { phase = 'reward'; clearCollectibles(); confetti(); + playEfx('playerwow', 1.4); // player's "wow!" cheer on finishing the level playEfx('complete', 1.4); // task-complete fanfare at a good level setTimeout(() => playEfx('cheer', 1.1), 300); // + crowd cheer say('level_complete', true); taskTitle().textContent = 'GREAT JOB! ⭐'; taskBody().innerHTML = `${level}${word.toUpperCase()}`; infoEl.textContent = '🎉 Level ' + level + ' done! Grab the coins!'; - for (let i = 0; i < 6; i++) { const [x, z] = freeSpot(); const star = i === 0; - spawnCollectible(star ? 'star' : 'coin-gold', x, z, - { hex: star ? '#ffe34d' : NUMBER_HEX, kind: 'reward', value: star ? 5 : 1 }); } + for (let i = 0; i < 6; i++) { const [x, z] = freeSpot(); + const special = i === 0 ? 'star' : (i === 1 ? 'jewel' : 'coin-gold'); // a star + a shiny jewel, rest coins + const big = i < 2; + spawnCollectible(special, x, z, + { hex: i === 0 ? '#ffe34d' : (i === 1 ? '#7be3ff' : NUMBER_HEX), kind: 'reward', value: big ? 5 : 1 }); } setTimeout(() => startLevel(level + 1), 6500); } @@ -858,7 +859,8 @@ document.getElementById('start-btn').addEventListener('click', () => { document.getElementById('start').style.display = 'none'; initAudio(); if (actx.state === 'suspended') actx.resume(); - ['wow','collect','jump','walk','complete','cheer','applause'].forEach(k => loadEfx(k).catch(()=>{})); + ['wow','playerwow','collect','collect2','pickup','jump','walk','complete','bonus','cheer','applause','ohno','levelup'] + .forEach(k => loadEfx(k).catch(()=>{})); startMusic(); // background music (reduced, random, looping) preload(['greet','instr_move','find_1','num_1','level_complete','try_again', 'cheer_0','cheer_1','cheer_2','cheer_3','cheer_4','cheer_5','cheer_6','cheer_7']); diff --git a/instr_infinity.mp3 b/instr_infinity.mp3 deleted file mode 100644 index 52f7bcba30c21be73c0e6065fd45b9155c37c911..0000000000000000000000000000000000000000 Binary files a/instr_infinity.mp3 and /dev/null differ diff --git a/instr_letters.mp3 b/instr_letters.mp3 deleted file mode 100644 index a251d6d19ee429648d354084e882ee326757b076..0000000000000000000000000000000000000000 Binary files a/instr_letters.mp3 and /dev/null differ diff --git a/instr_numbers.mp3 b/instr_numbers.mp3 deleted file mode 100644 index af6dfc27c93dc11c6c8ed5e231b1871fa6583418..0000000000000000000000000000000000000000 Binary files a/instr_numbers.mp3 and /dev/null differ diff --git a/letter_a.mp3 b/letter_a.mp3 deleted file mode 100644 index ead4281865c216ca575b8de7b138bc0afd2de331..0000000000000000000000000000000000000000 Binary files a/letter_a.mp3 and /dev/null differ diff --git a/letter_b.mp3 b/letter_b.mp3 deleted file mode 100644 index 9df7b335f9c85921684f530b1808fcdde1c17ba9..0000000000000000000000000000000000000000 Binary files a/letter_b.mp3 and /dev/null differ diff --git a/letter_c.mp3 b/letter_c.mp3 deleted file mode 100644 index 916883cd9fa9d7d6d10725de0c891f749bd089fe..0000000000000000000000000000000000000000 Binary files a/letter_c.mp3 and /dev/null differ diff --git a/letter_d.mp3 b/letter_d.mp3 deleted file mode 100644 index b909fa6e735590888b67716637fb902c291caece..0000000000000000000000000000000000000000 Binary files a/letter_d.mp3 and /dev/null differ diff --git a/letter_e.mp3 b/letter_e.mp3 deleted file mode 100644 index 8051a6b1c1b42c293f29448ed51b3d0e106c3cc1..0000000000000000000000000000000000000000 Binary files a/letter_e.mp3 and /dev/null differ diff --git a/letter_f.mp3 b/letter_f.mp3 deleted file mode 100644 index 02dda7db2025f3dc785025a5c9ede4bf3de01286..0000000000000000000000000000000000000000 Binary files a/letter_f.mp3 and /dev/null differ diff --git a/letter_g.mp3 b/letter_g.mp3 deleted file mode 100644 index 3ee4bfcf8fde9fa42d4cf87c177db2b0b1a69f02..0000000000000000000000000000000000000000 Binary files a/letter_g.mp3 and /dev/null differ diff --git a/letter_h.mp3 b/letter_h.mp3 deleted file mode 100644 index f6bdc9ab845ed5e2268356c5ba98c5e0a60d89e2..0000000000000000000000000000000000000000 Binary files a/letter_h.mp3 and /dev/null differ diff --git a/letter_i.mp3 b/letter_i.mp3 deleted file mode 100644 index 52f0fdb95c0412d889d6c71dbe1a2f86721f025b..0000000000000000000000000000000000000000 Binary files a/letter_i.mp3 and /dev/null differ diff --git a/letter_j.mp3 b/letter_j.mp3 deleted file mode 100644 index af1600d0135ca7caf1fd6f6b6a071b25b61e98ef..0000000000000000000000000000000000000000 Binary files a/letter_j.mp3 and /dev/null differ diff --git a/letter_k.mp3 b/letter_k.mp3 deleted file mode 100644 index ffa1684ddf2dd13e81ca1e4c307e8961e4c81039..0000000000000000000000000000000000000000 Binary files a/letter_k.mp3 and /dev/null differ diff --git a/letter_l.mp3 b/letter_l.mp3 deleted file mode 100644 index 3bb668bd12c611a7068858e6ac2385bdf7f70477..0000000000000000000000000000000000000000 Binary files a/letter_l.mp3 and /dev/null differ diff --git a/letter_m.mp3 b/letter_m.mp3 deleted file mode 100644 index 148d2bb4609ad6c2e6cf052064509aad8b98dd2a..0000000000000000000000000000000000000000 Binary files a/letter_m.mp3 and /dev/null differ diff --git a/letter_n.mp3 b/letter_n.mp3 deleted file mode 100644 index 479df976bf01d1bbd5543756a3fe4ea1f0b8dc23..0000000000000000000000000000000000000000 Binary files a/letter_n.mp3 and /dev/null differ diff --git a/letter_o.mp3 b/letter_o.mp3 deleted file mode 100644 index c194f2d5c450c7972ccdcafb55fd1952d057e3f8..0000000000000000000000000000000000000000 Binary files a/letter_o.mp3 and /dev/null differ diff --git a/letter_p.mp3 b/letter_p.mp3 deleted file mode 100644 index f0f7770a996ecb44043104b41f0c70ca489f17fc..0000000000000000000000000000000000000000 Binary files a/letter_p.mp3 and /dev/null differ diff --git a/letter_q.mp3 b/letter_q.mp3 deleted file mode 100644 index 02665579d87860e03ba66f252cf0fefcd9fd29dd..0000000000000000000000000000000000000000 Binary files a/letter_q.mp3 and /dev/null differ diff --git a/letter_r.mp3 b/letter_r.mp3 deleted file mode 100644 index 038734e16d6ad5082bcf991ad8f5a1a9b4e2bba8..0000000000000000000000000000000000000000 Binary files a/letter_r.mp3 and /dev/null differ diff --git a/letter_s.mp3 b/letter_s.mp3 deleted file mode 100644 index be6886ae9b7a4cd592db38ea7260bb90fd012706..0000000000000000000000000000000000000000 Binary files a/letter_s.mp3 and /dev/null differ diff --git a/letter_t.mp3 b/letter_t.mp3 deleted file mode 100644 index 00baa78edbaa3dde89232124eb0817fedb02d380..0000000000000000000000000000000000000000 Binary files a/letter_t.mp3 and /dev/null differ diff --git a/letter_u.mp3 b/letter_u.mp3 deleted file mode 100644 index 4abfd7de090b4d7601a706f2ce5932d371b88dd4..0000000000000000000000000000000000000000 Binary files a/letter_u.mp3 and /dev/null differ diff --git a/letter_v.mp3 b/letter_v.mp3 deleted file mode 100644 index 10f406c06a4f0554003447b8a9147d72a209777c..0000000000000000000000000000000000000000 Binary files a/letter_v.mp3 and /dev/null differ diff --git a/letter_w.mp3 b/letter_w.mp3 deleted file mode 100644 index 2bc9edecb9620c2b7188f0b7b879f67127a5ae34..0000000000000000000000000000000000000000 Binary files a/letter_w.mp3 and /dev/null differ diff --git a/letter_x.mp3 b/letter_x.mp3 deleted file mode 100644 index aef35cca0e4148698b45aa29ae29ccd6521d40f3..0000000000000000000000000000000000000000 Binary files a/letter_x.mp3 and /dev/null differ diff --git a/letter_y.mp3 b/letter_y.mp3 deleted file mode 100644 index b58e4ebadef45ca79b7b1b2cd6cbf85a4f8850df..0000000000000000000000000000000000000000 Binary files a/letter_y.mp3 and /dev/null differ diff --git a/letter_z.mp3 b/letter_z.mp3 deleted file mode 100644 index f4c85778af21a83dd7f6c93a976f780b7606cb0c..0000000000000000000000000000000000000000 Binary files a/letter_z.mp3 and /dev/null differ diff --git a/level_start.mp3 b/level_start.mp3 deleted file mode 100644 index 793700f3a11e516e234ed5ad6b5027e04b375e0e..0000000000000000000000000000000000000000 Binary files a/level_start.mp3 and /dev/null differ diff --git a/Sky.js b/libs/Sky.js similarity index 100% rename from Sky.js rename to libs/Sky.js diff --git a/audiocoffee-game-116679.mp3 b/sounds/audiocoffee-game-116679.mp3 similarity index 100% rename from audiocoffee-game-116679.mp3 rename to sounds/audiocoffee-game-116679.mp3 diff --git a/denis-pavlov-music-marimba-tropical-african-travel-game-197517.mp3 b/sounds/denis-pavlov-music-marimba-tropical-african-travel-game-197517.mp3 similarity index 100% rename from denis-pavlov-music-marimba-tropical-african-travel-game-197517.mp3 rename to sounds/denis-pavlov-music-marimba-tropical-african-travel-game-197517.mp3 diff --git a/good_b_music-fairytail-quest-for-game-394561.mp3 b/sounds/good_b_music-fairytail-quest-for-game-394561.mp3 similarity index 100% rename from good_b_music-fairytail-quest-for-game-394561.mp3 rename to sounds/good_b_music-fairytail-quest-for-game-394561.mp3 diff --git a/soundore-kid-366901.mp3 b/sounds/soundore-kid-366901.mp3 similarity index 100% rename from soundore-kid-366901.mp3 rename to sounds/soundore-kid-366901.mp3