Browse Source

2d/platformer works flawlessly on Godot 3.1 beta 8 (#310)

* 2d/platformer works flawlessly on Godot 3.1 beta 8
* fix warnings for inferred node type
* every script has a class_name
* formatted code for better clarity
* each files has its own subfolder

* As suggested by @akien-mga
* states are back to const instead of enum
* class_name comes after extends
* better code style

* PascalCase for nodes
TestDotCom 6 years ago
parent
commit
81441c42b7
76 changed files with 758 additions and 1079 deletions
  1. 24 0
      2d/platformer/Stage.tscn
  2. 0 0
      2d/platformer/TileSet.tres
  3. 0 0
      2d/platformer/TilesetEdit.tscn
  4. 0 0
      2d/platformer/audio/music.ogg
  5. 15 0
      2d/platformer/audio/music.ogg.import
  6. 0 0
      2d/platformer/audio/sound_coin.wav
  7. 21 0
      2d/platformer/audio/sound_coin.wav.import
  8. 0 0
      2d/platformer/audio/sound_explode.wav
  9. 21 0
      2d/platformer/audio/sound_explode.wav.import
  10. 0 0
      2d/platformer/audio/sound_hit.wav
  11. 21 0
      2d/platformer/audio/sound_hit.wav.import
  12. 0 0
      2d/platformer/audio/sound_jump.wav
  13. 21 0
      2d/platformer/audio/sound_jump.wav.import
  14. 0 0
      2d/platformer/audio/sound_shoot.wav
  15. 21 0
      2d/platformer/audio/sound_shoot.wav.import
  16. 76 0
      2d/platformer/background/ParallaxBg.tscn
  17. 0 0
      2d/platformer/background/scroll_bg_cloud_1.png
  18. 8 6
      2d/platformer/background/scroll_bg_cloud_1.png.import
  19. 0 0
      2d/platformer/background/scroll_bg_cloud_2.png
  20. 8 6
      2d/platformer/background/scroll_bg_cloud_2.png.import
  21. 0 0
      2d/platformer/background/scroll_bg_cloud_3.png
  22. 8 6
      2d/platformer/background/scroll_bg_cloud_3.png.import
  23. 0 0
      2d/platformer/background/scroll_bg_fg_1.png
  24. 8 6
      2d/platformer/background/scroll_bg_fg_1.png.import
  25. 0 0
      2d/platformer/background/scroll_bg_fg_2.png
  26. 8 6
      2d/platformer/background/scroll_bg_fg_2.png.import
  27. 0 0
      2d/platformer/background/scroll_bg_sky.png
  28. 8 6
      2d/platformer/background/scroll_bg_sky.png.import
  29. 0 192
      2d/platformer/bullet.tscn
  30. 0 8
      2d/platformer/coin.gd
  31. 23 101
      2d/platformer/coin/Coin.tscn
  32. 11 0
      2d/platformer/coin/coin.gd
  33. 0 0
      2d/platformer/coin/coin.png
  34. 8 6
      2d/platformer/coin/coin.png.import
  35. 35 138
      2d/platformer/enemy/Enemy.tscn
  36. 14 13
      2d/platformer/enemy/enemy.gd
  37. 0 0
      2d/platformer/enemy/enemy.png
  38. 8 6
      2d/platformer/enemy/enemy.png.import
  39. 5 3
      2d/platformer/icon.png.import
  40. 0 28
      2d/platformer/moving_platform.tscn
  41. 0 18
      2d/platformer/music.ogg.import
  42. 0 30
      2d/platformer/one_way_platform.tscn
  43. 0 32
      2d/platformer/osb_right.png.import
  44. 0 105
      2d/platformer/parallax_bg.tscn
  45. 16 0
      2d/platformer/platform/MovingPlatform.tscn
  46. 17 0
      2d/platformer/platform/OneWayPlatform.tscn
  47. 5 3
      2d/platformer/platform/moving_platform.gd
  48. 0 0
      2d/platformer/platform/moving_platform.png
  49. 8 6
      2d/platformer/platform/moving_platform.png.import
  50. 0 0
      2d/platformer/platform/one_way_platform.png
  51. 8 6
      2d/platformer/platform/one_way_platform.png.import
  52. 95 0
      2d/platformer/player/Bullet.tscn
  53. 41 124
      2d/platformer/player/Player.tscn
  54. 5 2
      2d/platformer/player/bullet.gd
  55. 0 0
      2d/platformer/player/bullet.png
  56. 8 6
      2d/platformer/player/bullet.png.import
  57. 0 0
      2d/platformer/player/osb_fire.png
  58. 8 6
      2d/platformer/player/osb_fire.png.import
  59. 0 0
      2d/platformer/player/osb_jump.png
  60. 8 6
      2d/platformer/player/osb_jump.png.import
  61. 0 0
      2d/platformer/player/osb_left.png
  62. 34 0
      2d/platformer/player/osb_left.png.import
  63. 0 0
      2d/platformer/player/osb_right.png
  64. 8 6
      2d/platformer/player/osb_right.png.import
  65. 12 7
      2d/platformer/player/player.gd
  66. 0 0
      2d/platformer/player/robot_demo.png
  67. 34 0
      2d/platformer/player/robot_demo.png.import
  68. 74 7
      2d/platformer/project.godot
  69. 0 32
      2d/platformer/robot_demo.png.import
  70. 0 24
      2d/platformer/sound_coin.wav.import
  71. 0 24
      2d/platformer/sound_explode.wav.import
  72. 0 24
      2d/platformer/sound_hit.wav.import
  73. 0 24
      2d/platformer/sound_jump.wav.import
  74. 0 24
      2d/platformer/sound_shoot.wav.import
  75. 0 29
      2d/platformer/stage.tscn
  76. 5 3
      2d/platformer/tiles_demo.png.import

File diff suppressed because it is too large
+ 24 - 0
2d/platformer/Stage.tscn


+ 0 - 0
2d/platformer/tileset.tres → 2d/platformer/TileSet.tres


+ 0 - 0
2d/platformer/tileset_edit.tscn → 2d/platformer/TilesetEdit.tscn


+ 0 - 0
2d/platformer/music.ogg → 2d/platformer/audio/music.ogg


+ 15 - 0
2d/platformer/audio/music.ogg.import

@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/music.ogg-552a37c4bfe46d894cb8004cf1c345ad.oggstr"
+
+[deps]
+
+source_file="res://audio/music.ogg"
+dest_files=[ "res://.import/music.ogg-552a37c4bfe46d894cb8004cf1c345ad.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0

+ 0 - 0
2d/platformer/sound_coin.wav → 2d/platformer/audio/sound_coin.wav


+ 21 - 0
2d/platformer/audio/sound_coin.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/sound_coin.wav-e18cceeba8b7dc02bbb940b85bcad99a.sample"
+
+[deps]
+
+source_file="res://audio/sound_coin.wav"
+dest_files=[ "res://.import/sound_coin.wav-e18cceeba8b7dc02bbb940b85bcad99a.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

+ 0 - 0
2d/platformer/sound_explode.wav → 2d/platformer/audio/sound_explode.wav


+ 21 - 0
2d/platformer/audio/sound_explode.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/sound_explode.wav-536668d880bfb277b9e5253774598e9e.sample"
+
+[deps]
+
+source_file="res://audio/sound_explode.wav"
+dest_files=[ "res://.import/sound_explode.wav-536668d880bfb277b9e5253774598e9e.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

+ 0 - 0
2d/platformer/sound_hit.wav → 2d/platformer/audio/sound_hit.wav


+ 21 - 0
2d/platformer/audio/sound_hit.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/sound_hit.wav-6c98c4eeb2c6ac3fc45dc4a7ebd8602f.sample"
+
+[deps]
+
+source_file="res://audio/sound_hit.wav"
+dest_files=[ "res://.import/sound_hit.wav-6c98c4eeb2c6ac3fc45dc4a7ebd8602f.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

+ 0 - 0
2d/platformer/sound_jump.wav → 2d/platformer/audio/sound_jump.wav


+ 21 - 0
2d/platformer/audio/sound_jump.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/sound_jump.wav-7e05b84e4426c7461dd15838765e210b.sample"
+
+[deps]
+
+source_file="res://audio/sound_jump.wav"
+dest_files=[ "res://.import/sound_jump.wav-7e05b84e4426c7461dd15838765e210b.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

+ 0 - 0
2d/platformer/sound_shoot.wav → 2d/platformer/audio/sound_shoot.wav


+ 21 - 0
2d/platformer/audio/sound_shoot.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/sound_shoot.wav-a37772efd1dbcd76c4fe35742f502bb7.sample"
+
+[deps]
+
+source_file="res://audio/sound_shoot.wav"
+dest_files=[ "res://.import/sound_shoot.wav-a37772efd1dbcd76c4fe35742f502bb7.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

+ 76 - 0
2d/platformer/background/ParallaxBg.tscn

@@ -0,0 +1,76 @@
+[gd_scene load_steps=7 format=2]
+
+[ext_resource path="res://background/scroll_bg_sky.png" type="Texture" id=1]
+[ext_resource path="res://background/scroll_bg_cloud_1.png" type="Texture" id=2]
+[ext_resource path="res://background/scroll_bg_cloud_2.png" type="Texture" id=3]
+[ext_resource path="res://background/scroll_bg_cloud_3.png" type="Texture" id=4]
+[ext_resource path="res://background/scroll_bg_fg_2.png" type="Texture" id=5]
+[ext_resource path="res://background/scroll_bg_fg_1.png" type="Texture" id=6]
+
+[node name="ParallaxBg" type="ParallaxBackground"]
+scroll_base_scale = Vector2( 0.7, 0 )
+
+[node name="Sky" type="ParallaxLayer" parent="."]
+motion_mirroring = Vector2( 800, 0 )
+
+[node name="Sprite" type="Sprite" parent="Sky"]
+scale = Vector2( 32, 0.94 )
+texture = ExtResource( 1 )
+centered = false
+
+[node name="Clouds" type="ParallaxLayer" parent="."]
+motion_scale = Vector2( 0.1, 1 )
+motion_mirroring = Vector2( 800, 0 )
+
+[node name="Sprite1" type="Sprite" parent="Clouds"]
+position = Vector2( 28, 127 )
+texture = ExtResource( 2 )
+centered = false
+
+[node name="Sprite2" type="Sprite" parent="Clouds"]
+position = Vector2( 404, 24 )
+texture = ExtResource( 2 )
+centered = false
+
+[node name="Sprite3" type="Sprite" parent="Clouds"]
+position = Vector2( 154, 46 )
+texture = ExtResource( 3 )
+centered = false
+
+[node name="Sprite4" type="Sprite" parent="Clouds"]
+position = Vector2( 525, 130 )
+texture = ExtResource( 3 )
+centered = false
+
+[node name="Sprite5" type="Sprite" parent="Clouds"]
+position = Vector2( 255, 158 )
+texture = ExtResource( 4 )
+centered = false
+
+[node name="Sprite6" type="Sprite" parent="Clouds"]
+position = Vector2( 674, 70 )
+texture = ExtResource( 4 )
+centered = false
+
+[node name="Mount2" type="ParallaxLayer" parent="."]
+motion_scale = Vector2( 0.2, 1 )
+motion_mirroring = Vector2( 800, 0 )
+
+[node name="Sprite" type="Sprite" parent="Mount2"]
+position = Vector2( 0, 225 )
+texture = ExtResource( 5 )
+centered = false
+region_enabled = true
+region_rect = Rect2( 0, 0, 800, 256 )
+
+[node name="Mount1" type="ParallaxLayer" parent="."]
+motion_scale = Vector2( 0.4, 1 )
+motion_mirroring = Vector2( 800, 0 )
+
+[node name="Sprite" type="Sprite" parent="Mount1"]
+position = Vector2( 0, 225 )
+texture = ExtResource( 6 )
+centered = false
+region_enabled = true
+region_rect = Rect2( 0, 0, 800, 256 )
+

+ 0 - 0
2d/platformer/scroll_bg_cloud_1.png → 2d/platformer/background/scroll_bg_cloud_1.png


+ 8 - 6
2d/platformer/scroll_bg_cloud_1.png.import → 2d/platformer/background/scroll_bg_cloud_1.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_cloud_1.png-bad76c04aedb60c1b863fc1c1c6387ee.stex"
+path="res://.import/scroll_bg_cloud_1.png-19f55c25a7e1985c92542faa0106888e.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_cloud_1.png"
-source_md5="469ececd0862fb9ee972f4c9afa833e5"
-
-dest_files=[ "res://.import/scroll_bg_cloud_1.png-bad76c04aedb60c1b863fc1c1c6387ee.stex" ]
-dest_md5="37255df31e22594ad1c9dc765be60b4e"
+source_file="res://background/scroll_bg_cloud_1.png"
+dest_files=[ "res://.import/scroll_bg_cloud_1.png-19f55c25a7e1985c92542faa0106888e.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/scroll_bg_cloud_2.png → 2d/platformer/background/scroll_bg_cloud_2.png


+ 8 - 6
2d/platformer/scroll_bg_cloud_2.png.import → 2d/platformer/background/scroll_bg_cloud_2.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_cloud_2.png-cb251e8e91cb5450d56a9d0584943db0.stex"
+path="res://.import/scroll_bg_cloud_2.png-869806dcc546591f3d754e3b845c61c9.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_cloud_2.png"
-source_md5="5acccab15a17f158a267e2cbf2c8d037"
-
-dest_files=[ "res://.import/scroll_bg_cloud_2.png-cb251e8e91cb5450d56a9d0584943db0.stex" ]
-dest_md5="99986e2aacf77e0243ac594877e65af2"
+source_file="res://background/scroll_bg_cloud_2.png"
+dest_files=[ "res://.import/scroll_bg_cloud_2.png-869806dcc546591f3d754e3b845c61c9.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/scroll_bg_cloud_3.png → 2d/platformer/background/scroll_bg_cloud_3.png


+ 8 - 6
2d/platformer/scroll_bg_cloud_3.png.import → 2d/platformer/background/scroll_bg_cloud_3.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_cloud_3.png-6bbd67870db2f55a0c1b4685aa91e57c.stex"
+path="res://.import/scroll_bg_cloud_3.png-831c6ed9fa8b4070081428a936bcc2f7.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_cloud_3.png"
-source_md5="b5e117acfbd6979087b6ac12f030bfcb"
-
-dest_files=[ "res://.import/scroll_bg_cloud_3.png-6bbd67870db2f55a0c1b4685aa91e57c.stex" ]
-dest_md5="3f2a1b5817369909200dd83ff99265e9"
+source_file="res://background/scroll_bg_cloud_3.png"
+dest_files=[ "res://.import/scroll_bg_cloud_3.png-831c6ed9fa8b4070081428a936bcc2f7.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/scroll_bg_fg_1.png → 2d/platformer/background/scroll_bg_fg_1.png


+ 8 - 6
2d/platformer/scroll_bg_fg_1.png.import → 2d/platformer/background/scroll_bg_fg_1.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_fg_1.png-af0d9d2847aea6e03f54efcc2d9b6f06.stex"
+path="res://.import/scroll_bg_fg_1.png-20c90ebded5095c6863cdf6b1b82882d.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_fg_1.png"
-source_md5="27792a0e523d6009f00b02b495ed577a"
-
-dest_files=[ "res://.import/scroll_bg_fg_1.png-af0d9d2847aea6e03f54efcc2d9b6f06.stex" ]
-dest_md5="02ce953a24b02bfc10ee9491a276041a"
+source_file="res://background/scroll_bg_fg_1.png"
+dest_files=[ "res://.import/scroll_bg_fg_1.png-20c90ebded5095c6863cdf6b1b82882d.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/scroll_bg_fg_2.png → 2d/platformer/background/scroll_bg_fg_2.png


+ 8 - 6
2d/platformer/scroll_bg_fg_2.png.import → 2d/platformer/background/scroll_bg_fg_2.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_fg_2.png-2419a5b3b81617ba71d0ad50d23bf6f1.stex"
+path="res://.import/scroll_bg_fg_2.png-2b54decd69e8aff2caa33640a336d1e9.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_fg_2.png"
-source_md5="0a4fca6ccb08f3673b208b2730138413"
-
-dest_files=[ "res://.import/scroll_bg_fg_2.png-2419a5b3b81617ba71d0ad50d23bf6f1.stex" ]
-dest_md5="c90197251b52fbb36f4bde85bfa9a424"
+source_file="res://background/scroll_bg_fg_2.png"
+dest_files=[ "res://.import/scroll_bg_fg_2.png-2b54decd69e8aff2caa33640a336d1e9.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/scroll_bg_sky.png → 2d/platformer/background/scroll_bg_sky.png


+ 8 - 6
2d/platformer/scroll_bg_sky.png.import → 2d/platformer/background/scroll_bg_sky.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/scroll_bg_sky.png-df3e8b7d076f566a7bd83c6d4f9b57cf.stex"
+path="res://.import/scroll_bg_sky.png-377ea542199b2e23d7a822ed940ea99e.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://scroll_bg_sky.png"
-source_md5="98017e52a97035ac8cece7bf2e9c7022"
-
-dest_files=[ "res://.import/scroll_bg_sky.png-df3e8b7d076f566a7bd83c6d4f9b57cf.stex" ]
-dest_md5="fe52a91404b775bdab02d228e5b0d75c"
+source_file="res://background/scroll_bg_sky.png"
+dest_files=[ "res://.import/scroll_bg_sky.png-377ea542199b2e23d7a822ed940ea99e.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 192
2d/platformer/bullet.tscn

@@ -1,192 +0,0 @@
-[gd_scene load_steps=9 format=2]
-
-[ext_resource path="res://bullet.gd" type="Script" id=1]
-[ext_resource path="res://bullet.png" type="Texture" id=2]
-
-[sub_resource type="CanvasItemMaterial" id=1]
-
-render_priority = 0
-blend_mode = 0
-light_mode = 0
-
-[sub_resource type="CanvasItemMaterial" id=8]
-
-render_priority = 0
-blend_mode = 1
-light_mode = 0
-
-[sub_resource type="ParticlesMaterial" id=7]
-
-render_priority = 0
-trail_divisor = 1
-emission_shape = 0
-flag_align_y = false
-flag_rotate_y = false
-flag_disable_z = true
-spread = 0.0
-flatness = 0.0
-gravity = Vector3( 0, 0, 0 )
-initial_velocity = 0.0
-initial_velocity_random = 0.0
-angular_velocity = 0.0
-angular_velocity_random = 0.0
-orbit_velocity = 0.0
-orbit_velocity_random = 0.0
-linear_accel = 0.0
-linear_accel_random = 0.0
-radial_accel = 0.0
-radial_accel_random = 0.0
-tangential_accel = 0.0
-tangential_accel_random = 0.0
-damping = 0.0
-damping_random = 0.0
-angle = 0.0
-angle_random = 0.0
-scale = 0.8
-scale_random = 0.0
-color = Color( 1, 1, 1, 0.705882 )
-hue_variation = 0.0
-hue_variation_random = 0.0
-anim_speed = 0.0
-anim_speed_random = 0.0
-anim_offset = 0.0
-anim_offset_random = 0.0
-anim_loop = false
-_sections_unfolded = [ "Color", "Trail" ]
-
-[sub_resource type="CanvasItemMaterial" id=4]
-
-render_priority = 0
-blend_mode = 0
-light_mode = 0
-
-[sub_resource type="CircleShape2D" id=5]
-
-custom_solver_bias = 0.0
-radius = 10.0
-
-[sub_resource type="Animation" id=6]
-
-length = 1.5
-loop = false
-step = 0.1
-tracks/0/type = "method"
-tracks/0/path = NodePath(".")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/keys = {
-"times": PoolRealArray( 1.31 ),
-"transitions": PoolRealArray( 1 ),
-"values": [ {
-"args": [  ],
-"method": "queue_free"
-} ]
-}
-tracks/1/type = "value"
-tracks/1/path = NodePath("sprite:self_modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/keys = {
-"times": PoolRealArray( 0, 1 ),
-"transitions": PoolRealArray( 1, 1 ),
-"update": 0,
-"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
-}
-tracks/2/type = "value"
-tracks/2/path = NodePath("Particles2D:self_modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/keys = {
-"times": PoolRealArray( 0, 0.5 ),
-"transitions": PoolRealArray( 1, 1 ),
-"update": 0,
-"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
-}
-
-[node name="bullet" type="RigidBody2D" index="0"]
-
-material = SubResource( 1 )
-input_pickable = false
-collision_layer = 1
-collision_mask = 1
-mode = 0
-mass = 1.0
-friction = 1.0
-bounce = 0.0
-gravity_scale = 1.0
-custom_integrator = false
-continuous_cd = 2
-contacts_reported = 1
-contact_monitor = true
-sleeping = false
-can_sleep = true
-linear_velocity = Vector2( 0, 0 )
-linear_damp = -1.0
-angular_velocity = 0.0
-angular_damp = -1.0
-script = ExtResource( 1 )
-_sections_unfolded = [ "Angular", "Collision", "Linear", "Material", "Pickable", "Transform", "Visibility", "Z" ]
-
-[node name="Particles2D" type="Particles2D" parent="." index="0"]
-
-material = SubResource( 8 )
-emitting = true
-amount = 8
-lifetime = 0.3
-one_shot = false
-preprocess = 0.0
-speed_scale = 3.0
-explosiveness = 0.0
-randomness = 0.0
-fixed_fps = 0
-fract_delta = true
-visibility_rect = Rect2( -100, -100, 200, 200 )
-local_coords = false
-draw_order = 0
-process_material = SubResource( 7 )
-texture = ExtResource( 2 )
-normal_map = null
-h_frames = 1
-v_frames = 1
-_sections_unfolded = [ "Drawing", "Process Material", "Time", "Visibility" ]
-
-[node name="sprite" type="Sprite" parent="." index="1"]
-
-material = SubResource( 4 )
-texture = ExtResource( 2 )
-_sections_unfolded = [ "Animation", "Material", "Offset", "Region", "Transform", "Visibility", "Z" ]
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="2"]
-
-shape = SubResource( 5 )
-_sections_unfolded = [ "Material", "Transform", "Visibility", "Z" ]
-
-[node name="Timer" type="Timer" parent="." index="3"]
-
-process_mode = 1
-wait_time = 1.0
-one_shot = true
-autostart = true
-
-[node name="anim" type="AnimationPlayer" parent="." index="4"]
-
-playback_process_mode = 1
-playback_default_blend_time = 0.0
-root_node = NodePath("..")
-anims/shutdown = SubResource( 6 )
-playback/active = true
-playback/speed = 1.0
-blend_times = [  ]
-autoplay = ""
-
-[connection signal="body_entered" from="." to="." method="_on_bullet_body_enter"]
-
-[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
-
-

+ 0 - 8
2d/platformer/coin.gd

@@ -1,8 +0,0 @@
-extends Area2D
-
-var taken=false
-
-func _on_coin_body_enter( body ):
-	if not taken and body is preload("res://player.gd"):
-		$anim.play("taken")
-		taken = true

+ 23 - 101
2d/platformer/coin.tscn → 2d/platformer/coin/Coin.tscn

@@ -1,21 +1,21 @@
 [gd_scene load_steps=11 format=2]
 [gd_scene load_steps=11 format=2]
 
 
-[ext_resource path="res://coin.gd" type="Script" id=1]
-[ext_resource path="res://coin.png" type="Texture" id=2]
-[ext_resource path="res://sound_coin.wav" type="AudioStream" id=3]
-[ext_resource path="res://bullet.png" type="Texture" id=4]
+[ext_resource path="res://coin/coin.gd" type="Script" id=1]
+[ext_resource path="res://coin/coin.png" type="Texture" id=2]
+[ext_resource path="res://audio/sound_coin.wav" type="AudioStream" id=3]
+[ext_resource path="res://player/bullet.png" type="Texture" id=4]
 
 
 [sub_resource type="Animation" id=1]
 [sub_resource type="Animation" id=1]
-
 resource_name = "spin"
 resource_name = "spin"
 length = 1.5
 length = 1.5
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5 ),
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
@@ -24,15 +24,14 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=2]
 [sub_resource type="Animation" id=2]
-
 length = 8.0
 length = 8.0
-loop = false
 step = 0.0
 step = 0.0
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -44,6 +43,7 @@ tracks/1/path = NodePath(".")
 tracks/1/interp = 1
 tracks/1/interp = 1
 tracks/1/loop_wrap = true
 tracks/1/loop_wrap = true
 tracks/1/imported = false
 tracks/1/imported = false
+tracks/1/enabled = true
 tracks/1/keys = {
 tracks/1/keys = {
 "times": PoolRealArray( 2.7 ),
 "times": PoolRealArray( 2.7 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -53,10 +53,11 @@ tracks/1/keys = {
 } ]
 } ]
 }
 }
 tracks/2/type = "value"
 tracks/2/type = "value"
-tracks/2/path = NodePath("particles:emitting")
+tracks/2/path = NodePath("Particles:emitting")
 tracks/2/interp = 1
 tracks/2/interp = 1
 tracks/2/loop_wrap = true
 tracks/2/loop_wrap = true
 tracks/2/imported = false
 tracks/2/imported = false
+tracks/2/enabled = true
 tracks/2/keys = {
 tracks/2/keys = {
 "times": PoolRealArray( 0, 0.98 ),
 "times": PoolRealArray( 0, 0.98 ),
 "transitions": PoolRealArray( 1, 1 ),
 "transitions": PoolRealArray( 1, 1 ),
@@ -64,10 +65,11 @@ tracks/2/keys = {
 "values": [ true, false ]
 "values": [ true, false ]
 }
 }
 tracks/3/type = "value"
 tracks/3/type = "value"
-tracks/3/path = NodePath("sprite:self_modulate")
+tracks/3/path = NodePath("Sprite:self_modulate")
 tracks/3/interp = 1
 tracks/3/interp = 1
 tracks/3/loop_wrap = true
 tracks/3/loop_wrap = true
 tracks/3/imported = false
 tracks/3/imported = false
+tracks/3/enabled = true
 tracks/3/keys = {
 tracks/3/keys = {
 "times": PoolRealArray( 0, 0.33 ),
 "times": PoolRealArray( 0, 0.33 ),
 "transitions": PoolRealArray( 1, 1 ),
 "transitions": PoolRealArray( 1, 1 ),
@@ -75,10 +77,11 @@ tracks/3/keys = {
 "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
 "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
 }
 }
 tracks/4/type = "value"
 tracks/4/type = "value"
-tracks/4/path = NodePath("sound:playing")
+tracks/4/path = NodePath("Sound:playing")
 tracks/4/interp = 1
 tracks/4/interp = 1
 tracks/4/loop_wrap = true
 tracks/4/loop_wrap = true
 tracks/4/imported = false
 tracks/4/imported = false
+tracks/4/enabled = true
 tracks/4/keys = {
 tracks/4/keys = {
 "times": PoolRealArray( 0.01 ),
 "times": PoolRealArray( 0.01 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -88,132 +91,51 @@ tracks/4/keys = {
 
 
 [sub_resource type="CircleShape2D" id=3]
 [sub_resource type="CircleShape2D" id=3]
 
 
-custom_solver_bias = 0.0
-radius = 10.0
-
 [sub_resource type="CanvasItemMaterial" id=4]
 [sub_resource type="CanvasItemMaterial" id=4]
-
-render_priority = 0
 blend_mode = 1
 blend_mode = 1
-light_mode = 0
 
 
 [sub_resource type="GradientTexture" id=5]
 [sub_resource type="GradientTexture" id=5]
 
 
-width = 2048
-
 [sub_resource type="ParticlesMaterial" id=6]
 [sub_resource type="ParticlesMaterial" id=6]
-
-render_priority = 0
-trail_divisor = 1
 emission_shape = 1
 emission_shape = 1
 emission_sphere_radius = 10.0
 emission_sphere_radius = 10.0
-flag_align_y = false
-flag_rotate_y = false
 flag_disable_z = true
 flag_disable_z = true
-spread = 45.0
-flatness = 0.0
 gravity = Vector3( 0, 90, 0 )
 gravity = Vector3( 0, 90, 0 )
 initial_velocity = 121.98
 initial_velocity = 121.98
-initial_velocity_random = 0.0
 angular_velocity = -2.49891e+38
 angular_velocity = -2.49891e+38
-angular_velocity_random = 0.0
 orbit_velocity = 0.0
 orbit_velocity = 0.0
 orbit_velocity_random = 0.0
 orbit_velocity_random = 0.0
-linear_accel = 0.0
-linear_accel_random = 0.0
-radial_accel = 0.0
-radial_accel_random = 0.0
-tangential_accel = 0.0
-tangential_accel_random = 0.0
-damping = 0.0
-damping_random = 0.0
-angle = 0.0
-angle_random = 0.0
 scale = 0.2
 scale = 0.2
-scale_random = 0.0
 color_ramp = SubResource( 5 )
 color_ramp = SubResource( 5 )
-hue_variation = 0.0
-hue_variation_random = 0.0
-anim_speed = 0.0
-anim_speed_random = 0.0
-anim_offset = 0.0
-anim_offset_random = 0.0
-anim_loop = false
-
-[node name="coin" type="Area2D"]
 
 
-input_pickable = true
-gravity_vec = Vector2( 0, 1 )
-gravity = 98.0
-linear_damp = 0.1
-angular_damp = 1.0
-audio_bus_override = false
-audio_bus_name = "Master"
+[node name="Coin" type="Area2D"]
 script = ExtResource( 1 )
 script = ExtResource( 1 )
 
 
-[node name="sprite" type="Sprite" parent="."]
-
+[node name="Sprite" type="Sprite" parent="."]
 texture = ExtResource( 2 )
 texture = ExtResource( 2 )
 hframes = 4
 hframes = 4
 
 
-[node name="anim" type="AnimationPlayer" parent="."]
-
-playback_process_mode = 1
-playback_default_blend_time = 0.0
-root_node = NodePath("..")
+[node name="Anim" type="AnimationPlayer" parent="."]
+autoplay = "spin"
 anims/spin = SubResource( 1 )
 anims/spin = SubResource( 1 )
 anims/taken = SubResource( 2 )
 anims/taken = SubResource( 2 )
-playback/active = true
-playback/speed = 3.0
-blend_times = [  ]
-autoplay = "spin"
-
-[node name="collision" type="CollisionShape2D" parent="."]
 
 
+[node name="Collision" type="CollisionShape2D" parent="."]
 shape = SubResource( 3 )
 shape = SubResource( 3 )
 
 
-[node name="sound" type="AudioStreamPlayer2D" parent="."]
-
+[node name="Sound" type="AudioStreamPlayer2D" parent="."]
 stream = ExtResource( 3 )
 stream = ExtResource( 3 )
-volume_db = 0.0
-autoplay = false
-max_distance = 2000.0
-attenuation = 1.0
-bus = "Master"
-area_mask = 1
-
-[node name="particles" type="Particles2D" parent="."]
 
 
+[node name="Particles" type="Particles2D" parent="."]
 material = SubResource( 4 )
 material = SubResource( 4 )
 emitting = false
 emitting = false
-amount = 8
 lifetime = 2.0
 lifetime = 2.0
-one_shot = false
-preprocess = 0.0
-speed_scale = 1.0
 explosiveness = 1.0
 explosiveness = 1.0
-randomness = 0.0
-fixed_fps = 0
-fract_delta = true
-visibility_rect = Rect2( -100, -100, 200, 200 )
-local_coords = true
 draw_order = 65793
 draw_order = 65793
 process_material = SubResource( 6 )
 process_material = SubResource( 6 )
 texture = ExtResource( 4 )
 texture = ExtResource( 4 )
-normal_map = null
-h_frames = 1
-v_frames = 1
-
-[node name="enabler" type="VisibilityEnabler2D" parent="."]
 
 
-rect = Rect2( -10, -10, 20, 20 )
-pause_animations = true
-freeze_bodies = true
+[node name="Enabler" type="VisibilityEnabler2D" parent="."]
 pause_particles = false
 pause_particles = false
-pause_animated_sprites = true
-process_parent = false
-physics_process_parent = false
 
 
 [connection signal="body_entered" from="." to="." method="_on_coin_body_enter"]
 [connection signal="body_entered" from="." to="." method="_on_coin_body_enter"]
-
-

+ 11 - 0
2d/platformer/coin/coin.gd

@@ -0,0 +1,11 @@
+extends Area2D
+
+class_name Coin
+
+
+var taken = false
+
+func _on_coin_body_enter(body):
+	if not taken and body is Player:
+		($Anim as AnimationPlayer).play("taken")
+		taken = true

+ 0 - 0
2d/platformer/coin.png → 2d/platformer/coin/coin.png


+ 8 - 6
2d/platformer/coin.png.import → 2d/platformer/coin/coin.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/coin.png-7e710de472b75b3653c3283ef5153eb4.stex"
+path="res://.import/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://coin.png"
-source_md5="e222f7ea0cf168c4da9b5beff4035f2c"
-
-dest_files=[ "res://.import/coin.png-7e710de472b75b3653c3283ef5153eb4.stex" ]
-dest_md5="c029cc68ec2da7c23bf6bc76055a8399"
+source_file="res://coin/coin.png"
+dest_files=[ "res://.import/coin.png-c9e5c2f51b2a10beb2d794afbbee004f.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 35 - 138
2d/platformer/enemy.tscn → 2d/platformer/enemy/Enemy.tscn

@@ -1,22 +1,21 @@
 [gd_scene load_steps=13 format=2]
 [gd_scene load_steps=13 format=2]
 
 
-[ext_resource path="res://enemy.gd" type="Script" id=1]
-[ext_resource path="res://enemy.png" type="Texture" id=2]
-[ext_resource path="res://bullet.png" type="Texture" id=3]
-[ext_resource path="res://sound_hit.wav" type="AudioStream" id=4]
-[ext_resource path="res://sound_explode.wav" type="AudioStream" id=5]
+[ext_resource path="res://enemy/enemy.gd" type="Script" id=1]
+[ext_resource path="res://enemy/enemy.png" type="Texture" id=2]
+[ext_resource path="res://player/bullet.png" type="Texture" id=3]
+[ext_resource path="res://audio/sound_hit.wav" type="AudioStream" id=4]
+[ext_resource path="res://audio/sound_explode.wav" type="AudioStream" id=5]
 
 
 [sub_resource type="Animation" id=1]
 [sub_resource type="Animation" id=1]
-
 resource_name = "explode"
 resource_name = "explode"
 length = 5.0
 length = 5.0
-loop = false
 step = 0.0
 step = 0.0
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -24,10 +23,11 @@ tracks/0/keys = {
 "values": [ 0 ]
 "values": [ 0 ]
 }
 }
 tracks/1/type = "value"
 tracks/1/type = "value"
-tracks/1/path = NodePath("sprite:rotation_degrees")
+tracks/1/path = NodePath("Sprite:rotation_degrees")
 tracks/1/interp = 1
 tracks/1/interp = 1
 tracks/1/loop_wrap = true
 tracks/1/loop_wrap = true
 tracks/1/imported = false
 tracks/1/imported = false
+tracks/1/enabled = true
 tracks/1/keys = {
 tracks/1/keys = {
 "times": PoolRealArray( 0, 3.2 ),
 "times": PoolRealArray( 0, 3.2 ),
 "transitions": PoolRealArray( 0.5, 1 ),
 "transitions": PoolRealArray( 0.5, 1 ),
@@ -35,10 +35,11 @@ tracks/1/keys = {
 "values": [ 0.0, 180.0 ]
 "values": [ 0.0, 180.0 ]
 }
 }
 tracks/2/type = "value"
 tracks/2/type = "value"
-tracks/2/path = NodePath("sprite:self_modulate")
+tracks/2/path = NodePath("Sprite:self_modulate")
 tracks/2/interp = 1
 tracks/2/interp = 1
 tracks/2/loop_wrap = true
 tracks/2/loop_wrap = true
 tracks/2/imported = false
 tracks/2/imported = false
+tracks/2/enabled = true
 tracks/2/keys = {
 tracks/2/keys = {
 "times": PoolRealArray( 2.6, 3.4 ),
 "times": PoolRealArray( 2.6, 3.4 ),
 "transitions": PoolRealArray( 1, 1 ),
 "transitions": PoolRealArray( 1, 1 ),
@@ -46,10 +47,11 @@ tracks/2/keys = {
 "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
 "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
 }
 }
 tracks/3/type = "value"
 tracks/3/type = "value"
-tracks/3/path = NodePath("explosion:emitting")
+tracks/3/path = NodePath("Explosion:emitting")
 tracks/3/interp = 1
 tracks/3/interp = 1
 tracks/3/loop_wrap = true
 tracks/3/loop_wrap = true
 tracks/3/imported = false
 tracks/3/imported = false
+tracks/3/enabled = true
 tracks/3/keys = {
 tracks/3/keys = {
 "times": PoolRealArray( 0, 2.8 ),
 "times": PoolRealArray( 0, 2.8 ),
 "transitions": PoolRealArray( 1, 1 ),
 "transitions": PoolRealArray( 1, 1 ),
@@ -57,10 +59,11 @@ tracks/3/keys = {
 "values": [ false, true ]
 "values": [ false, true ]
 }
 }
 tracks/4/type = "value"
 tracks/4/type = "value"
-tracks/4/path = NodePath("explosion:process_material:scale")
+tracks/4/path = NodePath("Explosion:process_material:scale")
 tracks/4/interp = 1
 tracks/4/interp = 1
 tracks/4/loop_wrap = true
 tracks/4/loop_wrap = true
 tracks/4/imported = false
 tracks/4/imported = false
+tracks/4/enabled = true
 tracks/4/keys = {
 tracks/4/keys = {
 "times": PoolRealArray( 2.8, 3.4 ),
 "times": PoolRealArray( 2.8, 3.4 ),
 "transitions": PoolRealArray( 1, 1 ),
 "transitions": PoolRealArray( 1, 1 ),
@@ -68,10 +71,11 @@ tracks/4/keys = {
 "values": [ 1.0, 4.0 ]
 "values": [ 1.0, 4.0 ]
 }
 }
 tracks/5/type = "value"
 tracks/5/type = "value"
-tracks/5/path = NodePath("sound_hit:playing")
+tracks/5/path = NodePath("SoundHit:playing")
 tracks/5/interp = 1
 tracks/5/interp = 1
 tracks/5/loop_wrap = true
 tracks/5/loop_wrap = true
 tracks/5/imported = false
 tracks/5/imported = false
+tracks/5/enabled = true
 tracks/5/keys = {
 tracks/5/keys = {
 "times": PoolRealArray( 0.00999999 ),
 "times": PoolRealArray( 0.00999999 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -79,10 +83,11 @@ tracks/5/keys = {
 "values": [ true ]
 "values": [ true ]
 }
 }
 tracks/6/type = "value"
 tracks/6/type = "value"
-tracks/6/path = NodePath("sound_explode:playing")
+tracks/6/path = NodePath("SoundExplode:playing")
 tracks/6/interp = 1
 tracks/6/interp = 1
 tracks/6/loop_wrap = true
 tracks/6/loop_wrap = true
 tracks/6/imported = false
 tracks/6/imported = false
+tracks/6/enabled = true
 tracks/6/keys = {
 tracks/6/keys = {
 "times": PoolRealArray( 2.9 ),
 "times": PoolRealArray( 2.9 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -94,6 +99,7 @@ tracks/7/path = NodePath(".")
 tracks/7/interp = 1
 tracks/7/interp = 1
 tracks/7/loop_wrap = true
 tracks/7/loop_wrap = true
 tracks/7/imported = false
 tracks/7/imported = false
+tracks/7/enabled = true
 tracks/7/keys = {
 tracks/7/keys = {
 "times": PoolRealArray( 4.2 ),
 "times": PoolRealArray( 4.2 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -104,15 +110,15 @@ tracks/7/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=2]
 [sub_resource type="Animation" id=2]
-
 length = 6.75
 length = 6.75
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75 ),
 "times": PoolRealArray( 0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
@@ -121,16 +127,16 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=3]
 [sub_resource type="Animation" id=3]
-
 resource_name = "walk"
 resource_name = "walk"
 length = 1.25
 length = 1.25
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
@@ -140,190 +146,81 @@ tracks/0/keys = {
 
 
 [sub_resource type="CanvasItemMaterial" id=4]
 [sub_resource type="CanvasItemMaterial" id=4]
 
 
-render_priority = 0
-blend_mode = 0
-light_mode = 0
-
 [sub_resource type="CapsuleShape2D" id=5]
 [sub_resource type="CapsuleShape2D" id=5]
-
-custom_solver_bias = 0.0
 radius = 13.4556
 radius = 13.4556
 height = 14.2002
 height = 14.2002
 
 
 [sub_resource type="CanvasItemMaterial" id=6]
 [sub_resource type="CanvasItemMaterial" id=6]
-
-render_priority = 0
 blend_mode = 1
 blend_mode = 1
-light_mode = 0
 
 
 [sub_resource type="ParticlesMaterial" id=7]
 [sub_resource type="ParticlesMaterial" id=7]
-
-render_priority = 0
-trail_divisor = 1
-emission_shape = 0
-flag_align_y = false
-flag_rotate_y = false
 flag_disable_z = true
 flag_disable_z = true
-spread = 180.0
-flatness = 0.0
 gravity = Vector3( 0, 98, 0 )
 gravity = Vector3( 0, 98, 0 )
-initial_velocity = 90.0
-initial_velocity_random = 0.0
-angular_velocity = 2.0
-angular_velocity_random = 1.0
 orbit_velocity = 0.0
 orbit_velocity = 0.0
 orbit_velocity_random = 0.0
 orbit_velocity_random = 0.0
-linear_accel = 0.0
-linear_accel_random = 0.0
-radial_accel = 0.0
-radial_accel_random = 0.0
-tangential_accel = 0.0
-tangential_accel_random = 0.0
-damping = 0.0
-damping_random = 0.0
-angle = 0.0
-angle_random = 0.0
-scale = 1.0
-scale_random = 0.0
-color = Color( 0.929688, 0.488931, 0.0617371, 1 )
-hue_variation = 0.0
-hue_variation_random = 0.0
-anim_speed = 1.0
-anim_speed_random = 0.0
-anim_offset = 0.0
-anim_offset_random = 0.0
-anim_loop = false
-_sections_unfolded = [ "Angle", "Angular Velocity", "Animation", "Color", "Damping", "Emission Shape", "Flags", "Gravity", "Hue Variation", "Initial Velocity", "Linear Accel", "Orbit Velocity", "Radial Accel", "Scale", "Spread", "Tangential Accel" ]
-
-[node name="enemy" type="KinematicBody2D"]
 
 
-input_pickable = false
-collision_layer = 1
-collision_mask = 1
-collision/safe_margin = 0.08
+[node name="Enemy" type="KinematicBody2D"]
 script = ExtResource( 1 )
 script = ExtResource( 1 )
-_sections_unfolded = [ "Collision", "Pickable", "Transform", "Z", "collision" ]
-
-[node name="enabler" type="VisibilityEnabler2D" parent="."]
 
 
+[node name="Enabler" type="VisibilityEnabler2D" parent="."]
 position = Vector2( 16.2569, 11.0034 )
 position = Vector2( 16.2569, 11.0034 )
 scale = Vector2( 23.5056, 10.8629 )
 scale = Vector2( 23.5056, 10.8629 )
-rect = Rect2( -10, -10, 20, 20 )
-pause_animations = true
-freeze_bodies = true
 pause_particles = false
 pause_particles = false
-pause_animated_sprites = true
-process_parent = false
-physics_process_parent = false
-
-[node name="anim" type="AnimationPlayer" parent="."]
 
 
-playback_process_mode = 1
-playback_default_blend_time = 0.0
-root_node = NodePath("..")
+[node name="Anim" type="AnimationPlayer" parent="."]
 anims/explode = SubResource( 1 )
 anims/explode = SubResource( 1 )
 anims/idle = SubResource( 2 )
 anims/idle = SubResource( 2 )
 anims/walk = SubResource( 3 )
 anims/walk = SubResource( 3 )
-playback/active = true
-playback/speed = 3.0
-blend_times = [  ]
-autoplay = ""
-_sections_unfolded = [ "Playback Options", "playback" ]
-
-[node name="sprite" type="Sprite" parent="."]
 
 
+[node name="Sprite" type="Sprite" parent="."]
 material = SubResource( 4 )
 material = SubResource( 4 )
 texture = ExtResource( 2 )
 texture = ExtResource( 2 )
 flip_h = true
 flip_h = true
 hframes = 8
 hframes = 8
-_sections_unfolded = [ "Animation", "Material", "Region", "Transform", "Visibility" ]
 
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-
 position = Vector2( -0.00525069, -0.727495 )
 position = Vector2( -0.00525069, -0.727495 )
 rotation = -1.5708
 rotation = -1.5708
 shape = SubResource( 5 )
 shape = SubResource( 5 )
 
 
-[node name="detect_floor_left" type="RayCast2D" parent="."]
-
+[node name="DetectFloorLeft" type="RayCast2D" parent="."]
 position = Vector2( -33.2868, -9.34363 )
 position = Vector2( -33.2868, -9.34363 )
 enabled = true
 enabled = true
-exclude_parent = true
 cast_to = Vector2( 0, 45 )
 cast_to = Vector2( 0, 45 )
-collision_mask = 1
-type_mask = 15
-
-[node name="detect_wall_left" type="RayCast2D" parent="."]
 
 
+[node name="DetectWallLeft" type="RayCast2D" parent="."]
 position = Vector2( -12.1361, -0.739977 )
 position = Vector2( -12.1361, -0.739977 )
 rotation = 1.5708
 rotation = 1.5708
 enabled = true
 enabled = true
-exclude_parent = true
 cast_to = Vector2( 0, 20 )
 cast_to = Vector2( 0, 20 )
-collision_mask = 1
-type_mask = 15
-
-[node name="detect_wall_right" type="RayCast2D" parent="."]
 
 
+[node name="DetectWallRight" type="RayCast2D" parent="."]
 position = Vector2( 3.2788, -0.381488 )
 position = Vector2( 3.2788, -0.381488 )
 rotation = -1.5708
 rotation = -1.5708
 enabled = true
 enabled = true
-exclude_parent = true
 cast_to = Vector2( 0, 20 )
 cast_to = Vector2( 0, 20 )
-collision_mask = 1
-type_mask = 15
-
-[node name="detect_floor_right" type="RayCast2D" parent="."]
 
 
+[node name="DetectFloorRight" type="RayCast2D" parent="."]
 position = Vector2( 29.1987, -9.34363 )
 position = Vector2( 29.1987, -9.34363 )
 enabled = true
 enabled = true
-exclude_parent = true
 cast_to = Vector2( 0, 45 )
 cast_to = Vector2( 0, 45 )
-collision_mask = 1
-type_mask = 15
-
-[node name="explosion" type="Particles2D" parent="."]
 
 
+[node name="Explosion" type="Particles2D" parent="."]
 self_modulate = Color( 1, 1, 1, 0.12 )
 self_modulate = Color( 1, 1, 1, 0.12 )
 material = SubResource( 6 )
 material = SubResource( 6 )
 emitting = false
 emitting = false
 amount = 32
 amount = 32
 lifetime = 0.5
 lifetime = 0.5
 one_shot = true
 one_shot = true
-preprocess = 0.0
 speed_scale = 1.2
 speed_scale = 1.2
 explosiveness = 0.1
 explosiveness = 0.1
-randomness = 0.0
-fixed_fps = 0
-fract_delta = true
-visibility_rect = Rect2( -100, -100, 200, 200 )
-local_coords = true
 draw_order = 215832976
 draw_order = 215832976
 process_material = SubResource( 7 )
 process_material = SubResource( 7 )
 texture = ExtResource( 3 )
 texture = ExtResource( 3 )
-normal_map = null
-h_frames = 1
-v_frames = 1
-_sections_unfolded = [ "Drawing", "Material", "Process Material", "Textures", "Time", "Visibility" ]
-
-[node name="sound_hit" type="AudioStreamPlayer2D" parent="."]
 
 
+[node name="SoundHit" type="AudioStreamPlayer2D" parent="."]
 stream = ExtResource( 4 )
 stream = ExtResource( 4 )
-volume_db = 0.0
-autoplay = false
-max_distance = 2000.0
-attenuation = 1.0
-bus = "Master"
-area_mask = 1
-
-[node name="sound_explode" type="AudioStreamPlayer2D" parent="."]
 
 
+[node name="SoundExplode" type="AudioStreamPlayer2D" parent="."]
 stream = ExtResource( 5 )
 stream = ExtResource( 5 )
-volume_db = 0.0
-autoplay = false
-max_distance = 2000.0
-attenuation = 1.0
-bus = "Master"
-area_mask = 1
-
 
 

+ 14 - 13
2d/platformer/enemy.gd → 2d/platformer/enemy/enemy.gd

@@ -1,37 +1,40 @@
 extends KinematicBody2D
 extends KinematicBody2D
 
 
+class_name Enemy
+
 
 
 const GRAVITY_VEC = Vector2(0, 900)
 const GRAVITY_VEC = Vector2(0, 900)
 const FLOOR_NORMAL = Vector2(0, -1)
 const FLOOR_NORMAL = Vector2(0, -1)
 
 
-const WALK_SPEED = 70
 const STATE_WALKING = 0
 const STATE_WALKING = 0
 const STATE_KILLED = 1
 const STATE_KILLED = 1
+const WALK_SPEED = 70 
 
 
 var linear_velocity = Vector2()
 var linear_velocity = Vector2()
 var direction = -1
 var direction = -1
-var anim=""
+var anim = ""
 
 
+# state machine
 var state = STATE_WALKING
 var state = STATE_WALKING
 
 
-onready var detect_floor_left = $detect_floor_left
-onready var detect_wall_left = $detect_wall_left
-onready var detect_floor_right = $detect_floor_right
-onready var detect_wall_right = $detect_wall_right
-onready var sprite = $sprite
+onready var DetectFloorLeft = $DetectFloorLeft
+onready var DetectWallLeft = $DetectWallLeft
+onready var DetectFloorRight = $DetectFloorRight
+onready var DetectWallRight = $DetectWallRight
+onready var sprite = $Sprite
 
 
 func _physics_process(delta):
 func _physics_process(delta):
 	var new_anim = "idle"
 	var new_anim = "idle"
 
 
-	if state==STATE_WALKING:
+	if state == STATE_WALKING:
 		linear_velocity += GRAVITY_VEC * delta
 		linear_velocity += GRAVITY_VEC * delta
 		linear_velocity.x = direction * WALK_SPEED
 		linear_velocity.x = direction * WALK_SPEED
 		linear_velocity = move_and_slide(linear_velocity, FLOOR_NORMAL)
 		linear_velocity = move_and_slide(linear_velocity, FLOOR_NORMAL)
 
 
-		if not detect_floor_left.is_colliding() or detect_wall_left.is_colliding():
+		if not DetectFloorLeft.is_colliding() or DetectWallLeft.is_colliding():
 			direction = 1.0
 			direction = 1.0
 
 
-		if not detect_floor_right.is_colliding() or detect_wall_right.is_colliding():
+		if not DetectFloorRight.is_colliding() or DetectWallRight.is_colliding():
 			direction = -1.0
 			direction = -1.0
 
 
 		sprite.scale = Vector2(direction, 1.0)
 		sprite.scale = Vector2(direction, 1.0)
@@ -39,11 +42,9 @@ func _physics_process(delta):
 	else:
 	else:
 		new_anim = "explode"
 		new_anim = "explode"
 
 
-
 	if anim != new_anim:
 	if anim != new_anim:
 		anim = new_anim
 		anim = new_anim
-		$anim.play(anim)
-
+		($Anim as AnimationPlayer).play(anim)
 
 
 func hit_by_bullet():
 func hit_by_bullet():
 	state = STATE_KILLED
 	state = STATE_KILLED

+ 0 - 0
2d/platformer/enemy.png → 2d/platformer/enemy/enemy.png


+ 8 - 6
2d/platformer/enemy.png.import → 2d/platformer/enemy/enemy.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/enemy.png-f7d9f81714867a24a08e299bb600e611.stex"
+path="res://.import/enemy.png-1891d9038eeed672a2459bc4e7db5910.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://enemy.png"
-source_md5="42bb3a8005fffb91c993fbb55e798d1d"
-
-dest_files=[ "res://.import/enemy.png-f7d9f81714867a24a08e299bb600e611.stex" ]
-dest_md5="b5dd9d2c4c2d679d2fd9cc6bd60db4a2"
+source_file="res://enemy/enemy.png"
+dest_files=[ "res://.import/enemy.png-1891d9038eeed672a2459bc4e7db5910.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 5 - 3
2d/platformer/icon.png.import

@@ -3,20 +3,21 @@
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
 path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
 path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
 source_file="res://icon.png"
 source_file="res://icon.png"
-source_md5="059cf00427ccbf40878c582845360337"
-
 dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
 dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
-dest_md5="41a62e78fba2a38eac650b96d4963e54"
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 28
2d/platformer/moving_platform.tscn

@@ -1,28 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://moving_platform.gd" type="Script" id=1]
-[ext_resource path="res://moving_platform.png" type="Texture" id=2]
-
-[node name="moving_platform" type="Node2D"]
-
-script = ExtResource( 1 )
-motion = Vector2( 0, 0 )
-cycle = 1.0
-
-[node name="platform" type="KinematicBody2D" parent="."]
-
-input_pickable = false
-collision_layer = 1
-collision_mask = 1
-collision/safe_margin = 0.08
-
-[node name="Sprite" type="Sprite" parent="platform"]
-
-texture = ExtResource( 2 )
-
-[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="platform"]
-
-build_mode = 0
-polygon = PoolVector2Array( -88, -24, 88, -24, 88, 24, -88, 24 )
-
-

+ 0 - 18
2d/platformer/music.ogg.import

@@ -1,18 +0,0 @@
-[remap]
-
-importer="ogg_vorbis"
-type="AudioStreamOGGVorbis"
-path="res://.import/music.ogg-3bd46d3a4b41702b152014078d12a390.oggstr"
-
-[deps]
-
-source_file="res://music.ogg"
-source_md5="ac01d521c92ce9d01cf09826bd3addbf"
-
-dest_files=[ "res://.import/music.ogg-3bd46d3a4b41702b152014078d12a390.oggstr" ]
-dest_md5="8f49ec9ebb932a81e74cb040e2a26d5f"
-
-[params]
-
-loop=true
-loop_offset=0

+ 0 - 30
2d/platformer/one_way_platform.tscn

@@ -1,30 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://one_way_platform.png" type="Texture" id=1]
-
-[sub_resource type="RectangleShape2D" id=1]
-
-custom_solver_bias = 0.0
-extents = Vector2( 100, 10 )
-
-[node name="one_way_platform" type="StaticBody2D"]
-
-input_pickable = false
-collision_layer = 1
-collision_mask = 1
-constant_linear_velocity = Vector2( 0, 0 )
-constant_angular_velocity = 0.0
-friction = 1.0
-bounce = 0.0
-
-[node name="sprite" type="Sprite" parent="."]
-
-texture = ExtResource( 1 )
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-
-position = Vector2( 1.46304, -13.1672 )
-shape = SubResource( 1 )
-one_way_collision = true
-
-

+ 0 - 32
2d/platformer/osb_right.png.import

@@ -1,32 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/osb_right.png-5cf5add2dbc1c8dde17173ac56f3a004.stex"
-
-[deps]
-
-source_file="res://osb_right.png"
-source_md5="860560d5e66ccd837973fbbde7eb958f"
-
-dest_files=[ "res://.import/osb_right.png-5cf5add2dbc1c8dde17173ac56f3a004.stex" ]
-dest_md5="53dbe913ca4af3c548217038b3b6b7de"
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=false
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-stream=false
-size_limit=0
-detect_3d=false
-svg/scale=1.0

+ 0 - 105
2d/platformer/parallax_bg.tscn

@@ -1,105 +0,0 @@
-[gd_scene load_steps=7 format=2]
-
-[ext_resource path="res://scroll_bg_sky.png" type="Texture" id=1]
-[ext_resource path="res://scroll_bg_cloud_1.png" type="Texture" id=2]
-[ext_resource path="res://scroll_bg_cloud_2.png" type="Texture" id=3]
-[ext_resource path="res://scroll_bg_cloud_3.png" type="Texture" id=4]
-[ext_resource path="res://scroll_bg_fg_2.png" type="Texture" id=5]
-[ext_resource path="res://scroll_bg_fg_1.png" type="Texture" id=6]
-
-[node name="parallax_bg" type="ParallaxBackground"]
-
-layer = -1
-offset = Vector2( 0, 0 )
-rotation = 0.0
-scale = Vector2( 1, 1 )
-scroll_offset = Vector2( 0, 0 )
-scroll_base_offset = Vector2( 0, 0 )
-scroll_base_scale = Vector2( 0.7, 0 )
-scroll_limit_begin = Vector2( 0, 0 )
-scroll_limit_end = Vector2( 0, 0 )
-scroll_ignore_camera_zoom = false
-
-[node name="sky" type="ParallaxLayer" parent="."]
-
-motion_scale = Vector2( 1, 1 )
-motion_offset = Vector2( 0, 0 )
-motion_mirroring = Vector2( 800, 0 )
-
-[node name="Sprite" type="Sprite" parent="sky"]
-
-scale = Vector2( 32, 0.94 )
-texture = ExtResource( 1 )
-centered = false
-
-[node name="clouds" type="ParallaxLayer" parent="."]
-
-motion_scale = Vector2( 0.1, 1 )
-motion_offset = Vector2( 0, 0 )
-motion_mirroring = Vector2( 800, 0 )
-
-[node name="Sprite" type="Sprite" parent="clouds"]
-
-position = Vector2( 28, 127 )
-texture = ExtResource( 2 )
-centered = false
-
-[node name="Sprite 2" type="Sprite" parent="clouds"]
-
-position = Vector2( 404, 24 )
-texture = ExtResource( 2 )
-centered = false
-
-[node name="Sprite 3" type="Sprite" parent="clouds"]
-
-position = Vector2( 154, 46 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite 4" type="Sprite" parent="clouds"]
-
-position = Vector2( 525, 130 )
-texture = ExtResource( 3 )
-centered = false
-
-[node name="Sprite 5" type="Sprite" parent="clouds"]
-
-position = Vector2( 255, 158 )
-texture = ExtResource( 4 )
-centered = false
-
-[node name="Sprite 6" type="Sprite" parent="clouds"]
-
-position = Vector2( 674, 70 )
-texture = ExtResource( 4 )
-centered = false
-
-[node name="mount_ 2" type="ParallaxLayer" parent="."]
-
-motion_scale = Vector2( 0.2, 1 )
-motion_offset = Vector2( 0, 0 )
-motion_mirroring = Vector2( 800, 0 )
-
-[node name="Sprite" type="Sprite" parent="mount_ 2"]
-
-position = Vector2( 0, 225 )
-texture = ExtResource( 5 )
-centered = false
-region_enabled = true
-region_rect = Rect2( 0, 0, 800, 256 )
-
-[node name="mount_1" type="ParallaxLayer" parent="."]
-
-motion_scale = Vector2( 0.4, 1 )
-motion_offset = Vector2( 0, 0 )
-motion_mirroring = Vector2( 800, 0 )
-
-[node name="Sprite" type="Sprite" parent="mount_1"]
-
-position = Vector2( 0, 225 )
-texture = ExtResource( 6 )
-centered = false
-region_enabled = true
-region_rect = Rect2( 0, 0, 800, 256 )
-
-

+ 16 - 0
2d/platformer/platform/MovingPlatform.tscn

@@ -0,0 +1,16 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://platform/moving_platform.gd" type="Script" id=1]
+[ext_resource path="res://platform/moving_platform.png" type="Texture" id=2]
+
+[node name="MovingPlatform" type="Node2D"]
+script = ExtResource( 1 )
+
+[node name="Platform" type="KinematicBody2D" parent="."]
+
+[node name="Sprite" type="Sprite" parent="Platform"]
+texture = ExtResource( 2 )
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Platform"]
+polygon = PoolVector2Array( -88, -24, 88, -24, 88, 24, -88, 24 )
+

+ 17 - 0
2d/platformer/platform/OneWayPlatform.tscn

@@ -0,0 +1,17 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://platform/one_way_platform.png" type="Texture" id=1]
+
+[sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 100, 10 )
+
+[node name="OneWayPlatform" type="StaticBody2D"]
+
+[node name="Sprite" type="Sprite" parent="."]
+texture = ExtResource( 1 )
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2( 1.46304, -13.1672 )
+shape = SubResource( 1 )
+one_way_collision = true
+

+ 5 - 3
2d/platformer/moving_platform.gd → 2d/platformer/platform/moving_platform.gd

@@ -1,15 +1,17 @@
 extends Node2D
 extends Node2D
 
 
+class_name MovingPlatform
+
+
 # Member variables
 # Member variables
 export var motion = Vector2()
 export var motion = Vector2()
 export var cycle = 1.0
 export var cycle = 1.0
 var accum = 0.0
 var accum = 0.0
 
 
-
 func _physics_process(delta):
 func _physics_process(delta):
 	accum += delta * (1.0 / cycle) * PI * 2.0
 	accum += delta * (1.0 / cycle) * PI * 2.0
 	accum = fmod(accum, PI * 2.0)
 	accum = fmod(accum, PI * 2.0)
 	var d = sin(accum)
 	var d = sin(accum)
 	var xf = Transform2D()
 	var xf = Transform2D()
-	xf[2]= motion * d
-	$platform.transform = xf
+	xf[2] = motion * d
+	($Platform as KinematicBody2D).transform = xf

+ 0 - 0
2d/platformer/moving_platform.png → 2d/platformer/platform/moving_platform.png


+ 8 - 6
2d/platformer/moving_platform.png.import → 2d/platformer/platform/moving_platform.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/moving_platform.png-1ef2f9fd1684df90d6ad38a267c1201b.stex"
+path="res://.import/moving_platform.png-7e92061cd93e8b0235df711d3782cd8c.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://moving_platform.png"
-source_md5="5b9fb03128b6249a94e3af4976d65033"
-
-dest_files=[ "res://.import/moving_platform.png-1ef2f9fd1684df90d6ad38a267c1201b.stex" ]
-dest_md5="1b8e7060e89b4f682cc0e5df69b74574"
+source_file="res://platform/moving_platform.png"
+dest_files=[ "res://.import/moving_platform.png-7e92061cd93e8b0235df711d3782cd8c.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/one_way_platform.png → 2d/platformer/platform/one_way_platform.png


+ 8 - 6
2d/platformer/one_way_platform.png.import → 2d/platformer/platform/one_way_platform.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/one_way_platform.png-af40161497fd0e8bfbc5d400c8bd650a.stex"
+path="res://.import/one_way_platform.png-2865772e209813c1636a14aee8d019a3.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://one_way_platform.png"
-source_md5="94d5d85de357d84b918ac588b8bd6a8d"
-
-dest_files=[ "res://.import/one_way_platform.png-af40161497fd0e8bfbc5d400c8bd650a.stex" ]
-dest_md5="fc01b5aa5c5312405b6180a76d05200c"
+source_file="res://platform/one_way_platform.png"
+dest_files=[ "res://.import/one_way_platform.png-2865772e209813c1636a14aee8d019a3.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 95 - 0
2d/platformer/player/Bullet.tscn

@@ -0,0 +1,95 @@
+[gd_scene load_steps=9 format=2]
+
+[ext_resource path="res://player/bullet.gd" type="Script" id=1]
+[ext_resource path="res://player/bullet.png" type="Texture" id=2]
+
+[sub_resource type="CanvasItemMaterial" id=1]
+
+[sub_resource type="CanvasItemMaterial" id=2]
+blend_mode = 1
+
+[sub_resource type="ParticlesMaterial" id=3]
+flag_disable_z = true
+spread = 0.0
+gravity = Vector3( 0, 0, 0 )
+orbit_velocity = 0.0
+orbit_velocity_random = 0.0
+scale = 0.8
+color = Color( 1, 1, 1, 0.705882 )
+
+[sub_resource type="CanvasItemMaterial" id=4]
+
+[sub_resource type="CircleShape2D" id=5]
+
+[sub_resource type="Animation" id=6]
+length = 1.5
+tracks/0/type = "method"
+tracks/0/path = NodePath(".")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 1.31 ),
+"transitions": PoolRealArray( 1 ),
+"values": [ {
+"args": [  ],
+"method": "queue_free"
+} ]
+}
+tracks/1/type = "value"
+tracks/1/path = NodePath("Sprite:self_modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/keys = {
+"times": PoolRealArray( 0, 1 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
+}
+tracks/2/type = "value"
+tracks/2/path = NodePath("Particles2D:self_modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/keys = {
+"times": PoolRealArray( 0, 0.5 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
+}
+
+[node name="Bullet" type="RigidBody2D"]
+material = SubResource( 1 )
+continuous_cd = 2
+contacts_reported = 1
+contact_monitor = true
+script = ExtResource( 1 )
+
+[node name="Particles2D" type="Particles2D" parent="."]
+material = SubResource( 2 )
+lifetime = 0.3
+speed_scale = 3.0
+local_coords = false
+process_material = SubResource( 3 )
+texture = ExtResource( 2 )
+
+[node name="Sprite" type="Sprite" parent="."]
+material = SubResource( 4 )
+texture = ExtResource( 2 )
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource( 5 )
+
+[node name="Timer" type="Timer" parent="."]
+one_shot = true
+autostart = true
+
+[node name="Anim" type="AnimationPlayer" parent="."]
+anims/shutdown = SubResource( 6 )
+
+[connection signal="body_entered" from="." to="." method="_on_bullet_body_enter"]
+[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]

+ 41 - 124
2d/platformer/player.tscn → 2d/platformer/player/Player.tscn

@@ -1,25 +1,25 @@
 [gd_scene load_steps=20 format=2]
 [gd_scene load_steps=20 format=2]
 
 
-[ext_resource path="res://player.gd" type="Script" id=1]
-[ext_resource path="res://robot_demo.png" type="Texture" id=2]
-[ext_resource path="res://sound_jump.wav" type="AudioStream" id=3]
-[ext_resource path="res://sound_shoot.wav" type="AudioStream" id=4]
-[ext_resource path="res://osb_left.png" type="Texture" id=5]
-[ext_resource path="res://osb_right.png" type="Texture" id=6]
-[ext_resource path="res://osb_jump.png" type="Texture" id=7]
-[ext_resource path="res://osb_fire.png" type="Texture" id=8]
+[ext_resource path="res://player/player.gd" type="Script" id=1]
+[ext_resource path="res://player/robot_demo.png" type="Texture" id=2]
+[ext_resource path="res://audio/sound_jump.wav" type="AudioStream" id=3]
+[ext_resource path="res://audio/sound_shoot.wav" type="AudioStream" id=4]
+[ext_resource path="res://player/osb_left.png" type="Texture" id=5]
+[ext_resource path="res://player/osb_right.png" type="Texture" id=6]
+[ext_resource path="res://player/osb_jump.png" type="Texture" id=7]
+[ext_resource path="res://player/osb_fire.png" type="Texture" id=8]
 
 
 [sub_resource type="Animation" id=1]
 [sub_resource type="Animation" id=1]
-
 resource_name = "crouch"
 resource_name = "crouch"
 length = 0.01
 length = 0.01
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -28,16 +28,16 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=2]
 [sub_resource type="Animation" id=2]
-
 resource_name = "falling"
 resource_name = "falling"
 length = 0.01
 length = 0.01
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -46,16 +46,16 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=3]
 [sub_resource type="Animation" id=3]
-
 resource_name = "falling_weapon"
 resource_name = "falling_weapon"
 length = 0.5
 length = 0.5
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -64,15 +64,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=4]
 [sub_resource type="Animation" id=4]
-
 length = 7.0
 length = 7.0
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25 ),
 "times": PoolRealArray( 0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
@@ -81,15 +81,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=5]
 [sub_resource type="Animation" id=5]
-
 length = 0.5
 length = 0.5
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -98,15 +98,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=6]
 [sub_resource type="Animation" id=6]
-
 length = 0.5
 length = 0.5
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5 ),
 "times": PoolRealArray( 0, 0.25, 0.5 ),
 "transitions": PoolRealArray( 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1 ),
@@ -115,15 +115,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=7]
 [sub_resource type="Animation" id=7]
-
 length = 0.5
 length = 0.5
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "transitions": PoolRealArray( 1 ),
@@ -132,15 +132,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=8]
 [sub_resource type="Animation" id=8]
-
 length = 1.25
 length = 1.25
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
@@ -149,15 +149,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=9]
 [sub_resource type="Animation" id=9]
-
 length = 1.25
 length = 1.25
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
@@ -166,15 +166,15 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="Animation" id=10]
 [sub_resource type="Animation" id=10]
-
 length = 1.25
 length = 1.25
 loop = true
 loop = true
 step = 0.25
 step = 0.25
 tracks/0/type = "value"
 tracks/0/type = "value"
-tracks/0/path = NodePath("sprite:frame")
+tracks/0/path = NodePath("Sprite:frame")
 tracks/0/interp = 1
 tracks/0/interp = 1
 tracks/0/loop_wrap = true
 tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/imported = false
+tracks/0/enabled = true
 tracks/0/keys = {
 tracks/0/keys = {
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
 "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
@@ -183,40 +183,25 @@ tracks/0/keys = {
 }
 }
 
 
 [sub_resource type="CapsuleShape2D" id=11]
 [sub_resource type="CapsuleShape2D" id=11]
-
-custom_solver_bias = 0.0
-radius = 10.0
 height = 44.4787
 height = 44.4787
 
 
-[node name="player" type="KinematicBody2D"]
-
-input_pickable = false
-collision_layer = 1
-collision_mask = 1
-collision/safe_margin = 0.08
+[node name="Player" type="KinematicBody2D"]
 script = ExtResource( 1 )
 script = ExtResource( 1 )
 
 
-[node name="sprite" type="Sprite" parent="."]
-
+[node name="Sprite" type="Sprite" parent="."]
 texture = ExtResource( 2 )
 texture = ExtResource( 2 )
 vframes = 2
 vframes = 2
 hframes = 16
 hframes = 16
 frame = 22
 frame = 22
 
 
-[node name="smoke" type="Node2D" parent="sprite"]
-
+[node name="Smoke" type="Node2D" parent="Sprite"]
 position = Vector2( 20.7312, 3.21187 )
 position = Vector2( 20.7312, 3.21187 )
 rotation = -1.45648
 rotation = -1.45648
 
 
-[node name="bullet_shoot" type="Position2D" parent="sprite"]
-
+[node name="BulletShoot" type="Position2D" parent="Sprite"]
 position = Vector2( 30.6589, 6.13176 )
 position = Vector2( 30.6589, 6.13176 )
 
 
-[node name="anim" type="AnimationPlayer" parent="."]
-
-playback_process_mode = 1
-playback_default_blend_time = 0.0
-root_node = NodePath("..")
+[node name="Anim" type="AnimationPlayer" parent="."]
 anims/crouch = SubResource( 1 )
 anims/crouch = SubResource( 1 )
 anims/falling = SubResource( 2 )
 anims/falling = SubResource( 2 )
 anims/falling_weapon = SubResource( 3 )
 anims/falling_weapon = SubResource( 3 )
@@ -227,120 +212,52 @@ anims/jumping_weapon = SubResource( 7 )
 anims/run = SubResource( 8 )
 anims/run = SubResource( 8 )
 anims/run_weapon = SubResource( 9 )
 anims/run_weapon = SubResource( 9 )
 anims/standing_weapon_ready = SubResource( 10 )
 anims/standing_weapon_ready = SubResource( 10 )
-playback/active = true
-playback/speed = 2.0
-blend_times = [  ]
-autoplay = ""
-
-[node name="camera" type="Camera2D" parent="."]
 
 
-anchor_mode = 1
-rotating = false
+[node name="Camera" type="Camera2D" parent="."]
 current = true
 current = true
-zoom = Vector2( 1, 1 )
 limit_left = 0
 limit_left = 0
 limit_top = 0
 limit_top = 0
-limit_right = 10000000
-limit_bottom = 10000000
-limit_smoothed = false
-drag_margin_h_enabled = true
-drag_margin_v_enabled = true
-smoothing_enabled = false
-smoothing_speed = 5.0
-drag_margin_left = 0.2
-drag_margin_top = 0.2
-drag_margin_right = 0.2
-drag_margin_bottom = 0.2
-editor_draw_screen = true
-editor_draw_limits = false
-editor_draw_drag_margin = false
 
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-
 position = Vector2( 0.291992, -0.835023 )
 position = Vector2( 0.291992, -0.835023 )
 shape = SubResource( 11 )
 shape = SubResource( 11 )
 
 
-[node name="sound_jump" type="AudioStreamPlayer2D" parent="."]
-
+[node name="SoundJump" type="AudioStreamPlayer2D" parent="."]
 stream = ExtResource( 3 )
 stream = ExtResource( 3 )
-volume_db = 0.0
-autoplay = false
-max_distance = 2000.0
-attenuation = 1.0
-bus = "Master"
-area_mask = 1
-
-[node name="sound_shoot" type="AudioStreamPlayer2D" parent="."]
 
 
+[node name="SoundShoot" type="AudioStreamPlayer2D" parent="."]
 stream = ExtResource( 4 )
 stream = ExtResource( 4 )
-volume_db = 0.0
-autoplay = false
-max_distance = 2000.0
-attenuation = 1.0
-bus = "Master"
-area_mask = 1
-
-[node name="ui" type="CanvasLayer" parent="."]
 
 
+[node name="UI" type="CanvasLayer" parent="."]
 layer = 0
 layer = 0
-offset = Vector2( 0, 0 )
-rotation = 0.0
-scale = Vector2( 1, 1 )
-
-[node name="left" type="TouchScreenButton" parent="ui"]
 
 
+[node name="Left" type="TouchScreenButton" parent="UI"]
 position = Vector2( 27.7593, 360.87 )
 position = Vector2( 27.7593, 360.87 )
 scale = Vector2( 1.49157, 1.46265 )
 scale = Vector2( 1.49157, 1.46265 )
 normal = ExtResource( 5 )
 normal = ExtResource( 5 )
-pressed = null
-bitmask = null
-shape = null
-shape_centered = true
-shape_visible = true
 passby_press = true
 passby_press = true
 action = "move_left"
 action = "move_left"
 visibility_mode = 1
 visibility_mode = 1
 
 
-[node name="right" type="TouchScreenButton" parent="ui"]
-
+[node name="Right" type="TouchScreenButton" parent="UI"]
 position = Vector2( 121.542, 361.415 )
 position = Vector2( 121.542, 361.415 )
 scale = Vector2( 1.49157, 1.46265 )
 scale = Vector2( 1.49157, 1.46265 )
 normal = ExtResource( 6 )
 normal = ExtResource( 6 )
-pressed = null
-bitmask = null
-shape = null
-shape_centered = true
-shape_visible = true
 passby_press = true
 passby_press = true
 action = "move_right"
 action = "move_right"
 visibility_mode = 1
 visibility_mode = 1
 
 
-[node name="jump" type="TouchScreenButton" parent="ui"]
-
+[node name="Jump" type="TouchScreenButton" parent="UI"]
 position = Vector2( 666.224, 359.02 )
 position = Vector2( 666.224, 359.02 )
 scale = Vector2( 1.49157, 1.46265 )
 scale = Vector2( 1.49157, 1.46265 )
 normal = ExtResource( 7 )
 normal = ExtResource( 7 )
-pressed = null
-bitmask = null
-shape = null
-shape_centered = true
-shape_visible = true
-passby_press = false
 action = "jump"
 action = "jump"
 visibility_mode = 1
 visibility_mode = 1
 
 
-[node name="fire" type="TouchScreenButton" parent="ui"]
-
+[node name="Fire" type="TouchScreenButton" parent="UI"]
 position = Vector2( 668.073, 262.788 )
 position = Vector2( 668.073, 262.788 )
 scale = Vector2( 1.49157, 1.46265 )
 scale = Vector2( 1.49157, 1.46265 )
 normal = ExtResource( 8 )
 normal = ExtResource( 8 )
-pressed = null
-bitmask = null
-shape = null
-shape_centered = true
-shape_visible = true
-passby_press = false
 action = "shoot"
 action = "shoot"
 visibility_mode = 1
 visibility_mode = 1
 
 
-

+ 5 - 2
2d/platformer/bullet.gd → 2d/platformer/player/bullet.gd

@@ -1,8 +1,11 @@
 extends RigidBody2D
 extends RigidBody2D
 
 
-func _on_bullet_body_enter( body ):
+class_name Bullet
+
+
+func _on_bullet_body_enter(body):
 	if body.has_method("hit_by_bullet"):
 	if body.has_method("hit_by_bullet"):
 		body.call("hit_by_bullet")
 		body.call("hit_by_bullet")
 
 
 func _on_Timer_timeout():
 func _on_Timer_timeout():
-	$anim.play("shutdown")
+	($Anim as AnimationPlayer).play("shutdown")

+ 0 - 0
2d/platformer/bullet.png → 2d/platformer/player/bullet.png


+ 8 - 6
2d/platformer/bullet.png.import → 2d/platformer/player/bullet.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/bullet.png-ff1424653e10246c11e3724e402c519e.stex"
+path="res://.import/bullet.png-5615cb9904aab8db60fe6f48e996475f.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://bullet.png"
-source_md5="9fe43d82e09598fc96be75bcf60df249"
-
-dest_files=[ "res://.import/bullet.png-ff1424653e10246c11e3724e402c519e.stex" ]
-dest_md5="441db1f0cf2701a43ee3ec6fcf10fc41"
+source_file="res://player/bullet.png"
+dest_files=[ "res://.import/bullet.png-5615cb9904aab8db60fe6f48e996475f.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=3
 compress/mode=3
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=2
 compress/normal_map=2
 flags/repeat=0
 flags/repeat=0
 flags/filter=true
 flags/filter=true
@@ -26,6 +27,7 @@ flags/srgb=0
 process/fix_alpha_border=false
 process/fix_alpha_border=false
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/osb_fire.png → 2d/platformer/player/osb_fire.png


+ 8 - 6
2d/platformer/osb_left.png.import → 2d/platformer/player/osb_fire.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/osb_left.png-fc7230aeb0eec74933ed08f89b893288.stex"
+path="res://.import/osb_fire.png-67a49910acd764fd7c67429af0ad5cb8.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://osb_left.png"
-source_md5="ce066828ec6ef27c9ce3809341574058"
-
-dest_files=[ "res://.import/osb_left.png-fc7230aeb0eec74933ed08f89b893288.stex" ]
-dest_md5="f1204f132a121270977d3db6b3833c2e"
+source_file="res://player/osb_fire.png"
+dest_files=[ "res://.import/osb_fire.png-67a49910acd764fd7c67429af0ad5cb8.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/osb_jump.png → 2d/platformer/player/osb_jump.png


+ 8 - 6
2d/platformer/osb_jump.png.import → 2d/platformer/player/osb_jump.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/osb_jump.png-dbbef3b47abbb562ce6c81a9701121c6.stex"
+path="res://.import/osb_jump.png-0d4d2b2d1a7d2c11e3e4fd800b8589ed.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://osb_jump.png"
-source_md5="ac3e3adf52903de07cff73354f63896c"
-
-dest_files=[ "res://.import/osb_jump.png-dbbef3b47abbb562ce6c81a9701121c6.stex" ]
-dest_md5="dadb0fd2527ced2e0592b8d84687d463"
+source_file="res://player/osb_jump.png"
+dest_files=[ "res://.import/osb_jump.png-0d4d2b2d1a7d2c11e3e4fd800b8589ed.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 0 - 0
2d/platformer/osb_left.png → 2d/platformer/player/osb_left.png


+ 34 - 0
2d/platformer/player/osb_left.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/osb_left.png-95ec3a371455889d592aa8cae0a755bc.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://player/osb_left.png"
+dest_files=[ "res://.import/osb_left.png-95ec3a371455889d592aa8cae0a755bc.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0

+ 0 - 0
2d/platformer/osb_right.png → 2d/platformer/player/osb_right.png


+ 8 - 6
2d/platformer/osb_fire.png.import → 2d/platformer/player/osb_right.png.import

@@ -2,21 +2,22 @@
 
 
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
-path="res://.import/osb_fire.png-e657a73546eb75918e9d9a3fea15cf70.stex"
+path="res://.import/osb_right.png-db9bb4651315f3d42b87bd17a86cce76.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
-source_file="res://osb_fire.png"
-source_md5="99a276197ee76a83312af783f33f0ab3"
-
-dest_files=[ "res://.import/osb_fire.png-e657a73546eb75918e9d9a3fea15cf70.stex" ]
-dest_md5="6a322e882c9dc02ebfaa6f88e228f6fe"
+source_file="res://player/osb_right.png"
+dest_files=[ "res://.import/osb_right.png-db9bb4651315f3d42b87bd17a86cce76.stex" ]
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

+ 12 - 7
2d/platformer/player.gd → 2d/platformer/player/player.gd

@@ -1,5 +1,8 @@
 extends KinematicBody2D
 extends KinematicBody2D
 
 
+class_name Player
+
+
 const GRAVITY_VEC = Vector2(0, 900)
 const GRAVITY_VEC = Vector2(0, 900)
 const FLOOR_NORMAL = Vector2(0, -1)
 const FLOOR_NORMAL = Vector2(0, -1)
 const SLOPE_SLIDE_STOP = 25.0
 const SLOPE_SLIDE_STOP = 25.0
@@ -10,13 +13,15 @@ const BULLET_VELOCITY = 1000
 const SHOOT_TIME_SHOW_WEAPON = 0.2
 const SHOOT_TIME_SHOW_WEAPON = 0.2
 
 
 var linear_vel = Vector2()
 var linear_vel = Vector2()
-var on_floor = false
 var shoot_time = 99999 # time since last shot
 var shoot_time = 99999 # time since last shot
 
 
 var anim = ""
 var anim = ""
 
 
 # cache the sprite here for fast access (we will set scale to flip it often)
 # cache the sprite here for fast access (we will set scale to flip it often)
-onready var sprite = $sprite
+onready var sprite = $Sprite
+# cache bullet for fast access
+var Bullet = preload("res://player/Bullet.tscn")
+
 
 
 func _physics_process(delta):
 func _physics_process(delta):
 	# Increment counters
 	# Increment counters
@@ -46,16 +51,16 @@ func _physics_process(delta):
 	# Jumping
 	# Jumping
 	if on_floor and Input.is_action_just_pressed("jump"):
 	if on_floor and Input.is_action_just_pressed("jump"):
 		linear_vel.y = -JUMP_SPEED
 		linear_vel.y = -JUMP_SPEED
-		$sound_jump.play()
+		($SoundJump as AudioStreamPlayer2D).play()
 
 
 	# Shooting
 	# Shooting
 	if Input.is_action_just_pressed("shoot"):
 	if Input.is_action_just_pressed("shoot"):
-		var bullet = preload("res://bullet.tscn").instance()
-		bullet.position = $sprite/bullet_shoot.global_position # use node for shoot position
+		var bullet = Bullet.instance()
+		bullet.position = ($Sprite/BulletShoot as Position2D).global_position # use node for shoot position
 		bullet.linear_velocity = Vector2(sprite.scale.x * BULLET_VELOCITY, 0)
 		bullet.linear_velocity = Vector2(sprite.scale.x * BULLET_VELOCITY, 0)
 		bullet.add_collision_exception_with(self) # don't want player to collide with bullet
 		bullet.add_collision_exception_with(self) # don't want player to collide with bullet
 		get_parent().add_child(bullet) # don't want bullet to move with me, so add it as child of parent
 		get_parent().add_child(bullet) # don't want bullet to move with me, so add it as child of parent
-		$sound_shoot.play()
+		($SoundShoot as AudioStreamPlayer2D).play()
 		shoot_time = 0
 		shoot_time = 0
 
 
 	### ANIMATION ###
 	### ANIMATION ###
@@ -89,4 +94,4 @@ func _physics_process(delta):
 
 
 	if new_anim != anim:
 	if new_anim != anim:
 		anim = new_anim
 		anim = new_anim
-		$anim.play(anim)
+		($Anim as AnimationPlayer).play(anim)

+ 0 - 0
2d/platformer/robot_demo.png → 2d/platformer/player/robot_demo.png


+ 34 - 0
2d/platformer/player/robot_demo.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/robot_demo.png-7165a8ae8f36b01883df6b585a93f592.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://player/robot_demo.png"
+dest_files=[ "res://.import/robot_demo.png-7165a8ae8f36b01883df6b585a93f592.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0

+ 74 - 7
2d/platformer/project.godot

@@ -6,20 +6,63 @@
 ;   [section] ; section goes between []
 ;   [section] ; section goes between []
 ;   param=value ; assign values to parameters
 ;   param=value ; assign values to parameters
 
 
-config_version=3
+config_version=4
+
+_global_script_classes=[ {
+"base": "RigidBody2D",
+"class": "Bullet",
+"language": "GDScript",
+"path": "res://player/bullet.gd"
+}, {
+"base": "Area2D",
+"class": "Coin",
+"language": "GDScript",
+"path": "res://coin/coin.gd"
+}, {
+"base": "KinematicBody2D",
+"class": "Enemy",
+"language": "GDScript",
+"path": "res://enemy/enemy.gd"
+}, {
+"base": "Node2D",
+"class": "MovingPlatform",
+"language": "GDScript",
+"path": "res://platform/moving_platform.gd"
+}, {
+"base": "KinematicBody2D",
+"class": "Player",
+"language": "GDScript",
+"path": "res://player/player.gd"
+} ]
+_global_script_class_icons={
+"Bullet": "",
+"Coin": "",
+"Enemy": "",
+"MovingPlatform": "",
+"Player": ""
+}
 
 
 [application]
 [application]
 
 
 config/name="Platformer 2D"
 config/name="Platformer 2D"
-run/main_scene="res://stage.tscn"
+run/main_scene="res://Stage.tscn"
 config/icon="res://icon.png"
 config/icon="res://icon.png"
 target_fps="60"
 target_fps="60"
 
 
+[debug]
+
+gdscript/completion/autocomplete_setters_and_getters=true
+gdscript/warnings/unsafe_property_access=true
+gdscript/warnings/unsafe_method_access=true
+gdscript/warnings/unsafe_cast=true
+gdscript/warnings/unsafe_call_argument=true
+
 [display]
 [display]
 
 
 window/size/width=800
 window/size/width=800
 window/size/height=480
 window/size/height=480
 window/stretch/mode="2d"
 window/stretch/mode="2d"
+window/stretch/aspect="keep"
 stretch/aspect="keep_height"
 stretch/aspect="keep_height"
 stretch/mode="2d"
 stretch/mode="2d"
 
 
@@ -33,22 +76,37 @@ repeat=false
 
 
 [input]
 [input]
 
 
-jump=[ 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)
+jump={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
  ]
  ]
-move_left=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
+}
+move_left={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
  ]
  ]
-move_right=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
+}
+move_right={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
  ]
  ]
-shoot=[ 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)
+}
+shoot={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"unicode":0,"echo":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"unicode":0,"echo":false,"script":null)
  ]
  ]
-spawn=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777244,"unicode":0,"echo":false,"script":null)
+}
+spawn={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777244,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
  ]
  ]
+}
 
 
 [physics]
 [physics]
 
 
@@ -62,6 +120,15 @@ use_pixel_snap=true
 
 
 mipmap_policy=1
 mipmap_policy=1
 
 
+[rendering]
+
+quality/intended_usage/framebuffer_allocation=0
+quality/intended_usage/framebuffer_allocation.mobile=1
+quality/filters/anisotropic_filter_level=2
+quality/filters/use_nearest_mipmap_filter=true
+quality/voxel_cone_tracing/high_quality=false
+quality/depth/hdr=false
+
 [texture_import]
 [texture_import]
 
 
 filter=false
 filter=false

+ 0 - 32
2d/platformer/robot_demo.png.import

@@ -1,32 +0,0 @@
-[remap]
-
-importer="texture"
-type="StreamTexture"
-path="res://.import/robot_demo.png-8502817e0037b3f31eaca3dae49dcfc5.stex"
-
-[deps]
-
-source_file="res://robot_demo.png"
-source_md5="2a19cb85548217b26700914bd42617b4"
-
-dest_files=[ "res://.import/robot_demo.png-8502817e0037b3f31eaca3dae49dcfc5.stex" ]
-dest_md5="070eb843a3e7fbd77ae02e22a0190c54"
-
-[params]
-
-compress/mode=0
-compress/lossy_quality=0.7
-compress/hdr_mode=0
-compress/normal_map=0
-flags/repeat=0
-flags/filter=false
-flags/mipmaps=false
-flags/anisotropic=false
-flags/srgb=2
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/HDR_as_SRGB=false
-stream=false
-size_limit=0
-detect_3d=false
-svg/scale=1.0

+ 0 - 24
2d/platformer/sound_coin.wav.import

@@ -1,24 +0,0 @@
-[remap]
-
-importer="wav"
-type="AudioStreamSample"
-path="res://.import/sound_coin.wav-b4defacd1a1eab95585c7b5095506878.sample"
-
-[deps]
-
-source_file="res://sound_coin.wav"
-source_md5="c9b8b4e85a53ce0e7add721a872d0479"
-
-dest_files=[ "res://.import/sound_coin.wav-b4defacd1a1eab95585c7b5095506878.sample" ]
-dest_md5="bc48ea50ea226e68d159c771a7b6c318"
-
-[params]
-
-force/8_bit=false
-force/mono=false
-force/max_rate=false
-force/max_rate_hz=44100
-edit/trim=true
-edit/normalize=true
-edit/loop=false
-compress/mode=0

+ 0 - 24
2d/platformer/sound_explode.wav.import

@@ -1,24 +0,0 @@
-[remap]
-
-importer="wav"
-type="AudioStreamSample"
-path="res://.import/sound_explode.wav-23e94be75a4346bffb517c7e07035977.sample"
-
-[deps]
-
-source_file="res://sound_explode.wav"
-source_md5="c49bffd6268c2fb061a578c559fbd988"
-
-dest_files=[ "res://.import/sound_explode.wav-23e94be75a4346bffb517c7e07035977.sample" ]
-dest_md5="f1c1ea6486e70e5f621672683eea6d33"
-
-[params]
-
-force/8_bit=false
-force/mono=false
-force/max_rate=false
-force/max_rate_hz=44100
-edit/trim=true
-edit/normalize=true
-edit/loop=false
-compress/mode=0

+ 0 - 24
2d/platformer/sound_hit.wav.import

@@ -1,24 +0,0 @@
-[remap]
-
-importer="wav"
-type="AudioStreamSample"
-path="res://.import/sound_hit.wav-d8455980ada2d4a9a73508948d7317cc.sample"
-
-[deps]
-
-source_file="res://sound_hit.wav"
-source_md5="ce60125d5b1639a3b88d652aea6ca0c3"
-
-dest_files=[ "res://.import/sound_hit.wav-d8455980ada2d4a9a73508948d7317cc.sample" ]
-dest_md5="9314e087578e39441eed950ef19f066a"
-
-[params]
-
-force/8_bit=false
-force/mono=false
-force/max_rate=false
-force/max_rate_hz=44100
-edit/trim=true
-edit/normalize=true
-edit/loop=false
-compress/mode=0

+ 0 - 24
2d/platformer/sound_jump.wav.import

@@ -1,24 +0,0 @@
-[remap]
-
-importer="wav"
-type="AudioStreamSample"
-path="res://.import/sound_jump.wav-4966d1f327e26a176b56ab335c03b5e1.sample"
-
-[deps]
-
-source_file="res://sound_jump.wav"
-source_md5="f15f2f75683475fb46217cb108a91d44"
-
-dest_files=[ "res://.import/sound_jump.wav-4966d1f327e26a176b56ab335c03b5e1.sample" ]
-dest_md5="d93302188764fedd122195b34b711ceb"
-
-[params]
-
-force/8_bit=false
-force/mono=false
-force/max_rate=false
-force/max_rate_hz=44100
-edit/trim=true
-edit/normalize=true
-edit/loop=false
-compress/mode=0

+ 0 - 24
2d/platformer/sound_shoot.wav.import

@@ -1,24 +0,0 @@
-[remap]
-
-importer="wav"
-type="AudioStreamSample"
-path="res://.import/sound_shoot.wav-f0f26619cba21d411b53ad23b8788116.sample"
-
-[deps]
-
-source_file="res://sound_shoot.wav"
-source_md5="5c1909840119124623da414167fad697"
-
-dest_files=[ "res://.import/sound_shoot.wav-f0f26619cba21d411b53ad23b8788116.sample" ]
-dest_md5="8c33ecb945ea94e05e6be5ee5a7b0c6b"
-
-[params]
-
-force/8_bit=false
-force/mono=false
-force/max_rate=false
-force/max_rate_hz=44100
-edit/trim=true
-edit/normalize=true
-edit/loop=false
-compress/mode=0

File diff suppressed because it is too large
+ 0 - 29
2d/platformer/stage.tscn


+ 5 - 3
2d/platformer/tiles_demo.png.import

@@ -3,20 +3,21 @@
 importer="texture"
 importer="texture"
 type="StreamTexture"
 type="StreamTexture"
 path="res://.import/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.stex"
 path="res://.import/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.stex"
+metadata={
+"vram_texture": false
+}
 
 
 [deps]
 [deps]
 
 
 source_file="res://tiles_demo.png"
 source_file="res://tiles_demo.png"
-source_md5="6ec267217d26ae9bec28a948ef2a2aec"
-
 dest_files=[ "res://.import/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.stex" ]
 dest_files=[ "res://.import/tiles_demo.png-7ca5c7c5c02ab8abe0d585a6a8f086bd.stex" ]
-dest_md5="bad5b7f4a678554dadd7a95695a76507"
 
 
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_mode=0
 compress/hdr_mode=0
+compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 flags/repeat=0
 flags/repeat=0
 flags/filter=false
 flags/filter=false
@@ -26,6 +27,7 @@ flags/srgb=2
 process/fix_alpha_border=true
 process/fix_alpha_border=true
 process/premult_alpha=false
 process/premult_alpha=false
 process/HDR_as_SRGB=false
 process/HDR_as_SRGB=false
+process/invert_color=false
 stream=false
 stream=false
 size_limit=0
 size_limit=0
 detect_3d=false
 detect_3d=false

Some files were not shown because too many files changed in this diff