Overworld

Main Page:

Cursed Terrain

Electrified Environment Reaction

By: Greyhound#7836 Added: 06/25/2021 Disscussion

Theory: Genshin's overworld works under a different set of reaction rules than the players, additionally supported by the entry Overworld Entities Have Levels, one of those different rules of reactions is Electrified water, when applying electro to water, it does not produce electro-charged, instead it infuses the water with electro for a few seconds, which does not apply electro, does not spread, and is not affected by 4TF set bonus, this electrified water can damage both the player and enemies. Water additionally is seen as friend to both player and enemy, which questions the nature of this Electrified reaction even further.

Evidence: Electrified water evidence, including 4TF attempts, enemy taking damage, as well as water never being a trigger to any reaction, only aura, as it's friendly to both parties: Video

Significance: There might be more reactions unknown to the player coded into the game's files for various reason, potentially to be used in the future or simply scrapped ideas that have not been remove

Electrified Water Properties

By: RazorClaws#4343 Added: 06/27/2021 Discussion

Finding: The duration of the environmental elemental reaction Electrified Water has varying duration based on the gauge strength of electro applied. There are approximately 2 seconds between each tick. IA of electro lasts for 3 ticks, 2B lasts for 5 ticks, and 4C lasts for 10 ticks. The damage dealt by Electrified water is affected by Electro Resistance. For example, a character with 15% Electro Resistance will take 85% of the Electrified Water damage.

Evidence: Video contains Fischl and Lisa getting 3 ticks after applying 1A electro with charge attacks. Razor hold E and Beidou E get 5 ticks, and Beidou Q initial proc gets 10 ticks. The video also shows damage being reduced according to electro resistance obtained by the Protective Canopy Elemental Resonance. Finally, there is also footage of the monolith taking 248 damage from Electrified Water. The nearby slime (10% electro res) takes 223 damage from the same tick. Each tick reduces the monolith's health by about 1%. The monolith on Floor 2 of the Spiral Abyss will take damage from Electrified Water. Using Electrified Water, the monolith is found to have 0% electro resistance and approximately 24,800 HP: Video

Significance: Learning more about how environmental reactions are programmed/calculated. Also, don't bring electro units if you're trying to get the achievement for Floor 2-2 of the Spiral Abyss.

Electro Crystal Range

By: Greyhound#7836 Added: 06/21/2021 Disscussion

Finding: Electro crystals' pulse range works in a rectangle range, with the crystal being not centered, but rather between the center and the side

Evidence: https://www.youtube.com/watch?v=f8QfbYvuR6Q

Significance: electro crystals work in a similar way to cryo&pyro stamen flowers, for a better understanding of the overworld

Invisible Water Layer

By: Greyhound#7836 Added: 06/23/2021 Discussion

Theory: Genshin's water is coded in a way where the visual water and actual layer are separate, thus there is an invisible field of water that does not apply wet in random places of the world, but can be infused

Evidence: 1. Invisible water being infused by Anemo MC: Video Invisible water being infused by Sucrose: Video credits to @ishnu 2. Invisible water infused by electro: Video 3. Water hitbox & reactions from UNDER the water, UNDER the ocean: Video

Significance: Understanding the cursed overworld of Teyvat

Overworld Entities Have Levels

By: Greyhound#7836, mol#3280, deaf#0246 Added: 06/23/2021 Updated: 07/08/2021 Discussion Discussion

Finding: Overworld has levels for every "body", including water and grass and sand, trees, rocks, and other things that we can't prove in any other way other than the game's code which shows this, thus varying stats which is proven by their damage.

Evidence: Flower stamens deal damage based on a static, pre-determined level assigned to them. While levels for grass are dynamic and change under currently unknown circumstances: Video Water (using electrified): Video

Signifiance: Almost cracking the code for overworld. Now getting a bit closer.

Genshin has 2D Water

By: mol#3280, Greyhound#7836, IshnuKal#3728 Added: 6/23/2021 Discussion

Finding: Genshin's water exists only in horizontal, 2 dimensional sheets. Additionally, true water is not graphically represented at all times, while graphically represented water is only an approximation.

