├── .import ├── InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.md5 ├── InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.oggstr ├── InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.md5 ├── InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.oggstr ├── Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.md5 ├── Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.stex ├── Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.md5 ├── Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.stex ├── Player128_red.png-16077bffa5374b56179046232220ed03.md5 ├── Player128_red.png-16077bffa5374b56179046232220ed03.stex ├── Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.md5 ├── Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.stex ├── Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.md5 ├── Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.sample ├── bullet.png-0cfa4730ca774f7f73993ac2830dc645.md5 ├── bullet.png-0cfa4730ca774f7f73993ac2830dc645.stex ├── enemy1_blue.png-aad1bbca63c81428fad9f97929991111.md5 ├── enemy1_blue.png-aad1bbca63c81428fad9f97929991111.stex ├── enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.md5 ├── enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.stex ├── enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.md5 ├── enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.stex ├── enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.md5 ├── enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.stex ├── enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.md5 ├── enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.stex ├── enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.md5 ├── enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.stex ├── enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.md5 ├── enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.stex ├── enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.md5 ├── enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.stex ├── explode.wav-5a258ec431893e13fb7d572cb465c775.md5 ├── explode.wav-5a258ec431893e13fb7d572cb465c775.sample ├── explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.md5 ├── explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.stex ├── farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.md5 ├── farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.stex ├── farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.md5 ├── farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.stex ├── farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.md5 ├── farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.stex ├── flame.png-b5675a6edb9d269babcba73fa1ad4855.md5 ├── flame.png-b5675a6edb9d269babcba73fa1ad4855.stex ├── flame1.png-83af96484908fe301da18faf0f3c1594.md5 ├── flame1.png-83af96484908fe301da18faf0f3c1594.stex ├── flame2.png-98fbd4d216a89c046eee3b80601b2df8.md5 ├── flame2.png-98fbd4d216a89c046eee3b80601b2df8.stex ├── foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.md5 ├── foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.stex ├── icon.png-487276ed1e3a0c39cad0279d744ee560.md5 ├── icon.png-487276ed1e3a0c39cad0279d744ee560.stex ├── mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.md5 ├── mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.stex ├── mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.md5 ├── mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.stex ├── midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.md5 ├── midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.stex ├── title.png-dacd7c509f9375b399119151e9969add.md5 └── title.png-dacd7c509f9375b399119151e9969add.stex ├── Bullet.gd ├── Bullet.tscn ├── Enemy.gd ├── Enemy.tscn ├── Explosion.gd ├── Explosion.tscn ├── GameScene.gd ├── GameScene.tscn ├── Player.gd ├── Player.tscn ├── README.md ├── TitleScene.gd ├── TitleScene.tscn ├── assets.zip ├── assets ├── audio │ ├── InStormAndSunshine.ogg │ ├── InStormAndSunshine.ogg.import │ ├── explode │ │ ├── explode.wav │ │ ├── explode.wav.import │ │ └── source.txt │ ├── music │ │ ├── InStormAndSunshine.ogg │ │ └── InStormAndSunshine.ogg.import │ ├── rocket │ │ ├── FileSource.txt │ │ ├── Rocket.wav │ │ └── Rocket.wav.import │ └── sources.txt ├── fonts │ ├── animeace.ttf │ ├── animeace_b.ttf │ ├── animeace_i.ttf │ └── font info.txt └── graphics │ ├── bg │ ├── farground_cloud_1.png │ ├── farground_cloud_1.png.import │ ├── farground_cloud_2.png │ ├── farground_cloud_2.png.import │ ├── farground_mountains.png │ ├── farground_mountains.png.import │ ├── foreground_mountains.png │ ├── foreground_mountains.png.import │ ├── mid_ground_cloud_1.png │ ├── mid_ground_cloud_1.png.import │ ├── mid_ground_cloud_2.png │ ├── mid_ground_cloud_2.png.import │ ├── midground_mountains.png │ └── midground_mountains.png.import │ ├── bullet │ ├── bullet.png │ ├── bullet.png.import │ ├── flame.png │ ├── flame.png.import │ ├── flame1.png │ ├── flame1.png.import │ ├── flame2.png │ └── flame2.png.import │ ├── enemies │ ├── enemy1_blue.png │ ├── enemy1_blue.png.import │ ├── enemy1_green.png │ ├── enemy1_green.png.import │ ├── enemy1_red.png │ ├── enemy1_red.png.import │ ├── enemy1_yellow.png │ ├── enemy1_yellow.png.import │ ├── enemy2_blue.png │ ├── enemy2_blue.png.import │ ├── enemy2_pink.png │ ├── enemy2_pink.png.import │ ├── enemy2_red.png │ ├── enemy2_red.png.import │ ├── enemy2_yellow.png │ └── enemy2_yellow.png.import │ ├── explosion │ ├── explosion.png │ └── explosion.png.import │ ├── player │ ├── Player128_blue.png │ ├── Player128_blue.png.import │ ├── Player128_green.png │ ├── Player128_green.png.import │ ├── Player128_red.png │ ├── Player128_red.png.import │ ├── Player128_yellow.png │ └── Player128_yellow.png.import │ └── title │ ├── title.png │ └── title.png.import ├── default_env.tres ├── export_presets.cfg ├── globals.gd ├── icon.png ├── icon.png.import └── project.godot /.import/InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.md5: -------------------------------------------------------------------------------- 1 | source_md5="c3e9c2f308731aa5357956419926fb9e" 2 | dest_md5="72a3be716075b3ad5c920b84f3229fbc" 3 | 4 | -------------------------------------------------------------------------------- /.import/InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.oggstr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.oggstr -------------------------------------------------------------------------------- /.import/InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.md5: -------------------------------------------------------------------------------- 1 | source_md5="c3e9c2f308731aa5357956419926fb9e" 2 | dest_md5="72a3be716075b3ad5c920b84f3229fbc" 3 | 4 | -------------------------------------------------------------------------------- /.import/InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.oggstr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.oggstr -------------------------------------------------------------------------------- /.import/Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.md5: -------------------------------------------------------------------------------- 1 | source_md5="8be8fd9957c06a53c24061d13b57dbe0" 2 | dest_md5="51e77286981221637d6b5c33752abb6b" 3 | 4 | -------------------------------------------------------------------------------- /.import/Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.stex -------------------------------------------------------------------------------- /.import/Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.md5: -------------------------------------------------------------------------------- 1 | source_md5="8fe989d453bdb78558f567046d048750" 2 | dest_md5="282c232e3272557dde61761a885ffb73" 3 | 4 | -------------------------------------------------------------------------------- /.import/Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.stex -------------------------------------------------------------------------------- /.import/Player128_red.png-16077bffa5374b56179046232220ed03.md5: -------------------------------------------------------------------------------- 1 | source_md5="c9aad41e2f1654e474b060b4496bd31d" 2 | dest_md5="2c4a85d7456e9f25b0fca416a2edf1c0" 3 | 4 | -------------------------------------------------------------------------------- /.import/Player128_red.png-16077bffa5374b56179046232220ed03.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/Player128_red.png-16077bffa5374b56179046232220ed03.stex -------------------------------------------------------------------------------- /.import/Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.md5: -------------------------------------------------------------------------------- 1 | source_md5="6d382054bc549e4b20de31a9695d14e5" 2 | dest_md5="e31259f44ac8201f0cd8dc54a65e1f81" 3 | 4 | -------------------------------------------------------------------------------- /.import/Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.stex -------------------------------------------------------------------------------- /.import/Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.md5: -------------------------------------------------------------------------------- 1 | source_md5="a0b0c8fdd17e0adbfa9afe4e5c1e8087" 2 | dest_md5="9cf7d4fb57e9d15b040274e9b84da4e9" 3 | 4 | -------------------------------------------------------------------------------- /.import/Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.sample -------------------------------------------------------------------------------- /.import/bullet.png-0cfa4730ca774f7f73993ac2830dc645.md5: -------------------------------------------------------------------------------- 1 | source_md5="4b48d41ade13445c55ff59ac237459f2" 2 | dest_md5="0295da386b4dae19c951d04e9876b9ec" 3 | 4 | -------------------------------------------------------------------------------- /.import/bullet.png-0cfa4730ca774f7f73993ac2830dc645.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/bullet.png-0cfa4730ca774f7f73993ac2830dc645.stex -------------------------------------------------------------------------------- /.import/enemy1_blue.png-aad1bbca63c81428fad9f97929991111.md5: -------------------------------------------------------------------------------- 1 | source_md5="fb7abbc275810342bc92c75c7755503a" 2 | dest_md5="13654bb315f2f8195f9923ea64ae8808" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy1_blue.png-aad1bbca63c81428fad9f97929991111.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy1_blue.png-aad1bbca63c81428fad9f97929991111.stex -------------------------------------------------------------------------------- /.import/enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.md5: -------------------------------------------------------------------------------- 1 | source_md5="5fe0162d722015b2b55195b2b33958c1" 2 | dest_md5="f8db9e9c1b248fb73c26766058e10503" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.stex -------------------------------------------------------------------------------- /.import/enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.md5: -------------------------------------------------------------------------------- 1 | source_md5="fc582281a42df63c9415543aeba60a2a" 2 | dest_md5="65df3f70c6caefd666e7b4feb45b9b8f" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.stex -------------------------------------------------------------------------------- /.import/enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.md5: -------------------------------------------------------------------------------- 1 | source_md5="ca33a58500c43a95daef135ab32362c4" 2 | dest_md5="2bebbf921e318eb9b7d41d71f29a874f" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.stex -------------------------------------------------------------------------------- /.import/enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.md5: -------------------------------------------------------------------------------- 1 | source_md5="55002a47ad95c2258e6ecc2e4ed0469b" 2 | dest_md5="0a0258d340b4483a1c26950fe6f7b59d" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.stex -------------------------------------------------------------------------------- /.import/enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.md5: -------------------------------------------------------------------------------- 1 | source_md5="80cc181216495137753ef06ec21341bc" 2 | dest_md5="59e80dab002c0c39a82367dc68b7983d" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.stex -------------------------------------------------------------------------------- /.import/enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.md5: -------------------------------------------------------------------------------- 1 | source_md5="ef0e757abe021eb0df1a448bc1c973ef" 2 | dest_md5="1f1ede2d657eea470a50e4895ff1d12f" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.stex -------------------------------------------------------------------------------- /.import/enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.md5: -------------------------------------------------------------------------------- 1 | source_md5="7a1385a16840c89a5333abbbcc2ec77c" 2 | dest_md5="4be5e3d1e9c589eda646279b8a52bf4d" 3 | 4 | -------------------------------------------------------------------------------- /.import/enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.stex -------------------------------------------------------------------------------- /.import/explode.wav-5a258ec431893e13fb7d572cb465c775.md5: -------------------------------------------------------------------------------- 1 | source_md5="612a0581a8105eb1ce7b30bf2544f135" 2 | dest_md5="c03941d5c2c0256b2ea812a296f6e8f5" 3 | 4 | -------------------------------------------------------------------------------- /.import/explode.wav-5a258ec431893e13fb7d572cb465c775.sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/explode.wav-5a258ec431893e13fb7d572cb465c775.sample -------------------------------------------------------------------------------- /.import/explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.md5: -------------------------------------------------------------------------------- 1 | source_md5="34db39b1e2f35d46dcac5a40e856e4ba" 2 | dest_md5="d1cbff484f7ba1604a6d24441e441ee9" 3 | 4 | -------------------------------------------------------------------------------- /.import/explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.stex -------------------------------------------------------------------------------- /.import/farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.md5: -------------------------------------------------------------------------------- 1 | source_md5="97f221f8a574aca0af379ecf735d7a95" 2 | dest_md5="53de7f7cbba30d9391d0924c6e028e24" 3 | 4 | -------------------------------------------------------------------------------- /.import/farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.stex -------------------------------------------------------------------------------- /.import/farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.md5: -------------------------------------------------------------------------------- 1 | source_md5="a96fd099d4089d5786fff918e6baa53e" 2 | dest_md5="514f9e55422c5510d7b5bedd2977be4d" 3 | 4 | -------------------------------------------------------------------------------- /.import/farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.stex -------------------------------------------------------------------------------- /.import/farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.md5: -------------------------------------------------------------------------------- 1 | source_md5="b915c59b12894975b19ccabd8553c447" 2 | dest_md5="808411aa59e8b2c3aed1ce05c4679762" 3 | 4 | -------------------------------------------------------------------------------- /.import/farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.stex -------------------------------------------------------------------------------- /.import/flame.png-b5675a6edb9d269babcba73fa1ad4855.md5: -------------------------------------------------------------------------------- 1 | source_md5="08600005771c4a1c6b524b07945eb19c" 2 | dest_md5="87c963de06b6bdd6fda2bc3a9a1dc1c0" 3 | 4 | -------------------------------------------------------------------------------- /.import/flame.png-b5675a6edb9d269babcba73fa1ad4855.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/flame.png-b5675a6edb9d269babcba73fa1ad4855.stex -------------------------------------------------------------------------------- /.import/flame1.png-83af96484908fe301da18faf0f3c1594.md5: -------------------------------------------------------------------------------- 1 | source_md5="6ed52f7113f8c9ece30fefdc34cd0546" 2 | dest_md5="391467a8f6f2aaf73e3e2c3b3179c880" 3 | 4 | -------------------------------------------------------------------------------- /.import/flame1.png-83af96484908fe301da18faf0f3c1594.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/flame1.png-83af96484908fe301da18faf0f3c1594.stex -------------------------------------------------------------------------------- /.import/flame2.png-98fbd4d216a89c046eee3b80601b2df8.md5: -------------------------------------------------------------------------------- 1 | source_md5="baf1454864d8d6e6532cb08ea7d4af6d" 2 | dest_md5="b4d97b1df3f923755cce7b6026a16b79" 3 | 4 | -------------------------------------------------------------------------------- /.import/flame2.png-98fbd4d216a89c046eee3b80601b2df8.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/flame2.png-98fbd4d216a89c046eee3b80601b2df8.stex -------------------------------------------------------------------------------- /.import/foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.md5: -------------------------------------------------------------------------------- 1 | source_md5="f4efcd3db44b17b350aa776e3b347d06" 2 | dest_md5="4cb6cf514032c817eeffab85fcd1f1d2" 3 | 4 | -------------------------------------------------------------------------------- /.import/foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.stex -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5: -------------------------------------------------------------------------------- 1 | source_md5="8dd9ff1eebf38898a54579d8c01b0a88" 2 | dest_md5="da70afec3c66d4e872db67f808e12edb" 3 | 4 | -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex -------------------------------------------------------------------------------- /.import/mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.md5: -------------------------------------------------------------------------------- 1 | source_md5="9da955ccfdbee47a8a331ebcbc863080" 2 | dest_md5="62961b4e7bfebf0c8582dbb57c474309" 3 | 4 | -------------------------------------------------------------------------------- /.import/mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.stex -------------------------------------------------------------------------------- /.import/mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.md5: -------------------------------------------------------------------------------- 1 | source_md5="9391a2f8cc5a842e8ce784ed8a1e700f" 2 | dest_md5="46eac79d0da3684db3887610128ce3b4" 3 | 4 | -------------------------------------------------------------------------------- /.import/mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.stex -------------------------------------------------------------------------------- /.import/midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.md5: -------------------------------------------------------------------------------- 1 | source_md5="e3f70a4553b2ab7bdbf4b2e4e662ebe3" 2 | dest_md5="e7efb559d4fa24ad54a6697e4d0a1ae3" 3 | 4 | -------------------------------------------------------------------------------- /.import/midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.stex -------------------------------------------------------------------------------- /.import/title.png-dacd7c509f9375b399119151e9969add.md5: -------------------------------------------------------------------------------- 1 | source_md5="1c8de3a41eac5f5127a3d7c56061e557" 2 | dest_md5="1bf6b9afeb83ccb971555f49cac2048e" 3 | 4 | -------------------------------------------------------------------------------- /.import/title.png-dacd7c509f9375b399119151e9969add.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/.import/title.png-dacd7c509f9375b399119151e9969add.stex -------------------------------------------------------------------------------- /Bullet.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | # Called every frame. 'delta' is the elapsed time since the previous frame. 4 | func _process(delta): 5 | move_local_x(delta * 400) 6 | 7 | func _on_Area2D_area_entered(area): 8 | if(area.get_collision_layer_bit(2)): 9 | queue_free() -------------------------------------------------------------------------------- /Bullet.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=9 format=2] 2 | 3 | [ext_resource path="res://Bullet.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/graphics/bullet/bullet.png" type="Texture" id=2] 5 | [ext_resource path="res://assets/graphics/bullet/flame1.png" type="Texture" id=3] 6 | [ext_resource path="res://assets/graphics/bullet/flame2.png" type="Texture" id=4] 7 | [ext_resource path="res://assets/graphics/bullet/flame.png" type="Texture" id=5] 8 | [ext_resource path="res://assets/audio/rocket/Rocket.wav" type="AudioStream" id=6] 9 | 10 | [sub_resource type="SpriteFrames" id=1] 11 | 12 | animations = [ { 13 | "frames": [ ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ) ], 14 | "loop": true, 15 | "name": "MissileFlame", 16 | "speed": 5.0 17 | } ] 18 | 19 | [sub_resource type="RectangleShape2D" id=2] 20 | 21 | extents = Vector2( 23, 12 ) 22 | 23 | [node name="BulletRoot" type="Node2D"] 24 | script = ExtResource( 1 ) 25 | 26 | [node name="Bullet" type="Sprite" parent="."] 27 | texture = ExtResource( 2 ) 28 | 29 | [node name="AnimatedSprite" type="AnimatedSprite" parent="Bullet"] 30 | position = Vector2( -29.2527, -0.237827 ) 31 | z_index = -1 32 | frames = SubResource( 1 ) 33 | animation = "MissileFlame" 34 | frame = 2 35 | playing = true 36 | 37 | [node name="Area2D" type="Area2D" parent="."] 38 | collision_layer = 9 39 | collision_mask = 4 40 | 41 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] 42 | shape = SubResource( 2 ) 43 | 44 | [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] 45 | stream = ExtResource( 6 ) 46 | autoplay = true 47 | 48 | [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] 49 | -------------------------------------------------------------------------------- /Enemy.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | var sprite = null; 4 | const sprites = [ "enemy1_blue.png", "enemy1_green.png", 5 | "enemy1_red.png", "enemy1_yellow.png", 6 | "enemy2_blue.png", "enemy2_pink.png", 7 | "enemy2_red.png", "enemy2_yellow.png"] 8 | 9 | var speed = 100 10 | onready var explode = preload("res://Explosion.tscn").instance() 11 | 12 | func _ready(): 13 | speed = speed + (globals.currentStage * 10) 14 | 15 | func _enter_tree(): 16 | sprite = Sprite.new() 17 | sprite.texture = load("res://assets/graphics/enemies/" + sprites[randi()%sprites.size()]) 18 | add_child(sprite) 19 | 20 | func _process(delta): 21 | move_local_x(-delta*speed) 22 | 23 | func _on_Area2D_area_entered(area): 24 | #Hit by bullet 25 | if(area.get_collision_layer_bit(3)): 26 | 27 | explode.set_position(self.get_position()) 28 | get_parent().add_child(explode) 29 | globals.kills = globals.kills + 1 30 | queue_free() 31 | -------------------------------------------------------------------------------- /Enemy.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Enemy.gd" type="Script" id=1] 4 | 5 | [node name="EnemyRoot" type="Node2D"] 6 | script = ExtResource( 1 ) 7 | 8 | [node name="Area2D" type="Area2D" parent="."] 9 | collision_layer = 4 10 | collision_mask = 10 11 | 12 | [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Area2D"] 13 | position = Vector2( 0, 0.237827 ) 14 | polygon = PoolVector2Array( -66.856, -2.4403, -57.3429, -12.429, -51.6351, -21.2286, -34.9872, -24.0825, -25.2363, -38.1143, -14.0584, -42.633, 2.11377, -39.3034, 9.01075, -34.5469, 13.2916, -24.0825, 15.1942, -16.2342, 20.9021, -15.9964, 41.3552, -40.4926, 58.0031, -40.4926, 52.533, -16.7099, 63.9487, -14.5695, 64.1865, -11.7155, 55.8626, -4.81856, 64.4244, 8.49973, 58.0031, 13.2563, 51.1061, 20.6289, 54.1978, 28.2394, 17.8103, 33.4715, -0.502319, 27.7637, -9.30191, 26.3367, -19.5285, 37.5146, -36.8898, 34.8985, -38.5546, 28.715, -52.3485, 24.4341, -55.4403, 10.6402, -69.7099, 3.50537 ) 15 | 16 | [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] 17 | -------------------------------------------------------------------------------- /Explosion.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | func _ready(): 4 | $AnimationPlayer.play("Explode") -------------------------------------------------------------------------------- /Explosion.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://Explosion.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/graphics/explosion/explosion.png" type="Texture" id=2] 5 | [ext_resource path="res://assets/audio/explode/explode.wav" type="AudioStream" id=3] 6 | 7 | [sub_resource type="Animation" id=1] 8 | 9 | resource_name = "Explode" 10 | length = 2.0 11 | tracks/0/type = "value" 12 | tracks/0/path = NodePath("Sprite:frame") 13 | tracks/0/interp = 1 14 | tracks/0/loop_wrap = true 15 | tracks/0/imported = false 16 | tracks/0/enabled = true 17 | tracks/0/keys = { 18 | "times": PoolRealArray( 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6 ), 19 | "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), 20 | "update": 1, 21 | "values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] 22 | } 23 | tracks/1/type = "method" 24 | tracks/1/path = NodePath(".") 25 | tracks/1/interp = 1 26 | tracks/1/loop_wrap = true 27 | tracks/1/imported = false 28 | tracks/1/enabled = true 29 | tracks/1/keys = { 30 | "times": PoolRealArray( 2 ), 31 | "transitions": PoolRealArray( 1 ), 32 | "values": [ { 33 | "args": [ ], 34 | "method": "queue_free" 35 | } ] 36 | } 37 | tracks/2/type = "audio" 38 | tracks/2/path = NodePath("AudioStreamPlayer2D") 39 | tracks/2/interp = 1 40 | tracks/2/loop_wrap = true 41 | tracks/2/imported = false 42 | tracks/2/enabled = true 43 | tracks/2/keys = { 44 | "clips": [ { 45 | "end_offset": 0.0, 46 | "start_offset": 0.0, 47 | "stream": ExtResource( 3 ) 48 | } ], 49 | "times": PoolRealArray( 0 ) 50 | } 51 | 52 | [node name="Explosion" type="Node2D"] 53 | script = ExtResource( 1 ) 54 | 55 | [node name="Sprite" type="Sprite" parent="."] 56 | texture = ExtResource( 2 ) 57 | vframes = 3 58 | hframes = 3 59 | frame = 8 60 | 61 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 62 | anims/Explode = SubResource( 1 ) 63 | 64 | [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] 65 | stream = ExtResource( 3 ) 66 | 67 | -------------------------------------------------------------------------------- /GameScene.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | 4 | enum GameState { Loading, Running, GameOver } 5 | onready var State = GameState.Loading; 6 | onready var enemyObj = preload("res://Enemy.tscn") 7 | 8 | var Player = null 9 | var cam = null 10 | 11 | func _ready(): 12 | var labelText = "Stage " + str(globals.currentStage) 13 | $Label.set_text(labelText) 14 | $AnimationPlayer.play("Stage Display") 15 | 16 | # Called every frame. 'delta' is the elapsed time since the previous frame. 17 | func _process(delta): 18 | $HUD/Kills.set_text("Kills:" + str(globals.kills)) 19 | pass 20 | 21 | func _input(event): 22 | if(State == GameState.GameOver): 23 | get_tree().change_scene("TitleScene.tscn") 24 | 25 | func startAnimationDone(): 26 | $Label.visible = false 27 | Player = load("res://Player.tscn").instance() 28 | Player.position = Vector2(300,720/2) 29 | cam = Camera2D.new() 30 | cam.position.x = 360 31 | cam.make_current() 32 | Player.add_child(cam) 33 | add_child(Player) 34 | SpawnEnemies() 35 | State = GameState.Running 36 | 37 | func _on_Area2D_area_entered(area): 38 | #Did we hit the trigger to queue boss fight? 39 | if(area.get_collision_layer_bit(4)): 40 | if(State == GameState.Running): 41 | Player.speed = 0 42 | globals.currentStage = globals.currentStage + 1 43 | get_tree().reload_current_scene() 44 | 45 | 46 | func _on_GroundArea_area_entered(area): 47 | if(State == GameState.Running): 48 | Player.explode() 49 | 50 | func PlayerDied(): 51 | for i in Player.get_children(): 52 | i.queue_free() 53 | remove_child(Player) 54 | State = GameState.GameOver 55 | 56 | $Label.set_text("Game Over") 57 | $Label.visible = true 58 | $Label.set_position(Vector2(1280/2 - 200, 720/2)) 59 | 60 | func SpawnEnemy(x,y): 61 | 62 | var enemy = enemyObj.instance() 63 | enemy.set_position(Vector2(x,y)) 64 | add_child(enemy) 65 | 66 | func SpawnEnemies(): 67 | randomize() 68 | # One extra plane per stage 69 | for i in range(0,10+globals.currentStage): 70 | SpawnEnemy(700 + randi()%5000,randi()%int(get_viewport_rect().size.y)) 71 | 72 | func SpawnBossWave(): 73 | for i in range(0,10): 74 | SpawnEnemy(3800 + randi()%220, randi()%720) -------------------------------------------------------------------------------- /GameScene.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=12 format=2] 2 | 3 | [ext_resource path="res://GameScene.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/graphics/bg/farground_mountains.png" type="Texture" id=2] 5 | [ext_resource path="res://assets/graphics/bg/midground_mountains.png" type="Texture" id=3] 6 | [ext_resource path="res://assets/graphics/bg/foreground_mountains.png" type="Texture" id=4] 7 | [ext_resource path="res://assets/graphics/bg/mid_ground_cloud_1.png" type="Texture" id=5] 8 | [ext_resource path="res://assets/graphics/bg/mid_ground_cloud_2.png" type="Texture" id=6] 9 | [ext_resource path="res://assets/fonts/animeace.ttf" type="DynamicFontData" id=7] 10 | 11 | [sub_resource type="RectangleShape2D" id=4] 12 | 13 | extents = Vector2( 30, 360 ) 14 | 15 | [sub_resource type="DynamicFont" id=1] 16 | 17 | size = 60 18 | outline_size = 1 19 | font_data = ExtResource( 7 ) 20 | 21 | [sub_resource type="Animation" id=2] 22 | 23 | resource_name = "Stage Display" 24 | length = 4.0 25 | tracks/0/type = "value" 26 | tracks/0/path = NodePath("Label:percent_visible") 27 | tracks/0/interp = 1 28 | tracks/0/loop_wrap = true 29 | tracks/0/imported = false 30 | tracks/0/enabled = true 31 | tracks/0/keys = { 32 | "times": PoolRealArray( 0, 3.5 ), 33 | "transitions": PoolRealArray( 1, 1 ), 34 | "update": 0, 35 | "values": [ 0.0, 1.0 ] 36 | } 37 | tracks/1/type = "method" 38 | tracks/1/path = NodePath(".") 39 | tracks/1/interp = 1 40 | tracks/1/loop_wrap = true 41 | tracks/1/imported = false 42 | tracks/1/enabled = true 43 | tracks/1/keys = { 44 | "times": PoolRealArray( 4 ), 45 | "transitions": PoolRealArray( 1 ), 46 | "values": [ { 47 | "args": [ ], 48 | "method": "startAnimationDone" 49 | } ] 50 | } 51 | 52 | [sub_resource type="DynamicFont" id=3] 53 | 54 | size = 32 55 | outline_size = 1 56 | outline_color = Color( 0, 0, 0, 1 ) 57 | font_data = ExtResource( 7 ) 58 | 59 | [node name="GameSceneRoot" type="Node2D"] 60 | position = Vector2( -10.8151, -54.0756 ) 61 | script = ExtResource( 1 ) 62 | 63 | [node name="Mountains" type="Node" parent="."] 64 | editor/display_folded = true 65 | 66 | [node name="farground_mountains" type="Sprite" parent="Mountains"] 67 | position = Vector2( 1022.87, 559.554 ) 68 | texture = ExtResource( 2 ) 69 | 70 | [node name="farground_mountains2" type="Sprite" parent="Mountains"] 71 | position = Vector2( 3068.61, 559.732 ) 72 | texture = ExtResource( 2 ) 73 | 74 | [node name="midground_mountains" type="Sprite" parent="Mountains"] 75 | position = Vector2( 1024.72, 663.189 ) 76 | texture = ExtResource( 3 ) 77 | 78 | [node name="midground_mountains2" type="Sprite" parent="Mountains"] 79 | position = Vector2( 3070.46, 663.366 ) 80 | texture = ExtResource( 3 ) 81 | 82 | [node name="foreground_mountains" type="Sprite" parent="Mountains"] 83 | position = Vector2( 1021.02, 674.293 ) 84 | texture = ExtResource( 4 ) 85 | 86 | [node name="foreground_mountains2" type="Sprite" parent="Mountains"] 87 | position = Vector2( 3066.76, 674.47 ) 88 | texture = ExtResource( 4 ) 89 | 90 | [node name="Clouds" type="Node" parent="."] 91 | editor/display_folded = true 92 | 93 | [node name="ParallaxBackground" type="ParallaxBackground" parent="Clouds"] 94 | 95 | [node name="ParallaxLayer" type="ParallaxLayer" parent="Clouds/ParallaxBackground"] 96 | motion_scale = Vector2( 0.5, 1 ) 97 | motion_mirroring = Vector2( 2048, 0 ) 98 | 99 | [node name="mid_ground_cloud_1" type="Sprite" parent="Clouds/ParallaxBackground/ParallaxLayer"] 100 | position = Vector2( 1032.45, 287.318 ) 101 | texture = ExtResource( 5 ) 102 | 103 | [node name="ParallaxBackground" type="ParallaxBackground" parent="Clouds/ParallaxBackground/ParallaxLayer"] 104 | 105 | [node name="ParallaxLayer" type="ParallaxLayer" parent="Clouds/ParallaxBackground/ParallaxLayer/ParallaxBackground"] 106 | position = Vector2( -142.961, -58.8663 ) 107 | motion_scale = Vector2( 0.75, 1 ) 108 | motion_mirroring = Vector2( 2048, 0 ) 109 | 110 | [node name="mid_ground_cloud_2" type="Sprite" parent="Clouds/ParallaxBackground/ParallaxLayer/ParallaxBackground/ParallaxLayer"] 111 | position = Vector2( 1175.41, 526.988 ) 112 | texture = ExtResource( 6 ) 113 | 114 | [node name="Triggers" type="Node" parent="."] 115 | 116 | [node name="Area2D" type="Area2D" parent="Triggers"] 117 | position = Vector2( -194.802, 9.74011 ) 118 | collision_layer = 17 119 | collision_mask = 16 120 | 121 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Triggers/Area2D"] 122 | position = Vector2( 3543.44, 360.383 ) 123 | shape = SubResource( 4 ) 124 | 125 | [node name="Label" type="Label" parent="."] 126 | margin_left = 537.882 127 | margin_top = 401.428 128 | margin_right = 776.882 129 | margin_bottom = 468.428 130 | custom_fonts/font = SubResource( 1 ) 131 | custom_colors/font_color = Color( 0, 0, 0, 1 ) 132 | text = "STAGE" 133 | align = 1 134 | valign = 1 135 | 136 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 137 | "anims/Stage Display" = SubResource( 2 ) 138 | 139 | [node name="HUD" type="CanvasLayer" parent="."] 140 | 141 | [node name="Kills" type="Label" parent="HUD"] 142 | margin_left = 1095.38 143 | margin_top = 35.8748 144 | margin_right = 1235.38 145 | margin_bottom = 71.8748 146 | custom_fonts/font = SubResource( 3 ) 147 | text = "Kills:0" 148 | 149 | [connection signal="area_entered" from="Triggers/Area2D" to="." method="_on_Area2D_area_entered"] 150 | -------------------------------------------------------------------------------- /Player.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | # Called when the node enters the scene tree for the first time. 3 | var speed = 150 4 | var verticalMovement = 0 5 | const MAX_VERTICAL_MOVEMENT = 200 6 | var bulletObj = null 7 | const RATE_OF_FIRE = 3.0 8 | var dying = false 9 | 10 | onready var shotCooldown = $Timer 11 | onready var explode = preload("res://Explosion.tscn").instance() 12 | 13 | func _ready(): 14 | bulletObj = load("res://Bullet.tscn") 15 | shotCooldown.wait_time = 1.0/RATE_OF_FIRE 16 | shotCooldown.one_shot = true 17 | 18 | func _process(delta): 19 | move_local_x(speed*delta) 20 | if(self.position.y > 1 && self.position.y <= get_viewport_rect().size.y): 21 | move_local_y(verticalMovement*delta) 22 | else: 23 | if(self.position.y < 1): 24 | move_local_y(10) #Bounce off top 25 | verticalMovement = 0 26 | if(self.position.y > get_viewport_rect().size.y): 27 | move_local_y(-10) #Bounce off bottom 28 | verticalMovement = 0 29 | if(dying == true): 30 | if(shotCooldown.time_left == 0): 31 | get_node("/root/GameSceneRoot").PlayerDied() 32 | queue_free() 33 | print("Dead") 34 | 35 | 36 | func stop(): 37 | speed = 0 38 | 39 | func explode(): 40 | explode.set_position(self.get_position()) 41 | get_parent().add_child(explode) 42 | globals.kills = globals.kills + 1 43 | shotCooldown.wait_time = 2.5 44 | shotCooldown.start() 45 | $PlayerSprite.visible = false 46 | dying = true 47 | 48 | 49 | 50 | func _input(event): 51 | if(event.is_action("PLAYER_UP")): 52 | if(verticalMovement >= -MAX_VERTICAL_MOVEMENT): 53 | verticalMovement-=10 54 | if(event.is_action("PLAYER_DOWN")): 55 | if(verticalMovement <= MAX_VERTICAL_MOVEMENT): 56 | verticalMovement+=10 57 | if(event.is_action("PLAYER_SHOOT")): 58 | if(shotCooldown.time_left == 0): 59 | var bullet = bulletObj.instance() 60 | bullet.position = self.get_position() 61 | bullet.position.y = bullet.position.y + 20 62 | get_node("/root/GameSceneRoot").add_child(bullet) 63 | shotCooldown.start() 64 | 65 | 66 | func _on_Area2D_area_entered(area): 67 | #Layer 2 is another enemy 68 | if(area.get_collision_layer_bit(2)): 69 | explode() 70 | pass # Replace with function body. 71 | -------------------------------------------------------------------------------- /Player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://Player.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/graphics/player/Player128_red.png" type="Texture" id=2] 5 | 6 | [node name="PlayerRoot" type="Node2D"] 7 | script = ExtResource( 1 ) 8 | 9 | [node name="PlayerSprite" type="Sprite" parent="."] 10 | texture = ExtResource( 2 ) 11 | 12 | [node name="Area2D" type="Area2D" parent="."] 13 | editor/display_folded = true 14 | collision_layer = 51 15 | collision_mask = 55 16 | 17 | [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Area2D"] 18 | polygon = PoolVector2Array( 10.785, -29.46, 23.5487, -27.2593, 34.5519, -10.5345, 50.8365, -2.61224, 64.9206, 7.51067, 64.9206, 11.0317, 50.3964, 24.2355, 39.8334, 25.996, 33.2315, 32.1578, -5.49966, 33.038, -12.5417, 29.0769, -15.1824, 32.1578, -48.192, 33.038, -49.5123, 23.3552, -48.192, 18.5138, -68.4378, 17.6336, -68.4378, 11.9119, -57.8748, 7.51067, -64.9168, -37.3823, -44.6709, -34.7415, -22.6646, -3.93262, -3.29904, -19.3371 ) 19 | 20 | [node name="Timer" type="Timer" parent="."] 21 | 22 | [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Godot2DTutorial 2 | A Complete Godot 2D Game Step By Step 3 | 4 | This source code is the complete respository (code, project files and assets) released as part of the tutorial series at http://devga.me/tutorials/Godot2D. The zip file containing the assets if you want to do this step by step instead of cloning this archive can be [downloaded here](https://github.com/serapth/Godot2DTutorial/raw/master/assets.zip). 5 | 6 | There is a 70pg PDF version of the tutorial [available to Patreons](https://www.patreon.com/gamefromscratch) (thanks, by the way!). 7 | 8 | It is released under the MIT open source license. The vast majority of art assets in this project were created by [Robert @ Game Developer Studio](https://www.gamedeveloperstudio.com/) 9 | ![Project Image](https://pbs.twimg.com/media/Dxx-tCPUYAABhSk.jpg). 10 | -------------------------------------------------------------------------------- /TitleScene.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | func _ready(): 4 | globals.kills = 0 5 | globals.currentStage = 0 6 | 7 | func _on_QuitGameButton_pressed(): 8 | get_tree().quit() 9 | 10 | 11 | func _on_NewGameButton_pressed(): 12 | get_tree().change_scene("GameScene.tscn") 13 | -------------------------------------------------------------------------------- /TitleScene.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://TitleScene.gd" type="Script" id=1] 4 | [ext_resource path="res://assets/graphics/title/title.png" type="Texture" id=2] 5 | [ext_resource path="res://assets/audio/music/InStormAndSunshine.ogg" type="AudioStream" id=3] 6 | [ext_resource path="res://assets/fonts/animeace.ttf" type="DynamicFontData" id=4] 7 | 8 | [sub_resource type="DynamicFont" id=1] 9 | 10 | size = 64 11 | outline_size = 4 12 | outline_color = Color( 0, 0, 0, 1 ) 13 | font_data = ExtResource( 4 ) 14 | 15 | [node name="Control" type="Control"] 16 | anchor_right = 1.0 17 | anchor_bottom = 1.0 18 | script = ExtResource( 1 ) 19 | 20 | [node name="TextureRect" type="TextureRect" parent="."] 21 | margin_right = 40.0 22 | margin_bottom = 40.0 23 | texture = ExtResource( 2 ) 24 | 25 | [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] 26 | stream = ExtResource( 3 ) 27 | autoplay = true 28 | 29 | [node name="QuitGameButton" type="ToolButton" parent="."] 30 | margin_left = 406.144 31 | margin_top = 524.994 32 | margin_right = 835.144 33 | margin_bottom = 603.994 34 | custom_fonts/font = SubResource( 1 ) 35 | text = "Quit Game" 36 | 37 | [node name="NewGameButton" type="ToolButton" parent="."] 38 | margin_left = 411.066 39 | margin_top = 426.54 40 | margin_right = 840.066 41 | margin_bottom = 505.54 42 | custom_fonts/font = SubResource( 1 ) 43 | text = "New Game" 44 | 45 | [connection signal="pressed" from="QuitGameButton" to="." method="_on_QuitGameButton_pressed"] 46 | [connection signal="pressed" from="NewGameButton" to="." method="_on_NewGameButton_pressed"] 47 | -------------------------------------------------------------------------------- /assets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets.zip -------------------------------------------------------------------------------- /assets/audio/InStormAndSunshine.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/audio/InStormAndSunshine.ogg -------------------------------------------------------------------------------- /assets/audio/InStormAndSunshine.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/audio/InStormAndSunshine.ogg" 10 | dest_files=[ "res://.import/InStormAndSunshine.ogg-4bd328a02985952ea2947254fb178bea.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=true 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /assets/audio/explode/explode.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/audio/explode/explode.wav -------------------------------------------------------------------------------- /assets/audio/explode/explode.wav.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wav" 4 | type="AudioStreamSample" 5 | path="res://.import/explode.wav-5a258ec431893e13fb7d572cb465c775.sample" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/audio/explode/explode.wav" 10 | dest_files=[ "res://.import/explode.wav-5a258ec431893e13fb7d572cb465c775.sample" ] 11 | 12 | [params] 13 | 14 | force/8_bit=false 15 | force/mono=false 16 | force/max_rate=false 17 | force/max_rate_hz=44100 18 | edit/trim=true 19 | edit/normalize=true 20 | edit/loop=false 21 | compress/mode=0 22 | -------------------------------------------------------------------------------- /assets/audio/explode/source.txt: -------------------------------------------------------------------------------- 1 | https://freesound.org/people/Bekir_VirtualDJ/sounds/132833/ -------------------------------------------------------------------------------- /assets/audio/music/InStormAndSunshine.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/audio/music/InStormAndSunshine.ogg -------------------------------------------------------------------------------- /assets/audio/music/InStormAndSunshine.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="ogg_vorbis" 4 | type="AudioStreamOGGVorbis" 5 | path="res://.import/InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.oggstr" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/audio/music/InStormAndSunshine.ogg" 10 | dest_files=[ "res://.import/InStormAndSunshine.ogg-da437e7e3da6a2b53e7fa1bf19b28938.oggstr" ] 11 | 12 | [params] 13 | 14 | loop=true 15 | loop_offset=0 16 | -------------------------------------------------------------------------------- /assets/audio/rocket/FileSource.txt: -------------------------------------------------------------------------------- 1 | http://soundbible.com/709-Bottle-Rocket.html -------------------------------------------------------------------------------- /assets/audio/rocket/Rocket.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/audio/rocket/Rocket.wav -------------------------------------------------------------------------------- /assets/audio/rocket/Rocket.wav.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wav" 4 | type="AudioStreamSample" 5 | path="res://.import/Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.sample" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/audio/rocket/Rocket.wav" 10 | dest_files=[ "res://.import/Rocket.wav-e58e8fd38d080ce1aeeb9fff3b85be89.sample" ] 11 | 12 | [params] 13 | 14 | force/8_bit=false 15 | force/mono=false 16 | force/max_rate=false 17 | force/max_rate_hz=44100 18 | edit/trim=true 19 | edit/normalize=true 20 | edit/loop=false 21 | compress/mode=0 22 | -------------------------------------------------------------------------------- /assets/audio/sources.txt: -------------------------------------------------------------------------------- 1 | https://archive.org/details/WorldClassMarches/InStormAndSunshine.mp3 -------------------------------------------------------------------------------- /assets/fonts/animeace.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/fonts/animeace.ttf -------------------------------------------------------------------------------- /assets/fonts/animeace_b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/fonts/animeace_b.ttf -------------------------------------------------------------------------------- /assets/fonts/animeace_i.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/fonts/animeace_i.ttf -------------------------------------------------------------------------------- /assets/fonts/font info.txt: -------------------------------------------------------------------------------- 1 | This font is (C) 2001 Nate Piekos. All Rights Reserved. 2 | Created for Blambot Fonts 3 | 4 | This font is freeware for independent comic book creation and 5 | non-profit use ONLY. ( This excludes use by "mainstream" publishers, 6 | (Marvel, DC, Dark Horse, Oni, Image, SLG, Top Cow, and their 7 | subsidiaries) without a license fee. Use by a "mainstream" publisher 8 | (or it's employee), and use for non-comic book production 9 | (eg. magazine ads, merchandise lables etc.) incurs a license fee 10 | be paid to the designer, Nate Piekos. 11 | This font may not be redistributed without the author's permission and 12 | never without this text file missing from the .zip. 13 | 14 | Blambot/Nate Piekos makes no guarantees about these font files, 15 | the completeness of character sets, or safety of these files on your 16 | computer. By installing these fonts on your system, you prove that 17 | you have read and understand the above. 18 | 19 | For more free and original fonts visit Blambot. 20 | www.blambot.com 21 | 22 | Nate Piekos 23 | blambot@piekosarts.com 24 | -------------------------------------------------------------------------------- /assets/graphics/bg/farground_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/farground_cloud_1.png -------------------------------------------------------------------------------- /assets/graphics/bg/farground_cloud_1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/farground_cloud_1.png" 10 | dest_files=[ "res://.import/farground_cloud_1.png-e684363a2831e04a8b004d4357d32d22.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/farground_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/farground_cloud_2.png -------------------------------------------------------------------------------- /assets/graphics/bg/farground_cloud_2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/farground_cloud_2.png" 10 | dest_files=[ "res://.import/farground_cloud_2.png-4acc6799d33d9d4fe9ec520412e31873.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/farground_mountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/farground_mountains.png -------------------------------------------------------------------------------- /assets/graphics/bg/farground_mountains.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/farground_mountains.png" 10 | dest_files=[ "res://.import/farground_mountains.png-2f66ee31b40b603affdd3ed5878eee33.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/foreground_mountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/foreground_mountains.png -------------------------------------------------------------------------------- /assets/graphics/bg/foreground_mountains.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/foreground_mountains.png" 10 | dest_files=[ "res://.import/foreground_mountains.png-3306881bc9fe834f00e5ad398a91ab62.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/mid_ground_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/mid_ground_cloud_1.png -------------------------------------------------------------------------------- /assets/graphics/bg/mid_ground_cloud_1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/mid_ground_cloud_1.png" 10 | dest_files=[ "res://.import/mid_ground_cloud_1.png-6b372a1acaaaa4dfc9f8de4b38de03b4.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/mid_ground_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/mid_ground_cloud_2.png -------------------------------------------------------------------------------- /assets/graphics/bg/mid_ground_cloud_2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/mid_ground_cloud_2.png" 10 | dest_files=[ "res://.import/mid_ground_cloud_2.png-008ff39581e76ddca2d3102afb0f3e27.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bg/midground_mountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bg/midground_mountains.png -------------------------------------------------------------------------------- /assets/graphics/bg/midground_mountains.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bg/midground_mountains.png" 10 | dest_files=[ "res://.import/midground_mountains.png-7bbfd7ea34fb0818def160810f0a40ed.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bullet/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bullet/bullet.png -------------------------------------------------------------------------------- /assets/graphics/bullet/bullet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/bullet.png-0cfa4730ca774f7f73993ac2830dc645.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bullet/bullet.png" 10 | dest_files=[ "res://.import/bullet.png-0cfa4730ca774f7f73993ac2830dc645.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bullet/flame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bullet/flame.png -------------------------------------------------------------------------------- /assets/graphics/bullet/flame.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/flame.png-b5675a6edb9d269babcba73fa1ad4855.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bullet/flame.png" 10 | dest_files=[ "res://.import/flame.png-b5675a6edb9d269babcba73fa1ad4855.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bullet/flame1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bullet/flame1.png -------------------------------------------------------------------------------- /assets/graphics/bullet/flame1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/flame1.png-83af96484908fe301da18faf0f3c1594.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bullet/flame1.png" 10 | dest_files=[ "res://.import/flame1.png-83af96484908fe301da18faf0f3c1594.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/bullet/flame2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/bullet/flame2.png -------------------------------------------------------------------------------- /assets/graphics/bullet/flame2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/flame2.png-98fbd4d216a89c046eee3b80601b2df8.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/bullet/flame2.png" 10 | dest_files=[ "res://.import/flame2.png-98fbd4d216a89c046eee3b80601b2df8.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy1_blue.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_blue.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy1_blue.png-aad1bbca63c81428fad9f97929991111.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy1_blue.png" 10 | dest_files=[ "res://.import/enemy1_blue.png-aad1bbca63c81428fad9f97929991111.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy1_green.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_green.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy1_green.png" 10 | dest_files=[ "res://.import/enemy1_green.png-5166804b12a57f8adda6c53d410d12a6.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy1_red.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_red.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy1_red.png" 10 | dest_files=[ "res://.import/enemy1_red.png-d6b6d0b70646edb577fd48e680fcfea0.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy1_yellow.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy1_yellow.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy1_yellow.png" 10 | dest_files=[ "res://.import/enemy1_yellow.png-cec78eed23bbc3fdfbfcf0f4c266e3a3.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy2_blue.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_blue.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy2_blue.png" 10 | dest_files=[ "res://.import/enemy2_blue.png-57e240a352f0312bd2fcc5443233b0c9.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy2_pink.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_pink.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy2_pink.png" 10 | dest_files=[ "res://.import/enemy2_pink.png-9faeda987afab3bcc1c1f4d5fd65ee7d.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy2_red.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_red.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy2_red.png" 10 | dest_files=[ "res://.import/enemy2_red.png-465d2c25dbbb0a8a257b82b60773590f.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/enemies/enemy2_yellow.png -------------------------------------------------------------------------------- /assets/graphics/enemies/enemy2_yellow.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/enemies/enemy2_yellow.png" 10 | dest_files=[ "res://.import/enemy2_yellow.png-071b32d355698510e86be38f5b5cbe75.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/explosion/explosion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/explosion/explosion.png -------------------------------------------------------------------------------- /assets/graphics/explosion/explosion.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/explosion/explosion.png" 10 | dest_files=[ "res://.import/explosion.png-9a0aa830e23b2c6d4d7f0fab8a1e4daf.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/player/Player128_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/player/Player128_blue.png -------------------------------------------------------------------------------- /assets/graphics/player/Player128_blue.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/player/Player128_blue.png" 10 | dest_files=[ "res://.import/Player128_blue.png-629b9c1e1961c6348dadad2aab4f2d58.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/player/Player128_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/player/Player128_green.png -------------------------------------------------------------------------------- /assets/graphics/player/Player128_green.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/player/Player128_green.png" 10 | dest_files=[ "res://.import/Player128_green.png-cef8e46ce9975fe2a1afcefc445cc8ee.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/player/Player128_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/player/Player128_red.png -------------------------------------------------------------------------------- /assets/graphics/player/Player128_red.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Player128_red.png-16077bffa5374b56179046232220ed03.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/player/Player128_red.png" 10 | dest_files=[ "res://.import/Player128_red.png-16077bffa5374b56179046232220ed03.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/player/Player128_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/player/Player128_yellow.png -------------------------------------------------------------------------------- /assets/graphics/player/Player128_yellow.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/player/Player128_yellow.png" 10 | dest_files=[ "res://.import/Player128_yellow.png-8719c1757bd7efb997a9cef43858e983.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /assets/graphics/title/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/assets/graphics/title/title.png -------------------------------------------------------------------------------- /assets/graphics/title/title.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/title.png-dacd7c509f9375b399119151e9969add.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://assets/graphics/title/title.png" 10 | dest_files=[ "res://.import/title.png-dacd7c509f9375b399119151e9969add.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=2] 2 | 3 | [sub_resource type="ProceduralSky" id=1] 4 | 5 | 6 | [resource] 7 | 8 | background_mode = 2 9 | background_sky = SubResource( 1 ) 10 | 11 | -------------------------------------------------------------------------------- /export_presets.cfg: -------------------------------------------------------------------------------- 1 | [preset.0] 2 | 3 | name="Windows Desktop" 4 | platform="Windows Desktop" 5 | runnable=true 6 | custom_features="" 7 | export_filter="all_resources" 8 | include_filter="" 9 | exclude_filter="" 10 | export_path="C:/temp/AirCombat.exe" 11 | patch_list=PoolStringArray( ) 12 | 13 | [preset.0.options] 14 | 15 | texture_format/bptc=false 16 | texture_format/s3tc=true 17 | texture_format/etc=false 18 | texture_format/etc2=false 19 | texture_format/no_bptc_fallbacks=true 20 | binary_format/64_bits=true 21 | custom_template/release="" 22 | custom_template/debug="" 23 | application/icon="" 24 | application/file_version="" 25 | application/product_version="1.0" 26 | application/company_name="DevGa.Me" 27 | application/product_name="Air Combat Godot Demo" 28 | application/file_description="Greatest Tutorial Ever!" 29 | application/copyright="" 30 | application/trademarks="" 31 | -------------------------------------------------------------------------------- /globals.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | var currentStage = 1 4 | var kills = 0 -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serapth/Godot2DTutorial/098b25b8b2256b661fbbd5bb0c716fd74ef93572/icon.png -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://icon.png" 10 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] 11 | 12 | [params] 13 | 14 | compress/mode=0 15 | compress/lossy_quality=0.7 16 | compress/hdr_mode=0 17 | compress/bptc_ldr=0 18 | compress/normal_map=0 19 | flags/repeat=0 20 | flags/filter=true 21 | flags/mipmaps=false 22 | flags/anisotropic=false 23 | flags/srgb=2 24 | process/fix_alpha_border=true 25 | process/premult_alpha=false 26 | process/HDR_as_SRGB=false 27 | process/invert_color=false 28 | stream=false 29 | size_limit=0 30 | detect_3d=true 31 | svg/scale=1.0 32 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=4 10 | 11 | _global_script_classes=[ ] 12 | _global_script_class_icons={ 13 | 14 | } 15 | 16 | [application] 17 | 18 | config/name="AirCombat" 19 | run/main_scene="res://TitleScene.tscn" 20 | config/icon="res://icon.png" 21 | 22 | [autoload] 23 | 24 | globals="*res://globals.gd" 25 | 26 | [display] 27 | 28 | window/size/width=1280 29 | window/size/height=720 30 | 31 | [input] 32 | 33 | PLAYER_UP={ 34 | "deadzone": 0.5, 35 | "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":16777232,"unicode":0,"echo":false,"script":null) 36 | ] 37 | } 38 | PLAYER_DOWN={ 39 | "deadzone": 0.5, 40 | "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":16777234,"unicode":0,"echo":false,"script":null) 41 | ] 42 | } 43 | PLAYER_SHOOT={ 44 | "deadzone": 0.5, 45 | "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) 46 | ] 47 | } 48 | 49 | [layer_names] 50 | 51 | 2d_physics/layer_1="all" 52 | 2d_physics/layer_2="player" 53 | 2d_physics/layer_3="enemy" 54 | 2d_physics/layer_4="bullet" 55 | 2d_physics/layer_5="trigger" 56 | 2d_physics/layer_6="ground" 57 | 58 | [rendering] 59 | 60 | environment/default_clear_color=Color( 0.0745098, 0.235294, 0.784314, 1 ) 61 | environment/default_environment="res://default_env.tres" 62 | --------------------------------------------------------------------------------