[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Nikki and the Robots – where is it stuck?



Hi!

Thanks for working on this, Joachim.

On 09/24/2012 11:36 PM, Joachim Breitner wrote:
> [...]
> The state changes in the beginning in the good case are:
> 
> State {action = Airborne, direction = HRight, feetVelocity = 0.0, jumpInformation = JumpInformation {jumpStartTime = Nothing, jumpCollisionAngle = Nothing, jumpNikkiVelocity = Vector 0.0 0.0, jumpButtonDirection = Nothing}, ghostTimes = GhostTimes {standingGhostTime_ = Nothing, wallSlideGhostTime_ = Nothing}}
> State {action = Airborne, direction = HRight, feetVelocity = -0.0, jumpInformation = JumpInformation {jumpStartTime = Nothing, jumpCollisionAngle = Nothing, jumpNikkiVelocity = Vector 0.0 0.0, jumpButtonDirection = Nothing}, ghostTimes = GhostTimes {standingGhostTime_ = Nothing, wallSlideGhostTime_ = Nothing}}
> State {action = Wait {collision = NikkiCollision {nikkiCollisionShape = <Shape>, nikkiCollisionAngle = 0.0, nikkiCollisionPosition = Vector (-208.0) (-64.0), nikkiCollisionType = NikkiLegsCT}, ghost = False}, direction = HRight, feetVelocity = 0.0, jumpInformation = JumpInformation {jumpStartTime = Nothing, jumpCollisionAngle = Nothing, jumpNikkiVelocity = Vector 0.0 0.0, jumpButtonDirection = Nothing}, ghostTimes = GhostTimes {standingGhostTime_ = Nothing, wallSlideGhostTime_ = Nothing}}
> 
> in the bad case, it does not enter NikkiCollision. Maybe a rounding
> error?

The state should definitely enter into "action = Wait {..." when Nikki
touches the ground.

> 
> In the cood case, "nikkiCollisions contacts" returns
> [NikkiCollision {nikkiCollisionShape = <Shape>, nikkiCollisionAngle = 0.0, nikkiCollisionPosition = Vector (-208.0) (-64.0), nikkiCollisionType = NikkiLegsCT}]
> and in the base case nothing. So what does contacts contain?

'contacts' should contain all relevant collisions for the game logic.
The creation of 'contacts' is defined in Object.Contacts. Also, the
contacts don't only appear once when a collision starts, they should be
reported continuously while a collision exists.

> Maybe the Chipmunk callbacks are broken?
> [reorder...]
> If you, Söhnke, cannot reproduce it then it might be a library version
> issue. This is libchipmunk 5.3.4-1 here.

We use the version of chipmunk that ships with the current Hipmunk
package, which is 5.3.5. So this could be a chipmunk bug. If I get to
it, I will try to build Hipmunk with chipmunk-5.3.4-1 to confirm this.
Maybe someone on debian could try out the 5.3.5 version? (By using
Hipmunk from hackage.)

> Anyways, enough for now. Guess I’m not very helpful. But in any case I
> can reliably reproduce it by just restarting a level until Nikki hangs
> in mid-air with in the jumping state. I can turn him around, but not
> move him or make him jump.

Your efforts are very helpful. Now we know, it has something to do with
the collision detection. That's very valuable.


Cheers,
Sönke

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: