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

Reply via email to