Game Description:

Pitfall Harry just can't seem to stop exploring... In fact, he doesn't seem to be able to stop moving at all! When he's not busy running through jungles and leaping over man-eating scorpions, his hobbies include running back and forth in place and leaping over fires and snakes in order to get a good workout. Pitfall Harry is so impatient, that if he sees an obstacle that would require him to wait too long before moving again, he may decide that he'd rather die than wait. Fortunately, Pitfall Harry has 3 lives, meaning that he can waste 2 of them in order to avoid the agony of having to wait a few seconds for a vine to swing towards him.

Real Game Description:

Now, onto a real description of the game. Pitfall! was a game released for the Atari 2600. In it, you play as an explorer named Pitfall Harry. As you travel through the jungle, your goal is to collect all 32 treasures hidden throughout the world within the time limit the game gives you (which is 20 minutes). You also have only 3 lives while exploring the game, and touching an enemy or falling into a tarpit or water will cost you a life. If you die three times, it's gameover for Pitfall Harry, and the game offers no continues. If you travel underground, going to the next screen is the equivalent of traveling above ground for 3 screens. However, most of the underground passage ways are dead ends, so you have to know which ones to take if you want to be able to use them to save time.
The game is formatted as a circular maze, where heading to the right long enough will lead you back to where you started. Additionally, all treasures are in the same place in each play-through of the game, and Pitfall Harry starts on the same screen at the beginning of each game.

TASing Process:

