A Godot Plugin to manage simple cascade state machine
Works only on Godot 4.x versions
Saturn is a versatile addon crafted for the Godot game engine, designed to streamline and simplify the management of states within your game projects. At its core, Saturn serves as a robust state management tool, offering developers a straightforward solution for organizing and transitioning between different states within their games.
Define your state machine, and Saturn will efficiently determine and return the initial reachable state, simplifying your state management process.
- You can search "Saturn" on Godot Assets Library
- You can download this repo, copy and paste the
addons/saturn
into your project's folder
To start just create a SaturnStatePlayer
Then you will create a state machine of the type SaturnStateGroup
, after this you can use the State Machine
tab
You can use the add button to add new states on the state machine.
It's merely a collection of states without any distinctive characteristics or behavior.
With this state, you have the ability to specify an argument name, an operator, and a value. When this condition holds true, the enclosed states will be invoked.
You can set a cooldown period, causing the state machine to wait for a specified duration before re-entering the states within. Typically, this state will be nested within a conditional state.
The value state determines the state machine's status upon reaching it.
Using this state, you can temporarily lock to a state for a specified duration.
Also you can lock a state by code, using:
saturn_state_player.lock_state(state, time)
You can use the arguments to check conditions, using:
saturn_state_player.set_argument("argument_name", value)
You can get the state using:
saturn_state_player.get_state
By default all states will be int, but you can use a data adapter to change the state to an enum.
for example:
class_name TestDataAdapter extends SaturnDataAdapter
enum State{
IDLE,
JUMPING,
CROUCHING
}
func from_data(state: Variant) -> int:
return state
func to_data(state: int) -> State:
return State.get(State.keys()[state])
func get_data_list() -> Array:
return State.keys()
after create the script you just use in the SaturnStatePlayer
then all states will be translated using the data adapter
- I Found a BUG! Click here and open an issue
- Can I help with the project? Sure! just send your PR :D
- Can I contact you? Yep, send email to [email protected]