О сСтСвой ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΈΠ³Ρ€Π°Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

О сСтСвой ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΈΠ³Ρ€Π°Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
ПослСдниС Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ я Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ сСтСвым Π΄Π²ΠΈΠΆΠΊΠΎΠΌ для своСй ΠΈΠ³Ρ€Ρ‹. Π”ΠΎ этого я Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π» ΠΎ сСтСвых тСхнологиях Π² ΠΈΠ³Ρ€Π°Ρ…, поэтому ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» мноТСство статСй ΠΈ ΠΏΡ€ΠΎΠ²Ρ‘Π» мноТСство экспСримСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡΠ½ΠΈΡ‚ΡŒ всС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный сСтСвой Π΄Π²ΠΈΠΆΠΎΠΊ.

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

Π’ Ρ†Π΅Π»ΠΎΠΌ сущСствуСт Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ° сСтСвых Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€: peer-to-peer ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная. Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ peer-to-peer (p2p) Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ², Π° Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ³Ρ€ΠΎΠΊΠ°ΠΌΠΈ ΠΈ сСрвСром.

Π₯отя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° peer-to-peer ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ…, стандартом являСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная: ΠΎΠ½Π° ΠΏΡ€ΠΎΡ‰Π΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ°Π½Π°Π» мСньшСй ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ читСрства. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² этом руководствС ΠΌΡ‹ сосрСдоточимся Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅.

Π’ частности, нас большС всСго ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π°Ρ€Π½Ρ‹Π΅ сСрвСры: Π² Ρ‚Π°ΠΊΠΈΡ… систСмах сСрвСр всСгда ΠΏΡ€Π°Π². НапримСр, Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π΄ΡƒΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ находится Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… (10, 5), Π° сСрвСр Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π² (5, 3), Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свою ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ сСрвСр, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ИспользованиС Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π°Ρ€Π½Ρ‹Ρ… сСрвСров ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ распознаваниС Ρ‡ΠΈΡ‚Π΅Ρ€ΠΎΠ².

Π’ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… сСтСвых систСмах Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  • Вранспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»: ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСром.
  • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» прилоТСния: Ρ‡Ρ‚ΠΎ пСрСдаётся ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² сСрвСру ΠΈ ΠΎΡ‚ сСрвСра ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.
  • Π›ΠΎΠ³ΠΈΠΊΠ° прилоТСния: ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обновлСния состояния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ сСрвСра.

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части ΠΈ связанныС с Π½ΠΈΠΌΠΈ трудности.

Вранспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для транспортировки Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Для этого сущСствуСт Π΄Π²Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°: TCP ΠΈ UDP. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ собствСнный транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ TCP ΠΈ UDP

И TCP, ΠΈ UDP основаны Π½Π° IP. IP позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ источника ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ, Π½ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ добСрётся Π΄ΠΎ Π½Π΅Π³ΠΎ хотя Π±Ρ‹ Ρ€Π°Π· ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ MTU.

UDP являСтся всСго лишь Ρ‚ΠΎΠ½ΠΊΠΈΠΌ слоСм ΠΏΠΎΠ²Π΅Ρ€Ρ… IP. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ ограничСния. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ, TCP ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ мноТСством особСнностСй. Он обСспСчиваСт Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ΅ упорядочСнноС соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΡƒΠ·Π»Π°ΠΌΠΈ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° ошибки. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, TCP ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ мноТСствС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² HTTP, FTP ΠΈ SMTP. Но всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свою Ρ†Π΅Π½Ρƒ: Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ TCP. Когда ΡƒΠ·Π΅Π»-ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΡƒΠ·Π»Ρƒ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ, ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ (ACK). Если спустя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ врСмя ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ утСряно, ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ), Ρ‚ΠΎ отправляСт ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, TCP Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС, поэтому ΠΏΠΎΠΊΠ° утСрянный ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΡƒΠ·Π»ΠΎΠΌ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ.

Но ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Π²Π΅Ρ€Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ³Ρ€Π°Ρ… ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°, особСнно Π² Ρ‚Π°ΠΊΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΆΠ°Π½Ρ€Π°Ρ…, ΠΊΠ°ΠΊ FPS. ИмСнно поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ UDP с собствСнным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ.

БобствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС UDP ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивнСС TCP ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. НапримСр, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΊΠ°ΠΊ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” ΠΊΠ°ΠΊ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚, добрался Π»ΠΈ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ получатСля. Или ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ потСрянный Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ замСдлял ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ для Π²Π²ΠΎΠ΄Π° ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ для сообщСний Ρ‡Π°Ρ‚Π°. Если сообщСниС Ρ‡Π°Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ являСтся срочными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, потСряно, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ срабатываниС Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π΅ΠΎΡ‚Π»ΠΎΠΆΠ½Ρ‹ΠΌ. Или ΠΆΠ΅ собствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² TCP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивным Π² условиях Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€.

Π˜Ρ‚Π°ΠΊ, Ссли TCP Ρ‚Π°ΠΊΠΎΠΉ отстойный, Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свой транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС UDP?

Всё Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС. Π”Π°ΠΆΠ΅ хотя TCP ΠΏΠΎΡ‡Ρ‚ΠΈ субоптималСн для ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… сСтСвых систСм, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² вашСй ΠΈΠ³Ρ€Π΅ ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ вашС Π΄Ρ€Π°Π³ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ врСмя. НапримСр, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для пошаговой ΠΈΠ³Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ³Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сСтях LAN, Π³Π΄Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ утСря ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС, Ρ‡Π΅ΠΌ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ…, Π² Ρ‚ΠΎΠΌ числС World of Warcraft, Minecraft ΠΈ Terraria, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ TCP. Однако Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ FPS ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ собствСнныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π½Π° основС UDP, поэтому Π½ΠΈΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TCP, Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ НСйгла, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ UDP ΠΈ TCP Π² контСкстС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ³Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π“Π»Π΅Π½Π½Π° Π€ΠΈΠ΄Π»Π΅Ρ€Π° UDP vs. TCP.

БобствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ? Π’Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, вСдь Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ написал ΠΎΠ± этом Π΄Π²Π΅ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’ Π½ΠΈΡ… Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ мноТСство ΡƒΠΌΠ½Ρ‹Ρ… мыслСй.

ΠŸΠ΅Ρ€Π²Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ, Networking for Game Programmers 2008 Π³ΠΎΠ΄Π°, ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ вторая, Building A Game Network Protocol 2016 Π³ΠΎΠ΄Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π±ΠΎΠ»Π΅Π΅ старой.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ β€” большой сторонник использования собствСнного ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π° основС UDP. И послС прочтСния Π΅Π³ΠΎ статСй Π²Ρ‹ навСрняка ΠΏΠ΅Ρ€Π΅ΠΉΠΌΡ‘Ρ‚Π΅ Ρƒ Π½Π΅Π³ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ TCP ΠΈΠΌΠ΅Π΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Π°Ρ… ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ нСдостатки, ΠΈ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Но Ссли Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с сСтями, Ρ‚ΠΎ сдСлайтС сСбС ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ TCP ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнного транспортного ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивноС, Ρ‡Π΅ΠΌ TCP, Π½ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ собствСнного ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ мноТСство подробностСй, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСтСвой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Π˜Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ:

  • yojimbo Π“Π»Π΅Π½Π½Π° Π€ΠΈΠ΄Π»Π΅Ρ€Π°
  • RakNet, которая большС Π½Π΅ поддСрТиваСтся, Π½ΠΎ Π΅Ρ‘ Ρ„ΠΎΡ€ΠΊ SLikeNet ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π΅Ρ‰Ρ‘ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½.
  • ENet β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, созданная для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ FPS Cube
  • GameNetworkingSockets ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Valve

Π― Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡ… всС, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π°ΡŽ ENet, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° проста Π² использовании ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ понятная докумСнтация ΠΈ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Вранспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»: Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³: сущСствуСт Π΄Π²Π° основных транспортных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°: TCP ΠΈ UDP. TCP ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ мноТСством ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… особСнностСй: Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ, сохранСниС порядка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок. Π£ UDP всСго этого Π½Π΅Ρ‚, Π·Π°Ρ‚ΠΎ TCP ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ, нСдопустимыми для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€. Π’ΠΎ Π΅ΡΡ‚ΡŒ для обСспСчСния Π½ΠΈΠ·ΠΊΠΈΡ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС UDP ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° UDP ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€.

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ TCP, UDP ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΡ‚ потрСбностСй ΠΈΠ³Ρ€Ρ‹: Π½ΡƒΠΆΠ½Ρ‹ Π»ΠΈ Π΅ΠΉ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ? Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° прилоТСния: Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ Π΅ΠΌΡƒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»? Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» прилоТСния, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». НаконСц, Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сСтСвого Π΄Π²ΠΈΠΆΠΊΠ°.

