State Machine: Best way?
-
@Deeeds What is it you are not understanding?
There is nothing crazy going on here, whatsoever.
Do you know how attributes work at all?In the 2nd example, I am not really making any states or anything. I am just skipping straight to the action.
In the 3rd example, I am just turning state behaviors on and off.
-
@GameCRAZY No, I don't think I know how Attributes work, at all. I thought I did, until I read your answer above... then I figured I don't know what I don't know.
-
@Deeeds Attributes might as well work like Labels, you know how those work right? You can set them to a value or text and you can get them. First you have to actually give your character an attribute, which works similarly to adding a Tag to an object. When setting/getting an attribute, you should be able to enter the key name for the attribute, but I’d just press the Dynamic and change it to the other one. I can try send screenshots if you need.
-
@Aidan-Oxley @GameCRAZY have either of you tried using Attributes lately?
I just created 2 different ones, and then searched for them in a getter, in the predefined list.
But that list is empty. So something's broken.
-
@Deeeds, is the behaviour selecting the same object that has the attributes? And also, you have to actually set the attribute through the editor for it to show up on the list, not through a behaviour; it's like setting a tag.
I think GameCRAZY is describing if you want something to happen immediately when the state changes, but I'm assuming you're setting the state for later use. I think set/get attribute with a bunch of ifs is the best way for this, until we get something like switch statements.
-
@Jack8680 Do you mean the Scene Editor setting of attributes is required before they're initiated in the Behaviour Editor, where they're created, edited and utilised?
If so... WHY?
-
@Deeeds Attributes work by setting a certain attribute of a certain object, each attribute of that object is given a key, which is then used to get and set Attributes. You can either use Predefined keys, or you can use dynamic keys where instead of selecting a key you type it in (this allows for the creating of new keys while the project is running).
-
@Aidan-Oxley Yes, I got all that, the first 3 times.
The problem is... they're not working in the Behaviour Editor.
-
@Deeeds How are they not working? First you actually have to give the object an attribute key and default value. Best way to do this would be to just find the attributes tab when selecting the object in the scene editor, then press the plus button. After creating an attribute, if you select the object in get or set attribute, the attribute should come up in the Predefined list.
-
@Aidan-Oxley Why in the Scene Editor?
They have no use in the Scene Editor.
Why this extra round trip out to the Scene Editor to "create" something that's already been created?
What am I missing from understanding what these things are?
-
@Deeeds for predefined, create them in the scene editor, for dynamic creat them in the behavior.
-
@Deeeds said in State Machine: Best way?:
@Aidan-Oxley Why in the Scene Editor?
They have no use in the Scene Editor.
Why this extra round trip out to the Scene Editor to "create" something that's already been created?
What am I missing from understanding what these things are?
You do it in the scene editor because you're giving a specified object it's own attribute or property.
Think of it like how each object has it's own mass. You can adjust the mass right from the main editor with out having to use a behaviour. The attributes are designed so you can do this same quick change with any custom parameter you create.For example, say you create an attribute that defines the difficulty of an enemy. You can duplicate this enemy, and quickly change the difficulty with out going into the behaviours and changing anything there.
The ones you create inside the behaviour editor under "dynamic" are generated at runtime.
-
@Murtaza Yes, I get the functionality, the purpose and their reasoning for existence.
What I don't understand is the limited design of their operability.
If I'm in the Behaviour Editor, where I must be to initially create and attach an attribute to an object, why can't I finish its creation and setting up, utterly, thoroughly and completely in the Behaviour Editor?
Why do I need to roundtrip out to the Scene Editor to complete the process? This is arbitrary restriction, and not necessary for ANY OTHER property, all of which can be adjusted inside the Behaviour Editor.
Take your Mass example, as an example.
I don't need to go out to the Scene Editor in order to access that property, I can do it in the Behaviour Editor with a Get and Set of the Mass.
I think the problem is the conflation of Set attribute with Create Attribute. For the sake of clarity, ease of use, separation of tasks and a sane workflow etc... perhaps there should be a "Create Attribute" behaviour and Set and Get.
-
@Deeeds If you use Set Attribute with a dynamic key and give it a name, when the behaviour is run and that key doesn’t exist yet it, will create a new attribute with that key. Predefined is just another option for games where you don’t want to dynamically add new keys, but you just want the key to be there from the start.
-
@Deeeds There is no problem. None.
Stop making stuff out of nothing.
-
@GameCRAZY Run along.
-
@Deeeds Some of us have been here since day 1, and we have submitted less "problems" than you have in one week.
-
@GameCRAZY If you're not going to help with my understanding of this problem, recognition of this as a problem or inconsistency or otherwise. Run along. Please.
You're not helping.
-
Guys lets keep this civil.
While we appreciate our passionate users trying to defend the app, we know it's not perfect.
We also really appreciate the passionate users who are willing to give their feedback and information.
We know hyperPad has tons of room for improvement. Somethings we couldn't do based on timing, or they rely on something else. Other features we decided not to include on purpose. But in the end when users give their feedback it really helps us prioritize, and helps us find things we missed.We're all here for the same reasons, and we all (hopefully) want hyperPad to be awesome. :).