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

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



Hi,

Am Mittwoch, den 19.09.2012, 20:56 +0200 schrieb Joachim Breitner:
> Am Mittwoch, den 19.09.2012, 10:09 +0200 schrieb Joachim Breitner:
> > Hmm, it seems that the server for redeeming the key is down or blocked
> > by my firewall, I’ll try from at home.
> 
> yes, here it works. I can play the game, but I also have occasional
> lock-ups of some or all the control keys. Sometimes, but not always, I
> can fix it by Esc → Continue, or Esc → Restart from beginning. No idea
> about when it happens, though.

I have started to debug this. I found that when this happens (at least
when it happens right at the start of the level), then nikki’s state is
not Wait but

        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}}

which seems to be the initial state. So for some reason, the jump does
not end.

The function getJumpingForces does the same thing in both cases (return
Vector 0 0).

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?

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 {nikkiCollisions = [], nikkiTouchesDeadly = False, triggers = fromList [], terminals = fromList [], batteries = fromList [], fallingTiles = fromList [], nearestSign = Nothing}
in the bad case and
Contacts {nikkiCollisions = [NikkiCollision {nikkiCollisionShape = <Shape>, nikkiCollisionAngle = 0.0, nikkiCollisionPosition = Vector (-208.0) (-64.0), nikkiCollisionType = NikkiLegsCT}], nikkiTouchesDeadly = False, triggers = fromList [], terminals = fromList [], batteries = fromList [], fallingTiles = fromList [], nearestSign = Just (<Shape>,86.0)}
in the good case. Ok, nothing new.

Maybe the Chipmunk callbacks are broken?

I suspected that maybe resetContactRef was called too early or too often
but that does not seem to be the case.


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.

If you, Söhnke, cannot reproduce it then it might be a library version
issue. This is libchipmunk 5.3.4-1 here.

Greetings,
Joachim


-- 
Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: