Page 1 of 1

Me & My Spikey Death

PostPosted: 19 Feb 2011, 22:07
by qubodup
The spikes appear too easy to hit to me.. pixel perfect hit area would be nice.

video.. http://www.youtube.com/watch?v=VbvioFxvCTE

It feels weird when death removes a char. and nothing else. A death animation would be nice. How about using this animation?

Re: Me & My Spikey Death

PostPosted: 19 Feb 2011, 23:35
by gordebak
Thanks.

Actually I hope to change the graphics completely. This includes explosions and smaller bounding boxes (if not pixel perfect collision). Edward did all the job so far. I hope to work on the game a bit soon.

Re: Me & My Spikey Death

PostPosted: 30 Dec 2011, 22:16
by Edward_Lii
Hello qubodup,

qubodup {l Wrote}:It feels weird when death removes a char. and nothing else. A death animation would be nice. How about using this animation?

I've been playing with a death animation and tried your suggestion.
There's a problem with it that it's hard to see due to the fact that it's white/gray just like the background.
And maybe an explosion isn't the best kind of death animation for this game?

But what I did notice while testing is that a death animation is definitely something that's missing.
I'm now wondering what should happen when the player hits spikes: an explosion, fading out, falling animation, etc... - OR - perhaps leave it as it is, no animation at all?

Suggestions are welcome! ;)

Re: Me & My Spikey Death

