pandemonium_demo_projects/2d/finite_state_machine
2023-04-06 21:19:37 +02:00
..
debug Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
fonts Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
player Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
screenshots Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
state_machine Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
Demo.tscn Make sure everything works under the 2d folder. 2023-04-06 21:19:37 +02:00
icon.png Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
icon.png.import Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
project.pandemonium Make sure everything works under the 2d folder. 2023-04-06 21:19:37 +02:00
README.md Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00

Hierarchical Finite State Machine

This example shows how to apply the State machine programming pattern in GDscript, including Hierarchical States, and a pushdown automaton.

Language: GDScript

Renderer: GLES 2

Check out this demo on the asset library: https://godotengine.org/asset-library/asset/516

Why use a state machine

States are common in games. You can use the pattern to:

  1. Separate each behavior and transitions between behaviors, thus make scripts shorter and easier to manage.

  2. Respect the Single Responsibility Principle. Each State object represents one action.

  3. Improve your code's structure. Look at the scene tree and FileSystem tab: without looking at the code, you'll know what the Player can or cannot do.

You can read more about States in the excellent Game Programming Patterns ebook.

Screenshots

Screenshot