Joined: 3/11/2008
Posts: 583
Location: USA
Warp wrote:
Preventing luck manipulation is trivial: Just have a RNG stream for some purpose (eg. deciding critical hits), which you seed at the beginning of the game (if the system doesn't have a clock which can be used to randomly seed it, then seed it from user input, eg. the first 20 key presses and their timing or whatever), and then just use that RNG stream for that purpose from that point forward.
But that makes it trivial to "manipulate"- you find actions to advance/pop numbers off the stream, why not? (Isn't that somewhat how DW3's general RNG and Chrono Trigger's critical-determining sequence work?) Of course, you could make it so each separate event type uses a different stream.. As for making something hard to TAS...fill hidden status flag bytes (Cannot Critical of FF4?) with noise off the RNG, to make memory searches harder. Link stat-ups to mileage(SFR2049), time, or similarly speed-defeating characteristics. Require playthrough save to access highest difficulty. Require unimplemented hardware as copy protection implemented in crazy diverse ways, such as an adaptor requiring an E.T. Atari cart reading quirkily-selected values and combining with the ROM's to create necessary-to-continue data. Make the proper choice unselectable until such verification occurs. Make 'perfect' play penalized. ("Don't e'en THINK of using a turbo controller. I'll know.") If you haVe cycles to spare, make the RNG sampling independently randomized. Mash in other data to make a simple test (start fight at full health, watch values and test for what happens on crit) insufficient. Fudge answers if necessary to prevent (on enemy) or promote (on player) poor outcomes, but only when it can matter. Make long invulnerability periods.
nfq
Player (94)
Joined: 5/10/2005
Posts: 1204
hardest game to TAS: a 4-player multiplayer game on goldeneye or perfect dark. 3D games are usually harder than 2D games to TAS, but doing it in 4 player would be extremely hard and slow. it would be cool to see though.
Editor, Expert player (2079)
Joined: 6/15/2005
Posts: 3282
eternaljwh wrote:
But that makes it trivial to "manipulate"- you find actions to advance/pop numbers off the stream, why not?
It's not always that easy. Particularly when the only way to pop numbers is to do the action that you don't want to do. Rockman & Forte, a game I TASed, has an RNG that does not run every frame. Fortunately, you can advance the RNG through shooting, which does not waste time. In fact, because of this, the fact that the RNG only advances when required is a good thing since I have more control over it. On the other hand, FDS Backgammon has a RNG that (after the title screen) only ever advances when determining dice rolls. The only way to advance it is to do the dice rolls in the first place. So if the game gives you a roll sequence of 1-2, 1-2, 1-2, ... , you can't do anything about it.
Joined: 1/13/2007
Posts: 343
The problem with fixing the seed early is that it's still possible to manipulate the rng in an RPG by changing your path and staying in different zones different amounts of time. This was done a lot in final fantasy one. The game would decide that the next random encounter was in X steps, and there's nothing you could do about it. unless you ended up in a no encounter zone ro changes areas to change the content of the encounter. Even if there were many separate streams, it would STILL be possible to sync them by changing the locations of the random encounters, and thus their contents. You tell me an "unmanipulatable" RNG system in an RPG and i'll tell you how to manipulate it. Preventing luck manipulation in an rpg can only be done be deliberately detecting it. The objective here is to look for BS levels of luck manipulation. For example, all random encounters getting manipulated away in dragon warrior for the first fourth of the game would be caught by this hypothetical check. It would start throwing in unskippable encounters every step for a while until the games sense of lucky breaks has been satisfied. Or lets say your criticla rate is supposed to be 5% But your effective critical rate so far (after 100 swings) has been 100%. Obviously manipulation has been going on, and the game needs to push back to stop the TAS attempt. SO it will make you start missing and failing your saves when it matters later. If someone gets such unbelievable luck without manipulation, they would expect it to run out sooner or later.
Joined: 1/13/2007
Posts: 343
FractalFusion wrote:
On the other hand, FDS Backgammon has a RNG that (after the title screen) only ever advances when determining dice rolls. The only way to advance it is to do the dice rolls in the first place. So if the game gives you a roll sequence of 1-2, 1-2, 1-2, ... , you can't do anything about it.
But yuo CAN make different choices for your moves, which will also manipulate the computers actions, and pick the most advantageous ones with knowledge of future rolls and actions. Not that TASing a boardgame is interesting, unless you can manipulate the dice.
Joined: 1/13/2007
Posts: 343
Warp wrote:
Sequence breaks are usually caused by programming or level design mistakes and thus are unintentional. Humans are fallible, and such bugs are usually inevitable. Writing code which tries to detect level design errors being abused can be difficult and bug-prone in itself.
No, it's actually very easy. When you are at an area where you are supposed to have gotten an item first, check for the event flag that gets set when you got the item. If the event flag isn't set, then you have broken the sequence. Oh wait, you didn't bother to set an event flag? A little reprogramming later, and one more bit in the save file and you have your event flag. Take an example from Super Metroid. It is possible to get Super Missiles before beating Spore if you sequence break. Killing Spore already sets an event flag i think (on the set of statues) so if that event flag is not set, remove all super missile pickups from the game until it gets set. Metroid Fusion actually detects a certain sequence break, and tells you to go back and do what you were supposed to do afterwards. Every other sequence break in the game is actually supposed to be there. It is TRIVIAL to detect a sequence break. Yet very few programmers bother to do it, and assume it can't happen, sometimes with disatrous results.
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
Warp wrote:
Just have a RNG stream for some purpose (eg. deciding critical hits), which you seed at the beginning of the game (if the system doesn't have a clock which can be used to randomly seed it, then seed it from user input, eg. the first 20 key presses and their timing or whatever), and then just use that RNG stream for that purpose from that point forward.
In Final Fantasy 3j, this is sort of how the randomness works before a battle. As far as I'm aware, you can't manipulate your luck (e.g. critical hits, etc.) during a battle, but you can change the conditions before it begins. Since I couldn't figure out how to effectively do this without having to fight tens, if not hundreds of battles just to get past random encounters, I decided to quit trying.
Joined: 8/3/2008
Posts: 157
Location: The Land Down Under
Ferret Warlord wrote:
Mitjitsu wrote:
Ways to make the game hard to differenciate from a normal speedrun 1) A frame rule, possibly rounding up to a second 2) Delayed actions e.g. pressing a button repeatedly will cause the same actions to happen regardless of how fast you press it 3) Game is entirely pre-determined, so a speedrunner doesn't have to react to any slight variation in events. 4) Jumping does not cause the player to slow down 5) Levels can be completed entirely by holding one direction i.e. right FTW 6) Forced wait for certain automated events e.g. must wait for an elavator to arrive at the same pre-determined time in order to continue 7) Holding buttons can manually skip through texts and cutscenes 8) Falling gravity is weak, with a slow max speed
Super Mario Brothers?
Score + 1 to Ferret Warlord.
Joined: 1/27/2008
Posts: 236
Location: Somewhere
Having tried it, I say LttP as it desynchs at very random times. I got halfway through a run then quit because it randomly desank (now I'm making up words) at the beggining. 3 months wasted.
See Youtube page (GIRfanaticTAS) for all runs and stuff.