Evidence: Album 1 shows Jean standing in waterfall without getting wet. 2 shows venti climbing into waterfall below the 2d plane of "true water" without getting wet, but getting wet when he climbs into it at a slightly higher angle. When Venti then falls through the waterfall, he remains dry the entire time before impacting the second 2D plane of water. Greyhound's videos demonstrate that such planes appear to have water properties from below (Clip 3), and that its edges in some cases look to be perfectly square (Clip 4). Razor illustrates the trouble with this in Clip 5 by electrocharging the "true water" hidden below a dry floor and hurting himself with the resulting electrocharge AoE.

Significance: Electro is awful for the overworld because you can electrocharge water which resides in a flat sheet invisibly below the ground with AoE attacks. By doing this, you take continuous damage while standing on a dry surface. Also, you can stand in waterfalls without getting wet.

Environment Reactions Base

By: Greyhound#7836 Added: 6/23/2021 Discussion

Theory: Environment uses a different set of reaction bases than players, thanks to the EM buffs and my prior testing of electro crystal levels, we can conclude that although the value at release was the same as for the player, now it's different, with the player having a new one, and the electro crystals using the old, unchanged base.

Evidence: The video shows a level 84 electro-charged tick of the pre 1.6 base (1243) Video

Significance: We're getting ever so closer to figuring out the cursed world of teyvat's code

Zone levels: Mondstadt

By: deaf#0246 Added 08/26/2021 Discussion

Finding: The overworld in Genshin is split into multiple zones which can be distinguished by how much damage overworld reactions deal.

Evidence: Zones A lot of painful testing was done via monitoring: enemy levels, Burning grass and Electrified, all of which can be found in the image above.

Significance: Fluff, and a deeper understanding of how the overworld is programmed with that, I consider this completed. I have nothing but regrets.

Bush Elemental Interaction

By: deaf#0246 Added: 09/06/2021 Disscussion

Theory: Elemental applications can be used to destroy and damage bushes, however not all elements are equal in this regard. Additionally, there are several other abilities such as Jean's E, the cast of Kaeya's burst, Albedo's burst, etc... which can be used to both damage and destroy bushes.

Evidence: Hydro: Video Cryo: Video Pyro: Video Anemo: Video Electro + Geo: Video

Burst knock back: Video

Significance: Optimizing your bush harvesting game.

4-piece set bonuses on environment reactions

By: Aluminum#5462 Added: 6/22/2021 Discussion

Bug: Sometimes set bonuses do not work properly if triggered on unconventional sources

Evidence: https://youtube.com/playlist?list=PLPByPR2TubV4zjXSKhIhhWEww2Oo7Tmwh

Significance: This explains some strange damage numbers when fighting enemies in the overworld

Location remembered between map tabs

By: Creonalia#2818 Added: 06/29/2021 Discussion

Theory: Genshin remembers your location and world state(such as bosses) in different map tabs separately.

Evidence: Anemo hypostasis and other world bosses normally respawn after 3 minutes and teleporting away&back (as shown at the end), but doesn't respawn after going to the Archipelago, additionally teapot shows that it remembers your ogriginal location in Teyvat upon leaving: Video

Significance: It'll be relevant whenever more overworld mechanics are added which refresh when tping in/out or if we get more map tabs.

Coordinates

Coordinates translation methods

By: Mcpie#8672 Added: 07/21/2021 Discussion

Theory: Coordinates translation methods from in-game coordinates into official teyvat map and vice versa. Official Teyvat Interactive Map

Translation snippet: If you open feedback url and paste the snippet below into the console, it will give you your current coordinates as you would see them on center parameter url in interactive map.

coords = JSON.parse(decodeURIComponent((new URLSearchParams(window.location.search)).get('ext'))).loc;
f1 = ((x, y, z) => [-x + 2329.9357585906982, -z - 749.9086303710938]);
f1(coords.x, coords.y, coords.z);

Here is the reversal snippet, which assumes that you're on the interactive map and you want to get the coordinates in game of your current visible center:

coords = String(window.location).split('&').find(e => e.match(/^center=(.*)$/)).split('=')[1].split(',').map(e => +e);
f2 = ((x, y) => [-x + 2329.9357585906982, 200, -y - 749.9086303710938]);
f2(...coords);

NOTE: (calculations were done in patch 1.6)

