pingus-devel
[Top][All Lists]
Advanced

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

Re: Deadlock at playable/snow21-grumbel.xml


From: Gervase Lam
Subject: Re: Deadlock at playable/snow21-grumbel.xml
Date: Tue, 18 Mar 2003 02:20:43 +0000

> Date: Fri, 14 Mar 2003 02:02:15 +0000
> From: Gervase Lam <address@hidden>
> Subject: Re: Deadlock at playable/snow21-grumbel.xml

> > Date: 12 Mar 2003 15:03:45 +0100
> > From: Ingo Ruhnke <address@hidden>
> > Subject: Deadlock at playable/snow21-grumbel.xml
> >
> > In playable/snow21-grumbel.xml if directly at the start a left-walking
> > Pingu is turned into a climber, we will try to climb the obstacle at
> > the left and once he reached the top of it, the whole game will
> > deadlock, most likly since the while loop inside faller.cxx is never
> > ending.

> Before the Mover and Collider changes, Fallers (and therefore Jumpers)
> would just need to check the head or feet pixel if it needed to go up or
> down respectively, or the whole line of pixels between the feet and head
> if it was going horizontally.  If the Faller was going diagonally, it
> would move horizontally and vertically as two separate manoeuvres.  This
> means that if a Faller is just plain falling, it would only ever check
> its feet.  This is what is needed to solve this problem.

Attached is the patch for Fallers causing deadlocks.  This should also 
sort out Fallers causing deadlocks when falling in a tunnel that a Miner 
is still digging.  I tried the related demo file and I had no deadlocks.

I strongly suspect that the Climber turning into a Faller is connected 
with it.  However, I don't think I'll have much time to check that this is 
the case by re-compiling the old code until the end of this week.

Btw, the patch I've done checks if the Pingu needs to move one pixel 
horizontally when updating the Pingu position.  If it does, it basically 
runs the previous code (i.e. checks if *any* part of the Pingu from feet 
to head is colliding with anything).  Otherwise it just checks what is 
immediately above or below the Pingu and nothing else.

Therefore, if there is an explosion force, a Pingu may cause problems.  
However, because forces don't exist at the moment, this is not a problem.

Thanks,
Gervase.

Attachment: pingus.200303180210.cvs.diff
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]