Π£ мСня Π΅ΡΡ‚ΡŒ Π΄Π²Π° совСта:

  • Максимально абстрагируйтС транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½Π΅ пСрСписывая вСсь ΠΊΠΎΠ΄.
  • НС Π·Π°Π½ΠΈΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Если Π²Ρ‹ Π½Π΅ спСциалист ΠΏΠΎ сСтям ΠΈ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ Π²Π°ΠΌ собствСнный транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° основС UDP, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с TCP ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² транспортном ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ настало врСмя ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнный транспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ этой части Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Introduction to Multiplayer Game Programming Π‘Ρ€Π°ΠΉΠ°Π½Π° Π₯ΡƒΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ рассмотрСно мноТСство обсуТдаСмых здСсь Ρ‚Π΅ΠΌ.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» прилоТСния

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСром, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ схСма Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ сСрвСру Π²Π²ΠΎΠ΄ ΠΈΠ»ΠΈ дСйствия, Π° сСрвСр отправляСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС.

Π‘Π΅Ρ€Π²Π΅Ρ€ отправляСт Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅, Π° ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ состояниС с сущностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся рядом с ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ. Он Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΠΎ Ρ‚Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΠ»Π½ΠΎΠ΅ состояниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слишком большим для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ с высокой частотой. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² основном ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π°ΡƒΠ΄ΠΈΠΎΠ΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ бОльшая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ симулируСтся Π½Π° сСрвСрС ΠΈΠ³Ρ€Ρ‹. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ… ΠΈΠ³Ρ€ΠΎΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, вСдь Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΡ„Ρ„ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΡƒΠ΄Π° Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΡƒΠ±ΠΈΡ‚ΡŒ.

БСриализация

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ (Π²Π²ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС), Π² подходящий для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π­Ρ‚ΠΎΡ‚ процСсс называСтся сСриализациСй.

Π’ Π³ΠΎΠ»ΠΎΠ²Ρƒ сразу ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΡ‹ΡΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JSON ΠΈΠ»ΠΈ XML. Но это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСэффСктивно ΠΈ Π²ΠΏΡƒΡΡ‚ΡƒΡŽ Π·Π°ΠΉΠΌΡ‘Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»Π°.

ВмСсто этого рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько Π±Π°ΠΉΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ порядка Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

Для сСриализации Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • FlatBuffers ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google
  • Cap’n Proto ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sandstorm
  • cereal Π¨Π΅ΠΉΠ½Π° Π“Ρ€Π°Π½Ρ‚Π° ΠΈ Π ΡΠ½Π΄ΠΎΠ»ΡŒΡ„Π° Вурхиса

Волько ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° создаёт ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ ΠΈ заботится ΠΎ порядкС Π±Π°ΠΉΡ‚ΠΎΠ².

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация, ΠΎΠ½Π° Π½Π΅ особо слоТна, особСнно Ссли Π² ΠΊΠΎΠ΄Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ написал ΠΎ сСриализации Π΄Π²Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ: Reading and Writing Packets ΠΈ Serialization Strategies.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСром, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ°Π½Π°Π»Π°. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ½ΡΠΏΡˆΠΎΡ‚Π΅ большС Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ частоту обновлСния ΠΈΠ»ΠΈ просто ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ трСбования ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ.

Битовая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° β€” это битовая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°. Она Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании Ρ€ΠΎΠ²Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ количСства Π±ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для описания Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹. НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ пСрСчислСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ 16 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ вмСсто Ρ†Π΅Π»ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° (8 Π±ΠΈΡ‚) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСго 4 Π±ΠΈΡ‚Π°.

Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ Reading and Writing Packets.

Битовая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° особСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с дискрСтизациСй, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΌΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.

ДискрСтизация

ДискрСтизация β€” это Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° сТатия с потСрями, которая Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании для кодирования Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подмноТСства Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΡ‰Π΅ всСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.

Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ (ΠΎΠΏΡΡ‚ΡŒ!) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΡΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π² своСй ΡΡ‚Π°Ρ‚ΡŒΠ΅ Snapshot Compression.

