6 ms·
Tetris for Game Boy Gets Online Multiplayer
- hatsunearu 5y agoA decade+ ago I played Pokemon on GBC/GBA emulators and I always wondered why I can't play online link cable multiplayer and back then I heard that the link cable requires real time communication and any sort of network latency will kill the RT guarantee--I wonder what's different now? edit: okay looks like their scheme doesn't work for arbitrary games and arbitrary protocols.
- raldi 5y agoThat doesn’t make sense; an emulator could simulate any latency it wants.
- hatsunearu 5y agoYeah, I think if you did the "dumb" approach of simulating SPI bit-for-bit (or byte by byte, etc) over networking it will quickly break down (like, you'd have to pause the emulation while the packets roll in...?) I think their approach of understanding how the protocol actually works and making a latency tolerant networking layer on top of it might work for pokemon (assuming the pokemon game code allows this)
- esrauch 5y agoI don't think it's that simple. Imagine the game sends a message over the wire and presumes it can get an stateful ack calculated by code running on the other side before it takes any other action, and then does that multiple times per frame. Also, the code might not even block while waiting arbitrarily long, it might just run ahead and desync/bug out if the reply doesn't come back in a couple ms. What do you expect the emulator to do when the network latency is more than 25ms long? The emulator can't trivially simulate 0.1ms latency instead. It can maybe try to hook in and pause the emulation while it's waiting for the reply, but it would grind down the game to a crawl.
- AnIdiotOnTheNet 5y agoActually, while not trivial, it is possible to simulate lower latencies than actually exist in reality. What the emulator does is keep a buffer of previous states for some arbitrary length of time (say, 10 frames) then, upon receiving the data, it can roll back the state to when it was supposed to have received it, add the data to the state, and run it forward to catch back up to where it was. This is a technique used by some fighting games that have internet play, and is also used in emulators to deal with input latency on modern TVs.
- hatsunearu 5y agoIf you wanted to do this, you'd need complete control over the emulation game state transitions which is much more difficult than just making whatever you call the OP's post (a proxy? I don't know)
- lostgame 5y agoThis relies on hardcore deterministic reverse-engineering. Coming from the ROM hacker scene I initially was confused by this; too - but absolutely understand it’s impracticality difficult from a technical end.
- raldi 5y agoSeveral years ago I went looking for a GameBoy emulator that let you do multiplayer over the Internet, basically tunneling VideoLink over TCP. I was very surprised to find no support for this in any known emulator. As a step to writing a patch for this myself, I hacked in some analysis to try to at least reverse-engineer the GameBoy Tetris protocol (also seemingly unpublished anywhere on the Internet) but never got very far.
- Y_Y 5y agoIsn't there some generic tool for handling transmitting keypresses? Then you could use an emulator with local multiplayer (I know this exists at least for two-player) and a video link to have both machines emulated on one host, and one working remotely. At worst you could have have a limited vnc session or something.
- livre 5y ago> At worst you could have have a limited vnc session or something. I don't know specifically about Gameboy but this approach has been tried by PS1 emulators and it doesn't work. There are two main problems, computer and internet speed variations will eventually make both games go out of sync, and if using the clock or some external data for the seed of the game's rng then both players will be getting different things while in game (depending on the game, could be different Tetris blocks, different bonuses, different weapons). I discovered this while trying to play a multiplayer PS1 game over the LAN and the emulator did just that, send keystrokes to the other computer.
- emptybits 5y agoVery cool. Another piece of "massively multiplayer" Game Boy trivia that might be of interest: There is a Game Boy game published in 1991 called Faceball 2000. It's a first person shooter that supports up to 16 players with a homebrew hardware connector. This was even before Nintendo's own 4-player adapter was available for any games. The connector was not Nintendo-endorsed so it could not be shipped with the game but the code is still there in the ROM. Disclosure: I was a programmer at the small company responsible but not the genius himself. You can read a short interview with him here.[1] [1] https://web.archive.org/web/20100509163809/http://fb2k.retro-spect.ca/rchampagne.html https://web.archive.org/web/20100509163809/http://fb2k.retro...
- grenoire 5y agoDamn, that's like Quake Arena for the GB!
- CamelRocketFish 5y ago16 players on gameboy is incredible, massive props!
- lostgame 5y agoThe fact that people like you are here makes HN still worthwhile while all other social media networks seem to fall flat. I’d love to think John Carmack is here among us; cleverly disguised under some cute u/n we’d never get unless it was explained to us.
- _Microft 5y agoHe is actually here, undisguised and even joins discussions sometimes: https://news.ycombinator.com/user?id=JohnCarmack https://news.ycombinator.com/user?id=JohnCarmack
- lostgame 5y agoWelp; meeting him briefly by accident once was the reason I decided to go straight into the field of development instead of going to school for it around 2008. I took a moment and read some of his contributions - very fascinating to read his comments on the whole Oculus thing, especially! Thank you so kindly for sharing that.
- mrslave 5y agoTetriNET was huge back in 1998.[0] And gtetrinet[1] still runs on Linux. [0] https://en.wikipedia.org/wiki/TetriNET https://en.wikipedia.org/wiki/TetriNET [1] http://gtetrinet.sourceforge.net/ http://gtetrinet.sourceforge.net/ (no HTTPS unfortunately)
- ZitchDog 5y agoI was in a tetrinet clan!
- mrslave 5y agoMy memory isn't good enough to remember how to bootstrap a game. I believe TetriNET didn't have a forum to play against strangers, but I could be wrong. I played only with friends who would initiate the game with an instant message group chat first. Did your league organize on IRC to bootstrap games with the host's IP address? Is there a webpage with league standings still around?
- ZitchDog 5y agoHere you go :) http://www.oocities.org/timessquare/7785/tetrinet/ladder.htm http://www.oocities.org/timessquare/7785/tetrinet/ladder.htm
- sen 5y agoStacksmashing is well worth a follow on YouTube[0]. They’ve been cranking out some seriously awesome projects lately with very detailed breakdown videos that have taught me heaps. Reverse engineering and adding homebrew support to the Game & Watch, and hacking AirTags and running their own code on it, among others. [0] https://youtube.com/c/stacksmashing https://youtube.com/c/stacksmashing
- bullen 5y agoI made my own take on PuzzleFighter/PuyoPuyo/Multiplayer Tetris: http://fuse.rupy.se http://fuse.rupy.se
- brailsafe 5y agoThis is the coolest thing I've seen all year. Particularly use of WebUSB.
- Juntu 5y agoTetris is panic attack at 1000 whats most cases is when you lose it it’s because your brain functions stops and a part of your memory is gone the more you play the most dare you’ll get. I consider this a death penalty watch nintendo will not put precaution on whats being advertised let the kids decide.