Unreal3 uses state machine like you said but even better - every state has weight so it's Fuzzy State Machine. But do we have manpower to rewrite quest system ? I doubt.
Cheers 2008/7/13 Amir Taaki <[EMAIL PROTECTED]>: > 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 > ------------------------------------------------------------------------- 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