Алгоритмы сТатия

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сТатия Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ.

Π’ΠΎΡ‚, Π½Π° ΠΌΠΎΠΉ взгляд, Ρ‚Ρ€ΠΈ самых интСрСсных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ:

  • ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° с Π·Π°Ρ€Π°Π½Π΅Π΅ вычислСнным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ быстро ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Оно использовалось для сТатия ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² сСтСвом Π΄Π²ΠΈΠΆΠΊΠ΅ Quake3.
  • zlib β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь, ΠΎΠ½ примСнялся Π²ΠΎ мноТСствС областСй примСнСния. Для обновлСния состояний ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. Но ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ с сСрвСра ассСты, Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ тСксты ΠΈΠ»ΠΈ Ρ€Π΅Π»ΡŒΠ΅Ρ„.
  • ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ сСрий β€” это, Π½Π°Π²Π΅Ρ€Π½ΠΎ, ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия, Π½ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ эффСктивСн для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ этап ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ zlib. Он особСнно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сТатия Ρ€Π΅Π»ΡŒΠ΅Ρ„Π°, состоящСго ΠΈΠ· Ρ‚Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ воксСлСй, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мноТСство сосСдних элСмСнтов повторяСтся.

Π”Π΅Π»ΡŒΡ‚Π°-сТатиС

ПослСдняя ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° сТатия β€” это Π΄Π΅Π»ΡŒΡ‚Π°-сТатиС. Она Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ состояниСм ΠΈ послСдним состояниСм, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° Π² сСтСвом Π΄Π²ΠΈΠΆΠΊΠ΅ Quake3. Π’ΠΎΡ‚ Π΄Π²Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΡ… способ Π΅Ρ‘ использования:

Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ использовал Π΅Ρ‘ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части своСй ΡΡ‚Π°Ρ‚ΡŒΠΈ Snapshot Compression.

Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСром. На это Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½:

  • ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ/ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: сообщСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π»ΠΈΡ†Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΌΡƒ сниффинг сСти, Π½Π΅ удастся ΠΈΡ… ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ.
  • аутСнтификация: Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡.
  • ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ читСрства: Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠ°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для читСрства, ΠΈΠΌ придётся Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ схСму ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ мСняСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ соСдинСнии).

Π― настойчиво Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ libsodium, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° особСнно проста ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹. Особо интСрСсСн Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» ΠΏΠΎ ΠΎΠ±ΠΌΠ΅Π½Ρƒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ соСдинСнии.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» прилоТСния: Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

На этом ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ прилоТСния. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ сТатиС ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π΅Π³ΠΎ использовании зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΈΠ³Ρ€Ρ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ пропускной способности ΠΊΠ°Π½Π°Π»Π°. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Π½Π΅Π³ΠΎ.

Π›ΠΎΠ³ΠΈΠΊΠ° прилоТСния

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

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρƒ двумя обновлСниями состояния ΠΌΠΈΡ€ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ статичСн. Если частота обновлСния состояний Π½ΠΈΠ·ΠΊΠ°, Ρ‚ΠΎ двиТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄Ρ‘Ρ€Π³Π°Π½Π½Ρ‹ΠΌΠΈ.

БущСствуСт нСсколько Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ влияниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ я ΠΎ Π½ΠΈΡ… расскаТу.

Π’Π΅Ρ…Π½ΠΈΠΊΠΈ сглаТивания Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ

ВсС описанныС Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСны Π² сСрии Fast-Paced Multiplayer Габриэля Π“Π°ΠΌΠ±Π΅Ρ‚Ρ‚Ρ‹. Π― настойчиво Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ статСй. Π’ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π΄Π΅ΠΌΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ эти Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π²ΠΎΠ΄Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½Π΅ оТидая ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ сСрвСра. Π­Ρ‚ΠΎ называСтся ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Однако ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ сСрвСра, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· Π±Ρ‹Π» Π²Π΅Ρ€Π½Ρ‹ΠΌ. Если это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ своё состояниС согласно ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ ΠΎΡ‚ сСрвСра, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сСрвСр Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π°Ρ€Π΅Π½. Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π»Π° использована Π² Quake. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Quake Engine code review ЀабьСна Π‘Π°Π½Π³Π»Π°Ρ€Π° [ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° Π₯Π°Π±Ρ€Π΅].

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π±ΠΎΡ€ Ρ‚Π΅Ρ…Π½ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сглаТивания двиТСния Π΄Ρ€ΡƒΠ³ΠΈΡ… сущностСй ΠΌΠ΅ΠΆΠ΄Ρƒ двумя обновлСниями состояния. БущСствуСт Π΄Π²Π° способа Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ: интСрполяция ΠΈ экстраполяция. Π’ случаС интСрполяции бСрутся Π΄Π²Π° послСдних состояния ΠΈ показываСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π•Ρ‘ нСдостаток Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ долю Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ всСгда Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходило Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. Экстраполяция Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ сСйчас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сущности Π½Π° основании послСднСго состояния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π•Ρ‘ нСдостаток Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ мСняСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ большая ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΎΠΌ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ.