Evidence: Official map url (query parameters) contain two variables: center and zoom. zoom does not matter at all in calculations because the translation function applies a vector, therefore there is no scaling and everything is 1-1 with a manipulated OX and OY axises directions.

IMPORTANT: The format from center, which is center=x,y is reversed in the database, so if you were to look into requests and something seems off - that's because each coordinate is stored in the system with attributes x_pos and y_pos. If we had to translate it directly into the url, it would be center=${y_pos},${x_pos}. From now on, I am assuming a format center=x,y is a correct one, because it's easier to manipulate for common folks.

Method used to get translation vector: 1. Find (0,0) in game - use feedback url and go north/east/west/south and compare it against previous coordinates. 2. Once (0,0) is found, create a new pin here. 3. Go to Official Teyvat Map and synchronize your in-game pins. You might need to wait few minutes/hours before it's properly synced - try refreshing the page. 4. While still on the page, open the console and start tracking network requests. You're looking for https://api-os-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/spot/get_map_spots_by_kinds 5. Toggle visible pins from the same category as the one you placed in game. Request should respond with a list of pins. Each pin has x_pos and y_pos attribute. Example pin: { x_pos: 585.788330078125, y_pos: -362.876220703125 } However, as stated above - this is reversed in center parameter in the url for unknown to me reason. Keep that in mind. 6. If you managed to find the pin you created, it should have values { x_pos: 749.9086303710938), y_pos: 2329.9357585906982 } - this represents the translation vector.

Images: Map center pin: https://i.imgur.com/D43fqoJ.jpg Screenshot from this pin: https://i.imgur.com/ym4TOvB.png

Method used to figure out directions: 1. Note coordinates 2. Go strictly east and note coordinates again. Only one of them should change. 3. Go strictly north this time and note coordinates again. Only one of them should change compared to the ones from step 2. 4. Perform the same action but for interactive map. Now play around with coordinates and decide whether you need to multiply scalar by (-1) or not in translation function. 5. In our case, in-game -> interactive map requires (-1) on both scalars. Image representing coordinate axises (assumes center=x,y format): https://i.imgur.com/rEy06Mq.png

Method used to get in-game -> interactive map scale: 1. Place 2 pins rather far away from each other (in order to reduce the error). 2. Go to first pin -> feedback url and extract the coordinates. 3. Repeat for second pin. 4. Now do the same, but by extracting direct coordinates from network tracking on interactive map. The differences on respective axises should be the same. Remember that coordinates from the database are reversed. Now that we figured out the translation vector, scale and direction of target, we can create a translation from in-game coordinate system to interactive map coordinates system.

If you open feedback url and paste this snippet into the console, it will give you your current coordinates as you would see them on center parameter in interactive map.

coords = JSON.parse(decodeURIComponent((new URLSearchParams(window.location.search)).get('ext'))).loc;
f1 = ((x, y, z) => [-x + 2329.9357585906982, -z - 749.9086303710938]);
f1(coords.x, coords.y, coords.z);

Since 1: R^3 -> R^2 then one variable (altitude) is completely lost, hence the reversal is impossible with altitude variable restored.

Here is the reversal snippet, which assumes that you're on the interactive map and you want to get the coordinates in game of your current visible center:

coords = String(window.location).split('&').find(e => e.match(/^center=(.*)$/)).split('=')[1].split(',').map(e => +e);
f2 = ((x, y) => [-x + 2329.9357585906982, 200, -y - 749.9086303710938]);
f2(...coords);

As a confirmation, you can run this snippet on any coordinate you would like.

coords = [100, 200, 300]
f1 = ((x, y, z) => [-x + 2329.9357585906982, -z - 749.9086303710938]);
f2 = ((x, y) => [-x + 2329.9357585906982, 200, -y - 749.9086303710938]);
result = f2(...f1(...coords))

due to IEEE 754, the result will be off at epsilon level.

Significance: Easier navigation at finding in-game and official teyvat map coordinates.

Coordinates Units Descriptions

By: Mcpie#8672 Added: 08/09/2021 Discussion

Finding: In-game (x,y,z) and Official Teyvat Map (x,y) coordinates system description: 1 = 1m - visible for example when you're navigating towards commission. 1.68 = 1px - at max zoom out and 1920x1080 resolution. 0.42 = 1px - at max zoom in and 1920x1080 resolution. Official map