In Pitfall! everything moves on a global timer. Thus, even if you move fast through 6 rooms, if the next room requires waiting 3 seconds for a vine to jump on, then you'll have been no faster getting to the vine then somebody who was 2 seconds slower than you through those 6 rooms. This makes it very hard to save time, as you are effectively battling the timer cycles throughout the entire run.
When I first submitted a TAS of this game, my goal was to beat the game as fast as possible, ignoring any point losses I may have incurred. That TAS finished with 1:42 left on the in-game timer (which counts down from 20:00 to 0:00 during the 20 minutes of gameplay). After submitting my TAS, it was pointed out to me that FractalFusion had finished the game with 1:46 left on the in-game timer by dying twice throughout his run. This worked because when you die, you re-spawn on the left-side of the screen. Thus, if you pick a good point to die on while moving left on a screen that would normally require a long wait, you can save some time, as you skip waiting and can try to get ahead of the game's global timer. In real-time, his run was a few frames slower than mine, though they finished with practically the same final real-time, despite his run having a faster in-game time (this is partially due to the fact that when you die, the timer is paused for a few seconds before you respawn).
On top of all of this, I was also shown that climbing onto the tops of ladders and dismounting from them immediately was faster than jumping over ladders (since climbing off a ladder pushed you forwards quickly). With all this in mind, I re-did my TAS. However, despite dying in 2 spots, my run was still no faster than 1:42. The game's pesky global timer thwarted my efforts to save time, and caused me to actually finish with a slower time than my original run. After this, I cancelled my submission and decided to build a program to calculate the best two places to die in the game to save time.
I was able to figure out how to simulate most components of the game, but two factors prevented me from being able to complete this program. The first was the logs that roll on the floor, since these can make it so that you have to jump off the end of the vines at a different time than usual, which is hard to calculate using my idea for the program (which was to assign a time value for how much time it would take to get through each room based on the global timer). Additionally, I couldn't figure out what the physics were behind the speed that the vine moves at or which frames the vine boosts you forwards vs backwards. Because of this, I was forced to abandon my ambitious plan, and had to go back to the drawing board for making an optimal Pitfall! TAS.
I decided to make a deathless run that would use the new fast movement strategies, so that it would be easier to see what choices I had for where I could die. After this, I made a spread sheet, and wrote down each room that I spent 470 or more frames in as a candidate for a good spot to die to save time. In my spread sheet, I recorded the frame I entered the room, the adjusted time for how long I was in the room, and whether or not there was a fire or cobra at the beginning of the room. At this point you may be wondering "What does adjusted time mean?" In rooms that have snakes or fire in them, you can die by touching them much quicker than you can die by falling into the water/tar pits (which are farther into the room). I calculated that you could move 64 frames faster by dying in a room with a cobra in it compared to dying in a room with just a tar pit in it. Thus, to reflect this difference, I added 64 frames to the adjusted time for any room that contained a cobra or fire, in order to factor in this added time bonus.
From this point, I could see that there were a total of 20 possible rooms that I could die in to save time. I decided that I would test out what times I could get using the last few death points to start with (since these were towards the end of the game, and would require less effort to TAS). I soon began to realize that Pitfall! was such a cycle based game that each point I died at would eventually "sync" up with other points that I died at if I couldn't gain enough time to get a cycle ahead. Thus, by recognizing sync points (defined as rooms that I needed to use vines to cross that I entered on the same frame and left on the same frame), I was able to make it so that I only had one or two unique combinations of deaths on average that I had to test for each point. This made the task of brute-forcing through the death combinations much more viable, and I got to work with making lots of mini-TASes of the game.
After weeks of effort, I was finally rewarded one fateful day with the fast route through the game that I had been looking for. It came at point 13-3 in my search through the death combinations (with 13 meaning the 13th possible spot to die for the first time in the run, and the 3 meaning 3 possible death spots after spot 13 was where the second death occurred). I believe that the reason why this spot worked to save a cycle when no other spots did can be seen by looking at 16:54 in the encode I provided. After jumping off the vine here, I am just far enough ahead of the rolling logs to be able to make it to the next screen without being hit by them (which would freeze me in place until they passed through me). In no other route through the game did I reach this room with the vine in a position that I could jump off ahead of the log. All the other routes involved waiting for the log to roll past, then falling right behind it (since I couldn't go fast enough to get ahead of it). This timesave enabled me to make it to the next room much faster, which let me make it over the pit without having to wait for the pit to appear and disappear again, which is also a timesave that I never got through any other route. Only by beating the global timer by this small amount was I able to finally gain a decisive advantage in time. As a result, I finished the run with 1:55 left on the in-game clock, and I finished about 7-8 seconds faster in real-time compared to my earlier run or FractalFusion's WIP.
After I found this route, I also realized that I had enough spare time waiting for vines that I could climb down ladders instead of falling down them without losing any time, even though falling down is a half second faster than climbing down. As a result of this, I was able to finish this run with both a 1:55 final in-game time and a perfect score of 114,000 points.
One thing that amazed me about this game is how difficult the cycles are to break. It seems like no matter where you die, you are always too slow to make it over the next vine, and always end up losing any time save you've got within a few rooms. For this reason, I don't think it's possible to beat Pitfall! with a better in-game time than 1:55. Part of the reason why I also think this is that I finished only about 3 frames away from getting a 1:54, meaning that at least 57 more frames would need to be saved to get a faster in-game time. Of course, if somebody finds either a different route to collect the treasures or a different placement of deaths that is faster than this, then all bets are off as to how fast the game can be beaten! As far as RTA human players go, however, I would wager that 1:46 is the best that a human could do with deaths, since getting the next cycle saved would probably require precise movement for so long that it wouldn't be feasible for a human. If nothing else, if a person could save that cycle, they still probably would finish with a 1:54 instead of a 1:55, since finishing with a 1:55 would require finishing within 3 frames of this TAS, meaning it would require essentially 18 minutes of perfect gameplay.
I tried to make this TAS more entertaining to watch by having Pitfall Harry run around in place or move far away from the vines before running back to them whenever a waiting section occurred. FractalFusion's TAS helped give me ideas for things I could do while waiting to be more entertaining. I was initially thinking of going back and forth between 2 screens every other frame 100 times, but then I watched this back and saw that it was extremely disorienting, so I decided to spare you all the seizures you would have gotten from watching that :P
I know this game has been on the Atari 2600 Wishlist for some time now, so I am hoping that this run is now perfected enough that the game can finally be accepted onto the site's vault. I hope you enjoy watching this TAS!

feos: This game is crazy. At first FractalFusion was ahead by 1.5 rooms, then this run used death and broke ahead, and in the comparison video all the 3 movies grab the final item at almost the same time, only this run being significantly faster at that. Because it depends on global timer so heavily, comparing room-wise times doesn't make sense, and even watching them side-by-side doesn't help to assess optimization. Instead, routing plays the key role here, and can only be proven by the final time, which this run is now the best by. Huge props to FractalFusion for the comparison encode, it made it clear how unpredictable the improvement can be. And nice submission notes, Lobsterzelda!
There's nothing in this game to compete with usual Moons movies in viewer excitement, accepting to Vault.
fsvgm777: Processing.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This topic is for the purpose of discussing #6407: Lobsterzelda's A2600 Pitfall! in 18:11.20
Joined: 7/7/2017
Posts: 28
I want to vote "Yes" but apparently I can't do this until I've made some posts. Beats human record? check. Reasonable explanation of why it's a local maximum? check.
nymx
He/Him
Editor, Judge, Expert player (2246)
Joined: 11/14/2014
Posts: 933
Location: South Pole, True Land Down Under
Nice improvement. 508 frames. I see a bit of difference in entertainment. Nice job. Yes vote.
I recently discovered that if you haven't reached a level of frustration with TASing any game, then you haven't done your due diligence. ---- SOYZA: Are you playing a game? NYMX: I'm not playing a game, I'm TASing. SOYZA: Oh...so its not a game...Its for real? ---- Anybody got a Quantum computer I can borrow for 20 minutes? Nevermind...eien's 64 core machine will do. :) ---- BOTing will be the end of all games. --NYMX
Editor, Expert player (2079)
Joined: 6/15/2005
Posts: 3282
Nice! I didn't expect this much of an improvement over the other TASes. Anyway, I made a 4-way comparison of Pitfall TASes on TASVideos: Link to video The four TASes are: - Top left: This submission - Bottom left: Lobsterzelda's first Pitfall submission - Top right: pozzum's perfect Pitfall (no deaths, 114000 pts) - Bottom right: My any% TAS from 2012 I also included a display showing the current room number as well as treasures collected and the room number of the next treasure. By the way, video dumping seems to be wrong for Atari 2600. I noticed while encoding that even though this submission is 65388 frames (ending at the last jump), the last jump in the raw video dump ends at 65303 instead, as if the video started at 60fps and was converted to 59.923fps, instead of starting at 59.923fps in the first place (I assume 59.923fps is supposed to be the correct framerate for Atari 2600).
Lobsterzelda
He/Him
Skilled player (1259)
Joined: 3/17/2019
Posts: 284
FractalFusion wrote:
Nice! I didn't expect this much of an improvement over the other TASes. Anyway, I made a 4-way comparison of Pitfall TASes on TASVideos:
Thanks for the video. It really highlights just how cycle based of a game Pitfall! is. This is probably one of the earliest examples of rubberbanding in video games. However, instead of using increased/more dangerous hazards like Mario Kart does, Pitfall! uses the global timer cycle for all hazards to smooth things out.
DrD2k9
He/Him
Editor, Judge, Expert player (2221)
Joined: 8/21/2016
Posts: 1091
Location: US
Lobsterzelda wrote:
This is probably one of the earliest examples of rubberbanding in video games. However, instead of using increased/more dangerous hazards like Mario Kart does, Pitfall! uses the global timer cycle for all hazards to smooth things out.
I can only assume you're considering the global timer's affect on speed of play as the rubber banding effect. While it could be perceived as a limiting factor for more skilled players, I strongly doubt that difficulty/skill balancing had anything to do with the creators' choice to use the global cycle for all the obstacles. It's much more likely that it was easier/more efficient to program obstacles on a global timer instead of having individual timers for every single room. Using this global timing mechanism to support a claim for rubber banding in Pitfall! because it limits when certain actions can happen would be similar to claiming that frame rules in SMB are a form of rubber banding because they limit when certain events can take place. Generally, rubber banding in video games refers to changes in degree of difficulty based on the player's in-game performance. In other words, on-the-fly easing of difficulty for less skilled players or on-the-fly increase of difficulty for more skilled players. A game mechanic (such as a global timer) that is static and unchanging isn't difficulty balancing (rubber banding) just because it inherently limits the extent to which a skilled player can outperform a non-skilled player; it's simply a limiting factor for all players. The global timer in Pitfall! doesn't force faster players to slow down so slower players can catch up any more than it allows slower players to speed up to catch up with the faster players. All players move at the same speed and have the same obstacles to deal with all on the same global timer. In my opinion there's no dynamic change in difficulty in this game to warrant a claim of rubber banding.
Lobsterzelda
He/Him
Skilled player (1259)
Joined: 3/17/2019
Posts: 284
DrD2k9 wrote:
Lobsterzelda wrote:
This is probably one of the earliest examples of rubberbanding in video games. However, instead of using increased/more dangerous hazards like Mario Kart does, Pitfall! uses the global timer cycle for all hazards to smooth things out.
I can only assume you're considering the global timer's affect on speed of play as the rubber banding effect. While it could be perceived as a limiting factor for more skilled players, I strongly doubt that difficulty/skill balancing had anything to do with the creators' choice to use the global cycle for all the obstacles. It's much more likely that it was easier/more efficient to program obstacles on a global timer instead of having individual timers for every single room. Using this global timing mechanism to support a claim for rubber banding in Pitfall! because it limits when certain actions can happen would be similar to claiming that frame rules in SMB are a form of rubber banding because they limit when certain events can take place. Generally, rubber banding in video games refers to changes in degree of difficulty based on the player's in-game performance. In other words, on-the-fly easing of difficulty for less skilled players or on-the-fly increase of difficulty for more skilled players. A game mechanic (such as a global timer) that is static and unchanging isn't difficulty balancing (rubber banding) just because it inherently limits the extent to which a skilled player can outperform a non-skilled player; it's simply a limiting factor for all players. The global timer in Pitfall! doesn't force faster players to slow down so slower players can catch up any more than it allows slower players to speed up to catch up with the faster players. All players move at the same speed and have the same obstacles to deal with all on the same global timer. In my opinion there's no dynamic change in difficulty in this game to warrant a claim of rubber banding.
I agree that the global timer for obstacles was probably not put into the game to increase the difficulty. It was probably put in because it was easier to program, used up less memory, and made the transitions between screens more fluid. Having said that, I would argue that the cycles for each room make more of a "smoothing out effect" for how fast the game can be beat compared to something barely noticeable to a casual player, like the SMB1 framerules at the end of each level. While the individual effect of not being able to make a particular jump or get past a certain obstacle at a certain point in the global timer may only make a small time difference (like 3-5 seconds), the cumulative effect of not being able to make certain jumps adds a handicap to the player that increases over time. Basically, what I mean is that players can shave several minutes off of their time by being able to beat the global timer cycles, and if a player goes as fast as possible, they will invariably run into many points where they need to go fast through a room in order to beat the next cycle. In this sense, for both casual players and speedrunners of the game, the global timer can act as a force that makes it harder to go through the game the farther ahead of the global timer you get, which is why I would consider it a form of pseudo-rubberbanding even if it lacks overt changes in the game's obstacles with increased speed by the player.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15619
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4000] A2600 Pitfall! by Lobsterzelda in 18:11.20