Ok, it's yours, but I won't give it to you that easily. You'll have to work a bit more on it... ;)
I tried to optimize my path even more this time. I still feel it's not perfect, but much better than my first attempt.
Do you use the mouse extensively? Seems that you'll get to keep that level... I'm a bit lazy with the mouse.
Ok, worked a bit on it and beat your record by 6 frames with a sloppy as hell performance. I'm still pretty sure that the upper route is faster, but the main improvement comes from the sorting of the blocks in the goal area. I also messed up some prefetching of the far right blocks.
Since Bisqwit implemented mouse facing I'm moving almost exclusively with mouse. I find it better in short movies, because if you click wrong once you'll lose at least a second from confusion plus manual aligning afterwards and unfortunately I can't get a recording over 2 minutes without messing up the alignment at least once.
Bisqwit: I wonder if you could implement the following feature. When a record is done not only check if the overall time is fastest, but also if the route is fastest known to date, save those and display it as "fastest known route" instead of bisqbots result where not available. I didn't look it up in your code, but you just add up the steps/moves/kicks to calculate the possible improvement right? Even without automatically removing the delays it would ease finding better routes.
I was thinking on something similar, but for Bisqbot. (In order to calculate less, I think)
Just get the time of the perfected path used in the current hold record & use it to end the program if that time is passed while calculating. Maybe that could help getting a few more levels done unless you already done that...
BTW, I've beaten some records with worse paths, especially in very long levels. So, what Gorash said may work plus it would also work for my idea...
Also, I was thinking that the top 5 or top 10 records could be added in the screen where it shows your time, record time & perfect time by adding a link to this feature... I wanna know how many of us does plays & who also has a perfected record, since once you get the record, noone can take it off...
Analysis of the kick/move count.
I found pretty fast out how to get the right moves and kicks, but I had 6 steps too much. Fooling around with the time to kick the upper middle block brought the best route.
Are you sure?
I tried a few times just now, and I'm always getting 7:70 flat.
(or more in case I mess up)
Oh and still no 1-3 bisqbot solution ;)
Btw. could you make the half second kick preparation uninterruptible?
Now that you mention it, nope. I'll make it so.
EDIT: I think I did it now.
> Oh and still no 1-3 bisqbot solution ;)
Untrue, unless I did something wrong.
> Btw. could you make the half second kick preparation uninterruptible?
I originally intended to make the second half of it uninterruptible, but I think it was xebra who objected, saying it's better now as it gives a wider skill gradient.
Now that you mention it, nope. I'll make it so.
EDIT: I think I did it now.
I think so too. :)
EDIT: It seems to have some weird effect on peter when mouse pathing. He's dancing like mad in every direction and I'm pretty sure he sometimes stands wrong (other than what I clicked) on the target field.
Sorry to make you such trouble with that feature...
I originally intended to make the second half of it uninterruptible, but I think it was xebra who objected, saying it's better now as it gives a wider skill gradient.
It certainly does yes... I'm the one with lesser skill ;)
EDIT: It seems to have some weird effect on peter when mouse pathing. He's dancing like mad in every direction and I'm pretty sure he sometimes stands wrong (other than what I clicked) on the target field.
I implemented the change by changing Peter's facing when he starts the last movement of the autoaim path, instead of after the last movement.
This causes the last movement being done with the facing of the aim.
But I can't notice the problem you mentioned.
> Btw. could you make the half second kick preparation uninterruptible?
I originally intended to make the second half of it uninterruptible, but I think it was xebra who objected, saying it's better now as it gives a wider skill gradient.
I did no such thing. I would actually prefer a mode where kicks are not interruptible, and mouse commands can only be interrupted by other mouse commands, so that you can in effect queue up your next command. Despite the fact that at times I can play almost perfectly, it's not fun to maintain that level of concentration.
Hope that you didn't mastered it, as I discover that path (You just played it 0.09 secs faster :( ). Oh well, as least I did the same to you on the next level :P
No, reread my comment. The point of my comment was that I did not just play your path faster, I found an actual improvement -- while on 2-3 you found no improvement, you just pulled a Phil.
Gorash, even if you don't think you are capable of high levels of precision, you can improve your time on 1-3 by a bit. Note that you go around the very last block in the wrong direction, and that you should kick the top middle block up when Bisqbot does, because pushing another block immediately after a kick is hard for a human to do without delay.
EDIT: On my first try I was considerably faster than you as I approached the last kick ... then again I've had lots of practice perfecting kick timing since I only play the early levels. Do you mind if I pull a Phil on you?
I originally intended to make the second half of it uninterruptible, but I think it was xebra who objected, saying it's better now as it gives a wider skill gradient.
I did no such thing. I would actually prefer a mode where kicks are not interruptible, and mouse commands can only be interrupted by other mouse commands, so that you can in effect queue up your next command. Despite the fact that at times I can play almost perfectly, it's not fun to maintain that level of concentration.
Then I don't remember who it was.
Therefore, I changed it to be the way I originally preferred.
However, there might occur some bugs in it, due to the fact that I implemented it asynchronously...
Well, left to be seen.
Edit: Undone this. It caused problems as predicted.
Can you make it so that mouse commands are uninterruptible, except by another mouse command? (So that I may hold down the direction I want to go on the keyboard when I get where I clicked, but I can click a different spot if I want to modify my path on the way.)
Can you make it so that mouse commands are uninterruptible, except by another mouse command? (So that I may hold down the direction I want to go on the keyboard when I get where I clicked, but I can click a different spot if I want to modify my path on the way.)
I can see the benefits of that idea, but then again, I'm not sure that's wise...
There is never any reason to click in the middle of a square, I request that you remove the "middle" of squares entirely. Furthermore, it would be nice if you could make it so that if we click on an unwalkable target, the game is intelligent about guessing where we really wanted to click. For example:
I want to be able to click anywhere in that blue diamond and end up in the square to the right of the block, facing left. Obviously the clickable area is only extended for spaces next to unnavigable squares.
Ok, worked a bit on it and beat your record by 6 frames with a sloppy as hell performance.
I'm still not happy, so you'll have to do better... ;)
(My route is still not perfect. I will have to perfect the moving combinations of those last blocks. I also have some mistakes costing precious tenths of seconds, summing up probably to several seconds...)
By the way, about the discussed (un)interruptible kicks and mouse paths:
IMO mouse paths should remain interruptible. In fact, I have used this exact feature to my advantage in some runs. In longer levels it's very difficult to constantly use the mouse, so for some levels where there's a point to which you need to go dozens of times I simply but the mouse cursor there and place the mouse so that I can press its left button with my thumb. This way every time I need to go to that point I just press the mouse button with my thumb, regardless of where peter is at that point. This is a rather easy way of saving extra tenths of seconds in long levels.
However, sometimes I need to go towards that point only partially. In other words, I press the mouse button to make peter walk towards that point but then at the point I need to deviate I just press the cursors. This is actually handy. If, however, mouse movement could not be interrupted with the keyboard, I could no longer do this.
As for the kicks, it's a question of skill. If kicks are uninterruptible then one big element of skill is removed from the game, making it a lot easier to make fast times. Do we want to just show off how fast a level can be completed, or do we want to compete on who has the most skill in completing a level as fast as possible? After all, this is not tool-assisted speedrunning, but a genuine show of skill.
About the interruptible question:
Claiming that it's "more competition this way" is stupid. A game should have the best possible controls and not make crappy^H^H^H^H^H^H difficult controls part of the challenge. Until now the game was improved by every change. Also I think finding and entering a 5 minute video fluently is challenge enough to start with.
For me the order of challenging moves (most to least) in this game is:
- turn on same square, especially after pushing a block.
- predict the exact frame when to move peter away after kicking, this is almost impossible, as the record in 1-2 (!) shows. The path has 5 kicks and one push, and still it seems impossible to get closer than 5 frames.
- starting to kick after/when peter has completed his facing after mouse direction... I'm not sure if this is fixed now, but if you press the cursor button too fast while he's still mousepathing the auto-facing seems to be ignored
- everything else
Also: making mouse pathing uninterruptible would be bad for me. When I need to cross huge distances I first start him to move by clicking remotely into the area he needs to get, and after that I refine it by clicking where he needs to face.
Warp: damn, this is gonna be hard to top. I'll analyse the pathes a little more this time.
A game should have the best possible controls and not make crappy^H^H^H^H^H^H difficult controls part of the challenge.
It's not so much a question of good/bad controls but more a question of behaviour. An interruptible kick might be seen by some as a good thing in very long levels because you might have already played 5 minutes of the level and then you accidentally press the kick button when you shouldn't, risking to ruin the entire run. However, since you can interrupt it by moving then you just do so and lose just some tenths of a second instead of having to start all over again.
But of course uninterruptible kicks will make it trivial to not to waste time after the kick has been done, cutting a great deal of time in most runs.
However, where should this aiding stop? Next someone will suggest that the 1-frame delay when turning with the keyboard should be removed (except when turning towards a box), thus making keyboard navigation almost as fast as mouse navigation, thus making it a whole lot easier to get top times.
However, mouse navigation, especially in long levels, requires tons of practice and skill. Once again, what do we want? A show of skill or a show of (easy) speed? Is this a challenge about who finds the fastest path, or a challenge about who finds the fastest path and is able to perform it with the uttermost skill?
Of course I have to admit that it feels a bit exasperating that someone could just look at your path, practice a bit with the mouse and beat your time by some tenths of a second... But skill is skill.
Hmm, ok your point.
I just practised 5-1 again, and I have to say the new mouse navigation rocks. Not having to wait for the exact frame to begin pushing cuts a few frames of every walk+push sequence.
I also calculated around with the simultaneous fetching of two boxes, and found this to be the fastest way (from the point where the path differs from yours to both blocks inside the goal area 21 frames saved everytime).
Tactical errors in this one: at 0:55ish I push 2 times in a row where I could have kicked, and at some time I got confused and walked 2 unnecessary steps.
Submission says there are 15 more seconds in it, your turn again :)
EDIT: I just saw xebras new records on the first few levels. As a consequence I shoud refrain from making any suggestions about controls. How the hell do you do that? ONE frame from perfect in 1-3??
Towards the end of 5-1, when you have 5 boxes left, you leave the three boxes on the lower right to be and go directly to handle the two other boxes. I have the feeling that you should get a somewhat faster path if you go to the three boxes first and move them closer to the goal before taking the two boxes to the goal. However, for this I think that you have to get the box at the top right closer to the goal before you can do this (else it will be on the way).
Also, from the three boxes in the lower right you push the lowest one in such way that when it is the only one left you have to make a rather large walk around in order to get to it. I think that it would be beneficial to push it at least one step up (from the location you leave it currently) so that you can walk directly to it.
Also, from the three boxes in the lower right you push the lowest one in such way that when it is the only one left you have to make a rather large walk around in order to get to it. I think that it would be beneficial to push it at least one step up (from the location you leave it currently) so that you can walk directly to it.
Calculated that.
The path you propose needs an extra 3 steps and one push and saves 8 steps overall, so it should be 18 frames faster.
Well done. I'll implement it once I thought about the last 5 boxes...