PostPosted: 03 Jan 2012, 12:27
by MCMic
Yes, the game should have death animation.
Something like prince of persia (the old one) would be nice. (And it's a game where you fall in spikes every seconds)

Re: Me & My Spikey Death

PostPosted: 03 Jan 2012, 14:35
by Edward_Lii
Hello MCMic,

MCMic {l Wrote}:Yes, the game should have death animation.
Something like prince of persia (the old one) would be nice. (And it's a game where you fall in spikes every seconds)

I was thinking about some sort of (cartoonish) explosion or cloud.
I'll try some different stuff and see how it turns out. ;)

Re: Me & My Spikey Death

PostPosted: 03 Jan 2012, 16:07
by Edward_Lii
Hello all,

Edward_Lii {l Wrote}:I'll try some different stuff and see how it turns out. ;)

Perhaps this fade effect is good enough:
die.png
die.png (1.01 KiB) Viewed 4920 times

die.png
die.png (941 Bytes) Viewed 4920 times

The character is slightly modified to make it direction neutral.

Howto test it?
Make sure you're running the latest svn.
Download the two files and place them in <meandmyshadow>/data/themes/default/<player -OR- shadow>/die.png
Replace the content of <meandmyshadow>/data/themes/default/theme.mnmstheme with:
{l Code}: {l Select All Code}
name="Default Theme"
background(background.png){
   cameraSpeed=0.2,0
}
block(Block){
   editorPicture(blocks/block.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/block.png,0,0,50,50)
         optionalPicture(blocks/block2.png,0,0,50,50,0.1)
         optionalPicture(blocks/block3.png,0,0,50,50,0.1)
      }
   }
}
block(PlayerStart){
   editorPicture(blocks/playerstart.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/playerstart.png,0,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(ShadowStart){
   editorPicture(blocks/shadowstart.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/shadowstart.png,0,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(Exit){
   editorPicture(blocks/exit.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/exit.png,0,0,50,50)
      }
   }
}
block(ShadowBlock){
   editorPicture(blocks/shadowblock.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/shadowblock.png,0,0,50,50)
      }
   }
}
block(Spikes){
   editorPicture(blocks/spikes.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/spikes.png,0,0,50,50)
      }
   }
}
block(Checkpoint){
   editorPicture(blocks/checkpoint.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/checkpoint.png,0,0,50,50)
      }
   }
   blockState(activated){
      object{
         animation=16,0
         picture(blocks/checkpoint.png,50,0,50,50)
         offsetAnimation{
            point(0,0)
            point(0,-8,4,1)
            point(0,8,8,1)
            point(0,0,4,1)
         }
      }
   }
}
block(Swap){
   editorPicture(blocks/swap.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/swap.png,0,0,50,50)
      }
   }
   blockState(activated){
      oneTimeAnimation=24,default
      object{
         animation=12,0
         pictureAnimation(blocks/swap.png){
            point(0,0,50,50)
            point(600,0,50,50,12,1)
         }
      }
   }
}
block(Fragile){
   editorPicture(blocks/fragile.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/fragile.png,0,0,50,50)
      }
   }
   blockState(fragile1){
      object{
         picture(blocks/fragile.png,50,0,50,50)
      }
   }
   blockState(fragile2){
      object{
         picture(blocks/fragile.png,100,0,50,50)
      }
   }
   blockState(fragile3){
      object{
         picture(blocks/fragile.png,150,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(MovingBlock){
   editorPicture(blocks/moving_block.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/block.png,0,0,50,50)
         optionalPicture(blocks/block2.png,0,0,50,50,0.1)
         optionalPicture(blocks/block3.png,0,0,50,50,0.1)
         editorPicture(blocks/moving_block.png,0,0,50,50)
      }
   }
   blockState(base){
      object{
         picture(blocks/moving_block.png,50,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(MovingShadowBlock){
   editorPicture(blocks/moving_shadowblock.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/shadowblock.png,0,0,50,50)
         editorPicture(blocks/moving_shadowblock.png,0,0,50,50)
      }
   }
   blockState(base){
      object{
         picture(blocks/moving_shadowblock.png,50,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(MovingSpikes){
   editorPicture(blocks/moving_spikes.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/spikes.png,0,0,50,50)
         editorPicture(blocks/moving_spikes.png,0,0,50,50)
      }
   }
   blockState(base){
      object{
         picture(blocks/moving_spikes.png,50,0,50,50)
         invisibleAtRunTime=1
      }
   }
}
block(Teleporter){
   editorPicture(blocks/portal.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/portal.png,0,0,50,50)
      }
   }
}
block(Button){
   editorPicture(blocks/button.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/block.png,0,0,50,50)
         optionalPicture(blocks/block2.png,0,0,50,50,0.1)
         optionalPicture(blocks/block3.png,0,0,50,50,0.1)
      }
   }
   blockState(button){
      object{
         # TODO:
         picture(blocks/button.png,50,0,50,16)
      }
   }
}
block(Switch){
   editorPicture(blocks/switch.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/switch.png,0,0,50,50)
      }
   }
   blockState(activated){
      object{
         picture(blocks/switch.png,50,0,50,50)
      }
   }
}
block(ConveyorBelt){
   editorPicture(blocks/moving_block_2.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/block.png,0,0,50,50)
         editorPicture(blocks/moving_block_2.png,0,0,50,50)
      }
   }
}
block(ShadowConveyorBelt){
   editorPicture(blocks/moving_shadowblock_2.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/shadowblock.png,0,0,50,50)
         editorPicture(blocks/moving_shadowblock_2.png,0,0,50,50)
      }
   }
}
block(NotificationBlock){
   editorPicture(blocks/notification.png,0,0,50,50)
   blockState(default){
      object{
         picture(blocks/notification.png,0,0,50,50)
      }
   }
}
character(Player){
   characterState(standleft){
      object{
         picture(player/playerleft0.png,0,0,23,40)
      }
   }
   characterState(standright){
      object{
         picture(player/playerright0.png,0,0,23,40)
      }
   }
   characterState(walkleft0){
      object{
         picture(player/playerleft0.png,0,0,23,40)
      }
   }
   characterState(walkleft1){
      object{
         picture(player/playerleft1.png,0,0,23,40)
      }
   }
   characterState(walkright0){
      object{
         picture(player/playerright0.png,0,0,23,40)
      }
   }
   characterState(walkright1){
      object{
         picture(player/playerright1.png,0,0,23,40)
      }
   }
   characterState(jumpleft){
      object{
         picture(player/jumpleft.png,0,0,23,40)
      }
   }
   characterState(jumpright){
      object{
         picture(player/jumpright.png,0,0,23,40)
      }
   }
   characterState(holding){
      object{
         picture(player/playerholdingright.png,0,0,23,40)
      }
   }
   characterState(line){
      object{
         picture(player/line.png,0,0,5,5)
      }
   }
   characterState(die){
      oneTimeAnimation=16,dead
      object{
         animation=16,0
         pictureAnimation(player/die.png){
            point(0,0,23,40)
            point(184,0,23,40,8,2)
         }
      }
   }
   characterState(dead){
      object{
         picture(player/die.png,0,0,40,23)
         invisibleAtRunTime=1
      }
   }
}
character(Shadow){
   characterState(standleft){
      object{
         picture(shadow/shadowleft0.png,0,0,23,40)
      }
   }
   characterState(standright){
      object{
         picture(shadow/shadowright0.png,0,0,23,40)
      }
   }
   characterState(walkleft0){
      object{
         picture(shadow/shadowleft0.png,0,0,23,40)
      }
   }
   characterState(walkleft1){
      object{
         picture(shadow/shadowleft1.png,0,0,23,40)
      }
   }
   characterState(walkright0){
      object{
         picture(shadow/shadowright0.png,0,0,23,40)
      }
   }
   characterState(walkright1){
      object{
         picture(shadow/shadowright1.png,0,0,23,40)
      }
   }
   characterState(jumpleft){
      object{
         picture(shadow/jumpleftshadow.png,0,0,23,40)
      }
   }
   characterState(jumpright){
      object{
         picture(shadow/jumprightshadow.png,0,0,23,40)
      }
   }
   characterState(holding){
      object{
         picture(shadow/shadowholdingright.png,0,0,23,40)
      }
   }
   characterState(die){
      oneTimeAnimation=16,dead
      object{
         animation=16,0
         pictureAnimation(shadow/die.png){
            point(0,0,23,40)
            point(184,0,23,40,8,2)
         }
      }
   }
   characterState(dead){
      object{
         picture(shadow/die.png,0,0,40,23)
         invisibleAtRunTime=1
      }
   }
}

Only a few lines of this file is needed but posting the complete one was easier.

Feedback is welcome! :)