From c11afd9ddd39a0b3e75152ef23a302bf64208f8c Mon Sep 17 00:00:00 2001 From: djairoh Date: Fri, 23 Jan 2026 10:48:14 +0100 Subject: [PATCH] ft (Wip): FSM behaviour prey --- .../addons/godot_vim/godot_vim.gd | 8 ++++ .../addons/godot_vim/godot_vim.gd.uid | 1 + .../addons/godot_vim/godot_vim.gdextension | 12 ++++++ .../godot_vim/godot_vim.gdextension.uid | 1 + evolve-die-repeat/addons/godot_vim/plugin.cfg | 6 +++ evolve-die-repeat/game_manager.gd | 1 + .../assets/background/dirt-specs.png | Bin 20542 -> 0 bytes .../assets/background/dirt-specs.png.import | 40 ------------------ .../molecular/molecular_player.gd | 2 - .../molecular/molecular_stage.tscn | 3 +- .../molecular/nucleotide_prey.gd | 3 +- .../molecular/nucleotide_prey.tscn | 25 ++++++++--- .../molecular/nucleotide_prey_foraging.gd | 17 ++++++++ .../molecular/nucleotide_prey_foraging.gd.uid | 1 + .../molecular/nucleotide_prey_state.gd | 6 +++ .../molecular/nucleotide_prey_state.gd.uid | 1 + evolve-die-repeat/molecular/prey_manager.gd | 5 ++- evolve-die-repeat/project.godot | 4 ++ evolve-die-repeat/shared/npc/prey2D.gd | 4 ++ .../shared/npc/spawn_manager_2d.gd | 3 +- evolve-die-repeat/shared/state.gd | 24 +++++++++++ evolve-die-repeat/shared/state.gd.uid | 1 + evolve-die-repeat/shared/state_machine.gd | 39 +++++++++++++++++ evolve-die-repeat/shared/state_machine.gd.uid | 1 + 24 files changed, 154 insertions(+), 54 deletions(-) create mode 100644 evolve-die-repeat/addons/godot_vim/godot_vim.gd create mode 100644 evolve-die-repeat/addons/godot_vim/godot_vim.gd.uid create mode 100644 evolve-die-repeat/addons/godot_vim/godot_vim.gdextension create mode 100644 evolve-die-repeat/addons/godot_vim/godot_vim.gdextension.uid create mode 100644 evolve-die-repeat/addons/godot_vim/plugin.cfg delete mode 100644 evolve-die-repeat/molecular/assets/background/dirt-specs.png delete mode 100644 evolve-die-repeat/molecular/assets/background/dirt-specs.png.import create mode 100644 evolve-die-repeat/molecular/nucleotide_prey_foraging.gd create mode 100644 evolve-die-repeat/molecular/nucleotide_prey_foraging.gd.uid create mode 100644 evolve-die-repeat/molecular/nucleotide_prey_state.gd create mode 100644 evolve-die-repeat/molecular/nucleotide_prey_state.gd.uid create mode 100644 evolve-die-repeat/shared/state.gd create mode 100644 evolve-die-repeat/shared/state.gd.uid create mode 100644 evolve-die-repeat/shared/state_machine.gd create mode 100644 evolve-die-repeat/shared/state_machine.gd.uid diff --git a/evolve-die-repeat/addons/godot_vim/godot_vim.gd b/evolve-die-repeat/addons/godot_vim/godot_vim.gd new file mode 100644 index 0000000..03deda8 --- /dev/null +++ b/evolve-die-repeat/addons/godot_vim/godot_vim.gd @@ -0,0 +1,8 @@ +@tool +extends GodotVimPlugin + +func _enter_tree(): + pass + +func _exit_tree(): + pass diff --git a/evolve-die-repeat/addons/godot_vim/godot_vim.gd.uid b/evolve-die-repeat/addons/godot_vim/godot_vim.gd.uid new file mode 100644 index 0000000..19e6468 --- /dev/null +++ b/evolve-die-repeat/addons/godot_vim/godot_vim.gd.uid @@ -0,0 +1 @@ +uid://c0i5fl58y2apo diff --git a/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension b/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension new file mode 100644 index 0000000..7c0f67b --- /dev/null +++ b/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension @@ -0,0 +1,12 @@ +[configuration] +entry_symbol = "gdext_rust_init" +compatibility_minimum = "4.5" +reloadable = true + +[libraries] +linux.debug.x86_64 = "res://addons/godot_vim/bin/libgodot_vim.so" +linux.release.x86_64 = "res://addons/godot_vim/bin/libgodot_vim.so" +windows.debug.x86_64 = "res://addons/godot_vim/bin/godot_vim.dll" +windows.release.x86_64 = "res://addons/godot_vim/bin/godot_vim.dll" +macos.debug.universal = "res://addons/godot_vim/bin/libgodot_vim.dylib" +macos.release.universal = "res://addons/godot_vim/bin/libgodot_vim.dylib" diff --git a/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension.uid b/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension.uid new file mode 100644 index 0000000..a25656b --- /dev/null +++ b/evolve-die-repeat/addons/godot_vim/godot_vim.gdextension.uid @@ -0,0 +1 @@ +uid://cgm1ycwc1a0ll diff --git a/evolve-die-repeat/addons/godot_vim/plugin.cfg b/evolve-die-repeat/addons/godot_vim/plugin.cfg new file mode 100644 index 0000000..715349c --- /dev/null +++ b/evolve-die-repeat/addons/godot_vim/plugin.cfg @@ -0,0 +1,6 @@ +[plugin] +name="GodotVim" +description="Vim emulation for Godot's script editor" +author="hmdfrds" +version="0.1.4" +script="godot_vim.gd" diff --git a/evolve-die-repeat/game_manager.gd b/evolve-die-repeat/game_manager.gd index 2366d1f..51c239f 100644 --- a/evolve-die-repeat/game_manager.gd +++ b/evolve-die-repeat/game_manager.gd @@ -2,6 +2,7 @@ extends Node var screen_size = Vector2(1920.0, 1080.0) # Default screen size (this is a float for some reason) var viewport_size +@onready var extent: Rect2 = get_viewport().get_visible_rect() func _ready() -> void: viewport_size = get_viewport().get_visible_rect().size diff --git a/evolve-die-repeat/molecular/assets/background/dirt-specs.png b/evolve-die-repeat/molecular/assets/background/dirt-specs.png deleted file mode 100644 index 28a28dda8ee9735e4c53a93e7fdf6ce0ed223586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20542 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 RAyEJT002ovPDHLkV1lY>H@*M> diff --git a/evolve-die-repeat/molecular/assets/background/dirt-specs.png.import b/evolve-die-repeat/molecular/assets/background/dirt-specs.png.import deleted file mode 100644 index 830b775..0000000 --- a/evolve-die-repeat/molecular/assets/background/dirt-specs.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bfjf6dxvbq5cj" -path="res://.godot/imported/dirt-specs.png-ef6f8fd578fedf9d185ca3625a87c7c3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://molecular/assets/background/dirt-specs.png" -dest_files=["res://.godot/imported/dirt-specs.png-ef6f8fd578fedf9d185ca3625a87c7c3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/evolve-die-repeat/molecular/molecular_player.gd b/evolve-die-repeat/molecular/molecular_player.gd index e1e6461..534f636 100644 --- a/evolve-die-repeat/molecular/molecular_player.gd +++ b/evolve-die-repeat/molecular/molecular_player.gd @@ -19,8 +19,6 @@ func _ready() -> void: attack_area.monitoring = false # no collision until attacking attack_timer.wait_time = attack_duration attack_cooldown_timer.wait_time = attack_cooldown_duration - - func _process(delta): velocity = Vector2.ZERO diff --git a/evolve-die-repeat/molecular/molecular_stage.tscn b/evolve-die-repeat/molecular/molecular_stage.tscn index 3ae908b..15636f5 100644 --- a/evolve-die-repeat/molecular/molecular_stage.tscn +++ b/evolve-die-repeat/molecular/molecular_stage.tscn @@ -14,7 +14,7 @@ tile_data = PackedInt32Array(0, 65536, 2, 65536, 65536, 3, 1, 131072, 2, 65537, tile_data = PackedInt32Array(0, 196608, 2, 65536, 196608, 3, 1, 262144, 2, 65537, 262144, 3) [sub_resource type="TileMapPattern" id="TileMapPattern_mys4o"] -tile_data = PackedInt32Array(0, 196608, 0, 65536, 196608, 1, 1, 262144, 0, 65537, 262144, 1) +tile_data = PackedInt32Array(0, 196608, 0, 65536, 196608, 1) [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_b1jr0"] resource_name = "Background tileset" @@ -76,6 +76,7 @@ tile_map_data = PackedByteArray("AAAAAAAAAAAAAAIAAAAAAAEAAAAAAAIAAAAAAAIAAAAAAAI tile_set = SubResource("TileSet_mys4o") [node name="ParallaxNear" type="Parallax2D" parent="Background"] +z_index = 5 scroll_scale = Vector2(0.9, 0.9) repeat_times = 7 diff --git a/evolve-die-repeat/molecular/nucleotide_prey.gd b/evolve-die-repeat/molecular/nucleotide_prey.gd index 732c738..f1ca09c 100644 --- a/evolve-die-repeat/molecular/nucleotide_prey.gd +++ b/evolve-die-repeat/molecular/nucleotide_prey.gd @@ -11,8 +11,7 @@ var mirrorSprite3: Node2D # Called when the node enters the scene tree for the first time. func _ready() -> void: health = maxHealth - sprite.animation = "Healthy" - sprite.play() + sprite.play("Healthy") mirrorSprite1 = sprite.duplicate() mirrorSprite2 = sprite.duplicate() diff --git a/evolve-die-repeat/molecular/nucleotide_prey.tscn b/evolve-die-repeat/molecular/nucleotide_prey.tscn index c3bbedc..e40fea2 100644 --- a/evolve-die-repeat/molecular/nucleotide_prey.tscn +++ b/evolve-die-repeat/molecular/nucleotide_prey.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://c3iw2v3x6ngrb"] +[gd_scene load_steps=12 format=3 uid="uid://c3iw2v3x6ngrb"] [ext_resource type="PackedScene" uid="uid://bvsdg1v3ksixy" path="res://shared/npc/prey2D.tscn" id="1_qvulj"] [ext_resource type="Script" uid="uid://bgossk6xo31gi" path="res://molecular/nucleotide_prey.gd" id="2_0227s"] @@ -8,11 +8,13 @@ [ext_resource type="Texture2D" uid="uid://uy28y3mkk6nt" path="res://molecular/assets/prey/prey-healthy-frame1.png" id="5_ae5nf"] [ext_resource type="Texture2D" uid="uid://btnyajci8ptb2" path="res://molecular/assets/prey/prey-injured-frame0.png" id="6_0f87h"] [ext_resource type="Texture2D" uid="uid://bqll8ge4cr2uf" path="res://molecular/assets/prey/prey-injured-frame1.png" id="7_w7inl"] +[ext_resource type="Script" uid="uid://c7o7sp02u0wkv" path="res://molecular/nucleotide_prey_state.gd" id="9_guu3v"] +[ext_resource type="Script" uid="uid://ubcu8fdfxxj1" path="res://molecular/nucleotide_prey_foraging.gd" id="10_rgguv"] [sub_resource type="SpriteFrames" id="SpriteFrames_66x8p"] animations = [{ "frames": [{ -"duration": 20.0, +"duration": 1.0, "texture": ExtResource("2_lkj7f") }, { "duration": 20.0, @@ -23,7 +25,7 @@ animations = [{ "speed": 1.0 }, { "frames": [{ -"duration": 20.0, +"duration": 1.0, "texture": ExtResource("4_ee1gb") }, { "duration": 20.0, @@ -34,7 +36,7 @@ animations = [{ "speed": 1.0 }, { "frames": [{ -"duration": 20.0, +"duration": 1.0, "texture": ExtResource("6_0f87h") }, { "duration": 20.0, @@ -54,4 +56,17 @@ maxHealth = 20 [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0"] scale = Vector2(0.1, 0.1) sprite_frames = SubResource("SpriteFrames_66x8p") -animation = &"Dying" +animation = &"Injured" + +[node name="State" type="Node" parent="." index="2"] +script = ExtResource("9_guu3v") +metadata/_custom_type_script = "uid://co2xp7gauamql" + +[node name="Foraging" type="Node" parent="State" index="0"] +script = ExtResource("10_rgguv") +metadata/_custom_type_script = "uid://c7o7sp02u0wkv" + +[node name="Timer" type="Timer" parent="State/Foraging" index="0"] +one_shot = true + +[connection signal="timeout" from="State/Foraging/Timer" to="State/Foraging" method="_on_timer_timeout"] diff --git a/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd b/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd new file mode 100644 index 0000000..11f1757 --- /dev/null +++ b/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd @@ -0,0 +1,17 @@ +extends NucleotidePreyState + +@onready var timer = $Timer +var dir: float = 0.0 + +func enter(previous_state_path: String, data := {}) -> void: + timer.start(randi() % 5) + dir = randi() % 360 + +func physics_update(_delta: float) -> void: + # TODO: move in direction of dir + pass + + +func _on_timer_timeout() -> void: + dir = randi() % 360 + timer.start(randi() % 5) diff --git a/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd.uid b/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd.uid new file mode 100644 index 0000000..a7e2045 --- /dev/null +++ b/evolve-die-repeat/molecular/nucleotide_prey_foraging.gd.uid @@ -0,0 +1 @@ +uid://ubcu8fdfxxj1 diff --git a/evolve-die-repeat/molecular/nucleotide_prey_state.gd b/evolve-die-repeat/molecular/nucleotide_prey_state.gd new file mode 100644 index 0000000..f3140c5 --- /dev/null +++ b/evolve-die-repeat/molecular/nucleotide_prey_state.gd @@ -0,0 +1,6 @@ +class_name NucleotidePreyState extends State + +enum State {IDLE, FORAGING, FEEDING, FLEEING} + +func _ready() -> void: + await owner.ready diff --git a/evolve-die-repeat/molecular/nucleotide_prey_state.gd.uid b/evolve-die-repeat/molecular/nucleotide_prey_state.gd.uid new file mode 100644 index 0000000..55b2c6a --- /dev/null +++ b/evolve-die-repeat/molecular/nucleotide_prey_state.gd.uid @@ -0,0 +1 @@ +uid://c7o7sp02u0wkv diff --git a/evolve-die-repeat/molecular/prey_manager.gd b/evolve-die-repeat/molecular/prey_manager.gd index 8e6b926..14fe0a4 100644 --- a/evolve-die-repeat/molecular/prey_manager.gd +++ b/evolve-die-repeat/molecular/prey_manager.gd @@ -1,10 +1,11 @@ extends SpawnManager2D -@export var cam: Camera2D +#@export var cam: Camera2D # Called when the node enters the scene tree for the first time. func _ready() -> void: - spawnRange = cam.get_viewport_rect() + spawnRange = GameManager.extent + #spawnRange = cam.get_viewport_rect() _spawn_minimum() diff --git a/evolve-die-repeat/project.godot b/evolve-die-repeat/project.godot index 4cbd70a..b4ca26f 100644 --- a/evolve-die-repeat/project.godot +++ b/evolve-die-repeat/project.godot @@ -19,6 +19,10 @@ config/icon="res://icon.svg" GameManager="*res://game_manager.gd" +[editor_plugins] + +enabled=PackedStringArray("res://addons/godot_vim/plugin.cfg") + [global_group] player="All scenes that constitute players should be added here." diff --git a/evolve-die-repeat/shared/npc/prey2D.gd b/evolve-die-repeat/shared/npc/prey2D.gd index 84a8394..1013af6 100644 --- a/evolve-die-repeat/shared/npc/prey2D.gd +++ b/evolve-die-repeat/shared/npc/prey2D.gd @@ -1,6 +1,10 @@ extends NPC2D class_name AbstractPrey2D +enum States {IDLE, FORAGING, FLEEING} +var state = States.IDLE + + # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Replace with function body. diff --git a/evolve-die-repeat/shared/npc/spawn_manager_2d.gd b/evolve-die-repeat/shared/npc/spawn_manager_2d.gd index 4bf6f5b..2ad5269 100644 --- a/evolve-die-repeat/shared/npc/spawn_manager_2d.gd +++ b/evolve-die-repeat/shared/npc/spawn_manager_2d.gd @@ -1,11 +1,10 @@ extends Node class_name SpawnManager2D -#var scene = preload("res://molecular/nucleotide_prey.tscn") @export var scene: PackedScene @export var minCount = 1 @export var maxCount = 2 -@export var spawnRange: Rect2 +@export var spawnRange: Rect2 = Rect2(0, 0, 0, 0) var _currentCount = 0 diff --git a/evolve-die-repeat/shared/state.gd b/evolve-die-repeat/shared/state.gd new file mode 100644 index 0000000..067ff24 --- /dev/null +++ b/evolve-die-repeat/shared/state.gd @@ -0,0 +1,24 @@ +class_name State extends Node + +# Emits on state completion +signal finished(next_state_path: String, data: Dictionary) + +# Called by StateMachine on unhandled input +func handle_input(_event: InputEvent) -> void: + pass + +# Main update loop +func update(_delta: float) -> void: + pass + +# Physics update loop +func physics_update(_delta: float) -> void: + pass + +# Called by StateMachine on state change. Data contains arbitrary data to initialize state. +func enter(previous_state_path: String, data := {}) -> void: + pass + +# Called by StateMachine before state change. Should be used for cleanup. +func exit() -> void: + pass diff --git a/evolve-die-repeat/shared/state.gd.uid b/evolve-die-repeat/shared/state.gd.uid new file mode 100644 index 0000000..5986cde --- /dev/null +++ b/evolve-die-repeat/shared/state.gd.uid @@ -0,0 +1 @@ +uid://co2xp7gauamql diff --git a/evolve-die-repeat/shared/state_machine.gd b/evolve-die-repeat/shared/state_machine.gd new file mode 100644 index 0000000..33fd0f2 --- /dev/null +++ b/evolve-die-repeat/shared/state_machine.gd @@ -0,0 +1,39 @@ +class_name StateMachine extends Node + +@export var initial_state: State = null + +# use first child as 'active' state +@onready var state: State = (func get_initial_state() -> State: + return initial_state if initial_state != null else get_child(0) +).call() + +# Connect states on ready, then wait. +func _ready() -> void: + for node: State in find_children("*", "State"): + node.finished.connect(_transition_to_next_state) + + await owner.ready + state.enter("") + +# pass unhandled input to state. +func _unhandled_input(event: InputEvent) -> void: + state.handle_input(event) + +# Pass process tick to state. +func _process(delta: float) -> void: + state.update(delta) + +# Pass physics tick to state. +func _physics_process(delta: float) -> void: + state.physics_update(delta) + +# Transition to next state +func _transition_to_next_state(target_path: String, data: Dictionary = {}) -> void: + if not has_node(target_path): + printerr(owner.name + ": Trying to transition to state " + target_path + ", which does not exist.") + return + + var previous_state_path := state.name + state.exit() + state = get_node(target_path) + state.enter(previous_state_path, data) diff --git a/evolve-die-repeat/shared/state_machine.gd.uid b/evolve-die-repeat/shared/state_machine.gd.uid new file mode 100644 index 0000000..a5d7b40 --- /dev/null +++ b/evolve-die-repeat/shared/state_machine.gd.uid @@ -0,0 +1 @@ +uid://ck7k8ht54snsy