{"id":369930,"date":"2024-05-21T04:14:19","date_gmt":"2024-05-21T04:14:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=369930"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=369930","title":{"rendered":"<span>\u0418\u0433\u0440\u0430\u0435\u043c \u0441 KAT Walk C2. (\u0447\u0430\u0441\u0442\u044c 1: \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u0433\u0440\u0430\u0435\u043c)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0434\u0443\u0440\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430: \u044f \u0438\u0433\u0440\u0430\u044e \u0432 \u0438\u0433\u0440\u044b. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043f\u043e\u043d\u044f\u0442\u0438\u0435 &#171;\u0438\u0433\u0440\u0430\u044e \u0432 \u0438\u0433\u0440\u044b&#187; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ia\/1l\/ee\/ia1leesfmrzd2uyr4_5ftknns1s.png\" width=\"618\" height=\"619\" data-src=\"https:\/\/habrastorage.org\/webt\/ia\/1l\/ee\/ia1leesfmrzd2uyr4_5ftknns1s.png\"\/><\/figure>\n<p>\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043a\u0430\u043a \u044f \u043e\u0431\u0437\u0430\u0432\u0435\u043b\u0441\u044f VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043e\u0442 <a href=\"https:\/\/kat-vr.com\" rel=\"noopener noreferrer nofollow\">KAT VR<\/a>.<\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u044f \u043f\u0440\u043e\u0448\u0435\u043b \u043d\u0430 \u043d\u0435\u0439 \u043e\u043a\u043e\u043b\u043e 30 \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b 40\u043a \u0448\u0430\u0433\u043e\u0432. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0440\u0451\u0442 \u0438 \u0441\u0438\u043b\u044c\u043d\u043e, \u0431\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435 \u0434\u0430, <strong>\u043d\u0430<\/strong> \u043d\u0435\u0439 \u044f \u0438\u0433\u0440\u0430\u043b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0447\u0435\u043c <strong>\u0441<\/strong> \u043d\u0435\u0439. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430<\/h2>\n<p>VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0443\u0434\u0430-\u0442\u043e \u0438\u0434\u0442\u0438. \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f &#171;VR locomotion&#187;, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 &#171;<a href=\"https:\/\/youtu.be\/toXUEYjj70o?si=biyDKu5Ywdb5vEH0\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 &#8212; \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043d\u0430 180 \u0432 \u0440\u0435\u0430\u043b\u0435 \u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043d\u0430 180 \u0432 \u0438\u0433\u0440\u0435<\/a>&#171;, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f <a href=\"https:\/\/www.cybershoes.com\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u043e\u0448\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u0431\u0435\u0433\u0430 \u043d\u0430 \u0441\u0442\u0443\u043b\u0435<\/a> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0435\u0441\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/youtu.be\/gwm3tHL30OQ?si=UclgNMhahwba6Oar\" rel=\"noopener noreferrer nofollow\">HoloTile<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/news\/788188\/\" rel=\"noopener noreferrer nofollow\">Disney<\/a>, \u043b\u0438\u0431\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/www.infinadeck.com\/\" rel=\"noopener noreferrer nofollow\">Mythic Quest<\/a> \u0438\u043b\u0438 \u0432 \u0444\u043e\u0440\u043c\u0435 <a href=\"https:\/\/freeaim.com\" rel=\"noopener noreferrer nofollow\">&#171;\u043c\u043e\u0442\u043e\u0442\u0430\u043f\u043e\u043a&#187; FreeAim<\/a>. \u0414\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0430\u0439\u043d\u043e\u0441\u0442\u044c, \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0433\u0434\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u043a \u0432 \u043c\u043e\u0442\u043e\u0440\u0430\u0445 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041c\u043e\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u0438 \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0440\u044b\u043d\u043e\u043a \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 <a href=\"https:\/\/www.kat-vr.com\/products\/kat-walk-c-2-core\" rel=\"noopener noreferrer nofollow\">KAT Walk C2 \/ C2Core<\/a> \u0438&#8230; \u0412\u0441\u0451. \u041e\u0447\u0435\u043d\u044c \u0441\u043a\u043e\u0440\u043e \u0435\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/omni.virtuix.com\/\" rel=\"noopener noreferrer nofollow\">Virtuix Omni One<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0435 \u0432\u044b\u0441\u043b\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432 \u0441\u0430\u043c\u044b\u043c \u0440\u0430\u043d\u043d\u0438\u043c \u0438\u043d\u0432\u0435\u0441\u0442\u043e\u0440\u0430\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043f\u043b\u044e\u0441\u0430\u0445 \u0438 \u043c\u0438\u043d\u0443\u0441\u0430\u0445 \u0438\u0445 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 KAT Walk C2 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<h2>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 KAT Walk C2 \/ C2Core<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ze\/sp\/if\/zespifpiaw6nkeixrujd5wg2g0s.jpeg\" alt=\"\u041c\u043e\u044f KAT Walk C2+ \u0432 \u0435\u0451 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043e\u0431\u0438\u0442\u0430\u043d\u0438\u044f\" title=\"\u041c\u043e\u044f KAT Walk C2+ \u0432 \u0435\u0451 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043e\u0431\u0438\u0442\u0430\u043d\u0438\u044f\" width=\"1536\" height=\"1781\" data-src=\"https:\/\/habrastorage.org\/webt\/ze\/sp\/if\/zespifpiaw6nkeixrujd5wg2g0s.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041c\u043e\u044f KAT Walk C2+ \u0432 \u0435\u0451 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043e\u0431\u0438\u0442\u0430\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439, \u0432\u044b \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u042d\u0442\u043e \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u0432\u0430\u044f \u0447\u0430\u0448\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0431\u0430\u0440\u0430\u0445\u0442\u0430\u0442\u044c\u0441\u044f. \u041a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u043d\u0430 \u043c\u043e\u0449\u043d\u043e\u043c \u0438 \u043a\u0440\u0435\u043f\u043a\u043e\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0448\u0438\u043f\u043d\u0438\u043a\u0435 \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u043d \u0441\u0442\u043e\u043b\u0431, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u044f\u0441\u043e\u043c. \u0421\u0442\u043e\u043b\u0431 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 360 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0433\u0440\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0432 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435. \u041f\u043e\u044f\u0441 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043d\u0430 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u043c \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0438, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u0442\u044c \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c. \u0423 \u043c\u043e\u0435\u0439, C2, \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0438 \u0441 \u043c\u043e\u0438\u043c \u0440\u043e\u0441\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u0431\u043e\u0440 &#8212; \u0438\u043b\u0438 \u043f\u0440\u044b\u0436\u043a\u0438 \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u043d\u0438\u0435. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u0438\u0433\u0440\u044b &#8212; \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0443\u0433\u043b\u044b :). \u0423 \u043c\u043e\u0434\u0435\u043b\u0438 C2Core \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0434 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u043e\u0441\u0442 \u0438\u0433\u0440\u043e\u043a\u0430. \u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 &#8212; \u043d\u0430 C2 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u043d\u0430 \u043f\u043e\u044f\u0441\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u0433\u0440 &#171;\u043f\u043e\u0434 \u0432\u043e\u0434\u043e\u0439&#187;) \u043d\u0430 C2Core \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0438\u0433\u0440, \u0433\u0434\u0435 \u043c\u043d\u0435 \u0431\u044b \u044d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e.<\/p>\n<p>\u041f\u043e\u044f\u0441 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435? \u0414\u0430\u043b\u044c\u0448\u0435 &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043e\u0442\u0438\u043d\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0435\u043d\u0441\u043e\u0440\u044b. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u0438\u043d\u0435\u0440\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b, \u0432 C2\/C2Core &#8212; \u044d\u0442\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043a\u0430\u043a \u0432 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u044b\u0448\u0430\u0445. \u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u0435\u043d\u0441\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u0441\u0442\u043e\u043b\u0431 \u043f\u043e\u0437\u0430\u0434\u0438 \u0438\u0433\u0440\u043e\u043a\u0430, \u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043b\u0430.<\/p>\n<p>\u0412\u0441\u0435 \u0442\u0440\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u0437\u0430\u0440\u044f\u0434\u043a\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0442\u0440\u0438 \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u044b\u0445 \u0445\u0432\u043e\u0441\u0442\u0430. \u041d\u0430 \u043f\u043e\u043b\u043d\u043e\u043c \u0437\u0430\u0440\u044f\u0434\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438\u0433\u0440\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e 6-7 \u0447\u0430\u0441\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430\u0447\u043d\u0435\u0442 \u0442\u043e\u0448\u043d\u0438\u0442\u044c \u043e\u0442 VR \u043a\u0443\u0434\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u0443, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u0440\u044f\u0434\u0438\u0442\u0441\u044f \u0445\u0435\u0434\u0441\u0435\u0442, \u0442\u0443\u0442 \u0443\u0436 \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0437\u0451\u0442 \u0438 \u043d\u0430\u0442\u0440\u0435\u043d\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f. \u041a\u043e\u0440\u043e\u0431\u043a\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043d\u0438\u0445 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u041d\u0430 \u043a\u043e\u043c\u043f\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f &#171;KAT Gateway&#187;, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 PCVR \u0438\u0433\u0440\u044b. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Steam \u0438 Oculus \u0438\u0433\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 PC, \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u044b, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043a\u043b\u043e\u043d \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0430\u0437\u0438\u043c\u0443\u0442 \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u0430 (\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0441 \u0445\u0435\u0434\u0441\u0435\u0442\u0430) \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043b\u0430 (\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b). \u0412 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0438\u0433\u0440\u0430\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 locomotion \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430.<\/p>\n<h2>\u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0438 VR \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u043e\u0439 \u0432 \u0445\u0435\u0434\u0441\u0435\u0442\u0435, \u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u043e\u0439 \u0432 \u0432\u0435\u0441\u0442\u0438\u0431\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0435. \u041c\u043e\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 HL Alyx \u0434\u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u0433\u0434\u0435-\u0442\u043e \u0437\u0430 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e 3 \u0447\u0430\u0441\u0430 \u0438\u0433\u0440\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0434\u043a\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043c\u0438\u043d\u0443\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u0434\u0435\u0442\u044c \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u043e\u043c \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u043e. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0442\u0435\u043c\u043d\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442&#8230; \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0448\u0430\u0433\u0430\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438.<\/p>\n<p>\u0418\u0433\u0440\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u041e\u043b\u044c\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043e 1.5-2 \u0447\u0430\u0441\u043e\u0432 \u0441\u0435\u0441\u0441\u0438\u044e, \u043d\u043e \u0432\u0441\u0451 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0433\u0440\u044b, \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e &#171;\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e&#187; \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0438\u0433\u0440\u0435. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u043e\u0442 \u0437\u0435\u043c\u043b\u0438, \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 (\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0445\u0443\u0436\u0435).<\/p>\n<p>\u041d\u0430 Quest 2 \u0435\u0449\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 120Hz \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u0441 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u043d\u0430 Quest 3 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Wifi6 \u0441\u0442\u0430\u043b\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u0432 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 PC \u0434\u043b\u044f \u0438\u0433\u0440\u044b, \u043a\u043e\u043c\u043f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c \u043a <a href=\"https:\/\/www.tp-link.com\/us\/home-networking\/range-extender\/re705x\/\" rel=\"noopener noreferrer nofollow\">TP-Link RE705X<\/a> \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0435\u043b\u044e, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u043c\u0443 Zyxel \u0432 Mesh \u0440\u0435\u0436\u0438\u043c\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043e\u043d \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c, VirtualDesktop \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b, 2404 MBps.<\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u0438 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0435\u0440, \u0431\u0435\u0437 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a\u043e\u043c\u043f&lt;=>\u0445\u0435\u0434\u0441\u0435\u0442, \u043d\u0430\u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/www.dlink.com\/en\/products\/dwa-f18-vr-air-bridge\" rel=\"noopener noreferrer nofollow\">D-Link VR Air Bridge<\/a>.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u043a \u0447\u0435\u043c\u0443 \u044f \u0432\u0435\u0434\u0443: \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044d\u0442\u043e \u043d\u0435 \u043f\u0430\u043d\u0430\u0446\u0435\u044f \u043e\u0442 \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e.<\/p>\n<h2>\u0418\u0433\u0440\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435<\/h2>\n<p>\u0421\u0430\u043c\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u044c \u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a &#171;\u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0435&#187;, \u0432\u0441\u0451 \u0436\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0435. \u0421\u0430\u043c\u043e\u0435 \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u0442\u0430\u0449\u0438\u0442\u044c \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439 \u0442\u0435\u043b\u0435\u0433\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u043e\u0434\u0443. \u0423\u0434\u043e\u0431\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u0435\u0448\u044c\u0441\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0438 \u0442\u043e\u043b\u043a\u0430\u0435\u0448\u044c \u043d\u043e\u0433\u0430\u043c\u0438 \u043f\u043e\u0437\u0430\u0434\u0438 \u0441\u0435\u0431\u044f. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043b\u0435\u0433\u043a\u043e \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0442 \u0438 \u0432\u0435\u0441\u0442\u0438\u0431\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442 \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u0414\u043b\u044f \u0441\u0442\u0440\u0435\u0439\u0444\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0433\u043e\u0439 &#171;\u043f\u043e\u0434\u0442\u0430\u0449\u0438\u0442\u044c&#187; \u0441\u0435\u0431\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 (\u043d\u043e\u0433\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u0431\u043e\u043a\u0443 \u0438 \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0432\u0435\u0441 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u043e\u0433\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f). \u0414\u043b\u044f \u043e\u0441\u043e\u0431\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0438\u0433\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a. \u0412 PvE \u0438\u0433\u0440\u0430\u0445 \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0432 PvP \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0414\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0434\u044c\u0431\u0430, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0436\u0438\u043b\u0435\u0442\u0430 \u043f\u043e\u0442\u0435\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0447\u0435\u0440\u0435\u0437 15 \u043c\u0438\u043d\u0443\u0442 \u0438\u0433\u0440\u044b &#8212; \u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0433\u0440 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u0435\u0441\u043b\u0438 30% \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0433\u0440\u044b. \u0412 <a href=\"https:\/\/store.steampowered.com\/app\/546560\/HalfLife_Alyx\/\" rel=\"noopener noreferrer nofollow\">HL Alyx<\/a>, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043a\u043e\u0443\u043b\u043e\u043a \u0438 \u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435\u043c \u0447\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u043b\u0435\u0436\u0438\u0442, &#8212; \u043a\u0430\u043a \u0440\u0430\u0437 \u0433\u0434\u0435-\u0442\u043e \u0442\u0440\u0435\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u043e\u0433\u0430\u043c\u0438.<\/p>\n<p>\u0427\u0443\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0432 <a href=\"https:\/\/store.steampowered.com\/app\/552440\/The_Talos_Principle_VR\/\" rel=\"noopener noreferrer nofollow\">Talos Principle VR<\/a>. \u0412 \u043d\u0435\u0439 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0430 \u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u0440\u0430\u0441\u043e\u0442 (\u0447\u0442\u043e, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0433\u043b\u0443\u043f\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0433\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u0430 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438 \u0432 \u043d\u0435\u0439), \u0442\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 50%, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, <a href=\"https:\/\/store.steampowered.com\/app\/257510\/The_Talos_Principle\/\" rel=\"noopener noreferrer nofollow\">Talos Principle<\/a> \u0431\u0435\u0437 VR \u044f \u043f\u0440\u043e\u0448\u0435\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0435\u0449\u0435 10 \u043b\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u043e).<\/p>\n<p>\u0415\u0449\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0433\u0443\u043b\u043e\u043a \u044d\u0442\u043e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/store.steampowered.com\/app\/275850\/No_Mans_Sky\/\" rel=\"noopener noreferrer nofollow\">No Man&#8217;s Sky<\/a> (\u043d\u043e \u0438\u0433\u0440\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 VR \u0438\u0433\u0440\u043e\u0439 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438 HUD\u0430 \u043a \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0438\u0440\u0430, \u0447\u0442\u043e \u043b\u043e\u043c\u0430\u0435\u0442 \u0438\u0433\u0440\u0443 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435),<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/store.steampowered.com\/agecheck\/app\/611670\/\" rel=\"noopener noreferrer nofollow\">Skyrim<\/a> (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u043f\u0430\u043a <a href=\"https:\/\/www.wabbajack.org\/modlist\/wj-featured\/fus\" rel=\"noopener noreferrer nofollow\">FUS<\/a>, \u043d\u043e \u0442\u0443\u0442 \u044f \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u043d\u0438\u043a),<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0438 \u0432 discord \u0434\u043b\u044f \u0438\u0433\u0440\u044b Borderlands 2 VR, \u043d\u043e \u0432 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043a\u043e\u0433\u0434\u0430 \u0446\u0435\u043b\u044c &#8212; \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u0430\u0443\u0437 \u043d\u0430 \u0431\u0438\u0442\u0432\u044b \u043c\u0435\u043d\u044c\u0448\u0435, \u043d\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u043d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0438\u0433\u0440\u044b \u0442\u0438\u043f\u0430 Pavlov, Zero Caliber, Contractors &#8212; \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0448\u0443\u0442\u0435\u0440\u043e\u0432 \u0432 PvP \u0438 PvE. \u0412\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0441\u043a\u0438\u043b\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0433\u0440\u043e\u043a\u0438 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u044e\u0442.<\/p>\n<p><a href=\"https:\/\/www.kat-vr.com\/pages\/all-gamelist\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0433\u0440<\/a> \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043d\u0435 \u043f\u043e\u043b\u043e\u043d, \u0435\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u044b \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0435\u0441\u0442\u044c VR Mod. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, <a href=\"https:\/\/store.steampowered.com\/app\/383870\/Firewatch\/\" rel=\"noopener noreferrer nofollow\">Firewatch<\/a> (c <a href=\"https:\/\/github.com\/Raicuparta\/two-forks-vr\" rel=\"noopener noreferrer nofollow\">VR \u043c\u043e\u0434\u043e\u043c<\/a>) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0438 \u0434\u0430\u0451\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 &#8212; \u0441 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438.<\/p>\n<h2>\u0418\u0433\u0440\u044b \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/h2>\n<p>\u041d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0451 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u0435\u043d\u044c\u043a\u043e\u0435 &#8212; \u0441\u043a\u0443\u0447\u043d\u043e. \u041d\u0430\u0434\u043e \u0436\u0435 \u0447\u0435\u043c-\u0442\u043e \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u044c\u0441\u044f, \u043f\u043e\u043a\u0430 \u0445\u0435\u0434\u0441\u0435\u0442 \u0437\u0430\u0440\u044f\u0436\u0430\u0435\u0442\u0441\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c \u0441 SDK \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>SDK \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 <a href=\"https:\/\/drive.google.com\/drive\/folders\/1K_0q1YWth80dl7g8LF57xoSN1YndUvM-\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u043c\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430<\/a>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043b\u0435\u0436\u0430\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a Unreal, Unity, \u0430\u0441\u0441\u0435\u0442\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0432\u0435\u0449\u0438, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0433\u0440. \u042f \u0438\u0433\u0440\u044b \u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e, \u044f \u0432 \u043d\u0438\u0445 \u0438\u0433\u0440\u0430\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435, \u0432 <code>KATVRUniversalSDK\/Source\/KATVRUniversalSDK<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442 <code>KATNativeSDK.dll<\/code>.<\/p>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 <code>KATSDKWarpper.h<\/code> \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e:<\/p>\n<ul>\n<li>\n<p><code>int DeviceCount()<\/code> &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p><code>KATDeviceDesc GetDevicesDesc(unsigned index)<\/code> &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0437\u0430 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0442\u0430\u043a\u0438\u043c-\u0442\u043e. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, VID\/PID \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e USB \u0445\u0432\u043e\u0441\u0442\u0430 \u0438 &#171;\u0442\u0438\u043f&#187; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p><code>KATTreadMillMemoryData GetWalkStatus(const char* sn)<\/code> &#8212; \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u043f\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0451 \u043f\u0440\u043e\u0447\u0435\u0435 \u043d\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432 <code>GetWalkStatus<\/code>:<\/p>\n<pre><code class=\"cpp\">struct DeviceData {     bool    btnPressed;     bool    isBatteryCharging;     float   batteryLevel;     char    firmwareVersion; };  struct TreadMillData {     char         deviceName[64];     bool         connected;     double       lastUpdateTimePoint;     Quaternion   bodyRotationRaw;     Vector3      moveSpeed; };  struct KATTreadMillMemoryData {     TreadMillData treadMillData;     DeviceData    deviceDatas[3];     char          extraData[128]; };<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435, \u043f\u043e \u0441\u0443\u0442\u0438, \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u0432\u0430\u0442\u0435\u0440\u043d\u0438\u043e\u043d\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e-\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043c\u0430\u043b\u043e, \u0430 \u0433\u0434\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043d\u043e\u0433 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438? \u0413\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u0430? Gateway \u0436\u0435 \u0440\u0438\u0441\u0443\u0435\u0442 \u0438\u0445:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/z2\/xr\/vb\/z2xrvb2xf8sawsndojbg728no80.png\" width=\"919\" height=\"735\" data-src=\"https:\/\/habrastorage.org\/webt\/z2\/xr\/vb\/z2xrvb2xf8sawsndojbg728no80.png\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0438\u0445 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c. \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c? \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c (\u043d\u0443, \u043d\u0435 \u0431\u0435\u0437 <code>KATNativeSDK.dll<\/code>, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043f\u043e\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435).<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0441\u0442\u0443\u0434\u0438\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u0442\u0430\u0449\u0438\u043c \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043d\u0438\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, (\u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c <code>#pragma pack(push,1)<\/code>\/ <code>#pragma pack(pop)<\/code>, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f), \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">using deviceCountFunc = int(void); using getDevicesDescFunc = KATDeviceDesc(unsigned); using getWalkStatusFunc = KATTreadMillMemoryData(const char*);  const char* const sKatDeviceType(int deviceType) {     switch (deviceType) {     case 0: return \"ERR\";     case 1: return \"Treadmil\";     case 2: return \"Tracker\";     default: return \"?\";     } }<\/code><\/pre>\n<p>\u0418 \u043d\u0430\u043a\u0438\u0434\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u0447\u0438\u043a:<\/p>\n<pre><code class=\"cpp\">int main() {     HMODULE hKatDll = LoadLibraryW(L\"KATNativeSDK.dll\");     if (!hKatDll || hKatDll == INVALID_HANDLE_VALUE) {         std::cout &lt;&lt; \"Whoops, World!\\n\";         exit(1);     }     std::cout &lt;&lt; \"DLL loaded!\\n\";      std::function&lt;deviceCountFunc> deviceCount = reinterpret_cast&lt;deviceCountFunc*>(GetProcAddress(hKatDll, \"DeviceCount\"));     if (!deviceCount) {         std::cout &lt;&lt; \"Whoops, &lt;DeviceCount> Not Found\\n\";         exit(1);     }      std::function&lt;getDevicesDescFunc> getDevicesDesc = reinterpret_cast&lt;getDevicesDescFunc*>(GetProcAddress(hKatDll, \"GetDevicesDesc\"));     if (!getDevicesDesc) {         std::cout &lt;&lt; \"Whoops, &lt;GetDevicesDesc> Not Found\\n\";         exit(1);     }      std::function&lt;getWalkStatusFunc> getWalkStatus = reinterpret_cast&lt;getWalkStatusFunc*>(GetProcAddress(hKatDll, \"GetWalkStatus\"));     if (!getWalkStatus) {         std::cout &lt;&lt; \"Whoops, &lt;getWalkStatusFunc> Not Found\\n\";         exit(1);     }          int count = deviceCount();     std::cout &lt;&lt; \"Kat Devices found: \" &lt;&lt; count &lt;&lt; \"\\n\";     for (int i = 0; i &lt; count; ++i) {         std::cout &lt;&lt; \"== Kat Device #\" &lt;&lt; i &lt;&lt; \"\\n\";         KATDeviceDesc desc = getDevicesDesc(i);         std::cout &lt;&lt; \"  Name: \" &lt;&lt; desc.device &lt;&lt; \"\\n\";         std::cout &lt;&lt; \"  S\/N : \" &lt;&lt; desc.serialNumber &lt;&lt; \"\\n\";         std::cout &lt;&lt; \"  ID  : \" &lt;&lt; std::hex &lt;&lt; desc.pid &lt;&lt; \":\" &lt;&lt; desc.vid &lt;&lt; \"\\n\";         std::cout &lt;&lt; \"  Type: \" &lt;&lt; desc.deviceType &lt;&lt; \"(\" &lt;&lt; sKatDeviceType(desc.deviceType) &lt;&lt; \")\\n\";     }          KATTreadMillMemoryData data = getWalkStatus(nullptr);     std::cout &lt;&lt; \"Device: \" &lt;&lt; data.treadMillData.deviceName &lt;&lt; (data.treadMillData.connected ? \" \" : \" not \") &lt;&lt; \"connected\" &lt;&lt; \"\\n\";     std::cout &lt;&lt; \"== Kat Walk Status:\\n\";     for (int i = 0; i &lt; 3; ++i)     {             std::cout &lt;&lt; \"Dev\" &lt;&lt; i &lt;&lt; \": Battery: \" &lt;&lt; data.deviceDatas[0].batteryLevel &lt;&lt; \"; \"             &lt;&lt; \"Btn: \" &lt;&lt; data.deviceDatas[0].btnPressed &lt;&lt; \"; \"             &lt;&lt; \"firmware: \" &lt;&lt; (int)data.deviceDatas[0].firmwareVersion &lt;&lt; \"; \"             &lt;&lt; \"charging: \" &lt;&lt; data.deviceDatas[0].isBatteryCharging &lt;&lt; \"\\n\";     }     std::cout &lt;&lt; \"Rotation: (\"         &lt;&lt; data.treadMillData.bodyRotationRaw.x &lt;&lt; \", \"         &lt;&lt; data.treadMillData.bodyRotationRaw.y &lt;&lt; \", \"         &lt;&lt; data.treadMillData.bodyRotationRaw.z &lt;&lt; \", \"         &lt;&lt; data.treadMillData.bodyRotationRaw.w &lt;&lt; \")\\n\";     std::cout &lt;&lt; \"Move speed: (\"         &lt;&lt; data.treadMillData.moveSpeed.x &lt;&lt; \", \"         &lt;&lt; data.treadMillData.moveSpeed.y &lt;&lt; \", \"         &lt;&lt; data.treadMillData.moveSpeed.z &lt;&lt; \")\\n\";     return 0; }<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0436, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u044b\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0427\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441 \u043d\u0438\u043c\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c?&#8230; \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0442\u0435\u043b\u0430, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0440\u0438\u0441\u0443\u0435\u0442 \u0433\u0435\u0439\u0442\u0432\u0435\u0439. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0432\u0430\u0440\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0430\u0437\u0438\u043c\u0443\u0442? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c \u0433\u0435\u0439\u0442\u0432\u0435\u0439.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/47\/rh\/hy\/47rhhy3gkldr_8efznxtr72tori.jpeg\" width=\"279\" height=\"181\" data-src=\"https:\/\/habrastorage.org\/webt\/47\/rh\/hy\/47rhhy3gkldr_8efznxtr72tori.jpeg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/www.jetbrains.com\/decompiler\/\" rel=\"noopener noreferrer nofollow\">JetBrains dotPeek<\/a>, \u0433\u0440\u0443\u0437\u0438\u043c <code>KAT Gateway.exe<\/code>. \u0421\u043c\u043e\u0442\u0440\u0438\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0435\u0435 \u0443\u0433\u043b\u044b &#8212; \u043d\u0435\u0442. \u041e\u043a\u0435\u0439, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 <code>Program<\/code>:<\/p>\n<pre><code class=\"cs\">      switch (ComUtility.KATDevice)       {         case ComUtility.KATDeviceType.loco:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.loco));           break;         case ComUtility.KATDeviceType.loco_s:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.loco_s));           break;         case ComUtility.KATDeviceType.walk_c:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.walk_c));           break;         case ComUtility.KATDeviceType.walk_c2:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.walk_c2));           break;         case ComUtility.KATDeviceType.mini:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.mini));           break;         case ComUtility.KATDeviceType.walk_c2_core:           Application.Run((Form) new Home_Form(showMode, ComUtility.KATDeviceType.walk_c2_core));           break;       }<\/code><\/pre>\n<p>\u0438\u0434\u0451\u043c \u0432 <code>Home_Form<\/code>, \u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440:<\/p>\n<pre><code class=\"cs\">    public Home_Form(bool show, ComUtility.KATDeviceType kATDeviceType)     { \/\/ ... bla bla bla ...         this.Open_Home_Form_Walk_C_Center_Left(kATDeviceType); \/\/ ahha? \/\/ ... bla bla bla ...     }      private void Open_Home_Form_Walk_C_Center_Left(ComUtility.KATDeviceType kATDeviceType)     {       switch (kATDeviceType)       {         case ComUtility.KATDeviceType.loco:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_Loco_Dx.Home_Form_Loco_Main,KAT_Loco_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;         case ComUtility.KATDeviceType.loco_s:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_LocoS_Dx.Home_Form_Loco_S_Main,KAT_LocoS_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;         case ComUtility.KATDeviceType.walk_c:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_WalkC_Dx.Home_Form_Walk_C_Main,KAT_WalkC_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;         case ComUtility.KATDeviceType.walk_c2:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_WalkC2_Dx.Home_Form_Walk_C2_Main,KAT_WalkC2_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;         case ComUtility.KATDeviceType.mini:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_Mini_Dx.Home_Form_Mini_Main,KAT_Mini_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;         case ComUtility.KATDeviceType.walk_c2_core:           this.OpenForm(new PluginHelper().LoadPlugInForm((Form) this, \"KAT_WalkC2_Dx.Home_Form_Walk_C2_Main,KAT_WalkC2_Dx.dll\", ParameterType.Home, (Dictionary&lt;string, object>) null, true), this.panel_Center_Left);           break;       }     }<\/code><\/pre>\n<p>\u0410\u0433\u0430, \u0445\u043e\u0440\u043e\u0448\u043e, \u0433\u0440\u0443\u0437\u0438\u043c <code>KAT_WalkC2_Dx.dll<\/code>, \u0438\u0434\u0451\u043c \u0432 <code>Home_Form_Walk_C2_Main<\/code>:<\/p>\n<pre><code class=\"cs\">\/\/ ...     private Label label_HMD;     private Label label_HMD_Title;     private Label label_Waist_Title;     private Label label_Left_Foot_Title;     private Label label_Right_Foot_Title;     private ToolTip toolTip;     private Panel button_haptic;     private Panel panel_Tracker;     private System.Windows.Forms.Timer timerGDIWalkPaint;     private Panel panel_LED;     private Panel panel1;     private Label label_Waist; \/\/ ...<\/code><\/pre>\n<p>\u0422\u0430\u043a, \u0434\u0430, \u044d\u0442\u043e \u0442\u0430 \u0444\u043e\u0440\u043c\u0430 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430. \u0423\u0433\u043e\u043b, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u043f\u043e\u044f\u0441\u043e\u043c, \u0445\u043e\u0440\u043e\u0448\u043e, \u0436\u043c\u0451\u043c \u043d\u0430 <code>label_Waist<\/code> \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439, &#171;Find Usages&#187; \u0447\u0438\u0442\u0430\u0435\u043c:<\/p>\n<pre><code class=\"cs\">\/\/ ...         if (KATSDKInterfaceHelper.Receiver_status == 0 || KATSDKInterfaceHelper.Compass_status == 0)           this.label_Waist.Text = \"0\u00b0\";         else           this.label_Waist.Text = ((double) MotionDriver.Angle &lt; 360.0 ? ((double) MotionDriver.Angle >= 0.0 ? Convert.ToInt32(MotionDriver.Angle) : Convert.ToInt32(MotionDriver.Angle + 360f)) : Convert.ToInt32(MotionDriver.Angle - 360f)).ToString() + \"\u00b0\";<\/code><\/pre>\n<p>\u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u0447\u0442\u043e \u043f\u0440\u043e `MotionDriver.Angle`?<\/p>\n<pre><code class=\"cs\">    KATSDKInterfaceHelper.Quat q = new KATSDKInterfaceHelper.Quat();     q.w = Home_Form_Walk_C2_Main.objTreadMillData.bodyRotationRaw.w;     q.x = Home_Form_Walk_C2_Main.objTreadMillData.bodyRotationRaw.x;     q.y = Home_Form_Walk_C2_Main.objTreadMillData.bodyRotationRaw.y;     q.z = Home_Form_Walk_C2_Main.objTreadMillData.bodyRotationRaw.z;     double num2 = (double) KATSDKInterfaceHelper.EulerAngles(q).y \/ Math.PI * 180.0;<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432. \u041f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u0447\u0442\u043e <code>KATSDKInterfaceHelper<\/code> \u043b\u0435\u0436\u0438\u0442 \u0432 <code>IBizLibrary<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0433\u0440\u0443\u0437\u0438\u043c \u0435\u0451 \u0442\u043e\u0436\u0435. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 <code>EulerAngles<\/code>:<\/p>\n<pre><code class=\"cs\">    public static KATSDKInterfaceHelper.Vector3 EulerAngles(KATSDKInterfaceHelper.Quat q)     {       KATSDKInterfaceHelper.Vector3 vector3 = new KATSDKInterfaceHelper.Vector3();       float num1 = q.w * q.w;       double num2 = (double) q.x * (double) q.x;       float num3 = q.y * q.y;       float num4 = q.z * q.z;       double num5 = (double) num3;       float num6 = (float) (num2 + num5) + num4 + num1;       float num7 = (float) ((double) q.x * (double) q.w - (double) q.y * (double) q.z);       if ((double) num7 > 0.49950000643730164 * (double) num6)       {         vector3.y = 2f * (float) Math.Atan2((double) q.y, (double) q.x);         vector3.x = 1.57079637f;         vector3.z = 0.0f;         return vector3;       }       if ((double) num7 &lt; -0.49950000643730164 * (double) num6)       {         vector3.y = -2f * (float) Math.Atan2((double) q.y, (double) q.x);         vector3.x = -1.57079637f;         vector3.z = 0.0f;         return vector3;       }       KATSDKInterfaceHelper.Quat quat = new KATSDKInterfaceHelper.Quat(q.y, q.w, q.z, q.x);       vector3.y = (float) Math.Atan2(2.0 * (double) quat.x * (double) quat.w + 2.0 * (double) quat.y * (double) quat.z, 1.0 - 2.0 * ((double) quat.z * (double) quat.z + (double) quat.w * (double) quat.w));       vector3.x = (float) Math.Asin(2.0 * ((double) quat.x * (double) quat.z - (double) quat.w * (double) quat.y));       vector3.z = (float) Math.Atan2(2.0 * (double) quat.x * (double) quat.y + 2.0 * (double) quat.z * (double) quat.w, 1.0 - 2.0 * ((double) quat.y * (double) quat.y + (double) quat.z * (double) quat.z));       return vector3;     }<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e. \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0442\u043e\u043b\u044c\u043a\u043e yaw (y), \u043f\u043b\u044e\u0441 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b. \u0413\u0443\u0433\u043b\u0438\u043d\u0433 \u043f\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c \u043a\u0432\u0430\u0442\u0435\u0440\u043d\u0438\u043e\u043d\u043e\u0432 \u0432\u044b\u0434\u0430\u0451\u0442 \u0435\u0449\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043f\u0440\u043e\u0449\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"cpp\">struct Quaternion {     \/\/...      static Quaternion StraightUp() {         const float deg90 = (float)M_PI_4;         const float s = sin(deg90);         const float c = sin(deg90);         return { s * 0.0f, s * -1.0f, s * 0.0f, c };     }      float getRawAngle()     {         return 2.f * acos(this->w);     }      float getAngle()     {         Quaternion angle = Quaternion::StraightUp() * (*this);         return angle.getRawAngle();     }<\/code><\/pre>\n<p>\u0447\u0442\u043e, \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u043a\u043e\u0431\u043e\u043a, \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043d\u043e, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b \u0432\u044b\u0448\u0435, \u0443 \u043d\u0430\u0441 \u043e\u043d\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">    float getAngle()     {         return (float)(2.f * acos(M_SQRT1_2 * (w + y)));     }<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u0434 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u0443\u0433\u043b\u0430, \u043a\u0440\u0443\u0442\u0438\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 &#8212; \u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&#8230; \u041d\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u043e. \u041c\u043e\u0436\u0435\u0442, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/github.com\/datacompboy\/kat-vr-py-sdk\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Python<\/a>?<\/p>\n<details class=\"spoiler\">\n<summary>\u0427\u0442\u043e-\u0442\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">... import ctypes ... ## # Load  katsdk = ctypes.windll.LoadLibrary(os.getcwd()+os.sep+\"KATNativeSDK.dll\")  # place the dll near the script  devco = katsdk.DeviceCount() print(f\"SDK reports {devco} devies connected\")  ## # GetDevicesDesc  def katDevType(typeId):     types = [\"ERR\", \"Treadmill\", \"Tracker\"]     if typeId &lt; 0 or typeId > len(types):         return \"?\"     return types[typeId]  class KATDeviceDesc(ctypes.Structure):     _pack_ = 1     _fields_ = [         (\"device\", ctypes.c_char * 64),         (\"serialNumber\", ctypes.c_char * 13),         (\"pid\", ctypes.c_int32),         (\"vid\", ctypes.c_int32),         (\"deviceType\", ctypes.c_int32)     ]  katsdk.GetDevicesDesc.restype = KATDeviceDesc  for k in range(0, devco):     print(f\"\\nSDK request for device # {k}:\")     desc = katsdk.GetDevicesDesc(k)     print(f\"  Name: {desc.device}\")     print(f\"  S\/N : {desc.serialNumber}\")     print(f\"  ID  : {hex(desc.pid)}:{hex(desc.vid)}\")     print(f\"  Type: {katDevType(desc.deviceType)}\")  ## # GetWalkStatus ...  class KATTreadMillMemoryData(ctypes.Structure):     _pack_ = 1     _fields_ = [         (\"treadMillData\", TreadMillData),         (\"deviceDatas\", DeviceData * 3),         (\"extraData\", ctypes.c_byte * 128)     ]  katsdk.GetWalkStatus.restype = KATTreadMillMemoryData katsdk.GetWalkStatus.argtypes = [ctypes.c_char_p]  walk = katsdk.GetWalkStatus(None) print(\"Walk data:\") print(f\"  Device: {walk.treadMillData.deviceName}, {walk.treadMillData.connected and \"\" or \" not \"}connected\") print(f\"  Sensors:\") ...<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041c&#8230; \u041d\u0435\u0442. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e, \u0442\u0443\u043f\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u043d\u0435 \u0442\u043e.<\/p>\n<h2>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u044b, No Man&#8217;s Sky \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/h2>\n<p>\u041d\u0435\u0442, \u043d\u0430\u0434\u043e \u0432\u0441\u0451 \u0436\u0435 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0438\u0433\u0440\u0443, \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u043b\u0443\u0447\u0448\u0435!<\/p>\n<p>\u041c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 No Man&#8217;s Sky, \u0433\u0434\u0435 \u043c\u043e\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0433\u0440\u0443 \u0443\u043f\u0435\u0440\u043b\u0438\u0441\u044c \u0432 \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 &#171;\u0430 \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435&#187;. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u0438\u0433\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u043e \u0432\u043e\u0442 \u0432\u0441\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0438\u0441\u044f\u0442 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0438 \u043d\u0435 \u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0437\u0430 \u0433\u043e\u043b\u043e\u0432\u043e\u0439, \u043d\u0438 \u0437\u0430 \u0442\u0435\u043b\u043e\u043c! \u0422\u043e \u0435\u0441\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043d\u0430\u0434\u043e \u043b\u0438\u0431\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043b\u0438\u0431\u043e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e\u0431 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c &#171;\u0430 \u0447\u0442\u043e \u0436\u0435 \u044f \u0434\u0435\u043b\u0430\u044e \u0441\u0435\u0439\u0447\u0430\u0441&#187;. \u041d\u0435\u043f\u043e\u0440\u044f\u0434\u043e\u043a.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0434\u043e \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u043e\u0440\u0438\u044e. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/hex-rays.com\/ida-free\/\" rel=\"noopener noreferrer nofollow\"><strong>IDA Freeware<\/strong><\/a>, \u0433\u0440\u0443\u0437\u0438\u043c <code>nms.exe<\/code> \u0432 \u043d\u0435\u0451. \u0412\u0438\u0434\u0438\u043c \u043a\u0430\u0448\u0443, \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u0438\u0437 Steam &#8212; \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/github.com\/atom0s\/Steamless\" rel=\"noopener noreferrer nofollow\"><strong>steamless<\/strong><\/a>, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c, \u0438 \u0433\u0440\u0443\u0437\u0438\u043c <code>NMS.exe.unpacked.exe<\/code>.<\/p>\n<p>\u0418 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c. \u041e\u0442\u043a\u0443\u0434\u0430? \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0438\u0449\u0435\u043c \u043f\u043e \u0447\u0435\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u043c\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, &#171;HMD&#187;:<\/p>\n<pre><code class=\"assembly\">.rdata:00000001428E7310 48 4D 44 5F 52 65+aHmdRecenter    db 'HMD_Recenter',0     ; DATA XREF: .data:0000000142D56358\u2193o .rdata:00000001428E731D 00 00 00                          align 20h .rdata:00000001428E7320 48 4D 44 5F 52 65+aHmdRecenter2   db 'HMD_Recenter2',0    ; DATA XREF: .data:0000000142D56368\u2193o .rdata:00000001428E732E 00 00                             align 10h .rdata:00000001428E7330 48 4D 44 5F 46 45+aHmdFeopen      db 'HMD_FEOpen',0       ; DATA XREF: .data:0000000142D56378\u2193o<\/code><\/pre>\n<p>\u0410\u0433\u0430, \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043d\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0435\u0449\u0435?<\/p>\n<pre><code class=\"assembly\">.rdata:00000001428EB278 55 73 65 50 6C 61+aUseplayercamer db 'UsePlayerCameraInHmd',0 .rdata:00000001428EB278 79 65 72 43 61 6D+                                        ; DATA XREF: sub_14151D400+31E\u2191o .rdata:00000001428EB278 65 72 61 49 6E 48+                                        ; sub_14151F190+5E9\u2191o ... .rdata:00000001428EB28D 00 00 00                          align 10h .rdata:00000001428EB290 41 6C 69 67 6E 55+aAlignuitocamer db 'AlignUIToCameraInHmd',0 .rdata:00000001428EB290 49 54 6F 43 61 6D+                                        ; DATA XREF: sub_14151D400+334\u2191o .rdata:00000001428EB290 65 72 61 49 6E 48+                                        ; sub_14151F190+63A\u2191o ... .rdata:00000001428EB2A5 00 00 00                          align 8 .rdata:00000001428EB2A8 55 73 65 53 65 6E+aUsesensiblecam db 'UseSensibleCameraFocusNodeIsNowOffsetNode',0 .rdata:00000001428EB2A8 73 69 62 6C 65 43+                                        ; DATA XREF: sub_14151D400+34A\u2191o .rdata:00000001428EB2A8 61 6D 65 72 61 46+                                        ; sub_14151F190+68B\u2191o ... .rdata:00000001428EB2D2 00 00 00 00 00 00                 align 8<\/code><\/pre>\n<p>\u0423\u0436\u0435 \u043b\u0443\u0447\u0448\u0435! \u0410 \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0445 \u0441\u043c\u043e\u0442\u0440\u0438\u0442?<\/p>\n<pre><code class=\"cpp\">\/\/ ...   sub_1414834D0(a1 + 128, a2, \"FocusInterpTime\");   sub_1414834D0(a1 + 132, a2, \"BlendInTime\");   sub_1414834D0(a1 + 136, a2, \"BlendInOffset\");   sub_1414A7FF0(a1 + 144, a2, \"Anim\");   sub_1414834D0(a1 + 160, a2, \"HeightOffset\");   sub_14148DDD0(a1 + 164, a2, \"UsePlayerCameraInHmd\");   sub_14148DDD0(a1 + 165, a2, \"AlignUIToCameraInHmd\");   sub_14148DDD0(a1 + 166, a2, \"UseSensibleCameraFocusNodeIsNowOffsetNode\");   return sub_14148DDD0(a1 + 167, a2, \"LookForFocusInMasterModel\"); \/\/ ...<\/code><\/pre>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u0443 \u043d\u0430\u0441 \u0442\u043e-\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, \u0442\u043e-\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043d\u0435\u0432\u0430\u0436\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043a\u043e\u043f\u0430\u0442\u044c!<\/p>\n<p>\u041e\u0442\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0437\u0430\u0434, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432\u0447\u0438\u043a:<\/p>\n<pre><code>.rdata:00000001428D2E38 10 E4 03 40 01 00+        dq offset sub_14003E410 .rdata:00000001428D2E40 D0 DA 03 40 01 00+        dq offset sub_14003DAD0 .rdata:00000001428D2E48 40 E4 03 40 01 00+        dq offset sub_14003E440 .rdata:00000001428D2E50 50 DB 03 40 01 00+        dq offset sub_14003DB50 .rdata:00000001428D2E58 30 E5 03 40 01 00+        dq offset sub_14003E530 .rdata:00000001428D2E60 D0 DD 03 40 01 00+        dq offset sub_14003DDD0 .rdata:00000001428D2E68 60 E5 03 40 01 00+        dq offset sub_14003E560 .rdata:00000001428D2E70 50 DE 03 40 01 00+        dq offset sub_14003DE50 .rdata:00000001428D2E78 90 E5 03 40 01 00+        dq offset sub_14003E590<\/code><\/pre>\n<p>\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u043a\u0443\u0441\u043d\u043e\u0433\u043e, \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0442\u0438\u043f\u0430<\/p>\n<pre><code class=\"cpp\">__int64 sub_14003E410() {   return sub_142512100(\"cTkGlobals\", sub_141535BB0, sub_141533E70, sub_1415355A0); }<\/code><\/pre>\n<p>\u0427\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0443\u0447\u0443 \u043a\u043e\u0434\u0430 \u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u041d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e.<\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c? \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a \u0432\u043b\u0435\u0432\u043e-\u0432\u043f\u0440\u0430\u0432\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0430\u0449\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0448\u043a\u0430 \u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0430\u043c\u0438, \u0438, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0442\u0435\u043b\u043e \u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0436\u0435. \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0442\u0435\u043b\u0430 \u043a \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0443 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430? \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0435\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f &#8212; Snap \u0438 Smooth.<\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u043f\u043e\u0438\u0441\u043a\u0438 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0432\u0435\u0449\u0430\u043c, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u043c\u0441\u044f \u043a &#171;Snap&#187;, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, (\u0435\u0449\u0435 \u0438 \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435 &#8212; \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438):<\/p>\n<pre><code class=\"cpp\">        v39 = fastCos(v28.m128_f32[0]);         v40 = fastSin(v28.m128_f32[0]);         v41 = _mm_xor_ps(v40, (__m128)0x80000000);         v42 = _mm_unpacklo_ps(_mm_unpacklo_ps(v41, v39), (__m128)xmmword_142B2B830);         v43 = _mm_unpacklo_ps(_mm_unpacklo_ps(v39, v40), (__m128)xmmword_142B2B830);         sub_140178B20(&amp;v647);         v647 = _mm_add_ps(                   _mm_add_ps(                     _mm_mul_ps(*(__m128 *)(a1 + 21264), _mm_shuffle_ps(v43, v43, 0)),                     _mm_mul_ps(*(__m128 *)(a1 + 21280), (__m128)0i64)),                   _mm_mul_ps(*(__m128 *)(a1 + 21296), _mm_shuffle_ps(v43, v43, 170)));         v648 = _mm_add_ps(                   _mm_add_ps(                     _mm_mul_ps(*(__m128 *)(a1 + 21264), (__m128)0i64),                     _mm_mul_ps(*(__m128 *)(a1 + 21280), (__m128)xmmword_142B2CE10)),                   _mm_mul_ps(*(__m128 *)(a1 + 21296), (__m128)0i64));         v649 = _mm_add_ps(                   _mm_add_ps(                     _mm_mul_ps(*(__m128 *)(a1 + 21264), _mm_shuffle_ps(v41, v41, 0)),                     _mm_mul_ps(*(__m128 *)(a1 + 21280), (__m128)0i64)),                   _mm_mul_ps(*(__m128 *)(a1 + 21296), _mm_shuffle_ps(v42, v42, 170)));         v650 = _mm_add_ps(                   _mm_add_ps(                     _mm_add_ps(                       _mm_mul_ps(*(__m128 *)(a1 + 21264), (__m128)0i64),                       _mm_mul_ps(*(__m128 *)(a1 + 21280), (__m128)0i64)),                     _mm_mul_ps(*(__m128 *)(a1 + 21296), (__m128)0i64)),                   *(__m128 *)(a1 + 21312));         *(__m128 *)(a1 + 21264) = v647;         *(__m128 *)(a1 + 21280) = v648;         *(__m128 *)(a1 + 21296) = v649;         *(__m128 *)(a1 + 21312) = v650;         sub_14133C550((char *)qword_144B28508 + 10437728, \"SNAPTURN\");         v44 = 0i64;         *((_BYTE *)qword_144B28508 + 9046820) = 1;         v45 = (__int64 *)qword_144B28508;         statHash = 0i64;         do         {           v46 = aVrSnapturns[v44];           *((_BYTE *)&amp;statHash + v44) = v46;           if ( (unsigned __int8)(v46 - 97) &lt;= 0x19u )             *((_BYTE *)&amp;statHash + v44) = v46 - 32;           ++v44;         }         while ( v44 &lt; 0xD );         *(_WORD *)((char *)&amp;statHash + 13) = 0;         HIBYTE(statHash) = 0;         gameStats(v45 + 235493, &amp;statHash, 1, 0, 0i64);       }     }<\/code><\/pre>\n<p>sin+cos \u043f\u043e\u0434\u0440\u044f\u0434, \u043f\u043e\u0442\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 &#8212; \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043c\u0430\u0442\u0440\u0438\u0446. \u0415\u0441\u043b\u0438 \u043e\u0442\u043c\u043e\u0442\u0430\u0442\u044c \u0435\u0449\u0435 \u0432\u044b\u0448\u0435, \u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c (\u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u0447\u0438\u0442\u0430\u043b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e, \u0430 \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u0447\u0438\u0441\u0442\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440?):<\/p>\n<pre><code class=\"cpp\">      v13 = dword_1432AC404;       if ( sub_1404B12C0(*((_QWORD *)qword_144B28508 + 1304414)) )         v13 = dword_1432AC408;       *(_BYTE *)(a1 + 12972) = 0;       v14 = *(__int64 **)(a1 + 424);       turnRadInput = *(float *)&amp;v13 * 0.017453292;       v16 = *v14;       turnRad = turnRadInput;       if ( (*(unsigned __int8 (__fastcall **)(__int64 *, __int64, __int64))(v16 + 8))(v14, 155i64, 1i64) )         *(_BYTE *)(a1 + 12972) = 1;       if ( (*(unsigned __int8 (__fastcall **)(_QWORD, __int64, __int64))(**(_QWORD **)(a1 + 424) + 8i64))(               *(_QWORD *)(a1 + 424),               156i64,               1i64) )       {         turnRadInput = -turnRadInput;         *(_BYTE *)(a1 + 12972) = 1;         turnRad = turnRadInput;       }       if ( *(_BYTE *)(a1 + 12972) )       {         if ( dword_144626580 > *(_DWORD *)(*(_QWORD *)NtCurrentTeb()->ThreadLocalStoragePointer + 152i64) )         {           Init_thread_header(&amp;dword_144626580);           if ( dword_144626580 == -1 )           {             sub_1401E33D0(stru_144623A40);             Init_thread_footer(&amp;dword_144626580);           }         }         v17 = (__m128 *)GetPosition(a1, v675);<\/code><\/pre>\n<p>\u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c 155 \u0438\u043b\u0438 156 (\u0441\u043d\u0430\u043f-\u043b\u0435\u0432\u043e, \u0441\u043d\u0430\u043f-\u043f\u0440\u0430\u0432\u043e). \u0415\u0449\u0435 \u0432\u044b\u0448\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430 (\u0443\u0445, \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433!), \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0443\u0433\u043b\u0430 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u043d\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u043a\u0430\u043a \u0442\u0443\u0442.<\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u0438 \u0442\u0443\u0442 \u0436\u0435 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u043d\u0435\u0451, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u044f. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u043e \u0432\u043b\u0435\u0432\u043e? => \u0441\u0442\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u0430\u0442\u043e \u0432\u043f\u0440\u0430\u0432\u043e? => \u0441\u0442\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433, \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u043a \u0443\u0433\u043b\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 \u0444\u043b\u0430\u0433\u0430? \u041d\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442, \u0443\u0445\u043e\u0434\u0438\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0430\u0432\u0438\u043c \u043b\u043e\u0433\u0438\u043a\u0443:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435\u0442 \u0444\u043b\u0430\u0433\u0430? \u0412\u044b\u0437\u043e\u0432\u0435\u043c \u043d\u0430\u0448 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439? \u041d\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442, \u0443\u0445\u043e\u0434\u0438\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b,<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0433\u043e\u043b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f &#8212; \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0435\u043b\u044c\u0442\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">  static float old = 0;   KATTreadMillMemoryData newdata = getWalkStatus(nullptr);   float angle = 2.0 * acos(newdata.bodyRotationRaw.w);   float diff = angle - old;   if (abs(diff) > 0.001) {     xmm7 = diff;     old = angle;     jmp $do_turn$;   }   jmp handle_turn_no_turn;<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0430\u0442\u0447\u0438\u0442\u044c \u043d\u0430\u0434\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0435 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d DRM \u043e\u0442 Steam&#8230;<\/p>\n<p>\u041d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 <a href=\"https:\/\/github.com\/Reloaded-Project\/Reloaded-II\" rel=\"noopener noreferrer nofollow\"><strong>Reloaded-II<\/strong><\/a>! \u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0431\u0435\u0440\u0443\u0449\u0438\u0439 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0443\u0442\u0438\u043d\u0443 \u043f\u043e \u043f\u0430\u0442\u0447\u0438\u043d\u0433\u0443, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0438\u043c\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0432\u0435\u0449\u0435\u0439, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0434\u043b\u044f \u043d\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c.<\/p>\n<p>\u041a\u043e\u0434, \u043f\u0440\u0430\u0432\u0434\u0430, \u043d\u0430 \u0421\u0438 \u0428\u0430\u0440\u043f, \u043d\u043e \u0447\u0442\u043e \u0436 \u0442\u0435\u043f\u0435\u0440\u044c, <a href=\"https:\/\/github.com\/datacompboy\/nmskat\/blob\/master\/Mod.cs#L57\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0432\u044b\u0437\u043e\u0432\u044b API \u043d\u0430 C#<\/a>. \u041e\u0441\u043e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0443\u0442 \u043d\u0435\u0442, \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043e\u0431\u0435\u0440\u0442\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u0438\u043c Reloaded-II \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043e\u043c \u0443\u0433\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u041d\u0443, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>bool<\/code>, \u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0431\u0443\u0434\u0435\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cs\">    private static unsafe float* _angleDiff = (float*)Marshal.AllocHGlobal(sizeof(float));      const float M_2PI = (float)(2.0 * Math.PI);      private static float _lastAngle = 0.0f;     private static byte _GetTurnAngleDiff()     {         KATTreadMillMemoryData data;         GetWalkStatusWrapper!(out data, 0);         float angle = data.bodyRotationRaw.GetAngle();         if (Math.Abs(angle - _lastAngle) > 0.0001)         {             float diff = _lastAngle - angle;             if (diff > Math.PI) diff -= M_2PI;             else if (diff &lt; -Math.PI) diff += M_2PI;             unsafe { *_angleDiff = diff; }             _lastAngle += diff;             if (_lastAngle &lt; 0) _lastAngle += M_2PI;             else if (_lastAngle > M_2PI) _lastAngle -= M_2PI;             return 1;         }         return 0;     }<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0444\u043b\u043e\u0430\u0442\u0430\u043c\u0438, \u0434\u0430 \u0435\u0449\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u0438\u0433\u0440\u0443 \u0434\u0435\u043b\u044c\u0442\u044b, \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e, \u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0443\u0433\u043e\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0435 \u0436\u0435 \u0434\u0435\u043b\u044c\u0442\u044b, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u0438\u0433\u0440\u0443. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 &#8212; \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043d\u043e \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0434\u0435\u043b\u044c\u0442\u0443 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0433\u0440\u044b: \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u0434\u0430. Reloaded-II \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439 \u0438 \u043e\u0442\u043a\u0430\u0442\u0430 \u0438\u0445, \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0447\u0443\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0435\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f (\u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430), \u0430 \u043c\u043d\u0435 \u043d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0435\u0440\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0438 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f; \u043f\u0440\u043e\u0441\u0442\u0435\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 &#8212; \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u044b\u0439. \u0412\u044b\u043a\u0443\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0441\u0435\u043c\u043f\u043b\u043e\u0432 \u0438 \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u043c \u043f\u043e\u0434 \u0441\u0435\u0431\u044f.<\/p>\n<p>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f: \u0441\u043a\u0430\u043d\u043d\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430 \u043a\u0443\u0434\u0430; \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0447\u0442\u043e\u0431 \u0431\u044b\u043b\u043e \u043a\u0443\u0434\u0430 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 (\u0432\u044b\u0437\u043e\u0432, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438 \u0442\u0434), \u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043a\u0443\u0441\u043a\u0430 \u043a\u0443\u0434\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#171;\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#187;, \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044f \u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 (\u043d\u0430\u0439\u0442\u0438 &#171;VR_SNAPTURNS&#187;, \u043d\u0430\u0439\u0442\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u0451, \u043d\u0430\u0439\u0442\u0438 <code>try{}<\/code> \u0431\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u0434 \u043d\u0435\u0439, \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0444\u043b\u0430\u0433, \u043d\u0430\u0439\u0442\u0438 \u0441\u043c\u0435\u043d\u0443 \u0437\u043d\u0430\u043a\u0430 => \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u0432\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c). \u041d\u043e, \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0422\u0430\u043a \u0447\u0442\u043e \u0433\u0440\u0443\u0437\u0438\u043c \u0432 IDA \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430 (\u0434\u0430-\u0434\u0430, \u0434\u0432\u0430 \u0430\u043f\u0434\u0435\u0439\u0442\u0430 \u0432\u044b\u0448\u043b\u043e \u043f\u043e\u043a\u0430 \u044f \u0438\u0437\u0443\u0447\u0430\u043b \u0435\u0451), \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443:<\/p>\n<pre><code class=\"cs\">    \/\/ Signature:     \/\/   $do_turn$:     \/\/ (+ 0)  C6 87 [1C 33 00 00] 01       mov     byte ptr[rdi + 331Ch], 1; we turn     \/\/ (+ 7)  F3 0F 11 [BD 58 13 00 00]    movss[rbp + 1330h + arg_18], xmm7; turn radians     \/\/   $check_addr$:     \/\/ (+15)  38 9F [1C 33 00 00]          cmp[rdi + 331Ch], bl     \/\/ (+21)  0F 84 [9B 23 00 00]          jz no_turn_needed [ no turn pressed handling ]     \/\/   $turn_handling$:     \/\/ (+27)     const string Signature = \"C6 87 1C 33 00 00 01 F3 0F 11 ?? ?? ?? 00 00 38 9F 1C 33 00 00 0F 84 ?? ?? 00 00\";<\/code><\/pre>\n<p>\u0438 \u0438\u0449\u0435\u043c \u0435\u0451:<\/p>\n<pre><code class=\"cs\">    var thisProcess = Process.GetCurrentProcess();     byte* baseAddress = (byte*)thisProcess!.MainModule!.BaseAddress;     int exeSize = thisProcess!.MainModule!.ModuleMemorySize;     _modLoader.GetController&lt;IScannerFactory>().TryGetTarget(out var scannerFactory);     var scanner = scannerFactory!.CreateScanner(baseAddress, exeSize);     var result = scanner.FindPattern(Signature);     if (!result.Found)     {         _logger.WriteLine(\"Can't find signature\");         throw new Exception(\"Signature for getting LookHook not found.\");     }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0441\u0430\u043c\u043e\u0439 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 bool, \u0438 \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f float. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"assembly\">    call _GetTurnAngleDiff     cmp al, 0     jz no_turn_needed     mov xmm7, [_angleDiff]     jmp do_turn_address<\/code><\/pre>\n<p>\u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0437\u043e\u0432\u044b &#8212; \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435, \u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0435\u0437\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0438 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u0440\u0443\u0442\u0438\u0432 \u0435\u0433\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"assembly\">    call _GetTurnAngleDiff     cmp al, 0     mov rax, qword ${no_turn_needed_address}     mov rcx, qword ${do_turn_address}     cmovne rax, rcx     mov rcx, qword ${_angleDiffAddr}     movss xmm7, [rcx]     jmp rax<\/code><\/pre>\n<p>\u0412 \u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e &#8212; \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 (\u0435\u0433\u043e \u043d\u0430\u043c \u0434\u0430\u0441\u0442 \u0441\u0430\u043c Reloaded-II), \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c, \u0431\u043b\u0430\u0433\u043e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043d\u0430\u0448\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0441 \u043a\u043e\u0434. \u0411\u0435\u0440\u0451\u043c \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b, \u0434\u043e\u0441\u0442\u0430\u0451\u043c \u0438\u0437 \u043d\u0435\u0451 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<pre><code class=\"cs\">    var do_turn_address = baseAddress + result.Offset;     var turn_handling_address = baseAddress + result.Offset + 27;     var no_turn_needed_address = *(int*)(do_turn_address + 23) + do_turn_address + 27;<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043b\u044e\u0441 Reloaded-II &#8212; \u043d\u0435 \u043d\u0430\u0434\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0440\u0443\u0447\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0435\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0449\u0435 \u0438 \u043a\u043e\u0434\u0430 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439. \u041e\u043d \u0441\u0430\u043c \u0443\u043c\u0435\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043d\u0435 \u043f\u0440\u044f\u043c\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b &#8212; \u0441\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434). \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e, \u044d\u0442\u043e \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u0434 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0447\u0438\u043a:<\/p>\n<pre><code class=\"cs\">    string[] turnAdapterHook =     {         \"use64\",           \/\/ Get the rotation delta         $\"{_hooks!.Utilities.GetAbsoluteCallMnemonics&lt;NoArgsRetByte>(_GetTurnAngleDiff, out _GetTurnAngleDiffReverse)}\",         \/\/ Check is no rotation needed         \"cmp al, 0\",         \/\/ If no rotation needed, load skip address         $\"mov rax, qword {(nuint)no_turn_needed_address}\",         \/\/ Otherwise load saving address         $\"mov rcx, qword {(nuint)do_turn_address}\",         $\"cmovne rax, rcx\",         \/\/ Load the turn diff into xmm7         $\"mov rcx, qword {(nuint)(_angleDiff)}\",         \"movss xmm7, [rcx]\",         \/\/ return from hook to either do_turn or no_turn_needed         \"jmp rax\"     };<\/code><\/pre>\n<p>Reloaded-II \u0441\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0441\u0442\u043e \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0445\u0443\u043a, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u043c\u0435\u0441\u0442\u043e, \u043a\u0443\u0434\u0430 \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u043d\u0430 \u0432\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u043d\u043e \u043d\u0430\u043c \u043f\u0440\u043e\u0449\u0435: \u043d\u0430\u0439\u0434\u0451\u043c \u0440\u044f\u0434\u044b\u0448\u043a\u043e\u043c \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043d\u0435\u043f\u043e\u0434\u0430\u043b\u0451\u043a\u0443, \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"cs\">    using var scanner2 = scannerFactory.CreateScanner((byte*)do_turn_address, exeSize-result.Offset);     result = scanner2.FindPattern(\"CC CC CC CC CC CC CC CC\");     if (!result.Found)     {         throw new Exception(\"Can't find a gap in the code.\");     }     if (result.Offset > 0x7FFFF000)     {         throw new Exception(\"The gap is too far away.\");     }     var hook_jmp_address = do_turn_address + result.Offset;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0445\u0443\u043a:<\/p>\n<pre><code class=\"cs\">    rotationHook = _hooks!.CreateAsmHook(                        turnAdapterHook,                        (long)hook_jmp_address,                         AsmHookBehaviour.DoNotExecuteOriginal                    ).Activate();<\/code><\/pre>\n<p>\u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434:<\/p>\n<pre><code class=\"cs\">    \/\/ Activate jmp to hook by chaning \"jz no_turn_needed\" into \"jz hook_jmp_address\"     Memory.Instance.SafeWrite(         (nuint)(turn_handling_address - 4),         BitConverter.GetBytes((int)(hook_jmp_address - turn_handling_address)));<\/code><\/pre>\n<p>(\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u044f \u0432\u044b\u043b\u043e\u0436\u0438\u043b <a href=\"https:\/\/github.com\/datacompboy\/nmskat\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 github<\/a>)<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u043a\u043e\u0434 \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u042f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0438\u0433\u0440\u0443 \u0437\u0430 \u043a\u043e\u043c\u043f\u043e\u043c, \u0434\u0451\u0440\u0433\u0430\u044f \u0437\u0430 \u0432\u0435\u0440\u0451\u0432\u043e\u0447\u043a\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0438 \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043f\u043e\u043a\u0430 \u044f \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u0441\u0442\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c. \u041d\u0443 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u043d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u043d\u044c\u0448\u0435?<\/p>\n<p>&#8230;<\/p>\n<p>&#8230;<\/p>\n<p>&#8230; \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b, \u0433\u0434\u0435 \u044f \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b. \u041a\u043e\u0433\u0434\u0430 \u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0437\u0430 \u0441\u0442\u043e\u043b\u043e\u043c, \u044f \u0432\u0440\u0430\u0449\u0430\u043b <strong>\u0442\u043e\u043b\u044c\u043a\u043e<\/strong> \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u0410 \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0430\u043c \u0441\u0442\u043e\u044e \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0442\u043e \u0445\u0435\u0434\u0441\u0435\u0442 \u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u043c\u043d\u043e\u0439. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0448\u0438\u0446\u0430&#8230; \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0432\u0441\u0451 \u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a, \u043c\u043e\u0436\u043d\u043e \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0442\u044c &#8212; \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c. %)<\/p>\n<p>\u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0445\u043e\u0434 \u043d\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u044b, \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043c\u0435\u0441\u0442 \u0434\u043b\u044f \u0438\u043d\u044a\u0435\u0446\u0438\u0439.<\/p>\n<h2>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445<\/h2>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\"><strong>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/strong><\/a> \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0435 \u0438\u0433\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d SDK \u0432\u043d\u0443\u0442\u0440\u0438,<\/p>\n<\/li>\n<li>\n<p>\u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0447\u0438\u043a <code>extraData<\/code>,<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e,<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0430\u0434\u0440\u043e\u0438\u0434\u0435 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u0445\u0435\u0434\u0441\u0435\u0442\u0435,<\/p>\n<\/li>\n<li>\n<p>\u0438, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0441\u044f \u0435\u0449\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0436\u0435!<\/p>\n<\/li>\n<\/ul>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 1: &#171;\u0418\u0433\u0440\u0430\u0435\u043c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/798029\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/3364c324e710?source=friends_link&amp;sk=5535c9f1c834b35af2ac1d282fd41826\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/playing-kat-walk-c2-part-1-actually-anton-fedorov-frtwe\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 2: &#171;\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-part-2-peeking-eavesdropping-sniffing-and-learning-how-to-communicate-with-unknown-bb390c089a00\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-part-2-peeking-eavesdropping-sniffing-learning-fedorov-bcbme\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 3: &#171;\u041e\u0442\u0440\u0435\u0437\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/802125\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-3-cutting-the-wire-987753f49da8?source=friends_link&amp;sk=a4e0e2d3f71be681bc206b1d9a3d307a\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p3-cutting-wire-anton-fedorov-4abae\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 4: &#171;\u0418\u0433\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/804327\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-4-playing-with-firmware-ccad00d9eeeb?source=friends_link&amp;sk=3b0779685140b65e84d667950f07f7d6\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p4-playing-firmware-anton-fedorov-wirce\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 5: &#171;\u041e\u0432\u0435\u0440\u043a\u043b\u043e\u043a\u0438\u043d\u0433 \u0438 \u0431\u0430\u0433\u0444\u0438\u043a\u0441\u0438\u043d\u0433&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/805747\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-5-overclocking-and-bugfixing-0ff1fd853e49?source=friends_link&amp;sk=4f44bf29291c8c3ad1b2522c5fd2d3a9\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p5-overclocking-bugfixing-how-use-ghidra-analyse-fedorov-5nome\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/798029\/\"> https:\/\/habr.com\/ru\/articles\/798029\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0434\u0443\u0440\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430: \u044f \u0438\u0433\u0440\u0430\u044e \u0432 \u0438\u0433\u0440\u044b. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043f\u043e\u043d\u044f\u0442\u0438\u0435 &#171;\u0438\u0433\u0440\u0430\u044e \u0432 \u0438\u0433\u0440\u044b&#187; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043a\u0430\u043a \u044f \u043e\u0431\u0437\u0430\u0432\u0435\u043b\u0441\u044f VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043e\u0442 <a href=\"https:\/\/kat-vr.com\" rel=\"noopener noreferrer nofollow\">KAT VR<\/a>.<\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u044f \u043f\u0440\u043e\u0448\u0435\u043b \u043d\u0430 \u043d\u0435\u0439 \u043e\u043a\u043e\u043b\u043e 30 \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b 40\u043a \u0448\u0430\u0433\u043e\u0432. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0440\u0451\u0442 \u0438 \u0441\u0438\u043b\u044c\u043d\u043e, \u0431\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435 \u0434\u0430, <strong>\u043d\u0430<\/strong> \u043d\u0435\u0439 \u044f \u0438\u0433\u0440\u0430\u043b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0447\u0435\u043c <strong>\u0441<\/strong> \u043d\u0435\u0439. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430<\/h2>\n<p>VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0443\u0434\u0430-\u0442\u043e \u0438\u0434\u0442\u0438. \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f &#171;VR locomotion&#187;, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 &#171;<a href=\"https:\/\/youtu.be\/toXUEYjj70o?si=biyDKu5Ywdb5vEH0\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 &#8212; \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043d\u0430 180 \u0432 \u0440\u0435\u0430\u043b\u0435 \u0438 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043d\u0430 180 \u0432 \u0438\u0433\u0440\u0435<\/a>&#171;, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f <a href=\"https:\/\/www.cybershoes.com\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u043e\u0448\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u0431\u0435\u0433\u0430 \u043d\u0430 \u0441\u0442\u0443\u043b\u0435<\/a> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f VR \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0435\u0441\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/youtu.be\/gwm3tHL30OQ?si=UclgNMhahwba6Oar\" rel=\"noopener noreferrer nofollow\">HoloTile<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/news\/788188\/\" rel=\"noopener noreferrer nofollow\">Disney<\/a>, \u043b\u0438\u0431\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/www.infinadeck.com\/\" rel=\"noopener noreferrer nofollow\">Mythic Quest<\/a> \u0438\u043b\u0438 \u0432 \u0444\u043e\u0440\u043c\u0435 <a href=\"https:\/\/freeaim.com\" rel=\"noopener noreferrer nofollow\">&#171;\u043c\u043e\u0442\u043e\u0442\u0430\u043f\u043e\u043a&#187; FreeAim<\/a>. \u0414\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0430\u0439\u043d\u043e\u0441\u0442\u044c, \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0433\u0434\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u043a \u0432 \u043c\u043e\u0442\u043e\u0440\u0430\u0445 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041c\u043e\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u0438 \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0440\u044b\u043d\u043e\u043a \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 <a href=\"https:\/\/www.kat-vr.com\/products\/kat-walk-c-2-core\" rel=\"noopener noreferrer nofollow\">KAT Walk C2 \/ C2Core<\/a> \u0438&#8230; \u0412\u0441\u0451. \u041e\u0447\u0435\u043d\u044c \u0441\u043a\u043e\u0440\u043e \u0435\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/omni.virtuix.com\/\" rel=\"noopener noreferrer nofollow\">Virtuix Omni One<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c, \u043d\u043e \u0432\u0441\u0451 \u0435\u0449\u0435 \u0432\u044b\u0441\u043b\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432 \u0441\u0430\u043c\u044b\u043c \u0440\u0430\u043d\u043d\u0438\u043c \u0438\u043d\u0432\u0435\u0441\u0442\u043e\u0440\u0430\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043f\u043b\u044e\u0441\u0430\u0445 \u0438 \u043c\u0438\u043d\u0443\u0441\u0430\u0445 \u0438\u0445 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 KAT Walk C2 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<h2>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 KAT Walk C2 \/ C2Core<\/h2>\n<figure class=\"full-width\">\n<div><figcaption>\u041c\u043e\u044f KAT Walk C2+ \u0432 \u0435\u0451 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043e\u0431\u0438\u0442\u0430\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439, \u0432\u044b \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u042d\u0442\u043e \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u0432\u0430\u044f \u0447\u0430\u0448\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0431\u0430\u0440\u0430\u0445\u0442\u0430\u0442\u044c\u0441\u044f. \u041a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u043d\u0430 \u043c\u043e\u0449\u043d\u043e\u043c \u0438 \u043a\u0440\u0435\u043f\u043a\u043e\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0448\u0438\u043f\u043d\u0438\u043a\u0435 \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u043d \u0441\u0442\u043e\u043b\u0431, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u044f\u0441\u043e\u043c. \u0421\u0442\u043e\u043b\u0431 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 360 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0433\u0440\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0432 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435. \u041f\u043e\u044f\u0441 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043d\u0430 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u043c \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0438, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043d\u0438\u0437, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u0442\u044c \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c. \u0423 \u043c\u043e\u0435\u0439, C2, \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0438 \u0441 \u043c\u043e\u0438\u043c \u0440\u043e\u0441\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u0431\u043e\u0440 &#8212; \u0438\u043b\u0438 \u043f\u0440\u044b\u0436\u043a\u0438 \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u043d\u0438\u0435. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u0438\u0433\u0440\u044b &#8212; \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0443\u0433\u043b\u044b :). \u0423 \u043c\u043e\u0434\u0435\u043b\u0438 C2Core \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0434 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438 \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u043e\u0441\u0442 \u0438\u0433\u0440\u043e\u043a\u0430. \u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 &#8212; \u043d\u0430 C2 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u043d\u0430 \u043f\u043e\u044f\u0441\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u0433\u0440 &#171;\u043f\u043e\u0434 \u0432\u043e\u0434\u043e\u0439&#187;) \u043d\u0430 C2Core \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0438\u0433\u0440, \u0433\u0434\u0435 \u043c\u043d\u0435 \u0431\u044b \u044d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e.<\/p>\n<p>\u041f\u043e\u044f\u0441 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435? \u0414\u0430\u043b\u044c\u0448\u0435 &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043e\u0442\u0438\u043d\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0435\u043d\u0441\u043e\u0440\u044b. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u0438\u043d\u0435\u0440\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b, \u0432 C2\/C2Core &#8212; \u044d\u0442\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043a\u0430\u043a \u0432 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u044b\u0448\u0430\u0445. \u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u0435\u043d\u0441\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u0441\u0442\u043e\u043b\u0431 \u043f\u043e\u0437\u0430\u0434\u0438 \u0438\u0433\u0440\u043e\u043a\u0430, \u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043b\u0430.<\/p>\n<p>\u0412\u0441\u0435 \u0442\u0440\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u0437\u0430\u0440\u044f\u0434\u043a\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0442\u0440\u0438 \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u044b\u0445 \u0445\u0432\u043e\u0441\u0442\u0430. \u041d\u0430 \u043f\u043e\u043b\u043d\u043e\u043c \u0437\u0430\u0440\u044f\u0434\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438\u0433\u0440\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e 6-7 \u0447\u0430\u0441\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430\u0447\u043d\u0435\u0442 \u0442\u043e\u0448\u043d\u0438\u0442\u044c \u043e\u0442 VR \u043a\u0443\u0434\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u0443, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u0440\u044f\u0434\u0438\u0442\u0441\u044f \u0445\u0435\u0434\u0441\u0435\u0442, \u0442\u0443\u0442 \u0443\u0436 \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0437\u0451\u0442 \u0438 \u043d\u0430\u0442\u0440\u0435\u043d\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f. \u041a\u043e\u0440\u043e\u0431\u043a\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043d\u0438\u0445 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u041d\u0430 \u043a\u043e\u043c\u043f\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f &#171;KAT Gateway&#187;, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 PCVR \u0438\u0433\u0440\u044b. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Steam \u0438 Oculus \u0438\u0433\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 PC, \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u044b, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043a\u043b\u043e\u043d \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0430\u0437\u0438\u043c\u0443\u0442 \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u0430 (\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0441 \u0445\u0435\u0434\u0441\u0435\u0442\u0430) \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043b\u0430 (\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b). \u0412 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0438\u0433\u0440\u0430\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 locomotion \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430.<\/p>\n<h2>\u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0438 VR \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0438\u0433\u0440\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u043e\u0439 \u0432 \u0445\u0435\u0434\u0441\u0435\u0442\u0435, \u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u043e\u0439 \u0432 \u0432\u0435\u0441\u0442\u0438\u0431\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0435. \u041c\u043e\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 HL Alyx \u0434\u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u0433\u0434\u0435-\u0442\u043e \u0437\u0430 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e 3 \u0447\u0430\u0441\u0430 \u0438\u0433\u0440\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0434\u043a\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 20 \u043c\u0438\u043d\u0443\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u0434\u0435\u0442\u044c \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u043e\u043c \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u043e. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0442\u0435\u043c\u043d\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442&#8230; \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0448\u0430\u0433\u0430\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438.<\/p>\n<p>\u0418\u0433\u0440\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u041e\u043b\u044c\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043e 1.5-2 \u0447\u0430\u0441\u043e\u0432 \u0441\u0435\u0441\u0441\u0438\u044e, \u043d\u043e \u0432\u0441\u0451 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0433\u0440\u044b, \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e &#171;\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e&#187; \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0438\u0433\u0440\u0435. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u043e\u0442 \u0437\u0435\u043c\u043b\u0438, \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 (\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0445\u0443\u0436\u0435).<\/p>\n<p>\u041d\u0430 Quest 2 \u0435\u0449\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 120Hz \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u0441 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u043d\u0430 Quest 3 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Wifi6 \u0441\u0442\u0430\u043b\u043e \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u0432 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 PC \u0434\u043b\u044f \u0438\u0433\u0440\u044b, \u043a\u043e\u043c\u043f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c \u043a <a href=\"https:\/\/www.tp-link.com\/us\/home-networking\/range-extender\/re705x\/\" rel=\"noopener noreferrer nofollow\">TP-Link RE705X<\/a> \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0435\u043b\u044e, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u043c\u0443 Zyxel \u0432 Mesh \u0440\u0435\u0436\u0438\u043c\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043e\u043d \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c, VirtualDesktop \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b, 2404 MBps.<\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u0438 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0435\u0440, \u0431\u0435\u0437 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a\u043e\u043c\u043f&lt;=>\u0445\u0435\u0434\u0441\u0435\u0442, \u043d\u0430\u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/www.dlink.com\/en\/products\/dwa-f18-vr-air-bridge\" rel=\"noopener noreferrer nofollow\">D-Link VR Air Bridge<\/a>.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u043a \u0447\u0435\u043c\u0443 \u044f \u0432\u0435\u0434\u0443: \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044d\u0442\u043e \u043d\u0435 \u043f\u0430\u043d\u0430\u0446\u0435\u044f \u043e\u0442 \u0443\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e.<\/p>\n<h2>\u0418\u0433\u0440\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435<\/h2>\n<p>\u0421\u0430\u043c\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u044c \u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a &#171;\u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0435&#187;, \u0432\u0441\u0451 \u0436\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u0435. \u0421\u0430\u043c\u043e\u0435 \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u0442\u0430\u0449\u0438\u0442\u044c \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439 \u0442\u0435\u043b\u0435\u0433\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u043e\u0434\u0443. \u0423\u0434\u043e\u0431\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u0435\u0448\u044c\u0441\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0438 \u0442\u043e\u043b\u043a\u0430\u0435\u0448\u044c \u043d\u043e\u0433\u0430\u043c\u0438 \u043f\u043e\u0437\u0430\u0434\u0438 \u0441\u0435\u0431\u044f. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043b\u0435\u0433\u043a\u043e \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0442 \u0438 \u0432\u0435\u0441\u0442\u0438\u0431\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442 \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u0414\u043b\u044f \u0441\u0442\u0440\u0435\u0439\u0444\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0433\u043e\u0439 &#171;\u043f\u043e\u0434\u0442\u0430\u0449\u0438\u0442\u044c&#187; \u0441\u0435\u0431\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 (\u043d\u043e\u0433\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u0431\u043e\u043a\u0443 \u0438 \u0441\u043b\u0435\u0433\u043a\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0432\u0435\u0441 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u043e\u0433\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f). \u0414\u043b\u044f \u043e\u0441\u043e\u0431\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0438\u0433\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a. \u0412 PvE \u0438\u0433\u0440\u0430\u0445 \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0432 PvP \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0414\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0434\u044c\u0431\u0430, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0442\u0430\u043a\u0442\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0436\u0438\u043b\u0435\u0442\u0430 \u043f\u043e\u0442\u0435\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0447\u0435\u0440\u0435\u0437 15 \u043c\u0438\u043d\u0443\u0442 \u0438\u0433\u0440\u044b &#8212; \u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0433\u0440 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0433\u0440\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u0435\u0441\u043b\u0438 30% \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0433\u0440\u044b. \u0412 <a href=\"https:\/\/store.steampowered.com\/app\/546560\/HalfLife_Alyx\/\" rel=\"noopener noreferrer nofollow\">HL Alyx<\/a>, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043a\u043e\u0443\u043b\u043e\u043a \u0438 \u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435\u043c \u0447\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u043b\u0435\u0436\u0438\u0442, &#8212; \u043a\u0430\u043a \u0440\u0430\u0437 \u0433\u0434\u0435-\u0442\u043e \u0442\u0440\u0435\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u043e\u0433\u0430\u043c\u0438.<\/p>\n<p>\u0427\u0443\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0432 <a href=\"https:\/\/store.steampowered.com\/app\/552440\/The_Talos_Principle_VR\/\" rel=\"noopener noreferrer nofollow\">Talos Principle VR<\/a>. \u0412 \u043d\u0435\u0439 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0430 \u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u0440\u0430\u0441\u043e\u0442 (\u0447\u0442\u043e, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0433\u043b\u0443\u043f\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0433\u0440\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u0430 \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438 \u0432 \u043d\u0435\u0439), \u0442\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 50%, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, <a href=\"https:\/\/store.steampowered.com\/app\/257510\/The_Talos_Principle\/\" rel=\"noopener noreferrer nofollow\">Talos Principle<\/a> \u0431\u0435\u0437 VR \u044f \u043f\u0440\u043e\u0448\u0435\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0435\u0449\u0435 10 \u043b\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u043e).<\/p>\n<p>\u0415\u0449\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0433\u0443\u043b\u043e\u043a \u044d\u0442\u043e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/store.steampowered.com\/app\/275850\/No_Mans_Sky\/\" rel=\"noopener noreferrer nofollow\">No Man&#8217;s Sky<\/a> (\u043d\u043e \u0438\u0433\u0440\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 VR \u0438\u0433\u0440\u043e\u0439 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438 HUD\u0430 \u043a \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0438\u0440\u0430, \u0447\u0442\u043e \u043b\u043e\u043c\u0430\u0435\u0442 \u0438\u0433\u0440\u0443 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435),<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/store.steampowered.com\/agecheck\/app\/611670\/\" rel=\"noopener noreferrer nofollow\">Skyrim<\/a> (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u043f\u0430\u043a <a href=\"https:\/\/www.wabbajack.org\/modlist\/wj-featured\/fus\" rel=\"noopener noreferrer nofollow\">FUS<\/a>, \u043d\u043e \u0442\u0443\u0442 \u044f \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u043d\u0438\u043a),<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0438 \u0432 discord \u0434\u043b\u044f \u0438\u0433\u0440\u044b Borderlands 2 VR, \u043d\u043e \u0432 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043a\u043e\u0433\u0434\u0430 \u0446\u0435\u043b\u044c &#8212; \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u0430\u0443\u0437 \u043d\u0430 \u0431\u0438\u0442\u0432\u044b \u043c\u0435\u043d\u044c\u0448\u0435, \u043d\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u043d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0438\u0433\u0440\u044b \u0442\u0438\u043f\u0430 Pavlov, Zero Caliber, Contractors &#8212; \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0448\u0443\u0442\u0435\u0440\u043e\u0432 \u0432 PvP \u0438 PvE. \u0412\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0441\u043a\u0438\u043b\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0433\u0440\u043e\u043a\u0438 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u044e\u0442.<\/p>\n<p><a href=\"https:\/\/www.kat-vr.com\/pages\/all-gamelist\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0433\u0440<\/a> \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043d\u0435 \u043f\u043e\u043b\u043e\u043d, \u0435\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u044b \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0435\u0441\u0442\u044c VR Mod. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, <a href=\"https:\/\/store.steampowered.com\/app\/383870\/Firewatch\/\" rel=\"noopener noreferrer nofollow\">Firewatch<\/a> (c <a href=\"https:\/\/github.com\/Raicuparta\/two-forks-vr\" rel=\"noopener noreferrer nofollow\">VR \u043c\u043e\u0434\u043e\u043c<\/a>) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0438 \u0434\u0430\u0451\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 &#8212; \u0441 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u0443\u043b\u043a\u0438.<\/p>\n<h2>\u0418\u0433\u0440\u044b \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/h2>\n<p>\u041d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0451 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u0435\u043d\u044c\u043a\u043e\u0435 &#8212; \u0441\u043a\u0443\u0447\u043d\u043e. \u041d\u0430\u0434\u043e \u0436\u0435 \u0447\u0435\u043c-\u0442\u043e \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u044c\u0441\u044f, \u043f\u043e\u043a\u0430 \u0445\u0435\u0434\u0441\u0435\u0442 \u0437\u0430\u0440\u044f\u0436\u0430\u0435\u0442\u0441\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c \u0441 SDK \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>SDK \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 <a href=\"https:\/\/drive.google.com\/drive\/folders\/1K_0q1YWth80dl7g8LF57xoSN1YndUvM-\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u043c\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430<\/a>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043b\u0435\u0436\u0430\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a Unreal, Unity, \u0430\u0441\u0441\u0435\u0442\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0432\u0435\u0449\u0438, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0433\u0440. \u042f \u0438\u0433\u0440\u044b \u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e, \u044f \u0432 \u043d\u0438\u0445 \u0438\u0433\u0440\u0430\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435, \u0432 <code>KATVRUniversalSDK\/Source\/KATVRUniversalSDK<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442 <code>KATNativeSDK.dll<\/code>.<\/p>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 <code>KATSDKWarpper.h<\/code> \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e:<\/p>\n<ul>\n<li>\n<p><code>int DeviceCount()<\/code> &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p><code>KATDeviceDesc GetDevicesDesc(unsigned index)<\/code> &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0437\u0430 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0442\u0430\u043a\u0438\u043c-\u0442\u043e. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, VID\/PID \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e USB \u0445\u0432\u043e\u0441\u0442\u0430 \u0438 &#171;\u0442\u0438\u043f&#187; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p><code>KATTreadMillMemoryData GetWalkStatus(const char* sn)<\/code> &#8212; \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u043f\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0451 \u043f\u0440\u043e\u0447\u0435\u0435 \u043d\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432 <code>GetWalkStatus<\/code>:<\/p>\n<pre><code class=\"cpp\">struct DeviceData {     bool    btnPressed;     bool    isBatteryCharging;     float   batteryLevel;     char    firmwareVersion; };  struct TreadMillData {     char         deviceName[64];     bool         connected;     double       lastUpdateTimePoint;     Quaternion   bodyRotationRaw;     Vector3      moveSpeed; };  struct KATTreadMillMemoryData {     TreadMillData treadMillData;     DeviceData    deviceDatas[3];     char          extraData[128]; };<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435, \u043f\u043e \u0441\u0443\u0442\u0438, \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u0432\u0430\u0442\u0435\u0440\u043d\u0438\u043e\u043d\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e-\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043c\u0430\u043b\u043e, \u0430 \u0433\u0434\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043d\u043e\u0433 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438? \u0413\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u0430? Gateway \u0436\u0435 \u0440\u0438\u0441\u0443\u0435\u0442 \u0438\u0445:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0438\u0445 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c. \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c? \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c (\u043d\u0443, \u043d\u0435 \u0431\u0435\u0437 <code>KATNativeSDK.dll<\/code>, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043f\u043e\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435).<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0441\u0442\u0443\u0434\u0438\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u0442\u0430\u0449\u0438\u043c \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043d\u0438\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, (\u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c <code>#pragma pack(push,1)<\/code>\/ <code>#pragma pack(pop)<\/code>, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f), \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">using deviceCountFunc = int(void); using getDevicesDescFunc = KATDeviceDesc(unsigned); using getWalkStatusFunc = KATTreadMillMemoryData(const char*);  const char* const sKatDeviceType(int deviceType) {     switch (deviceType) {     case 0: return \"ERR\";     case 1: return \"Treadmil\";     case 2: return \"Tracker\";     default: return \"?\";     } }<\/code><\/pre>\n<p>\u0418 \u043d\u0430\u043a\u0438\u0434\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u0447\u0438\u043a:<\/p>\n<pre><code class=\"cpp\">int main() {     HMODULE hKatDll = LoadLibraryW(L\"KATNativeSDK.dll\");     if (!hKatDll || hKatDll ==<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-369930","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/369930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=369930"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/369930\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=369930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=369930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=369930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}