Evidence: 1. 1 unit represents 1 meter in-game Three coordinates, extracted through feedback url.

alt text

Calculations:

1: Object { x: 608.6038208007812, y: 228.3050537109375, z: 1754.6199951171875 }, distance: 3172m
2: Object { x: 2189.55419921875, y: 207.5247802734375, z: -1075.6280517578125 }, distance: 84m
3: Object { x: 2040.2203369140625, y: 215.52943420410156, z: -1077.7127685546875 }, distance: 83m

Let's try to find (x,y,z) meeting the criteria.

((x-608.6038208007812)^2 + (y-228.3050537109375)^2 + (z-1754.6199951171875)^2= 3172^2) and
((x-2189.55419921875)^2 + (y-207.5247802734375)^2 + (z+1075.6280517578125)^2= 84^2) and
((x-2040.2203369140625)^2 + (y-215.52943420410156)^2 + (z+1077.7127685546875)^2= 83^2)

After solving, Noelle is at around { x: 2113, y: 210.71, z: -1037.51 } Distance between 1st coordinate and Noelle: ((608.6038208007812 - 2113)**2 + (228.3050537109375 - 210.71)**2 + (1754.6199951171875 - (-1037.51))**2)**(1/2) = 3171.6726438170454 Due to possible error in displaying meters in-game (rounding up), this seems accurate.

Let's compare the real coordinates. We're taking first coordinate with distance of 3172m Noelle estimated coordinates from in-game (hard to get without ~1m error): { x: 2113.30712890625, y: 206.05450439453125, z: -1038.918212890625 }

Coordinates difference:

[608.6038208007812 - 2113.30712890625, 228.3050537109375 - 206.05450439453125, 1754.6199951171875 - (-1038.918212890625)]
[ -1504.7033081054688, 22.25054931640625, 2793.5382080078125 ]

After measuring the vector length:

(1504.7033081054688**2 + 22.25054931640625**2 + 2793.5382080078125**2)**(1/2) = 3173.0872745589463

So our own calculations yielded 3172m, while estimated real distance was 3173m. Therefore, 1 unit in-game represents 1 meter in game.

  1. 1px represents 1.68 units at max zoom out and 1920x1080 resolution.

    Since we know that translation from in-game coordinates to interactive map system does not use scaling, we can use interactive map coordinates system.

    We assume format center=x,y and we're using interactive map system. Remember that error of <30 is possible for each coordinate.

alt text
pos1 = (-580, 877)
pos2 = (256, -713)
|pos1_x - pos2_x| = |-580 - 256| = 836
|pos1_y - pos2_y| = | 877 - (-713)| = 1590

Since we know that x represents vertical axis and y is horizontal axis, the difference is 1590 units in width and 836 units in height.

I'm taking a picture from pos1 to pos2 at max zoom out using 1920x1080 resolution on PC. width: 937, height: 498 In order to verify that ratio is saved, we'll compare coord ratio vs image size ratio.

coord_ratio = 1590.0 / 836.0
> 1.9019138755980862
image_ratio = 937.0 / 498.0
> 1.8815261044176708

ratio is within acceptable error, let's compare the scale by dividing coordinates both width and height difference by image width and height

1590.0 / 937.0
> 1.696905016008538
836.0 / 498
> 1.678714859437751

So this would mean that 1 px is equal to around ~1.68 in-game units assuming 1920x1080 and max zoom out.

1504px in height and 2792px in width.

However, I'm playing on 1920x1080 and I can clearly see it on the screen, so the theory that 1px = 1m might hold true, but not for all resolutions or it might be dependant on zoom level.

  1. 1px represents 0.42 units at max zoom in and 1920x1080 resolution.

    How much is 1 pixel equal to at 1080p and max zoom in?

    Same process as with max zoom out.

alt text
pos1 = (-580, 877)
pos3 = (-363, 586)
|pos1_x - pos3_x| = |-580 - (-363)| = 217
|pos1_y - pos3_y| = | 877 - 586| = 291

That's 291 units in width and 217 units in height. Let's take a screenshot at max zoom in using 1920x1080 resolution. Dimensions are: width: 685 height: 512 Let's compare the ratios to be sure

