[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Scripting
Katie Lauren Lucas wrote:
> Suddenly, game animations turn into simple scripts:
>
> with actor Fred
> walk forwards 10m 10s
> say "Hi, I'm Fred."
> with actor Fred's arm
> point at Joe
> say "This is Joe, my sidekick."
>
> You can't do all this in a single frame loop (easily).
With a state machine, you can. For example, in this situation you would
have the following states for the Fred AI (this would be a lot easier
if I could draw the STD...)
walking
saying sentance 1 (SS1)
moving arm
saying sentance 2 (SS2)
the transitions would be
start -> walking
walking -> not in position -> walking
walking -> in position -> SS1
SS1 -> still talking -> SS1
SS1 -> finished -> moving arm
moving arm -> not poining at Joe -> moving arm
moving arm -> pointing at Joe -> SS2
SS2 -> still talking -> SS2
SS2 -> finished -> end
Of course, it's certain there would have to be more transitions and states
for Fred, but given a state at the start of the frame you can perform an
action and then update the state, either to a new one or retaining the
current one depending on whether specific conditions have been met.
> sleep 600s
> check ( target1.isDestroyed && target2.isDestroyed )
> gosub wingame
> else
> gosub timeout
>
> Again, without instructions that can span frames, this cannot be a simple
> script that's part of the game world.
Actually, this can be done with another state machine, for example:
states: reduce counter, win, timeout
The reduce counter state does something like
static int oldsecs;
if(gametime.seconds != oldsecs) {
counter --;
oldsecs = gametime.seconds;
}
the transitions:
start -> set counter to 601 -> reduce counter
reduce counter -> counter > 0 -> reduce counter
reduce counter -> counter == 0
and target1.isDestroyed
and target2.isDestroyed -> win
reduce counter -> counter == 0
and !target1.isDestroyed
or !target2.isDestroyed -> timeout
the win and timeout states could then trigger some function in the engine..
Chris
--
.------{ http://www.starforge.co.uk }-----. .--------------------------.
=[ Explorer2260, Designer and Coder \=\ P: TexMaker, ROACH, site \
=[___You_will_obey_your_corporate_masters___]==[ Stack: EETmTmTRRSS------ ]
- References:
- Scripting
- From: Dmitry Samoyloff <dsamoyloff@yandex.ru>
- Re: Scripting
- From: Steve Baker <sjbaker1@airmail.net>
- Re: Scripting
- From: Jorrit Tyberghein <Jorrit.Tyberghein@uz.kuleuven.ac.be>
- Re: Scripting
- From: Katie Lauren Lucas <katie@fysh.org>