ΠœΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Factorio ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ΠΎΠΌ Π½Π° 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²

ΠœΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Factorio ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ΠΎΠΌ Π½Π° 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²
Π’ ΠΌΠ°Π΅ этого Π³ΠΎΠ΄Π° я участвовал Π² качСствС ΠΈΠ³Ρ€ΠΎΠΊΠ° Π² MMO-мСроприятии KatherineOfSky. Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° количСство ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² достигаСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ числа, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… «отваливаСтся». К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для вас (Π½ΠΎ Π½Π΅ для мСня), я Π±Ρ‹Π» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π΅Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π― воспринял это ΠΊΠ°ΠΊ Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΈ Π½Π°Ρ‡Π°Π» ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Бпустя Ρ‚Ρ€ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, тСстирования ΠΈ исправлСний ошибка Π½Π°ΠΊΠΎΠ½Π΅Ρ† устранСна, Π½ΠΎ это ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠΆ простым.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ³Ρ€ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… условиях ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сСтСй ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ спСцифичных состояниях ΠΈΠ³Ρ€Ρ‹ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²). И Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° удаётся воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΅Ρ‘ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вставка ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ останавливаСт ΠΈΠ³Ρ€Ρƒ, ΠΏΡƒΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ соСдинСния ΠΈΠ·-Π·Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ срока оТидания. Но благодаря упорности ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ инструмСнту ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ clumsy ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ происходит.

Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅: ΠΈΠ·-Π·Π° ошибки ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ симуляции состояния Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ½ΠΎΠ³Π΄Π° оказывался Π² ситуации, ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡƒ приходится Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сСтСвой ΠΏΠ°ΠΊΠ΅Ρ‚, состоящий ΠΈΠ· Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ дСйствий Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 400 ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… сущностСй (ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Β«ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌΒ»). ПослС этого сСрвСр Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС эти дСйствия Π²Π²ΠΎΠ΄Π°, Π½ΠΎ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Если Ρƒ тСбя 200 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², это быстро становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Канал ΠΊ сСрвСру быстро забиваСтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΡ‚Π΅Ρ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ каскаду ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠžΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ дСйствий Π²Π²ΠΎΠ΄Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ большС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΈ ΠΈΡ… Π»Π°Π²ΠΈΠ½Π° становится Π΅Ρ‰Ρ‘ сильнСС. Π£Π΄Π°Ρ‡Π»ΠΈΠ²Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ удаётся Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Β«ΠΎΡ‚Π²Π°Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡΒ».

ΠœΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Factorio ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ΠΎΠΌ Π½Π° 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° достаточно Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ, ΠΈ Ρƒ мСня ΡƒΡˆΠ»ΠΎ 2 Π½Π΅Π΄Π΅Π»ΠΈ Π½Π° Π΅Ρ‘ устранСниС. Она довольно тСхничСская, поэтому Π½ΠΈΠΆΠ΅ я объясню сочныС тСхничСскиС подробности. Но для Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с вСрсии 0.17.54, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ 4 июня, Π² условиях Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ стал Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, Π° сокрытиС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ β€” Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ Π³Π»ΡŽΡ‡Π½Ρ‹ΠΌ (мСньшС Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ тСлСпортирования). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» способ сокрытия Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π² бою ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ благодаря этому ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½Ρ‹ΠΌΠΈ.

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚ β€” тСхничСскиС подробности

Если ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎ, Ρ‚ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ Π² ΠΈΠ³Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ состояниС ΠΈΠ³Ρ€Ρ‹, получая ΠΈ отправляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π²ΠΎΠ΄ ΠΈΠ³Ρ€ΠΎΠΊΠ° (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «дСйствиями Π²Π²ΠΎΠ΄Π°Β», Input Actions). Основная Π·Π°Π΄Π°Ρ‡Π° сСрвСра β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Input Actions ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ дСйствия Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ‚Π°ΠΊΡ‚Π΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² постС FFF-149.

