Possible new glitch in Tile World Lynx -- Clone Desynchronization
Posted 17 January 2012 - 03:27 AM
Anyway, I was in the process of building and testing my first levelset when I saw something odd occur in one level as I tested it in Lynx mode. As you can see in this video, two fireballs that are supposed to be cloned at the same time end up appearing at different times. This occurs consistently whenever I test the level; it is not a fluke. It occurs in both Tile World and Tile World 2. Does anyone know whether this a glitch, or just a faithfully emulated quirk of the original Lynx game?
I'm posting this because I didn't find anything about it mentioned on the forums, newsgroup or Chip Wiki. Has anyone else seen anything like this?
Posted 17 January 2012 - 05:55 AM
Posted 17 January 2012 - 06:52 AM
Posted 17 January 2012 - 03:56 PM
How are they triggered? I have noticed that lynx animation does make it harder to synchronize things.
If by "they" you mean the fireball clone machines in the bottom right, they're triggered by the two fireballs just to their left hitting the red buttons, which clone more fireballs that hit the same red buttons, etc.
If you meant the desynchronization, well I made some test levels. It seems to only affect monsters that both A) are cloned by other monsters and run into water or bombs. It affects all monster types except teeth and blobs. Also, it takes a few seconds for desync to occur, and it only occurs if monsters are cloned very frequently. The stage shown in the video had 4 continuously running cloners at the time I pointed out the desynchronization. In a test stage with just two continuously running cloners, desync occcurred only when the red buttons were placed close to the machines (2 spaces away as opposed to 6 spaces away) to make cloning occur more frequently.
Posted 19 January 2012 - 04:01 PM
But I really like the looks of this level
Posted 19 January 2012 - 04:04 PM
Posted 19 January 2012 - 05:14 PM
Edit - pretty sure it's a glitch, due to some recent events
Posted 19 January 2012 - 05:19 PM
For example, one of the things that I always thought was glitchy in CC1 was the ball cloner in FOUR PLEX. In MSCC and MS TW, I can time my step on the red button correctly and only ever clone one ball at a time. In think the intent of the level designer is that you would have to contend with three or four balls at once.
Now, in Lynx I cannot make it happen. I don't know if it's just my fingers, or if it is actually impossible. After all, the timing of things is quite different. For example in levels where you have to hit the blue button to make a tank stop ON a blue button.
Posted 27 March 2012 - 06:38 PM
Oh, did I mention the bug streams control the green button? Desynch means the bugs may even stop cloning entirely and the toggles don't work as intended. I've put off work on the level for a year as a result. Whole thing's a race-condition nightmare, now that I think of it.
"Clogged" looks cool, by the way.
Posted 14 April 2012 - 03:19 PM
Sounds similar to a problem I ran into with a level I'm making. It has constantly-cloned streams of bugs and paramecia that drown. Problem is, I wanted to both stop and restart the clone streams, and fix boss glitch for MS compatibility. But the streams have to face opposite directions, so the first clone made will become the boss and render the other clone machine inoperable. That means, as best as I can tell, I need to clone new bosses facing opposite directions between the operation of the alternating bug/'mecium streams in order to ensure both machines will work.
The direction of a clone machine doesn't necessarily have to be the direction of its stream, does it?
Posted 12 November 2012 - 01:16 PM
I'm adapting one of my levels for lynx compatibility which, about halfway in the level, has two continuously cloning monsters. The setup is similar to the one in your video, with the buttons 6 spaces away from the machines, but the two machines are at opposite ends of the map (though their paths come next to each other before running into bombs and water). Chip has to step on the buttons for them to clone. While playtesting, I got them alternating, ~3 spaces offset from each other (the only other monsters at this point are two teeth which can be killed by bombs), but near the end of the level they were essentially side-by-side. I never waited to see if they separated again, but it did force me to modify the level a little.
It seems to only affect monsters that both A) are cloned by other monsters and run into water or bombs. It affects all monster types except teeth and blobs. Also, it takes a few seconds for desync to occur, and it only occurs if monsters are cloned very frequently. The stage shown in the video had 4 continuously running cloners at the time I pointed out the desynchronization. In a test stage with just two continuously running cloners, desync occcurred only when the red buttons were placed close to the machines (2 spaces away as opposed to 6 spaces away) to make cloning occur more frequently.
It doesn't seem like it has to be as frequent as you state. Their paths were very long, though, so maybe that made up for it?
EDIT: lol your "B" turned into an emoticon
Posted 23 November 2012 - 03:16 AM
(Chip is on the button for the lower machine; the left ball (moving north) is on the button for the right machine.)
So far, these two seem to be the only cases. The question now is how TW decides whether the clone starts at quarter- or half-tile (though I think it should start at clone tile).
I also imagine this is related:
(There are multiple clone buttons controlled by blobs.)
Posted 07 December 2012 - 11:44 AM
It's possible that TW might have a similar problem with cloning in lynx as what causes slide delay. When a cloned monster appears on the monster list, maybe some other monster is forgotten about for 1/20th of a second and falls out of synch? This pause is so small that it would be hard to notice in casual play, and would mainly be amplified in a stream of cloned monsters. The direction the monsters are moving might also have a small effect, since the "monster order" in lynx is just the reverse reading order of the monsters on the map at a given time (as I understand it), so the direction they move will effect in which order they are processed. In any case the explanation looks really complex.
Random8's Salsa example of a fireball hitting another one from the same source thus might be because the first fireball stalled for a brief moment, or because one of the blobs was out of synch with the other after having bumped into a wall a different amount of times (or something). As for the "lynx test" level with the pink ball appearing on two different frames while the other is exactly in the same place, these two pictures might in fact show how the first ball stalls. So the pictures could theoretically be from the same instance but taken 1/20th of a second apart, though undoubtedly Random8 actually captured them on separate attempts. More tests with this type of a setup (and it's mirror image) and maybe more monsters to compare the movement with might prove insightful.
As for the other stuff, you can get a ball not to clone in Four Plex with the right timing (and it's used again elsewhere like 3#149), and I don't know what to say about Temporary Man's level without actually seeing it.
Posted 07 December 2012 - 09:05 PM
When I look at my .tws for "lynx test", the second ball seems to "jump" ahead of the first. I only see one frame where the first ball is exactly on the red button.
Green and blue buttons, on the other hand, don't seem to have their effect until 1/4 of a move later.
Posted 28 January 2014 - 08:02 AM
I found the following under the heading "2004 Oct 04: version 1.2.0" in the file "Changelog" that came with my Tile World 2 download:
* Altered animations to run for either 11 or 12 frames, depending on the
parity of their initial frame, as discovered by ccexplore. (This finally
killed the nine-lived clone-boosting bug in ICEHOUSE!) Also modified the
point during the frame when animations get removed.
I didn't see any more references to Lynx animations later (date) in the file. Could this have anything to do with clone desynchronization?
Posted 08 February 2014 - 08:50 PM
I wonder if there is some kind of event schreduler that's not working right and delaying certain actions with one frame to many from time to time.
How much is known about timing of the Lynx version of Chips Challenge? We have a good overview of the major rule differences, but do we really know how the Lynx version of the engine handles everything? We can always observe and estimate how the Lynx version should play, but then glitches like these can occur.
Posted 30 November 2014 - 03:51 AM
I have been doing some investigation of this. In brief, I have concluded that this is not a bug in Tile World. The same kind of "clone desynchronization" occurs on the Atari Lynx, and so far I have been able to observe, it works the same as in Tile World's Lynx mode. The question remains: why does this happen? (I haven't seen this discussed anywhere else.) Here is a description of how things are handled internally in Tile World. (The Lynx ROM presumably does something similar; in any case, the final result is the same.)
1. When a level is (re)started, the game builds a list of all creatures in reading order. Creatures include monsters, blocks, and Chip himself. The list includes monsters and blocks on top of clone machines. After this, if Chip is not in the first position in the list, he trades places with whatever creature is there. So, Chip is always at the beginning of the list.
2. Each game tick, the creature list is traversed in reverse order. Monsters move 1/4 of a tile when not slipping. Creatures on clone machines or traps don't move. (Things are actually more complicated. There are three traversals per tick. In the first, the creatures decide which direction they move when not in midmove. In the second, the move is executed. The third traversal handles teleporters. All this may be ignored for this discussion.)
3. When a creature dies, the creature's entry in the creature list is not removed. Instead, the entry is marked "hidden", which just means there is no longer any creature occupying that location in the list. Hidden entries in the list are ignored during the traversal.
4. When a clone button is pressed, the corresponding creature moves 1/4 of a tile off the clone machine, and a new creature is created on top of the clone machine. If there is a "hidden" slot available in the creature list, the new creature will be inserted into the earliest such slot. If there aren't any hidden slots, the creature is appended to the end of the list.
So, when a creature is cloned, if the creature appears later in the list than the creature that pushed the clone button, it initially moves 1/4th of a tile. However, if it appears earlier in the list, it moves 1/4 tile again on the same tick for a total of 1/2 tile.
Here is an example. It's pedantic Lynx compatible, so if you want you can try it on the Lynx ROM (using Brian Raiter's "c4" utility to patch the level in).
If you run the level in Lynx mode, every so often the fireball cloned on the second row will be slightly ahead of that on the first row. Here's how it works in detail:
The creature list initially looks like this:
C B1 F1 B2 F2
Here, C is Chip, B1 and F1 are the ball and fireball on the first row, and likewise for B2 and F2. At first, the fireballs don't move because they're on clone machines. Then the balls press the clone buttons. B2 acts first, causing F2 to leave the clone machine and another fireball to appear in its place. Likewise, F1 also leaves its clone machine on the same tick. Now there are more creatures on the list. We denote the extra creatures by an ellipsis since they're irrelevant to the example.
C B1 F1 B2 F2 ...
As time passes, more cloning occurs, without anything interesting happening until the fireballs start drowning. When the splash animations for F1 and F2 finish, their entries on the list are now marked hidden:
C B1 H B2 H ...
Later, the balls will push the clone buttons. First, when B2 presses its button, the fireball on row 2 is released from the clone machine. A new fireball, F2a is created on top of the machine, and placed into the first available slot:
C B1 F2a B2 H ...
Next, it is F2a's turn, but nothing happens since it's on a clone machine. Then B1 presses its button, and we have a new fireball F1a on the clone machine in the first row:
C B1 F2a B2 F1a ...
The next time the clone buttons are pressed is when it happens. F1a, on a clone machine, does nothing. Then B2 presses the clone button, causing F2a to leave the clone machine. F2a is processed next. Since it isn't on a clone machine anymore, it moves again. Then B1 releases F1a from the clone machine, but F1a was already processed, so it doesn't move again this tick. So F2a is now 1/4 tile ahead of F1a.
After this, the fireballs cloned will be synchronized until F1a and F2a drown, making their slots in the creature list available again, and the cycle repeats.
Some final notes:
The extra 1/4 move can occur even if there is only one clone machine in the level. It all depends on the relative order of the creature that presses the button and the creature on the clone machine in the creature list. For instance, it never happens when Chip presses a clone button since he is at the beginning of the list.
random 8 above mentioned that something similar happens with traps. The explanation is more or less the same. If the creature on the trap appears earlier in the list than the creature that pushed the button, it gets another move.
We should probably call this quirk/glitch something. Perhaps "release boosting"? Maybe someone will come up with another name.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users