Hi! Before there was talk about possible structures for FSM's in CEL during cspop for managing AI but this proposal was ousted after it was seen that quests could be applicable in this sense.
Now with making the movement controller for apricot character the various movesets have to be made and coordinated together. A monolithic design in the first sense may seem simpler and work better but it quickly becomes apparent in it's shortcomings. Namely, 1. Methods clutter whereby functions start getting grouping prefixes to distinguish themselves. 2. Extensibility by being able to tack on new components. 3. Configuration- monolithic is essentially saying "Here's what you get" A micro component design by contrast offers clarity at the expense of higher complexity and lower ease of use. The complexity comes from coordinating the various micro components to work together in a coherent way. Typically when you perform an action in-game, there will be a few actions you cannot perform while that action is being performed. Examples can be that you can jump while spin-attacking but cannot grab ledges, or that you cannot jump while performing a roll. Maybe pressing jump during a roll while wait for the roll to finish then perform an extra long rolling-jump. Notification of the roll being finished is not a problem in CEL as there is already a mechanism (messages). But for seeing that a roll is being performed the current best solution is, csRef<iPcRoll> roll = celQueryPropertyClassEntity<iPcRoll> (entity); if (roll->IsRolling ()) // blaa Not a problem, except due to the tight coupling with iPcRoll which totally destroys any reason for moveset components. Another issue is knowing what action to perform depending on a state dependent in another component- def JumpPressed (self, entity): if self.jump.IsJumping (): self.jump.Jump () else self.glide.Glide () Something more convenient and transparent for the user could be def __init__(self, entity): self.BindAction (JumpPressed, (self.Glide, self.Jump)) With the glide knowing beforehand automatically which state it is allowed to transition from and also with the option to have the user to override this and specify themselves how they want. Essentially I'm asking what mechanism already exists in CEL (are quests sufficient) to have a state machine easily accessible by multiple components for various actions like, 1. Can register more than one state- object can be in multiple states which can be removed individually. Like attacking, jumping and analogmotion. 2. Ruleset to describe what action to execute in what components depending on existing states. Component can then ask permission to register a state- if the ruleset rejects the new state then the action doesn't get performed. Thanks for your time, Genjix ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Cel-main mailing list Cel-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/cel-main