Π’Π°ΠΊ ΠΊΠ°ΠΊ сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, дСйствия ΠΈΠ³Ρ€ΠΎΠΊΠ° двиТутся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ: дСйствиС ΠΈΠ³Ρ€ΠΎΠΊΠ° -> ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ³Ρ€Ρ‹ -> ΡΠ΅Ρ‚ΡŒ -> сСрвСр -> ΡΠ΅Ρ‚ΡŒ -> ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ³Ρ€Ρ‹. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС ΠΈΠ³Ρ€ΠΎΠΊΠ° выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ ΠΏΡƒΡ‚ΡŒ Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎ сСти. Из-Π·Π° этого ΠΈΠ³Ρ€Π° Π±Ρ‹ казалась уТасно Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½ΠΎΠΉ, поэтому ΠΏΠΎΡ‡Ρ‚ΠΈ сразу ΠΆΠ΅ послС появлСния Π² ΠΈΠ³Ρ€Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€Π° Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сокрытия Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° дСйствий Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² ΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ сСрвСром.

ΠœΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Factorio ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ΠΎΠΌ Π½Π° 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²
Π’ Factorio Π΅ΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС Game State β€” это ΠΏΠΎΠ»Π½ΠΎΠ΅ состояниС ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΈΠ³Ρ€ΠΎΠΊΠ°, сущностСй ΠΈ всСго ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ. Оно Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ симулируСтся Π²ΠΎ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Π½Π° основании дСйствий, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ сСрвСра. Π˜Π³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС свящСнно, ΠΈ Ссли ΠΎΠ½ΠΎ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ сСрвСра ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ рассинхронизация.

ΠšΡ€ΠΎΠΌΠ΅ Game State Ρƒ нас Π΅ΡΡ‚ΡŒ состояниС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Latency State. Оно содСрТит нСбольшоС подмноТСство основного состояния. Latency State Π½Π΅ свящСнно ΠΈ просто прСдставляСт ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ состояниС ΠΈΠ³Ρ€Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π° основании Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ Input Actions.

Для этого ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ копию создаваСмых Input Actions Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

ΠœΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Factorio ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ΠΎΠΌ Π½Π° 200 ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ²
Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ процСсса Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  1. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Input Actions всСх ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² ΠΊ Game State Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ эти дСйствия Π²Π²ΠΎΠ΄Π° Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΎΡ‚ сСрвСра.
  2. УдаляСм ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ всС Input Actions, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ сСрвСра, ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ Game State.
  3. УдаляСм Latency State ΠΈ сбрасываСм Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ выглядСло Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Game State.
  4. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ всС дСйствия ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΊ Latency State.
  5. На основании Π΄Π°Π½Π½Ρ‹Ρ… Game State ΠΈ Latency State Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ ΠΈΠ³Ρ€Ρƒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ.

Всё это повторяСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ‚Π°ΠΊΡ‚Π΅.

Блишком слоТно? НС Ρ€Π°ΡΡΠ»Π°Π±Π»ΡΠΉΡ‚Π΅ΡΡŒ, это Π΅Ρ‰Ρ‘ Π½Π΅ всё. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-соСдинСний, ΠΌΡ‹ создали Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°:

  • ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΡ‚Ρ‹: ΠΊΠΎΠ³Π΄Π° сСрвСр Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Input Actions Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΠ³Ρ€Ρ‹, Ρ‚ΠΎ Ссли ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Input Actions ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·-Π·Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ), ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ, Π° сообщит этому ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ «я Π½Π΅ ΡƒΡ‡Ρ‘Π» Ρ‚Π²ΠΎΠΈ Input Actions, ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊΡ‚Β». Π’Π°ΠΊ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с соСдинСниСм (ΠΈΠ»ΠΈ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ) ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½Π΅ замСдлялось Ρƒ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Input Actions Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° просто ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ.
  • Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ: сСрвСр пытаСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ²Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ΠšΠ°ΠΆΠ΄Ρ‹Π΅ 5 сСкунд ΠΎΠ½ ΠΏΡ€ΠΈ нСобходимости обсуТдаСт с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ (Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Π»ΠΎ сСбя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ), ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС эти ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ довольно просты, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно (Ρ‡Ρ‚ΠΎ часто случаСтся ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с соСдинСниСм), Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠ΄Π° становится трудноуправляСмой ΠΈ с ΠΊΡƒΡ‡Π΅ΠΉ ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² Π΄Π΅Π»ΠΎ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ эти ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, сСрвСр ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ особоС Input Action ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ StopMovementInTheNextTick. Благодаря этому ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с соСдинСниСм пСрсонаТ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅ΠΆΠ°Ρ‚ΡŒ сам ΠΏΠΎ сСбС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ ΠΏΠΎΠ΅Π·Π΄).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ сущностСй. Один ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Input Action β€” это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния Π²Ρ‹Π±ΠΎΡ€Π° сущности. Оно сообщаСт всСм, Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°Π²Ρ‘Π» курсор ΠΌΡ‹ΡˆΠΈ. Как ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, это ΠΎΠ΄Π½ΠΎ ΠΈΠ· самых частых дСйствий Π²Π²ΠΎΠ΄Π°, отправляСмых ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, поэтому для экономии пропускной способности ΠΊΠ°Π½Π°Π»Π° ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС мСста. Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚Π°ΠΊ: ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности вмСсто сохранСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ…, высокоточных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ³Ρ€Π° сохраняСт Π½ΠΈΠ·ΠΊΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ смСщСниС ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ. Из-Π·Π° этого Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… трСбования: Input Actions Π½ΠΈΠΊΠΎΠ³Π΄Π° нСльзя ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… Π² Π²Π΅Ρ€Π½ΠΎΠΌ порядкС. Π­Ρ‚ΠΈ трСбования ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ΡΡ для Game State. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Π΄Π°Ρ‡Π° Latency state Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎΒ» для ΠΈΠ³Ρ€ΠΎΠΊΠ°, Π² состоянии Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ΡΡ. Latency State Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи, связанныС с пропуском Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’Ρ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΊ Ρ‡Π΅ΠΌΡƒ всё ΠΈΠ΄Ρ‘Ρ‚. НаконСц ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠšΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ дСйствиС измСнСния Π²Ρ‹Π±ΠΎΡ€Π°, Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Π±ΠΎΡ€Π° сущностСй полагаСтся Π½Π° Latency State, Π° это состояниС Π½Π΅ всСгда содСрТит Π²Π΅Ρ€Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚ гСнСрируСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  1. Π£ ΠΈΠ³Ρ€ΠΎΠΊΠ° появились ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с соСдинСниСм.
  2. Π’ Π΄Π΅Π»ΠΎ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ пропуска Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΈ рСгулирования Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.
  3. ΠžΡ‡Π΅Ρ€Π΅Π΄ состояния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ эти ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ порядкС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Latency State.
  4. Π£ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с соСдинСниСм ΠΈ ΠΎΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ³Π½Π°Ρ‚ΡŒ сСрвСр, симулируСт Π΄ΠΎ 400 Ρ‚Π°ΠΊΡ‚ΠΎΠ².
  5. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ‚Π°ΠΊΡ‚Π΅ гСнСрируСтся ΠΈ подготавливаСтся ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π° сСрвСр Π½ΠΎΠ²ΠΎΠ΅ дСйствиС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° сущности.
  6. ΠšΠ»ΠΈΠ΅Π½Ρ‚ отправляСт сСрвСру ΠΌΠ΅Π³Π°ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· 400 с лишним ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π° сущностСй (ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ дСйствиями: состояниС ΡΡ‚Ρ€Π΅Π»ΡŒΠ±Ρ‹, Ρ…ΠΎΠ΄ΡŒΠ±Ρ‹ ΠΈ Ρ‚.ΠΏ. Ρ‚ΠΎΠΆΠ΅ страдали ΠΎΡ‚ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹).
  7. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ 400 дСйствий Π²Π²ΠΎΠ΄Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ дСйствия Π²Π²ΠΎΠ΄Π°, ΠΎΠ½ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эти дСйствия ΠΈ отправляСт ΠΈΡ… ΠΏΠΎ сСти.

Π˜Ρ€ΠΎΠ½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для экономии пропускной способности ΠΊΠ°Π½Π°Π»Π°, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ создавал ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ сСтСвыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.

ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, исправив всС ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи обновлСния ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. Π₯ΠΎΡ‚ΡŒ это ΠΈ заняло довольно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ стоило Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всё ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° быстрыС Ρ…Π°ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com