[HN Gopher] Show HN: I built a multiplayer Gameboy
___________________________________________________________________
Show HN: I built a multiplayer Gameboy
Still very much a work in progress, but really wanted to share this
even in it's early state. Had heaps of fun building it to learn
more about WebRTC.
Author : tholm
Score : 131 points
Date : 2023-07-26 11:33 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| oneandonley1 wrote:
| Very cool what games work with it? Have you tired Pokemon battles
| tholm wrote:
| I haven't exhaustively tested the emulator, but haven't found
| anything that doesn't work so far. Pokemon battles work well,
| was testing it with some friends today, with shuffled controls
| it was pretty fun.
| trh0awayman wrote:
| You should add "democratic mode" - every button push counts as a
| vote for that control. An election is held every X frames.
| tholm wrote:
| Good idea! Adding that to my to-do list.
| sharkjacobs wrote:
| Twitch Plays Pokemon (2014)
| tholm wrote:
| That's exactly what inspired me to make this, I wanted to
| learn about WebRTC and used that idea as a base but also
| wanted the potential to play more real-time titles as well.
| daveidol wrote:
| Curious what is the advantage/disadvantage of WebRTC for an
| application like this vs WebSockets?
| tholm wrote:
| Great question my original implementation was actually
| with WebSockets for this. I ended up going with WebRTC as
| I'm using AWS APIGateway and the costs of streaming data
| for things like audio and video end up being very chatty
| or you end up buffering to reduce chattiness (and cost)
| but introduce lots of latency. I decided to shift to a
| peer to peer model to try and keep the latency down and
| use the websockets implementation I'd written as a
| signalling server instead.
|
| Websockets are way easier to comprehend and implement
| then WebRTC (learning the connection negotiation process
| for NAT traversal isn't much fun). But in the end using
| WebRTC meant I could host a more cost effective demo that
| could still scale reasonably well.
| gberger wrote:
| I can't believe it has been almost 10 years since Twitch
| Plays Pokemon.
| wesapien wrote:
| Best mode is where decision makers are given power without any
| accountability. We just finished "The Legend of Gain of
| Function" and we were all surprised to not finish the game.
| dandigangi wrote:
| Shocked the Lambdas are good enough for perf needs.
| tholm wrote:
| The lambdas themselves do very little, most of the work is
| actually done by the game host. The bulk of the work for the
| lambdas is to process websocket events for signalling to
| establish peer connections.
| dandigangi wrote:
| Makes sense. Thanks for clarifying.
| birdyrooster wrote:
| Its just RPC
| indeyets wrote:
| So, there's no actual device, right? It's not a gameboy, but a
| custom web-ui for emulator
| tholm wrote:
| Correct, just a webapp with peer to peer multiplayer (where
| players compete or cooperate using shared control of a single
| Gameboy)
| jader201 wrote:
| Yeah, I was expecting a hardware article, not a GitHub repo.
|
| Should probably add "emulator" the the title.
| hauxir wrote:
| very cool. uses similar ideas to https://snes.party and
| https://nes.party
| tholm wrote:
| Thanks for sharing this, wasn't even aware these existed, it's
| actually something I was thinking to working on next.
| pjerem wrote:
| That's cool :)
| bejd wrote:
| Great work! It would be nice if the demo page had a game ROM
| ready to go. You could probably find something free and/or open
| source on itch.io.
| tholm wrote:
| Great idea! Will look into adding that in.
| mattl wrote:
| Or put up something yourself made with GB Studio.
| noduerme wrote:
| So... this doesn't have head to head (i.e. where you'd connect
| two gameboys with a cable and play Tetris)?
| tholm wrote:
| Not at the moment, but that's possible to implement by
| extending the emulator and this webapp. This implementation was
| more inspired by something like twitch plays pokemon (multiple
| users competing for control), but on a smaller scale and also
| playable with more realtime titles.
| vapidness_is wrote:
| This is super cool! What emulator did you use? Would be cool to
| add this to https://afterplay.io
| tholm wrote:
| I used https://github.com/roblouie/gameboy-emulator which I
| forked and made a very minor tweak to allow streaming audio
| over WebRTC. Code was super well organized and easy to
| understand. Was also very easy to integrate into the webapp.
| [deleted]
| seabass-labrax wrote:
| I get a 'oops not ready' message when trying to load a ROM file
| on Firefox (Mozilla/5.0 (X11; Linux x86_64; rv:102.0)
| Gecko/20100101 Firefox/102.0). Here's where I got the ROM from:
| https://radicorn.do.timdeve.com/
| tholm wrote:
| Looks like the linked game is a GBA game, for now this is just
| a GB emulator (can probably play some GBC titles as well). Was
| considering making a GBA version of this though.
___________________________________________________________________
(page generated 2023-07-27 23:00 UTC)