skip to main |
skip to sidebar
Protocol
- 2 livingobjects communicate and interact via a protocol
caller ==> callee
caller <-- callee return
- consensus - hand shaking before making any change
- autonomous - read-only to each others' state
- any updates that affect determinism must occur no earlier than the upcoming frame transition
- this treatment is to ensure that livingobjects have equal opportunity regardless of their position on the processing pipeline
- for explanation of this problem see multi-processing
hit
- exist between all living objects
A ==> B.hit()
I hit you!
A <-- true
accept your hit (hand shaking)
- A is responsible for keeping
arest
or vrest
, that A cannot interact with B again in a defined time interval
- B is responsible for putting itself into an effect
- B may return false under some circumstances, in such case this hit event will cause no change
catch & throw
- exists only between characters, say A catches B:
- phase a: when A's itr:kind:1 intersect with B's body, which B is in state 16
A ==> B.caught_a()
I catch you!
- B double checks whether itself is in state 16 (autonomous)
- B transits to itr.caughtact depends on being attacked in front or at back
- B resets fall, drops weapon and labels A as
catcher
- B returns true, and indicates being attacked in front or at back
A <-- true
yes you caught me (hand shaking)
- A transits to itr.catchingact depends on attacked in front or at back
- A labels B as
being caught
(a channel established)
- phase b: A has a cpoint:kind:1, B has a cpoint:kind:2
A ==> B.caught_b()
- B receives and stores A's cpoint
- B will (in the next TU) move itself to coincide its cpoint with A's cpoint
- phase throw: when A decides to throw B
A ==> B.caught_throw()
- B transits to cpoint.vaction or (if undefined) a default frame
- B receives and stores A's cpoint
- B will (in the next TU) gain velocity and an impulse, and fly away afterwards
0 comments:
Post a Comment