coord_ratio = 291.0 / 217.0
> 1.3410138248847927
image_ratio = 685.0 / 512.0
> 1.337890625

ratio is within acceptable error, let's compare the scale by dividing coordinates both width and height difference by image width and height

291.0 / 685.0
> 0.4248175182481752
217.0 / 512.0
> 0.423828125

So this would mean that 1 px is equal to around ~0.424 in-game units assuming 1920x1080 and max zoom in.

Significance: Estimating distance between points is now easier due to known values in different systems.

Extracting coordinates while in game

By: Mcpie#8672 Added: 08/09/2021 Discussion

Theory: It's possible to extract your current coordinates through feedback url.

Evidence: Go to Paimon Menu -> Feedback. They're stored in the generated url. Under query value called ext.

ext=%7b%22loc%22%3a%7b%22x%22%3a713.8189697265625%2c%22y%22%3a120.84298706054688%2c%22z%22%3a275.4739074707031%7d%2c%22platform%22%3a%22WinST%22%7d

Running decodeURIComponent on this value will yield a valid JSON. See attached image on how to decode it in vanillaJS.

VanillaJS snippet that will extract this value in console:

JSON.parse(decodeURIComponent((new URLSearchParams(window.location.search)).get('ext'))).loc

The result for example case will look like this:

Object { x: 713.8189697265625, y: 120.84298706054688, z: 275.4739074707031 }

Significance: This provides an easy way to calculate the distance between two points in game.

Coordinates axises descriptions

By: Mcpie#8672 Added: 08/09/2021 Discussion

Theory: Description of each coordinate in in-game coordinate system and interactive teyvat map coordinates system. It's possible to find in-game coordinates through feedback url, or from center=x,y value from the url from official teyvat map. Map

In-game coordinates x - vertical axis y - altitude z - horizontal axis

Teyvat Interactive Map, assuming center=x,y format x - vertical axis y - horizontal axis

alt text

Evidence: Method used to figure out directions: 1. Note coordinates 2. Go strictly east and note coordinates again. Only one of them should change. 3. Go strictly north this time and note coordinates again. Only one of them should change compared to the ones from step 2. 4. Perform the same action but for interactive map. Now play around with coordinates and decide whether you need to multiply scalar by (-1) or not in translation function. 5. In our case, in-game -> interactive map requires (-1) on both scalars.

Significance: If someone is going to rely on in-game coordinates from feedback url, they might get lost thinking they're going in wrong direction while navigating through interactive map.

Coordinates change when idle

By: Mcpie#8672 Added: 08/09/2021 Discussion

Finding: Character coordinates change whenever game state is not frozen (unpaused single player).

Evidence: Steps to reproduce: 1. Extract coordinates 2. Go back to Genshin Impact 3. Unpause and pause the game (do not move) 4. Extract coordinates

The coordinates will be different.

In my case, ext query values were:

first="%7b%22loc%22%3a%7b%22x%22%3a713.8158569335938%2c%22y%22%3a120.84288787841797%2c%22z%22%3a275.4771728515625%7d%2c%22platform%22%3a%22WinST%22%7d"
second="%7b%22loc%22%3a%7b%22x%22%3a713.8189697265625%2c%22y%22%3a120.84298706054688%2c%22z%22%3a275.4739074707031%7d%2c%22platform%22%3a%22WinST%22%7d"

Running decodeURIComponent on both of them yields:

"{\"loc\":{\"x\":713.8158569335938,\"y\":120.84288787841797,\"z\":275.4771728515625},\"platform\":\"WinST\"}"
"{\"loc\":{\"x\":713.8189697265625,\"y\":120.84298706054688,\"z\":275.4739074707031},\"platform\":\"WinST\"}"

Which upon closer inspection, differ at 3rd decimal value in x and z axis. Lower difference on y means that y coordinate is responsible for height.

Significance: Fluff. This could also explain the fact that when you switch from child to adult male, your camera "target" goes up because the head is higher by ~0.4m.

Burning grass has standard ICD

By: Greyhound#7836 Added: 08/20/2021 Discussion

Theory: Burning grass has standard ICD - 3 hits/2.5 seconds

Evidence: Virgin running into a lake evidence by Greyhound#7836: Video

Chad perma wet evidence by Aluminum#5462: Video

Significance: Vault update.