Sunday, September 17, 2023

How Network Interface Metric Mess With Genshin Login System

TL;DR: If your Genshin Impact, for some reason, unable to save your login session across shutdowns or reboots, check the Interface Metric numbers across shutdowns/reboots in your network settings and make sure it stays same.

Remember when I have issues with Genshin Impact logging me out on system reboot or shutdown 2 years ago? Well now it happends again in the laptop I bought a year ago. This time however, I decided to diagnose it further.

Ok first of all, it's important to know what's changed before the issue occur. Since I know that it doesn't happen last week, it must be some sort of driver updates. From my previous experience, it has to do with network drivers. This means I can narrow it down to network driver updates. I remember Windows Update asked me to restart to install Wi-Fi driver. Gottem, it must be bad Wi-Fi drivers. Uninstalled it, restarted it, and now the game loads fine.

Network driver messing itself and watch me suffer as Genshin doesn't remember me again.
... except the next day, it doesn't. Could it be some nondeterminism with network order going on? Ok so I tried an experiment. Restarted the system, game loads fine. Okay good. Shutdown the laptop then start it again. Now the game doesn't remember me. Ok then shutdown again, nope. Restarted it, works. Shutdown it again bypassing "Fast Startup" (Protip: Press Shift while pressing "Shutdown), works. Shutdown with fast startup? nope.

From that experiment I can conclude that:

  1. Fresh start (from reboot or full shutdown) will make the game think I'm on current device, logging me in.
  2. Starting up from fast startup will make the game thinkthe network adapter has changed, logged me out.

Then, what else can we use to find out the exact issue? In Windows 11, there's "Hardware and connection properties". It lists all adapters excluding WSL/Hyper-V adapter but including Wi-Fi Direct adapters. Re-doing the experiment while watching this gives me some insights:

  1. On fresh start, the Ethernet is listed on topmost.
  2. On starting from fast startup, the Ethernet is listed on the bottom, not bottommost.

Well, okay that probably explains why. Genshin Impact "calculates" the key to load the session key based on the network order. So the next question is, how to change the order?

Googling "windows change network order" mentions changing "Interface Metric". There are 2 ways, with Powershell and with GUI. The powershell command is "Get-NetIPInterface", when run, shows as follows.

https://cdn.discordapp.com/attachments/922182394323292173/1152589110029070426/gambar.png
Top is the problematic output. Bottom is the correct output that Genshin recognize for my laptop.

Redoing the experiment again reveals that the "Ethernet" "InterfaceMetric" is set to 5 on fresh start (which it remembers my login). However on fast startup, it sets to 75. Just to confirm, it was set to 75. Entering the game, the game doesn't remember me. Ok set the "InterfaceMetric" of "Ethernet" IPv4 and IPv6 to 5 (see link above on how-to), and viola the game remembers me back.

This finally solves the mystery that I also had 2 years ago. It should be same issue where "InterfaceMetric" went non-deterministic across reboots/shutdowns. I was about to schedule my whole day to perform clean installation of the laptop but the mystery is solved once for all

Me looking her the first time be like: "Yup. I'm going to marry this girl!"
... until it logs me out again.



Thursday, January 19, 2023

Can I have 10ms Latency in Genshin Impact in Indonesia?

On the other day, my friend wonder if there will be an Indonesia ISP which allows him to play Genshin Impact with 10ms ping.

Well, sorry to disappoint, but that's impossible. No, it's not because our technology is advanced enough (actually it is), but it's not possible because there's hard limit related to the laws of physics: speed of light.

Why? First let's do some background. Genshin Impact is a single-player-oriented online game (weirdly). Since it's online, it has various servers which are Europe, America, Asia, Taiwan, and China (only for people who live in China). Focus on the Asia, the server is hosted in Tokyo, Japan. My friend and I live in Indonesia.

Now the reason why it's impossible because the distance between Indonesia and Japan is 4821.39 km (Wolfram says it's 4912 km, see below). The speed of light constant is 299792458 m/s. Doing the calculation tells me the minimum attainable latency by that distance is ~16.38ms. That means I need around 1 game frame at 60Hz monitor with VSync (or 1 game frame in Genshin Impact) to travel from Indonesia to Japan. Multiply it by 2 for the round-trip latency gives you ~32.76ms. By that alone, it's been concluded that getting 10ms ping is not possible. 

"But data transfer instantly"
No it's not. It still obey the laws of physics. That means in best case, your data transfer speed is limited by speed of light. Well, the best case. In fact, light travels slower in fiber optics, around 2/3 of it. Taking that into account, the minimum attainable latency is ~49.15ms. This can be worsen furthermore by additional latency introduced by your WiFi and/or router and the ISP on both ends. That means, 49.15ms is the data transfer speeds only, ignoring the router and ISP latency.

"Alright then, but I want exactly 10ms latency. I don't want to live in Japan though. Where should I live?"
For this, I assume the overhead latency of your router and ISP is ignored (a.k.a exactly 0ms). For 10ms round-trip latency, you need to live at 1998 km away from Tokyo, Japan. The closest would be South Korea, then Shanghai, China (but in this case you better go with their China client with China servers for minimum latency), then area around Sakhalin Oblast in Russia. If you want to take your router and ISP latency into account then you may want to live in Yuzhno-Sakhalinsk in Russia or South Korea. It's as closest to Japan without having to live in Japan.

Note that if you have copper wire running from Russia to Japan instead of fiber optic, it may be faster, but electromagnetic interference will assure ...

... you're gonna have a bad time

Also on cohost: https://cohost.org/AuahDark/post/866048-can-i-have-10ms-late