{"id":5757,"date":"2026-01-30T08:00:19","date_gmt":"2026-01-30T15:00:19","guid":{"rendered":"https:\/\/rec0m88.com\/?p=5757"},"modified":"2026-02-02T10:56:44","modified_gmt":"2026-02-02T17:56:44","slug":"the-death-of-port-forwarding-how-webrtc-is-saving-retro-netplay","status":"publish","type":"post","link":"https:\/\/rec0m88.com\/nl\/the-death-of-port-forwarding-how-webrtc-is-saving-retro-netplay\/","title":{"rendered":"De dood van poort doorsturen: Hoe WebRTC Retro Netplay redt"},"content":{"rendered":"<div class=\"wp-block-rank-math-toc-block aligncenter\" id=\"rank-math-toc\"><h2>Inhoudsopgave<\/h2><nav><ul><li><a href=\"#the-problem-the-great-nat-barrier\">Het probleem: de grote NAT-barri\u00e8re<\/a><\/li><li><a href=\"#the-solution-web-rtc-and-the-ice-framework\">De oplossing: WebRTC en het \u201cICE\u201d-raamwerk<\/a><\/li><li><a href=\"#why-not-just-use-web-sockets\">Waarom niet gewoon WebSockets gebruiken?<\/a><\/li><li><a href=\"#security-without-the-stress\">Veiligheid zonder stress<\/a><\/li><li><a href=\"#the-future-of-netplay-is-zero-config\">De toekomst van Netplay is zero-config<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Het \u201cgouden tijdperk\u201d van retrogaming zat lange tijd gevangen achter een muur van blauwe tekstmenu's, verwarrende IP-adressen en de gevreesde <strong>Poort doorsturen<\/strong>. Als je in de jaren 2000 opgroeide en een klassieke arcade fighter of een 8-bit platformgame probeerde te spelen met een vriend aan de andere kant van het land, bracht je waarschijnlijk meer tijd door in de instellingen van je router dan in het eigenlijke spel. Je moest door 192.168.1.1 navigeren, de NAT-instellingen vinden en bidden dat het openen van poort 27015 je familiecomputer niet kwetsbaar zou maken voor elke scriptkiddie in de buurt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maar op <strong>Rec0m88<\/strong>, Maar dat hebben we achter ons gelaten. Door gebruik te maken van <strong>WebRTC (Web Real-Time Communicatie)<\/strong>, hebben we handmatige netwerkconfiguratie overbodig gemaakt. Hier volgt een technische diepgang in waarom WebRTC de revolutionaire ruggengraat van moderne netplay is en hoe het de \u201cconnectiviteitscrisis\u201d oplost die retro-emulatie decennialang heeft geteisterd.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-problem-the-great-nat-barrier\">Het probleem: de grote NAT-barri\u00e8re<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Om te begrijpen waarom WebRTC een game-changer is, moet je begrijpen waarom old-school netplay zo moeilijk was. De meeste thuisinternetters hebben geen direct, openbaar IP-adres voor hun computer. In plaats daarvan leven ze achter een <strong>NAT (Network Address Translation)<\/strong> gateway: je router.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Als je een spel probeerde te hosten in een oude emulator, stuurde de computer van je vriend een pakket naar je router en je router zei dan, <em>\u201cIk weet niet voor welk apparaat in dit huis dit pakketje is,\u201d zei hij.\u201d<\/em> en laat het prompt vallen. Daarom moest je de poort \u201cforwarden\u201d. Je vertelde het handmatig aan de router: <em>\u201cAlles wat binnenkomt op poort X gaat naar mijn spelcomputer.\u201d<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Het was een wrijvingsvol proces dat ervoor zorgde dat 90% aan toevallige spelers nooit het plezier van online retrogaming voor 2 spelers konden ervaren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-solution-web-rtc-and-the-ice-framework\">De oplossing: WebRTC en het \u201cICE\u201d-raamwerk<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WebRTC vraagt de gebruiker niet om het netwerk te repareren; het repareert het netwerk voor de gebruiker. Het gebruikt een framework genaamd <strong>ICE (Interactive Connectivity Establishment)<\/strong> om de weg van de minste weerstand tussen twee spelers te vinden. Dit proces gebeurt in milliseconden achter de schermen:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>STUN (Session Traversal Utilities for NAT):<\/strong> Je browser gaat gewoon naar een STUN-server om het te vragen: <em>\u201cWat is mijn publieke IP en poort?\u201d<\/em> Zodra het zijn \u201cpublieke gezicht\u201d kent, deelt het dat met de andere speler via onze signaleringsserver.<\/li>\n\n\n\n<li><strong>UDP Gatenponsen:<\/strong> Omdat beide spelers tegelijkertijd \u201cpings\u201d naar elkaar sturen, zien veel moderne routers dit als een \u201cgevraagd\u201d gesprek en openen automatisch een tijdelijk gat in de firewall. Handmatig poort doorsturen is niet nodig.<\/li>\n\n\n\n<li><strong>TURN (Traversal Using Relays around NAT):<\/strong> In ruwweg 10-15% van de gevallen, meestal op strikte bedrijfs- of universiteitsnetwerken, mislukt zelfs het perforeren van gaten. In deze scenario's valt WebRTC terug op een TURN server, die fungeert als een high-speed relay en ervoor zorgt dat de gamesessie nog steeds werkt waar oude emulators simpelweg geen verbinding zouden kunnen maken.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"why-not-just-use-web-sockets\">Waarom niet gewoon WebSockets gebruiken?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Veel webontwikkelaars proberen spellen te bouwen met <strong>WebSockets<\/strong>, maar voor snelle retrospellen (zoals <em>Straatvechter<\/em> of <em>Contra<\/em>), zijn WebSockets een ramp. WebSockets draaien op <strong>TCP (Transmission Control Protocol)<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TCP is \u201cbetrouwbaar\u201d, wat betekent dat als een enkel gegevenspakket verloren gaat, de hele stroom stopt en wacht tot dat pakket opnieuw wordt verzonden. In een spel veroorzaakt dit \u201chaperingen\u201d of \u201cstotteren\u201d. Als je personage springt, maar het pakket is verloren gegaan, bevriest het spel gedurende 200 ms terwijl het wacht op het springcommando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WebRTC gebruikt UDP (User Datagram Protocol)<\/strong>. In een op UDP gebaseerde netplay-omgeving gaan we, als er een pakket verloren gaat, gewoon door naar het volgende. Dit zorgt voor een veel soepelere \u201cflow-state\u201d ervaring waarbij de latency consistent aanvoelt in plaats van schokkerig.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"security-without-the-stress\">Veiligheid zonder stress<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Een van de meest over het hoofd geziene voordelen van de WebRTC-aanpak op Rec0m88 is <strong>privacy<\/strong>. Vroeger, toen je IP-adressen deelde via Discord of IRC, gaf je je letterlijke digitale thuisadres aan vreemden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WebRTC in een browseromgeving is zwaar sandboxed. Het biedt <strong>DTLS (Datagram Transport Layer Security)<\/strong> en <strong>SRTP (beveiligd transportprotocol in realtime)<\/strong> standaard versleuteling. Uw gegevens zijn end-to-end versleuteld en omdat het in de browser draait, heeft de emulator nooit \u201cAdmin\u201d-toegang tot uw lokale machine. U krijgt de prestaties van een native C++ applicatie met de beveiliging van een moderne webbrowser.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-future-of-netplay-is-zero-config\">De toekomst van Netplay is zero-config<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bij Rec0m88 geloven we dat de techniek moet verdwijnen zodat het spel centraal kan staan. Door WebRTC-datakanalen te gebruiken, hebben we de toegangsdrempel voor retro-netplay verlaagd van het niveau van \u201cIT-technicus\u201d naar het niveau van \u201c\u00e9\u00e9n-klik\u201d.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of je nu een lobby host voor een 4-speler beat-\u2019em-up of een 1v1 vechter, de complexe dans van NAT traversal, STUN ontdekking en UDP signalering gebeurt in een oogwenk. Het tijdperk van de \u201conbereikbare host\u201d is voorbij.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Klaar om de latentie zelf te testen?<\/strong> <a href=\"https:\/\/rec0m88.com\/nl\/arcade-games\/\" target=\"_blank\" data-type=\"page\" data-id=\"22\" rel=\"noreferrer noopener\">Spring in onze Arcade-spellen<\/a> en start een Netplay-sessie om WebRTC in actie te zien.<\/p>","protected":false},"excerpt":{"rendered":"<p>Het \u201cgouden tijdperk\u201d van retro gaming zat lange tijd gevangen achter een muur van blauwe tekstmenu's, verwarrende IP-adressen en het gevreesde Port Forwarding. Als je in de jaren 2000 bent opgegroeid en een klassieke arcadefighter of een 8-bits platformgame probeerde te spelen met een vriend aan de andere kant van het land, heb je waarschijnlijk meer tijd...<\/p>","protected":false},"author":1,"featured_media":5764,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[40],"tags":[],"class_list":["post-5757","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-meta"],"_links":{"self":[{"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/posts\/5757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/comments?post=5757"}],"version-history":[{"count":3,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/posts\/5757\/revisions"}],"predecessor-version":[{"id":5768,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/posts\/5757\/revisions\/5768"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/media\/5764"}],"wp:attachment":[{"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/media?parent=5757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/categories?post=5757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rec0m88.com\/nl\/wp-json\/wp\/v2\/tags?post=5757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}