ПослСдняя, самая продвинутая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, полСзная Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² FPS β€” это компСнсация Π»Π°Π³Π°. ΠŸΡ€ΠΈ использовании компСнсации Π»Π°Π³Π° сСрвСр ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ стрСляСт Π² Ρ†Π΅Π»ΡŒ. НапримСр, Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Ρ…Π΅Π΄ΡˆΠΎΡ‚ Π½Π° своём экранС, Π½ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΅Π³ΠΎ Ρ†Π΅Π»ΡŒ ΠΈΠ·-Π·Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ нСчСстно ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ Π² ΠΏΡ€Π°Π²Π΅ Π½Π° убийство ΠΈΠ·-Π·Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСрвСр выполняСт ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Π·Π°Π΄, Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΎΠΊ выстрСлил, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π» ΠΈΠ³Ρ€ΠΎΠΊ Π½Π° своём экранС, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ коллизию ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅Π³ΠΎ выстрСлом ΠΈ Ρ†Π΅Π»ΡŒΡŽ.

Π“Π»Π΅Π½Π½ Π€ΠΈΠ΄Π»Π΅Ρ€ (ΠΊΠ°ΠΊ всСгда!) написал Π² 2004 Π³ΠΎΠ΄Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Network Physics (2004), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π»ΠΎΠΆΠΈΠ» Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ синхронизации симуляции Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π’ 2014 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ написал Π½ΠΎΠ²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ статСй Networking Physics, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ описал Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ для синхронизации симуляции Ρ„ΠΈΠ·ΠΈΠΊΠΈ.

Π’Π°ΠΊΠΆΠ΅ Π² wiki ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Valve Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Source Multiplayer Networking ΠΈ Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рассматриваСтся компСнсация Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ читСрства

БущСствуСт Π΄Π²Π΅ основныС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ прСдотвращСния читСрства.

ΠŸΠ΅Ρ€Π²Π°Ρ: услоТнСниС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ‡ΠΈΡ‚Π΅Ρ€Π°ΠΌΠΈ врСдоносных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Как сказано Π²Ρ‹ΡˆΠ΅, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ способом Π΅Ρ‘ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Вторая: Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π°Ρ€Π½Ρ‹ΠΉ сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹/Π²Π²ΠΎΠ΄/дСйствия. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ возмоТности ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС Π½Π° сСрвСрС, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π²Π²ΠΎΠ΄Π°. Π’ΠΎΠ³Π΄Π° сСрвСр ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ.

Π›ΠΎΠ³ΠΈΠΊΠ° прилоТСния: Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ способ симуляции Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… частот обновлСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ своСй ΠΈΠ³Ρ€Ρ‹ Π² ΠΏΠ»ΠΎΡ…ΠΈΡ… условиях, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π­Ρ‚ΠΎ сильно упростит Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ сглаТивания Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ рСсурсы

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рСсурсы, посвящённыС сСтСвым модСлям, Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь:

  • Π‘Π»ΠΎΠ³ Π“Π»Π΅Π½Π½Π° Π€ΠΈΠ΄Π»Π΅Ρ€Π° β€” стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ вСсь Π΅Π³ΠΎ Π±Π»ΠΎΠ³, Π² Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ мноТСство ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… статСй. Π—Π΄Π΅ΡΡŒ собраны всС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ сСтСвым тСхнологиям.
  • Awesome Game Networking Π°Π²Ρ‚ΠΎΡ€Π° M. Fatih MAR β€” это ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список статСй ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ сСтСвым Π΄Π²ΠΈΠΆΠΊΠ°ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€.
  • Π’ wiki сабрСддита r/gamedev Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ссылок.

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