meandmyshadow icon indicating copy to clipboard operation
meandmyshadow copied to clipboard

[Bug] Wrong speed with the moving blocks/spikes

Open pampogokiraly opened this issue 5 years ago • 2 comments

Hello again! I have found a new bug :P I noticed, that with some speeds, the spikes makes a 0.?? second delay on each path-ending which makes two moving spikes with the same speed out of sync :(

I tried my best to figure out which spikes/blocks are buggy, but i couldn't figure it out. I made a test map for anyone who wants to try it: (Have fun! XD ) arcade=0 name="BUG: Wrong Movement!" recordings=-1 size=3750,1450 time=-1 tile(Block,0,1400,3750) tile(Switch,50,1350){ behaviour=toggle id=10 message="50 (4 blocks/s) (no bug)" } tile(Switch,200,1350){ behaviour=toggle id=11 message="51, (4.08 blocks/s) (Bug)" } tile(Switch,350,1350){ behaviour=toggle id=13 message="52 (4.16 blocks/s) (Bug)" } tile(Switch,500,1350){ behaviour=toggle id=14 message="53 (4.24 blocks/s) (no bug)" } tile(Switch,650,1350){ behaviour=toggle id=15 message="54 (4.32 blocks/s) (no bug)" } tile(MovingSpikes,0,1200){ MovingPosCount=4 activated=0 id=10 loop=1 t0=20 t1=20 t2=20 t3=20 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,50,1200){ MovingPosCount=5 activated=0 id=10 loop=1 t0=10 t1=20 t2=20 t3=20 t4=10 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,150,1200){ MovingPosCount=4 activated=0 id=11 loop=1 t0=19 t1=19 t2=19 t3=19 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,200,1200){ MovingPosCount=5 activated=0 id=11 loop=1 t0=9 t1=19 t2=19 t3=19 t4=9 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,300,1200){ MovingPosCount=4 activated=0 id=13 loop=1 t0=19 t1=19 t2=19 t3=19 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,350,1200){ MovingPosCount=5 activated=0 id=13 loop=1 t0=9 t1=19 t2=19 t3=19 t4=9 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,450,1200){ MovingPosCount=4 activated=0 id=14 loop=1 t0=18 t1=18 t2=18 t3=18 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,500,1200){ MovingPosCount=5 activated=0 id=14 loop=1 t0=9 t1=18 t2=18 t3=18 t4=9 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,600,1200){ MovingPosCount=4 activated=0 id=15 loop=1 t0=18 t1=18 t2=18 t3=18 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,650,1200){ MovingPosCount=5 activated=0 id=15 loop=1 t0=9 t1=18 t2=18 t3=18 t4=9 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(Switch,800,1350){ behaviour=toggle id=27 message="55 (4.40 blocks/s) (no bug)" } tile(Switch,950,1350){ behaviour=toggle id=28 message="56 (4.48 blocks/s) (Bug)" } tile(Switch,1100,1350){ behaviour=toggle id=29 message="57 (4.56 blocks/s) (Bug)" } tile(Switch,1250,1350){ behaviour=toggle id=30 message="58 (4.64 blocks/s) (Bug)" } tile(Switch,1400,1350){ behaviour=toggle id=31 message="59 (4.72 blocks/s) (no bug)" } tile(MovingSpikes,800,1200){ MovingPosCount=5 activated=0 id=27 loop=1 t0=9 t1=18 t2=18 t3=18 t4=9 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,750,1200){ MovingPosCount=4 activated=0 id=27 loop=1 t0=18 t1=18 t2=18 t3=18 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,900,1200){ MovingPosCount=4 activated=0 id=28 loop=1 t0=17 t1=17 t2=17 t3=17 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,950,1200){ MovingPosCount=5 activated=0 id=28 loop=1 t0=8 t1=17 t2=17 t3=17 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1050,1200){ MovingPosCount=4 activated=0 id=29 loop=1 t0=17 t1=17 t2=17 t3=17 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1100,1200){ MovingPosCount=5 activated=0 id=29 loop=1 t0=8 t1=17 t2=17 t3=17 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1200,1200){ MovingPosCount=4 activated=0 id=30 loop=1 t0=17 t1=17 t2=17 t3=17 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1250,1200){ MovingPosCount=5 activated=0 id=30 loop=1 t0=8 t1=17 t2=17 t3=17 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1350,1200){ MovingPosCount=4 activated=0 id=31 loop=1 t0=16 t1=16 t2=16 t3=16 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1400,1200){ MovingPosCount=5 activated=0 id=31 loop=1 t0=8 t1=16 t2=16 t3=16 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(ShadowBlock,0,1050,150) tile(Block,150,1050,150) tile(Block,450,1050,150) tile(ShadowBlock,300,1050,150) tile(Block,750,1050,150) tile(ShadowBlock,600,1050,150) tile(Block,1050,1050,150) tile(ShadowBlock,900,1050,150) tile(Block,1350,1050,150) tile(ShadowBlock,1200,1050,150) tile(ShadowBlock,800,100) tile(ShadowBlock,750,50) tile(ShadowBlock,800,0) tile(ShadowBlock,850,50) tile(ShadowStart,800,50) tile(Switch,1550,1350){ behaviour=toggle id=42 message="60 (4.80 blocks/s) (no bug)" } tile(Switch,1700,1350){ behaviour=toggle id=43 message="61 (4.88 blocks/s) (no bug)" } tile(Switch,1850,1350){ behaviour=toggle id=44 message="62 (4.96 blocks/s) (no bug)" } tile(Switch,2000,1350){ behaviour=toggle id=45 message="63 (5.04 blocks/s) (Bug)" } tile(Switch,2150,1350){ behaviour=toggle id=46 message="64 (5.12 blocks/s) (Bug)" } tile(Switch,2300,1350){ behaviour=toggle id=47 message="65 (5.20 blocks/s) (Bug)" } tile(Switch,2450,1350){ behaviour=toggle id=48 message="66 (5.28 blocks/s) (Bug)" } tile(MovingSpikes,1500,1200){ MovingPosCount=4 activated=0 id=42 loop=1 t0=16 t1=16 t2=16 t3=16 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1550,1200){ MovingPosCount=5 activated=0 id=42 loop=1 t0=8 t1=16 t2=16 t3=16 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1650,1200){ MovingPosCount=4 activated=0 id=43 loop=1 t0=16 t1=16 t2=16 t3=16 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1700,1200){ MovingPosCount=5 activated=0 id=43 loop=1 t0=8 t1=16 t2=16 t3=16 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1800,1200){ MovingPosCount=4 activated=0 id=44 loop=1 t0=16 t1=16 t2=16 t3=16 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,1850,1200){ MovingPosCount=5 activated=0 id=44 loop=1 t0=8 t1=16 t2=16 t3=16 t4=8 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,1950,1200){ MovingPosCount=4 activated=0 id=45 loop=1 t0=15 t1=15 t2=15 t3=15 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2000,1200){ MovingPosCount=5 activated=0 id=45 loop=1 t0=7 t1=15 t2=15 t3=15 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2100,1200){ MovingPosCount=4 activated=0 id=46 loop=1 t0=15 t1=15 t2=15 t3=15 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2150,1200){ MovingPosCount=5 activated=0 id=46 loop=1 t0=7 t1=15 t2=15 t3=15 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2250,1200){ MovingPosCount=4 activated=0 id=47 loop=1 t0=15 t1=15 t2=15 t3=15 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2300,1200){ MovingPosCount=5 activated=0 id=47 loop=1 t0=7 t1=15 t2=15 t3=15 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2400,1200){ MovingPosCount=4 activated=0 id=48 loop=1 t0=15 t1=15 t2=15 t3=15 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2450,1200){ MovingPosCount=5 activated=0 id=48 loop=1 t0=7 t1=15 t2=15 t3=15 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2550,1200){ MovingPosCount=4 activated=0 id=69 loop=1 t0=14 t1=14 t2=14 t3=14 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2600,1200){ MovingPosCount=5 activated=0 id=69 loop=1 t0=7 t1=14 t2=14 t3=14 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2700,1200){ MovingPosCount=4 activated=0 id=70 loop=1 t0=14 t1=14 t2=14 t3=14 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2750,1200){ MovingPosCount=5 activated=0 id=70 loop=1 t0=7 t1=14 t2=14 t3=14 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(MovingSpikes,2850,1200){ MovingPosCount=4 activated=0 id=71 loop=1 t0=14 t1=14 t2=14 t3=14 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,2900,1200){ MovingPosCount=5 activated=0 id=71 loop=1 t0=7 t1=14 t2=14 t3=14 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(Switch,2600,1350){ behaviour=toggle id=69 message="67 (5.36 blocks/s) (no bug)" } tile(Switch,2750,1350){ behaviour=toggle id=70 message="68 (5.44 blocks/s) (no bug)" } tile(Switch,2900,1350){ behaviour=toggle id=71 message="69 (5.52 blocks/s) (no bug)" } tile(Switch,3050,1350){ behaviour=toggle id=72 message="70 (5.60 blocks/s) (no bug)" } tile(MovingSpikes,3000,1200){ MovingPosCount=4 activated=0 id=72 loop=1 t0=14 t1=14 t2=14 t3=14 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,3050,1200){ MovingPosCount=5 activated=0 id=72 loop=1 t0=7 t1=14 t2=14 t3=14 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(ShadowBlock,1500,1050,150) tile(Block,1650,1050,150) tile(ShadowBlock,1800,1050,150) tile(Block,1950,1050,150) tile(ShadowBlock,2100,1050,150) tile(Block,2250,1050,150) tile(ShadowBlock,2400,1050,150) tile(Block,2550,1050,150) tile(ShadowBlock,2700,1050,150) tile(Block,2850,1050,150) tile(ShadowBlock,3000,1050,150) tile(MovingSpikes,3150,1200){ MovingPosCount=4 activated=0 id=77 loop=1 t0=14 t1=14 t2=14 t3=14 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,3200,1200){ MovingPosCount=5 activated=0 id=77 loop=1 t0=7 t1=14 t2=14 t3=14 t4=7 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(Switch,3200,1350){ behaviour=toggle id=77 message="71 (5.68 blocks/s) (no bug)" } tile(Switch,3350,1350){ behaviour=toggle id=78 message="72 (5.76 blocks/s) (Bug)" } tile(MovingSpikes,3300,1200){ MovingPosCount=4 activated=0 id=78 loop=1 t0=13 t1=13 t2=13 t3=13 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,3350,1200){ MovingPosCount=5 activated=0 id=78 loop=1 t0=6 t1=13 t2=13 t3=13 t4=6 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(Switch,3500,1350){ behaviour=toggle id=81 message="73 (5.84 blocks/s) (Bug)" } tile(MovingSpikes,3450,1200){ MovingPosCount=4 activated=0 id=81 loop=1 t0=13 t1=13 t2=13 t3=13 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,3500,1200){ MovingPosCount=5 activated=0 id=81 loop=1 t0=6 t1=13 t2=13 t3=13 t4=6 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(Switch,3650,1350){ behaviour=toggle id=84 message="74 (5.92 blocks/s) (Bug)" } tile(MovingSpikes,3600,1200){ MovingPosCount=4 activated=0 id=84 loop=1 t0=13 t1=13 t2=13 t3=13 x0=100 x1=100 x2=0 x3=0 y0=0 y1=-100 y2=-100 y3=0 } tile(MovingSpikes,3650,1200){ MovingPosCount=5 activated=0 id=84 loop=1 t0=6 t1=13 t2=13 t3=13 t4=6 x0=50 x1=50 x2=-50 x3=-50 x4=0 y0=0 y1=-100 y2=-100 y3=0 y4=0 } tile(ShadowBlock,3300,1050,150) tile(Block,3150,1050,150) tile(ShadowBlock,3600,1050,150) tile(Block,3450,1050,150) tile(NotificationBlock,50,1300){ message="Test Number: 1" } tile(NotificationBlock,200,1300){ message="Test Number: 2" } tile(NotificationBlock,350,1300){ message="Test Number: 3" } tile(NotificationBlock,500,1300){ message="Test Number: 4" } tile(NotificationBlock,650,1300){ message="Test Number: 5" } tile(NotificationBlock,800,1300){ message="Test Number: 6" } tile(NotificationBlock,950,1300){ message="Test Number: 7" } tile(NotificationBlock,1100,1300){ message="Test Number: 8" } tile(NotificationBlock,1250,1300){ message="Test Number: 9" } tile(NotificationBlock,1400,1300){ message="Test Number: 10" } tile(NotificationBlock,1550,1300){ message="Test Number: 11" } tile(NotificationBlock,1700,1300){ message="Test Number: 12" } tile(NotificationBlock,1850,1300){ message="Test Number: 13" } tile(NotificationBlock,2000,1300){ message="Test Number: 14" } tile(NotificationBlock,2150,1300){ message="Test Number: 15" } tile(NotificationBlock,2300,1300){ message="Test Number: 16" } tile(NotificationBlock,2450,1300){ message="Test Number: 17" } tile(NotificationBlock,2600,1300){ message="Test Number: 18" } tile(NotificationBlock,2750,1300){ message="Test Number: 19" } tile(NotificationBlock,2900,1300){ message="Test Number: 20" } tile(NotificationBlock,3050,1300){ message="Test Number: 21" } tile(NotificationBlock,3200,1300){ message="Test Number: 22" } tile(NotificationBlock,3350,1300){ message="Test Number: 23" } tile(NotificationBlock,3500,1300){ message="Test Number: 24" } tile(NotificationBlock,3650,1300){ message="Test Number: 25" } tile(Checkpoint,200,1000) tile(Checkpoint,350,1000) tile(Checkpoint,950,1000) tile(Checkpoint,1100,1000) tile(Checkpoint,1250,1000) tile(Checkpoint,2000,1000) tile(Checkpoint,2150,1000) tile(Checkpoint,2300,1000) tile(Checkpoint,2450,1000) tile(Checkpoint,3350,1000) tile(Checkpoint,3500,1000) tile(Checkpoint,3650,1000) tile(Block,850,300,300) tile(Block,800,200,50,150) tile(Block,850,200,300) tile(PlayerStart,850,250) tile(NotificationBlock,900,250){ message=Instructions: } tile(NotificationBlock,950,250){ message="checkpoint means the test spikes are buggy" } tile(NotificationBlock,1000,250){ message="Buggy means the spikes don't move with the same speed\n(the middle one stops at the middle for a 0.?? sec.)" } tile(Teleporter,1100,250){ automatic=0 destination=88 id=87 } tile(Block,1150,200,50,150) tile(Teleporter,0,1350){ automatic=0 destination=87 id=88 } tile(NotificationBlock,1050,250){ message="Speed of the spikes can be find on the messages on the switches." }

pampogokiraly avatar Jun 11 '20 08:06 pampogokiraly

Unfotrunately, I didn't find an easy way to fix this. As you see, the map file actually stores coordinates of each points and the time for the block from a point to the next point. It's not speed. And the time must be an integer, in frames. Therefore there are likely rounding errors.

An ad-hoc fix is that you can edit your file manually such that the total time of your two moving blocks are equal. 😅

acmepjz avatar Jun 21 '20 09:06 acmepjz

Thank you for the explanation. I already found a workaround on the map where i discovered the bug, so it's not that important ;D

pampogokiraly avatar Jun 26 '20 17:06 pampogokiraly