You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I always wanted to add DNS and domain name to the game, but I've been postponing these features as they weren't "essential", in any way, to the base game. As it turns out, a very simple DNS implementation is required for the base version. Let me explain why:
Our game design is geographically distributed, and this is one of the pillars for balance. It avoids overly concentrated areas/servers, like we've seen in Legacy.
As such, HE1 and HE2 NPCs like Banks, Police Dept, BTC Market, City Hall, Chamber of Commerce etc. are distributed across several physical regions, based on (player) population density.
Let's use Banks as an example. Player A, located in Europe, may access his bank using IP X. Player B, located in Australia, may access his bank using IP Y. Both banks are the same, but those are different terminals/ATMs.
Suppose player A accesses ip Y (located in Australia), but instead wants to use her local bank. She'd have to memorize IP X (or lookup on Finances app, which would lead to memorization). That's where DNS shines: just access bank.com and you have direct access to your local bank IP. I could also access bank.com/branch/australia/sydney-1 instead, to have direct access to IP Y.
World's Simplest Introduction to DNS
DNS maps a domain name to an IP address. That's it. But obviously, that's not it.
DNS Unicast
Unicast DNS maps exactly one domain to one IP. Always.
DNS Anycast
Anycast DNS allows multiple IP addresses to answer for the same domain. The benefit it brings is that the nearest server will answer first, much faster than others.
DNS in the game
First and most importantly, players don't need to know anything about DNS. That's totally transparent to them.
DNS have one major reason to exist: it's hard to memorize IPs. It's much easier to type google.com than 172.217.29.206. For HE1/2, there's another reason: resolving to the local NPC, automatically.
The bank example nails it:
bank.com will always resolve to the nearest ATM to the connection's Exit Node (which is not necessarily the Player's location). That's Anycast.
bank.com/branch/brazil/sao-carlos-1 will always resolve to branch brazil/sao-carlos-1. That's Unicast.
In real life, the two examples above would be answered by the same DNS server, as the path (/branch/...) doesn't matter for DNS resolution. Helix, however, consider the full path, which makes implementation a lot easier.
Under the hood, our servers calculate the nearest bank.com server to the Player's location using GIS algorithms.
Other examples:
wop.com/local resolves to nearest WOP station, while wop.com resolves to global WOP database.
new-york.us or sao-paulo.br resolves to the relevant city WHOIS (with information about Police Dept, News, City Hall, Chamber of Commerce etc).
Custom domain names
We'll have domain name support, so players can register their own domain. myclan.com or username.com. All player- and clan-powered DNS/domains are Unicast.
But... not now. We'll consider implementing custom domain names only after the game has been marked as Stable/1.0 (2018+).
Reverse DNS & browser behavior
We'll have an in-game system similar to reverse DNS (rDNS). It's mostly used on Browsers.
When player accesses an IP in the browser, if there is a reverse DNS, the relevant Unicast domain will be showed alongside the IP. It's informative, so the player knows there's an easier way to access this site.
When browsing a website with its domain, the browser will always show the corresponding IP as well.
Logs
At least initially, logs will only store IP addresses. In the future, storing both IP and domain, like a.b.c.d (bank.com/branch/fr/paris-1), seems a nice improvement.
Protocol
In real life, we use the HTTP(S) protocol to browse the Web. For HE2, I'd like to have in-game websites using a fake protocol like he2(s):// or hex(s)://, for two reasons:
It avoids confusion; it makes crystal clear that the website is not real
It enables us to serve real sites within the game. The next step is playing HE1 inside HE2. (Obviously this still have to be widely discussed and planned. Lots of potential security problems).
The text was updated successfully, but these errors were encountered:
I always wanted to add DNS and domain name to the game, but I've been postponing these features as they weren't "essential", in any way, to the base game. As it turns out, a very simple DNS implementation is required for the base version. Let me explain why:
Our game design is geographically distributed, and this is one of the pillars for balance. It avoids overly concentrated areas/servers, like we've seen in Legacy.
As such, HE1 and HE2 NPCs like Banks, Police Dept, BTC Market, City Hall, Chamber of Commerce etc. are distributed across several physical regions, based on (player) population density.
Let's use Banks as an example. Player A, located in Europe, may access his bank using IP X. Player B, located in Australia, may access his bank using IP Y. Both banks are the same, but those are different terminals/ATMs.
Suppose player A accesses ip Y (located in Australia), but instead wants to use her local bank. She'd have to memorize IP X (or lookup on Finances app, which would lead to memorization). That's where DNS shines: just access
bank.com
and you have direct access to your local bank IP. I could also accessbank.com/branch/australia/sydney-1
instead, to have direct access to IP Y.World's Simplest Introduction to DNS
DNS maps a domain name to an IP address. That's it. But obviously, that's not it.
DNS Unicast
Unicast DNS maps exactly one domain to one IP. Always.
DNS Anycast
Anycast DNS allows multiple IP addresses to answer for the same domain. The benefit it brings is that the nearest server will answer first, much faster than others.
DNS in the game
First and most importantly, players don't need to know anything about DNS. That's totally transparent to them.
DNS have one major reason to exist: it's hard to memorize IPs. It's much easier to type
google.com
than172.217.29.206
. For HE1/2, there's another reason: resolving to the local NPC, automatically.The bank example nails it:
bank.com
will always resolve to the nearest ATM to the connection's Exit Node (which is not necessarily the Player's location). That's Anycast.bank.com/branch/brazil/sao-carlos-1
will always resolve to branchbrazil/sao-carlos-1
. That's Unicast.In real life, the two examples above would be answered by the same DNS server, as the path (
/branch/...
) doesn't matter for DNS resolution. Helix, however, consider the full path, which makes implementation a lot easier.Under the hood, our servers calculate the nearest
bank.com
server to the Player's location using GIS algorithms.Other examples:
wop.com/local
resolves to nearest WOP station, whilewop.com
resolves to global WOP database.new-york.us
orsao-paulo.br
resolves to the relevant city WHOIS (with information about Police Dept, News, City Hall, Chamber of Commerce etc).Custom domain names
We'll have domain name support, so players can register their own domain.
myclan.com
orusername.com
. All player- and clan-powered DNS/domains are Unicast.But... not now. We'll consider implementing custom domain names only after the game has been marked as Stable/1.0 (2018+).
Reverse DNS & browser behavior
We'll have an in-game system similar to reverse DNS (rDNS). It's mostly used on Browsers.
When player accesses an IP in the browser, if there is a reverse DNS, the relevant Unicast domain will be showed alongside the IP. It's informative, so the player knows there's an easier way to access this site.
When browsing a website with its domain, the browser will always show the corresponding IP as well.
Logs
At least initially, logs will only store IP addresses. In the future, storing both IP and domain, like
a.b.c.d (bank.com/branch/fr/paris-1)
, seems a nice improvement.Protocol
In real life, we use the HTTP(S) protocol to browse the Web. For HE2, I'd like to have in-game websites using a fake protocol like
he2(s)://
orhex(s)://
, for two reasons:The text was updated successfully, but these errors were encountered: