3 ms·
They had to do quite a lot of source diving to achieve this. The bumping into a wall to advance the RNG state without changing the game time is a really neat t
by merlincorey 8y ago
They had to do quite a lot of source diving to achieve this.
The bumping into a wall to advance the RNG state without changing the game time is a really neat trick that I would otherwise have been completely unaware of, and I have played Nethack for many years and done some source diving myself.
Truly a great feat of engineering here.
- malux85 8y agoThis reminds me of something I read on reinforcement learning playing Atari / video games ... often you see the Deep net (I think the game in question was a tank game) just spazzing out on the controller when there’s no enemy, the tank was spinning on the spot while waiting for a door to open for example. Initially thought just to probably be some numerical instability when the next actions are all equally likely (I.e. there’s nothing for it to do) but what was actually happening is the pseudo RNG was partially fed by controller input, and certain patterns of controller input would make random rewards more likely to spawn. I always thought it was cool how these exploits get discovered by the deep nets
- zawerf 8y agoDo you have a source on this? I was under the impression that machine learning is only good at learning things that can be approximated by continuous functions. A RNG is almost the complete opposite of that. It's everywhere discontinuous!
- dklsafhjskljfl 8y agoOld games put the P in PRNG. Often, the technical limitations caused them to very roughly approximate randomness, for example a function that used the last n button presses plus the countdown timer as a seed. If your game has to run in under a kilobyte of memory, that n value might be a byte, or less (such as four bits, 2^4) Some games were worse, far worse. Doom used a list of 256 random numbers that it looped through. Pokemon is another game where the RNG function is extensively mapped, and even used in combination with bugs to generate Mew events, something that should never ever happen. You see a lot of TAS of old games, especially popular ones, that abuse the RNG generator where feasible.
- simonh 8y agoIf the result from the RNG is not actually perfectly random, and is actually partially determined by e.g. controller input, then even if the function is discontinuous there may be a continuous function that approximates it closely enough to be useful.
- dharmab 8y agoOld games have such predictable RNG that humans can manipulate them in non-TAS runs. See the run for Final Fantasy 1 for a good example.
- bluGill 8y agoAtari computers actually had a hardware random number generator driven by electrical noise. (I'm not sure what the 2600 system had, most of their latter game consoles were based on their computers). Most other computers in those days just used a pseudo random number generator.
- sehugg 8y agoThe 2600 didn't have a built-in RNG, but many games took advantage of uninitialized registers on powerup to seed their own RNG.
- karmakaze 8y agoI remember it as using a pseudorandom noise source. Wikipedia on POKEY[0] says 8-bit values from a 17-bit polynomial counter. Sounds about right. [0] https://en.wikipedia.org/wiki/POKEY https://en.wikipedia.org/wiki/POKEY
- robocaptain 8y agoI remember hearing about this on the podcast roguelike radio a long time ago - truly a brilliant little hack. Here's the link for anyone interested: http://www.roguelikeradio.com/2016/06/episode-122-nethack-tool-assisted.html http://www.roguelikeradio.com/2016/06/episode-122-nethack-to... A very niche topic on an already niche podcast, but probably will get some decent overlap on HN. (Also I'm assuming this is the same team? It's hard to tell.)