7:38 To be honest, 250ms ping is not playable for an FPS game like CS 1.6. Also, Hamachi does NAT traversal using a custom system with advanced discovery and connection management (similar to STUN/TURN), establishes P2P tunnels via hole punching and emulates complete LAN environments. I remember using this software in 2005 to emulate LAN over the internet, so I could create a local listen server in CS 1.6 and play with friends like it was on LAN with no latency issues. Hamachi was initially designed for games according to the author. If you want to play CS 1.6 I'd probably advise against using any software similar to Hamachi. Valve already integrated Steam Networking, a virtual private gaming network used for peer-to-peer gaming to all GoldSrc engine based games during the 25th Anniversary Update for Half-Life in Nov, 2023.
i was very skeptical when i heard "under 100 lines of code" and immediately thought it must be some shitty python or javascript glorified relay 💀which it really is, it's just hidden in the back-end of hyperswarm lol, he still has to connect to their servers and announce that "they exist" for hyperswarm to know to which ip to redirect your packets.
@@alfred.clementyou're right valve also made the same thing we made, and it is a good suggestion if you both own a game like for instance valheim on steam, just use steam. You're wrong about the ping, cs 1.6 works just fine at 200 to 250 we've played lots of games at that ping, its far beyond playable, its perfectly fine, if you say otherwise you haven't tried it. If you think sturn turn and ice would work better here, you have a lot to learn... apart from being heavier protocols they require relaying the data in this scenario, this can be seen with most other products on the same line. I'd happily say this the best ping possible, it's the exact same latency as a raw ping, nothing (apart from steam itself, which under specific conditions can achieve the same) gets as low as that,, also, have you ever had a better ping from South Africa to England? That's the best numbers I've ever seen and it's over a mobile phone. Hamachi doesn't perform the same task, it relays, if you're trying to school people that relaying even remotely compares to the raw forwarded heuristic back punching that hyper does, then you need some schooling yourself hamachi over the same connection the ping is over 750 btw, and won't even open a web page. Steam is pretty good but honestly doesn't work on any of the titles that hyper-nat did, including this cybersports cs 1.6, doesn't adress the problem at all. You're trying to throw intellectual weight around, and, while I love and appreciate your comment, it's not accurate, hamachi is unusable while hyper-nat is a perfect fit, that's why it's a hamachi killer. Let me be clear: there is no other tool in the world right now to do fully raw UDP forwarding over a heuristic backpunch, only this. That is why games work like raw nat, because it's raw UDP. Steam didn't solve the problem of playing this game, cause we didn't want to play the crappy steam version we wanted to play our Lan version, let me make it clear steam networking won't do any of these great old languages games as they were, it will funnel you on to new valve services that can be cut at any time, and cost you repurchasing games you already own.
@@depralexcrimson you clearly didn't take a good look, there's no external packet redirection it does raw UDP datagram forwarding point to point between the hosts without a relay or middleman after hyperswarm establishes the connection. Packets go directly from point to point, that's why it's special 👉👌(TCP on the other hand isn't raw but still direct) I made it clear that it's 100 lines of js and uses hyperswarm in every publication since it's inception, you're stating the obvious that would were already told. Earlier versions of the program was much more code because parts of the libraries eventual implementations were fleshed out in-project What makes it unique is that it uses undocumented raw UDP forwarding techniques, combines hyperswarm with key pear for diffy key negotiation of many diverse connections (making it a hyperbolic virtual nat) and does a chain of TCP and UDP keys. Your comment is kind of discrediting yourself, you say theres stuff hidden in the back end, but there is no back end, nothing is hidden, this was made working together with the hyperswarm team and two of the unique P2P features employed here was implemented by the lead Devs of hyperswarm themselves after our requests and over a year collaborating with our team on these specific feature sets and tools. Hyper-NAT is just a standing demonstration of this specific use of those libraries, and it would be inappropriate for it to have more code. This tool is unique, yes it uses libraries like all other tools, and yes the setup uses 100 lines of code, that is a good thing, it means that the new features were made by collaborating with the actual creators of the libraries. I've personally towed this technology with Paul and Mathias, and if you go look carefully, the one library we used keypear was developed after over a years worth of back and forth discussions with matthias, it required a push to the crypto library, do you know what the crypto library is or how big of a deal it is and how seldomly it updates with new features? Basically it only receives features when new technique are discovered worldwide. It means this tool is actually the first public tool in the world that used p2p in this way, because the libraries got the features specifically on the request of this projects creators, for this project. If you don't see the value of new technology, especially something so ground breaking that it does this without relaying through external servers on SIM cards, then you need to do more research, try to set up your own infrastructure to replace this tool, takes quite a lot, would require skilled network scientist multiple years the same way that hyperswarms backpunching capabilities didn't arrive overnight. The comment about valves solution. Is correct, valve developed a similar technology for backpunching at the same time. We have discussed making another example that uses libp2p, which would be C based, because they shortly afterwards also added a similar backpunching method to their stack, its very likely that they analyzed some the code from library examples that existed at the time like hyperswarm and tailscale, but it would take additional time to port raw udp fowarding to libp2p and a few other things that allow this to operate at the speed that it does, so right now that idea on the backburner while we explore lots of other urgent projects. Next time be less skeptical, you'll be less wrong.
@@musicmoonshine I can assure you, anyone with over 100ms ping in CS 1.6 will immediately cry about having such high ping. There's no one in their right mind who plays CS 1.6 today with 250ms ping and claims that it's fine or great, unless they installed the game for the first time and all they did is just move around. Things may have been different in the early 2000s when we all had 56 Kbps dial-up modem, then 150ms~ was not bad. Saying Hamachi "relays" is misleading. Hamachi incorporates a relay fallback mechanism, this does not mean that relaying is its primary mode of operation. Instead, Hamachi was specifically designed to establish direct peer-to-peer (P2P) tunnels whenever possible, using advanced NAT traversal techniques. It employed hole punching for both TCP and UDP connections, supported by a server-side-driven discovery process to improve the success rate of NAT traversal. This is conceptually similar to the DHT-based NAT traversal used by hyper-nat, though the underlying implementation differs. Also, latency should be virtually identical in both systems, as the communication path is the shortest possible between peers **once a direct connection is established** . It's important to note that in Hamachi, the centralized server is used **only** during the initial connection setup and NAT traversal phase. Once the connection is established, Hamachi allows direct P2P communication, similar to hyper-nat and the server is not involved in the ongoing data transfer. I'm not sure what "cybersports cs 1.6" is, but after some Google search, it looks like a modified Russian client that is pirated and non-steam, of course Steam Networking won't work. CS 1.6 goes for $1 during sale, there is no reason why one should pirate the game.
@@alfred.clement the many games we played say otherwise, you're assurances give me no reassurance because its not the case for our real-world group of people who play this game. Saying hamachi relays is not misleading, it literally relays on the same connection, I measured 700-1500 pings instead of 230-250, it didn't manage to traverse my nat without relaying, stun/turn also relays, that's because I'm on a mobile connection, there are in fact very few tools that successfully traverses any of the three mobile connections in south africa, steam does, some games do like resonite, that's because they implement the exact same heuristic backpunch technique that hyperswarm does in this scenario, some other tools also do it or claim to do it, I've seen tailscales documentation explain their implementation of it and it looked correct at a glance, libp2p has an implementation of it... None of these tools are a generic relay, and that's why for old games we use hyper-nat when we want to play during breaks 250 vs over 700 is not virtually the same. We played games, it caused us great joy, the tool is on github, that should be enough lol. I play CS against people in the US and UK at the same time and its a jive, we've been using it every time we need a lan relay for the last few years, its small quick and easy and you dont need to pay any service provider to host the tool because it uses a peer to peer to discover the other party and synchronize the two sides of the holepunch, the only other way we can do it reliably is actual port forwarding, and my connection doesn't allow that. It's lack of an external relay is to us a feature because it wont connect it it cant connect directly. There's no need for negativity, every lan game in existence is a potential candidate for this tool, and potentially other tools like tailscale, CS works for us, we play it and its fun, yes its fun at 250 ping, we wouldn't still play it if it wasn't, sometimes the raw number of the ping can hide other things, and your experience in other games on other connections with the same numbers will likely not match this experience, a reliable uninterpolated view at a quarter second latency still easily allows one shots if you're used to it, it plays differently from how for instance krunker resolves shots (krunker is famous for its flexible network code, very good at converging gameplay from multiple countries) but good old cs 1.6 with its uninterpolated quake 1 networking feels similar to locally simulated games like krunker and fortnite, and in my opinion feels fairer (there's a whole discussion to be had about how locally simulated games often allow you to shoot your enemy in two different places and get a hit either way to make it feel better, cs how uninterpolated just tells you where the player was when your computer got the last message, and lets you shoot there and only there within a timeframe). Playing on the same pings using online services on cs go for me is unusable at 250 pings, fortnite is ok to play but very few other games are, ark certainly doesnt work well at 250 ping, but many of these old FPS games do, CS 1.6 especially, but all old school quake based games would work well, very likely unreal based games too, out of every other product we've ever tested and played, the old CS and HL over hyper-nat plays the best on the same connection side by side, it feels like port forwarding, and other games from a similar era did faired well like quake and some RTS titles in our tests. We've also used voice apps, shared large files privately over torrents, we've relayed warudo to make multi-participant 3d motion captured machinima scenes, I've set up remote IP cameras on phones using termux, we've set up collaborative blender sessions, used it to speed up rustdesk, set up ssh access, we've used it to tunnel intranet traffic without vpns privately, we've played old school and in house developed games, old school FPS games are actually very latency tolerant because they don't interpolate so much. One thing is certain, our team keeps going back to this tool over and over cause it is a dead simple way to forward traffic, no dodgy virtual network cards picking up extra traffic, no trunking, encryption, buffering, backpressuring, chunking or reworking of udp traffic, just datagram forwarding with header markings that identify their streams, no other tool does it the way hyperswarm does it, that's why its so reliable for certain old games that just need the stream forwarded. Where it breaks down or becomes less useful is if you need lots and lots of ports forwarded... cause the p2p network can temporariliy rate limit discoveries from the app if there are too many discoveries in a short time period causing it to fail at startup, it not employing an external host to bounce off of making it impossible to connect if both parties have udp port randomization on their ISP side (except for one or two cases) and the timing sensitivity for new network connections adding initial connection time when you first start the app, since it runs a separate discovery, and holepunch workflow, for each network conncetion. The other side of that is that it only makes low latency direct connections cause that's all it can do, and that it has the culmination of several years of the hyperswarms hard work and research into making the nat traversal as universally compatible as humanly possible.
7:38 To be honest, 250ms ping is not playable for an FPS game like CS 1.6. Also, Hamachi does NAT traversal using a custom system with advanced discovery and connection management (similar to STUN/TURN), establishes P2P tunnels via hole punching and emulates complete LAN environments. I remember using this software in 2005 to emulate LAN over the internet, so I could create a local listen server in CS 1.6 and play with friends like it was on LAN with no latency issues. Hamachi was initially designed for games according to the author.
If you want to play CS 1.6 I'd probably advise against using any software similar to Hamachi. Valve already integrated Steam Networking, a virtual private gaming network used for peer-to-peer gaming to all GoldSrc engine based games during the 25th Anniversary Update for Half-Life in Nov, 2023.
i was very skeptical when i heard "under 100 lines of code" and immediately thought it must be some shitty python or javascript glorified relay 💀which it really is, it's just hidden in the back-end of hyperswarm lol, he still has to connect to their servers and announce that "they exist" for hyperswarm to know to which ip to redirect your packets.
@@alfred.clementyou're right valve also made the same thing we made, and it is a good suggestion if you both own a game like for instance valheim on steam, just use steam.
You're wrong about the ping, cs 1.6 works just fine at 200 to 250 we've played lots of games at that ping, its far beyond playable, its perfectly fine, if you say otherwise you haven't tried it.
If you think sturn turn and ice would work better here, you have a lot to learn... apart from being heavier protocols they require relaying the data in this scenario, this can be seen with most other products on the same line.
I'd happily say this the best ping possible, it's the exact same latency as a raw ping, nothing (apart from steam itself, which under specific conditions can achieve the same) gets as low as that,, also, have you ever had a better ping from South Africa to England? That's the best numbers I've ever seen and it's over a mobile phone.
Hamachi doesn't perform the same task, it relays, if you're trying to school people that relaying even remotely compares to the raw forwarded heuristic back punching that hyper does, then you need some schooling yourself hamachi over the same connection the ping is over 750 btw, and won't even open a web page.
Steam is pretty good but honestly doesn't work on any of the titles that hyper-nat did, including this cybersports cs 1.6, doesn't adress the problem at all.
You're trying to throw intellectual weight around, and, while I love and appreciate your comment, it's not accurate, hamachi is unusable while hyper-nat is a perfect fit, that's why it's a hamachi killer.
Let me be clear: there is no other tool in the world right now to do fully raw UDP forwarding over a heuristic backpunch, only this. That is why games work like raw nat, because it's raw UDP.
Steam didn't solve the problem of playing this game, cause we didn't want to play the crappy steam version we wanted to play our Lan version, let me make it clear steam networking won't do any of these great old languages games as they were, it will funnel you on to new valve services that can be cut at any time, and cost you repurchasing games you already own.
@@depralexcrimson you clearly didn't take a good look, there's no external packet redirection it does raw UDP datagram forwarding point to point between the hosts without a relay or middleman after hyperswarm establishes the connection. Packets go directly from point to point, that's why it's special 👉👌(TCP on the other hand isn't raw but still direct)
I made it clear that it's 100 lines of js and uses hyperswarm in every publication since it's inception, you're stating the obvious that would were already told. Earlier versions of the program was much more code because parts of the libraries eventual implementations were fleshed out in-project
What makes it unique is that it uses undocumented raw UDP forwarding techniques, combines hyperswarm with key pear for diffy key negotiation of many diverse connections (making it a hyperbolic virtual nat) and does a chain of TCP and UDP keys.
Your comment is kind of discrediting yourself, you say theres stuff hidden in the back end, but there is no back end, nothing is hidden, this was made working together with the hyperswarm team and two of the unique P2P features employed here was implemented by the lead Devs of hyperswarm themselves after our requests and over a year collaborating with our team on these specific feature sets and tools. Hyper-NAT is just a standing demonstration of this specific use of those libraries, and it would be inappropriate for it to have more code.
This tool is unique, yes it uses libraries like all other tools, and yes the setup uses 100 lines of code, that is a good thing, it means that the new features were made by collaborating with the actual creators of the libraries. I've personally towed this technology with Paul and Mathias, and if you go look carefully, the one library we used keypear was developed after over a years worth of back and forth discussions with matthias, it required a push to the crypto library, do you know what the crypto library is or how big of a deal it is and how seldomly it updates with new features? Basically it only receives features when new technique are discovered worldwide. It means this tool is actually the first public tool in the world that used p2p in this way, because the libraries got the features specifically on the request of this projects creators, for this project.
If you don't see the value of new technology, especially something so ground breaking that it does this without relaying through external servers on SIM cards, then you need to do more research, try to set up your own infrastructure to replace this tool, takes quite a lot, would require skilled network scientist multiple years the same way that hyperswarms backpunching capabilities didn't arrive overnight.
The comment about valves solution. Is correct, valve developed a similar technology for backpunching at the same time.
We have discussed making another example that uses libp2p, which would be C based, because they shortly afterwards also added a similar backpunching method to their stack, its very likely that they analyzed some the code from library examples that existed at the time like hyperswarm and tailscale, but it would take additional time to port raw udp fowarding to libp2p and a few other things that allow this to operate at the speed that it does, so right now that idea on the backburner while we explore lots of other urgent projects.
Next time be less skeptical, you'll be less wrong.
@@musicmoonshine I can assure you, anyone with over 100ms ping in CS 1.6 will immediately cry about having such high ping. There's no one in their right mind who plays CS 1.6 today with 250ms ping and claims that it's fine or great, unless they installed the game for the first time and all they did is just move around. Things may have been different in the early 2000s when we all had 56 Kbps dial-up modem, then 150ms~ was not bad.
Saying Hamachi "relays" is misleading. Hamachi incorporates a relay fallback mechanism, this does not mean that relaying is its primary mode of operation. Instead, Hamachi was specifically designed to establish direct peer-to-peer (P2P) tunnels whenever possible, using advanced NAT traversal techniques. It employed hole punching for both TCP and UDP connections, supported by a server-side-driven discovery process to improve the success rate of NAT traversal. This is conceptually similar to the DHT-based NAT traversal used by hyper-nat, though the underlying implementation differs.
Also, latency should be virtually identical in both systems, as the communication path is the shortest possible between peers **once a direct connection is established** . It's important to note that in Hamachi, the centralized server is used **only** during the initial connection setup and NAT traversal phase. Once the connection is established, Hamachi allows direct P2P communication, similar to hyper-nat and the server is not involved in the ongoing data transfer.
I'm not sure what "cybersports cs 1.6" is, but after some Google search, it looks like a modified Russian client that is pirated and non-steam, of course Steam Networking won't work. CS 1.6 goes for $1 during sale, there is no reason why one should pirate the game.
@@alfred.clement the many games we played say otherwise, you're assurances give me no reassurance because its not the case for our real-world group of people who play this game.
Saying hamachi relays is not misleading, it literally relays on the same connection, I measured 700-1500 pings instead of 230-250, it didn't manage to traverse my nat without relaying, stun/turn also relays, that's because I'm on a mobile connection, there are in fact very few tools that successfully traverses any of the three mobile connections in south africa, steam does, some games do like resonite, that's because they implement the exact same heuristic backpunch technique that hyperswarm does in this scenario, some other tools also do it or claim to do it, I've seen tailscales documentation explain their implementation of it and it looked correct at a glance, libp2p has an implementation of it... None of these tools are a generic relay, and that's why for old games we use hyper-nat when we want to play during breaks
250 vs over 700 is not virtually the same.
We played games, it caused us great joy, the tool is on github, that should be enough lol. I play CS against people in the US and UK at the same time and its a jive, we've been using it every time we need a lan relay for the last few years, its small quick and easy and you dont need to pay any service provider to host the tool because it uses a peer to peer to discover the other party and synchronize the two sides of the holepunch, the only other way we can do it reliably is actual port forwarding, and my connection doesn't allow that. It's lack of an external relay is to us a feature because it wont connect it it cant connect directly.
There's no need for negativity, every lan game in existence is a potential candidate for this tool, and potentially other tools like tailscale, CS works for us, we play it and its fun, yes its fun at 250 ping, we wouldn't still play it if it wasn't, sometimes the raw number of the ping can hide other things, and your experience in other games on other connections with the same numbers will likely not match this experience, a reliable uninterpolated view at a quarter second latency still easily allows one shots if you're used to it, it plays differently from how for instance krunker resolves shots (krunker is famous for its flexible network code, very good at converging gameplay from multiple countries) but good old cs 1.6 with its uninterpolated quake 1 networking feels similar to locally simulated games like krunker and fortnite, and in my opinion feels fairer (there's a whole discussion to be had about how locally simulated games often allow you to shoot your enemy in two different places and get a hit either way to make it feel better, cs how uninterpolated just tells you where the player was when your computer got the last message, and lets you shoot there and only there within a timeframe). Playing on the same pings using online services on cs go for me is unusable at 250 pings, fortnite is ok to play but very few other games are, ark certainly doesnt work well at 250 ping, but many of these old FPS games do, CS 1.6 especially, but all old school quake based games would work well, very likely unreal based games too, out of every other product we've ever tested and played, the old CS and HL over hyper-nat plays the best on the same connection side by side, it feels like port forwarding, and other games from a similar era did faired well like quake and some RTS titles in our tests.
We've also used voice apps, shared large files privately over torrents, we've relayed warudo to make multi-participant 3d motion captured machinima scenes, I've set up remote IP cameras on phones using termux, we've set up collaborative blender sessions, used it to speed up rustdesk, set up ssh access, we've used it to tunnel intranet traffic without vpns privately, we've played old school and in house developed games, old school FPS games are actually very latency tolerant because they don't interpolate so much. One thing is certain, our team keeps going back to this tool over and over cause it is a dead simple way to forward traffic, no dodgy virtual network cards picking up extra traffic, no trunking, encryption, buffering, backpressuring, chunking or reworking of udp traffic, just datagram forwarding with header markings that identify their streams, no other tool does it the way hyperswarm does it, that's why its so reliable for certain old games that just need the stream forwarded.
Where it breaks down or becomes less useful is if you need lots and lots of ports forwarded... cause the p2p network can temporariliy rate limit discoveries from the app if there are too many discoveries in a short time period causing it to fail at startup, it not employing an external host to bounce off of making it impossible to connect if both parties have udp port randomization on their ISP side (except for one or two cases) and the timing sensitivity for new network connections adding initial connection time when you first start the app, since it runs a separate discovery, and holepunch workflow, for each network conncetion. The other side of that is that it only makes low latency direct connections cause that's all it can do, and that it has the culmination of several years of the hyperswarms hard work and research into making the nat traversal as universally compatible as humanly possible.
wow cool wow super expert mode 85 lvl RESPECT 🥶🥶
Thank you for the tutorial sir 😁
Good video sir!
lets goooo
Finally lol