GNOME Bugzilla – Bug 535006
when safe teleport is impossible, do NOT fall back on unsafe
Last modified: 2014-06-21 15:24:36 UTC
currently, gnobots cycle to the level 1 from level 66 unconditionally, and when there are safe teleport spots are available on the board, an unsafe teleport is dome with, of course, disastrous results. the correct, IMO, behaviour, is to cycle to level 1 when there are no safe teleport spots left on the board, not at an arbitrary level. Other information: when playing super-safe moves, it is NORMAL to cycle up to level 66. being killed just because the random configuration at level 65 makes a safe teleport impossible is very frustrating. being unable to reach level 70 is also frustrating.
Hi. I might have to ask you to clarify for me what this bug is about exactly? Are these two issues in one bug? One thing we could perhaps improve is to make sure that there will always be at least one safe teleport available as the first move in a level. Would that help? I'm not sure I understand what you mean with cycling to an arbitrary level?
the current behavior of gnobots is: 1. when level N is finished successfully, level Nmod66+1 is entered (i.e., level 66 --> level 1, thus level 67 is never reached) 2. when the player cannot be safely teleported, it is teleported unsafely and killed - even if he has safe teleports. I consider both aspects of behavior wrong. I propose the following modification which, IMO, fixes both aspects: Always increment the level by 1, i.e., never go from N to 1, EXCEPT when a newly generated level does NOT offer any moves and any place to teleport to, i.e., if it is guaranteed that the next move kills the player. In this case, if the player still has a safe teleport, it is used to teleport him to the level 1.
Thanks for making it more clear. 1) looks like this is pretty much what bug #405564 is about, right? 2) I think we should just make sure that there is always at least one safe teleport at the start of each level. We can just keep on randomizing the robot layout until there is.
1. indeed this is a dupe, sorry 2. I do NOT like your solution of making sure there is at least one safe teleport: as the levels grow beyond 67, you will need more and more random regenerations until you get the configuration with a safe teleport, until you reach a level when all the time is spent regenerating. You might want to start level generation with 2 empty 3x3 squares were robots are NOT randomly placed and the player is placed in the center of one of the squares. this will guarantee that the player has both an initial move and a safe teleport.
1) np 2) Well only 1 3x3 is needed. Robots can start right next to the player without problems. We just need one 3x3 (or bigger if it is a level with robots who move 2 squares) to jump to. But it quickly becomes a problem to make levels higher than lvl 67 as we run out of squares. I think that it is reasonable to just keep replaying lvl 67. That is, increment lvl count but keep difficulty of lvl 67.
well, I would rather guarantee that the player can make a move before he has to teleport. also, I do not understand this: "I think that it is reasonable to just keep replaying lvl 67. That is, increment lvl count but keep difficulty of lvl 67." I want to increase the the level (and the number of slow and fast robots) until we run out of space, at which time cycle down to level 1, keeping the score.
Let's use Bug #405564 for the end-game, level 66 behavior. The following fix has been pushed: 108c7b0 Disable safe teleport when out of safe teleports
Created attachment 278895 [details] [review] Disable safe teleport when out of safe teleports It's confusing that safe teleport falls back to random teleport when you're out of safe teleports. Simply disable this action when no safe teleports are remaining.