E pili ana i ka hoʻohālike pūnaewele i nā pāʻani no ka poʻe hoʻomaka

E pili ana i ka hoʻohālike pūnaewele i nā pāʻani no ka poʻe hoʻomaka
No nā pule ʻelua i hala iho nei ua hana au ma ka ʻenekini pūnaewele no kaʻu pāʻani. Ma mua o kēia, ʻaʻohe oʻu ʻike iki e pili ana i ka ʻupena ma nā pāʻani, no laila ua heluhelu au i nā ʻatikala he nui a ua nui nā hoʻokolohua e hoʻomaopopo i nā manaʻo āpau a hiki ke kākau i kaʻu mīkini pūnaewele ponoʻī.

Ma kēia alakaʻi, makemake wau e kaʻana like me ʻoe i nā manaʻo like ʻole āu e aʻo ai ma mua o ka kākau ʻana i kāu mīkini pāʻani ponoʻī, a me nā kumuwaiwai maikaʻi loa a me nā ʻatikala e aʻo ai iā lākou.

Ma keʻano laulā, ʻelua mau ʻano nui o ka hoʻolālā pūnaewele: peer-to-peer a me client-server. I loko o kahi hoʻolālā peer-to-peer (p2p), hoʻoili ʻia ka ʻikepili ma waena o nā mea pāʻani i hoʻopili ʻia, ʻoiai ma ka hale hoʻolālā client-server, hoʻoili ʻia ka ʻikepili ma waena o nā mea pāʻani a me ke kikowaena.

ʻOiai ke hoʻohana mau ʻia nei ka hoʻolālā peer-to-peer i kekahi mau pāʻani, ʻo ka mea kūʻai aku ka mea maʻamau: ʻoi aku ka maʻalahi o ka hoʻokō ʻana, koi ʻia kahi ākea liʻiliʻi a me ka maʻalahi o ka pale ʻana i ka hoʻopunipuni. No laila, i loko o kēia kumu aʻoaʻo mākou e kālele ana i ka hoʻolālā client-server.

ʻO ka mea nui, makemake nui mākou i nā kikowaena authoritarian: ma ia ʻōnaehana, pololei mau ke kikowaena. No ka laʻana, inā manaʻo ka mea pāʻani aia ʻo ia ma nā hoʻonohonoho (10, 5), a haʻi ke kikowaena iā ia aia ʻo ia ma (5, 3), a laila pono ka mea kūʻai aku e hoʻololi i kona kūlana me ka mea i hōʻike ʻia e ke kikowaena, ʻaʻole ka vice. hoʻololi. ʻO ka hoʻohana ʻana i nā kikowaena mana e maʻalahi ka ʻike ʻana i nā mea hoʻopunipuni.

ʻEkolu mau mea nui nā ʻōnaehana pāʻani pūnaewele:

  • ʻO ka protocol transport: pehea e hoʻoili ʻia ai ka ʻikepili ma waena o nā mea kūʻai aku a me ke kikowaena.
  • ʻO ka protocol noi: ka mea i hoʻouna ʻia mai nā mea kūʻai aku i ke kikowaena a mai ke kikowaena i nā mea kūʻai aku a ma ke ʻano he aha.
  • Loko noi: pehea e hoʻohana ʻia ai ka ʻikepili i hoʻoili ʻia e hoʻohou i ke kūlana o nā mea kūʻai aku a me ke kikowaena.

He mea nui e hoʻomaopopo i ke kuleana o kēlā me kēia māhele a me nā pilikia e pili ana iā lākou.

Kaʻa kaʻa

ʻO ka hana mua e koho i kahi protocol no ka lawe ʻana i ka ʻikepili ma waena o ke kikowaena a me nā mea kūʻai aku. ʻElua mau protocol Internet no kēia: TCP и UDP. Akā hiki iā ʻoe ke hana i kāu protocol transport e pili ana i kekahi o lākou a i ʻole e hoʻohana i kahi waihona e hoʻohana ana iā lākou.

Hoʻohālikelike o TCP a me UDP

Hoʻokumu ʻia ka TCP a me ka UDP IP. Hiki i ka IP ke hoʻouna ʻia kahi ʻeke mai kahi kumu i ka mea loaʻa, akā ʻaʻole ia e hōʻoiaʻiʻo e hiki koke ka ʻeke i hoʻouna ʻia i ka mea i loaʻa, e hōʻea ʻo ia i hoʻokahi manawa, a e hōʻea mai ke kaʻina o nā ʻeke i ka pololei. kauoha. Eia kekahi, hiki i kahi ʻeke ke loaʻa i kahi helu palena wale nō, hāʻawi ʻia e ka waiwai KANAKA.

ʻO ka UDP kahi ʻāpana lahilahi ma luna o IP. No laila, loaʻa nā palena like. ʻO ka hoʻohālikelike, he nui nā hiʻohiʻona o TCP. Hāʻawi ia i kahi pilina hilinaʻi a hoʻonohonoho pono ma waena o nā node ʻelua me ka nānā hewa. No laila, ʻoluʻolu loa ʻo TCP a hoʻohana ʻia i nā protocols ʻē aʻe, e.g. HTTP, FTP и SMTP. Akā, hiki mai kēia mau hi'ohi'ona a pau i ke kumu kū'ai: hoʻolohi.

No ka hoʻomaopopo ʻana i ke kumu e hiki ai i kēia mau hana ke hana i ka latency, pono mākou e hoʻomaopopo i ka hana ʻana o TCP. Ke hoʻouna ka node hoʻouna i kahi ʻeke i kahi node e loaʻa ana, manaʻo ia e loaʻa kahi hōʻoia (ACK). Inā ma hope o kekahi manawa ʻaʻole i loaʻa iā ia (no ka mea ua nalowale ka ʻeke a i ʻole ka hōʻoia ʻana, a no kekahi kumu ʻē aʻe), a laila hoʻouna hou ʻo ia i ka ʻeke. Eia kekahi, hōʻoiaʻiʻo ʻo TCP i ka loaʻa ʻana o nā ʻeke ma ke ʻano kūpono, no laila a hiki i ka loaʻa ʻana o ka ʻeke i nalowale, ʻaʻole hiki ke hana ʻia nā ʻeke ʻē aʻe a pau, ʻoiai inā ua loaʻa mua lākou e ka mea hoʻokipa.

Akā e like me kāu e noʻonoʻo ai, he mea koʻikoʻi ka latency i nā pāʻani Multiplayer, ʻoi aku hoʻi i nā ʻano hana e like me FPS. ʻO kēia ke kumu e hoʻohana ai nā pāʻani he UDP me kā lākou protocol ponoʻī.

Hiki ke ʻoi aku ka maikaʻi o kahi protocol e pili ana i ka UDP ma mua o TCP no nā kumu like ʻole. No ka laʻana, hiki iā ia ke hōʻailona i kekahi mau ʻeke i hilinaʻi ʻia a ʻo nā mea ʻē aʻe he hilinaʻi ʻole. No laila, ʻaʻole ia e mālama inā hiki i ka ʻeke hilinaʻi ʻole i ka mea loaʻa. A i ʻole hiki iā ia ke hana i nā kahawai ʻikepili he nui i ʻole e hoʻolōʻihi ka ʻeke nalowale i hoʻokahi kahawai i nā kahawai i koe. No ka laʻana, aia paha kahi pae no ka hoʻokomo ʻana i ka mea pāʻani a me kahi pae ʻē aʻe no nā memo kamaʻilio. Inā nalowale kahi memo kamaʻilio ʻaʻole koʻikoʻi, ʻaʻole ia e hoʻolohi i ka hoʻokomo ʻana i ka wikiwiki. A i ʻole kahi protocol proprietary e hoʻokō ʻokoʻa i ka hilinaʻi ma mua o ka TCP i ʻoi aku ka maikaʻi ma kahi pāʻani wikiō.

No laila, inā ʻeha nui ʻo TCP, a laila e hana mākou i kā mākou protocol transport e pili ana i ka UDP?

He mea paʻakikī iki. ʻOiai ʻo TCP ka mea ʻoi loa no nā ʻōnaehana pūnaewele pāʻani, hiki ke hana maikaʻi no kāu pāʻani kikoʻī a mālama iā ʻoe i ka manawa waiwai. No ka laʻana, ʻaʻole paha he pilikia ka latency no ka pāʻani huli a i ʻole ka pāʻani hiki ke pāʻani wale ʻia ma nā pūnaewele LAN, kahi haʻahaʻa haʻahaʻa loa ka latency a me ka poho ma mua o ka Pūnaewele.

Nui nā pāʻani kūleʻa, me ka World of Warcraft, Minecraft a me Terraria, e hoʻohana iā TCP. Eia nō naʻe, hoʻohana ka hapa nui o nā FPS i kā lākou mau protocol e pili ana i ka UDP, no laila e kamaʻilio hou mākou e pili ana iā lākou ma lalo nei.

Inā hoʻoholo ʻoe e hoʻohana i ka TCP, e hōʻoia ua pio ia ʻO ka algorithm a Nagle, no ka mea, hoʻopaʻa ʻo ia i nā ʻeke ma mua o ka hoʻouna ʻana, ʻo ia ka mea e hoʻonui ai i ka latency.

No ka ʻike hou aku e pili ana i nā ʻokoʻa ma waena o UDP a me TCP i ka pōʻaiapili o nā pāʻani multiplayer, hiki iā ʻoe ke heluhelu i ka ʻatikala a Glenn Fiedler. UDP vs. TCP.

Kūlana ponoʻī

No laila makemake ʻoe e hana i kāu protocol transport ponoʻī, akā ʻaʻole ʻike i kahi e hoʻomaka ai? Laki ʻoe no ka mea ua kākau ʻo Glenn Fiedler i ʻelua mau ʻatikala kupaianaha e pili ana i kēia. E ʻike ʻoe i nā manaʻo akamai he nui i loko o lākou.

ʻO ka ʻatikala mua ʻO ka pūnaewele no nā mea papahana pāʻani 2008, maʻalahi ma mua o ka lua, Ke kūkulu ʻana i kahi Pūnaehana Pūnaewele Pāʻani 2016. Paipai au iā ʻoe e hoʻomaka me ka mea kahiko.

E hoʻomaopopo ʻo Glenn Fiedler he mea kākoʻo nui i ka hoʻohana ʻana i kahi protocol maʻamau e pili ana i ka UDP. A ma hope o ka heluhelu ʻana i kāna mau ʻatikala, e ʻae paha ʻoe i kona manaʻo he mau hemahema koʻikoʻi ko TCP i nā pāʻani wikiō, a makemake ʻoe e hoʻokō i kāu protocol ponoʻī.

Akā inā he mea hou ʻoe i ka pūnaewele, e hoʻohana iā TCP a i ʻole kahi waihona. No ka hoʻokō pono ʻana i kāu protocol transport ponoʻī, pono ʻoe e aʻo nui ma mua.

Nā waihona waihona pūnaewele

Inā makemake ʻoe i kahi mea ʻoi aku ka maikaʻi ma mua o TCP, akā ʻaʻole makemake ʻoe e hele i ka pilikia o ka hoʻokō ʻana i kāu protocol ponoʻī a hele i nā kikoʻī he nui, hiki iā ʻoe ke hoʻohana i kahi waihona pūnaewele. Nui lākou:

ʻAʻole au i hoʻāʻo iā lākou a pau, akā makemake wau iā ENet no ka mea maʻalahi ia e hoʻohana a hilinaʻi. Eia kekahi, loaʻa iā ia nā palapala aʻoaʻo a me kahi aʻo no ka poʻe hoʻomaka.

Kaʻina Kaʻahele: Ka hopena

No ka hōʻuluʻulu ʻana: ʻelua mau kaʻa kaʻa nui: TCP a me UDP. He nui nā hiʻohiʻona pono o ka TCP: hilinaʻi, mālama ʻia i ka packet order, ʻike hewa. ʻAʻole loaʻa iā UDP kēia mau mea a pau, akā ʻo TCP ma kona ʻano ua hoʻonui i ka latency, ʻaʻole i ʻae ʻia no kekahi mau pāʻani. ʻO ia hoʻi, e hōʻoia i ka latency haʻahaʻa, hiki iā ʻoe ke hana i kāu protocol ponoʻī e pili ana i ka UDP a i ʻole e hoʻohana i kahi waihona e hoʻokō i kahi protocol transport ma UDP a hoʻololi ʻia no nā pāʻani wikiō multiplayer.

ʻO ke koho ma waena o TCP, UDP a me ka waihona e pili ana i nā kumu he nui. ʻO ka mea mua, mai nā pono o ka pāʻani: pono anei ka latency haʻahaʻa? ʻO ka lua, mai nā koi protocol noi: pono anei i kahi protocol hilinaʻi? E like me kā mākou e ʻike ai ma ka ʻāpana aʻe, hiki ke hana i kahi protocol noi no kahi protocol hilinaʻi ʻole i kūpono. ʻO ka hope, pono ʻoe e noʻonoʻo i ka ʻike o ka mea hoʻomohala pūnaewele.

ʻElua aʻu ʻōlelo aʻo:

  • E hoʻokaʻawale i ka protocol transport mai ke koena o ka noi i hiki ke hoʻololi maʻalahi me ka kākau ʻole ʻana i nā code āpau.
  • Mai hoʻonui nui. Inā ʻaʻole ʻoe he loea pūnaewele a ʻaʻole maopopo ʻoe inā makemake ʻoe i kahi protocol transport e pili ana i ka UDP maʻamau, hiki iā ʻoe ke hoʻomaka me TCP a i ʻole kahi waihona e hāʻawi ana i ka hilinaʻi, a laila e hoʻāʻo a ana i ka hana. Inā kū mai nā pilikia a ke hilinaʻi nei ʻoe ʻo ka protocol transport ke kumu, a laila hiki i ka manawa ke hana i kāu protocol transport ponoʻī.

Ma ka hopena o kēia ʻāpana, paipai wau iā ʻoe e heluhelu Introduction to Multiplayer Game Programming na Brian Hook, e uhi ana i na kumuhana he nui i kamailioia maanei.

Palapala noi

I kēia manawa hiki iā mākou ke hoʻololi i ka ʻikepili ma waena o nā mea kūʻai aku a me ke kikowaena, pono mākou e hoʻoholo i ka ʻikepili e hoʻoili ai a i ke ʻano o ke ʻano.

ʻO ka papahana maʻamau, ʻo ka hoʻouna ʻana o nā mea kūʻai aku i ka hoʻokomo a i ʻole nā ​​​​hana i ke kikowaena, a hoʻouna ke kikowaena i ke kūlana pāʻani o kēia manawa i nā mea kūʻai aku.

ʻAʻole hoʻouna ke kikowaena i ka moku'āina piha, akā he moku'āina kānana me nā hui e kū kokoke ana i ka mea pāʻani. Hana ʻo ia i kēia no ʻekolu kumu. ʻO ka mea mua, ʻoi aku ka nui o ka mokuʻāina piha i hiki ke hoʻouna ʻia i ke alapine kiʻekiʻe. ʻO ka lua, makemake nui nā mea kūʻai aku i ka ʻikepili ʻike a me ka leo, no ka mea, ua hoʻohālikelike ʻia ka hapa nui o ka loiloi pāʻani ma ke kikowaena pāʻani. ʻO ke kolu, i kekahi mau pāʻani, ʻaʻole pono ka mea pāʻani e ʻike i kekahi mau ʻikepili, no ka laʻana, ke kūlana o ka ʻenemi ma kēlā ʻaoʻao o ka palapala ʻāina, inā ʻaʻole hiki iā ia ke honi i nā ʻeke a ʻike pono i kahi e neʻe ai e pepehi iā ia.

Serialization

ʻO ka hana mua, ʻo ia ka hoʻololi ʻana i ka ʻikepili a mākou e makemake ai e hoʻouna (input or game state) i kahi ʻano kūpono no ka hoʻouna ʻana. Kapa ʻia kēia hana hoʻolāʻau.

ʻO ka manaʻo e hiki koke mai ana i ka naʻau, ʻo ia ka hoʻohana ʻana i kahi palapala hiki ke heluhelu ʻia e ke kanaka, e like me JSON a i ʻole XML. Akā ʻaʻole pono kēia a hoʻopau i ka hapa nui o ke kahawai.

Manaʻo ʻia e hoʻohana i ka format binary ma kahi, ʻoi aku ka paʻakikī. ʻO ia hoʻi, he mau bytes wale nō nā packets. Aia kahi pilikia e noʻonoʻo ai ma ʻaneʻi kauoha byte, ʻokoʻa paha ma nā kamepiula like ʻole.

No ka hoʻopili ʻana i ka ʻikepili hiki iā ʻoe ke hoʻohana i kahi waihona, no ka laʻana:

E hōʻoia wale i ka hana ʻana o ka waihona i nā waihona lawe lima a mālama i ka endianness.

ʻO kahi hopena ʻē aʻe ʻo ka hoʻokō ʻana iā ʻoe iho; ʻaʻole paʻakikī loa, ʻoiai inā ʻoe e hoʻohana i kahi ʻano data-centric i kāu code. Eia kekahi, e ʻae iā ʻoe e hana i nā optimizations ʻaʻole hiki ke hoʻohana i ka waihona.

Ua kākau ʻo Glenn Fiedler i ʻelua ʻatikala e pili ana i ka serialization: Heluhelu a me ke kakau palapala и Hoʻolālā Serialization.

Kaohi ʻana

ʻO ka nui o ka ʻikepili i hoʻoili ʻia ma waena o nā mea kūʻai aku a me ke kikowaena ua kaupalena ʻia e ka bandwidth o ke kahawai. Hiki iā ʻoe ke hoʻololi i nā ʻikepili hou aʻe i kēlā me kēia kiʻi, hoʻonui i ka pinepine o ka hoʻonui ʻana, a i ʻole e hōʻemi wale i nā koi o ke kahawai.

Puke bit

ʻO ka ʻenehana mua ʻo ia ka paʻi liʻiliʻi. Aia ia me ka hoʻohana pono ʻana i ka helu o nā bits e pono ai e wehewehe i ka waiwai i makemake ʻia. No ka laʻana, inā loaʻa iā ʻoe kahi enum hiki ke loaʻa i nā waiwai like ʻole he 16, a laila ma kahi o ka byte holoʻokoʻa (8 bits), hiki iā ʻoe ke hoʻohana i 4 bits wale nō.

Ua wehewehe ʻo Glenn Fiedler pehea e hoʻokō ai i kēia ma ka ʻāpana ʻelua o ka ʻatikala Heluhelu a me ke kakau palapala.

Hoʻohana maikaʻi loa ka paʻi bit me ka laʻana, ʻo ia ke kumuhana o ka ʻāpana aʻe.

Laʻana

Laʻana ʻO kahi ʻenehana hoʻoemi nalowale e hoʻohana wale ana i kahi ʻāpana o nā waiwai hiki ke hoʻopili i kahi waiwai. ʻO ke ala maʻalahi loa e hoʻokō i ka discretization ma ka hoʻopuni ʻana i nā helu lana.

Hōʻike ʻo Glenn Fiedler (hou!) i ka hoʻomaʻamaʻa ʻana i ka laʻana ma kāna ʻatikala Paʻi Kiʻi Kiʻi.

Nā algorithms kaomi

ʻO ka ʻenehana hou aʻe, ʻo ia nā algorithms compression lossless.

Eia, i koʻu manaʻo, ʻekolu mau algorithms hoihoi loa āu e ʻike ai:

  • Huffman coding me ke code pre-computed, he wikiwiki loa a hiki ke hoʻopuka i nā hopena maikaʻi. Ua hoʻohana ʻia ia e hoʻopaʻa i nā ʻeke ma ka ʻenekini pūnaewele Quake3.
  • zlib he algorithm hoʻoemi kumu nui ʻaʻole e hoʻonui i ka nui o ka ʻikepili. Pehea ʻoe e ʻike ai maanei, ua hoʻohana ʻia i nā ʻano hana like ʻole. He mea hou paha ia no ka hoʻonui ʻana i nā mokuʻāina. Akā hiki ke kōkua inā pono ʻoe e hoʻouna i nā waiwai, nā kikokikona lōʻihi a i ʻole ka ʻāina i nā mea kūʻai mai ke kikowaena.
  • Ke kope ʻana i nā lōʻihi holo - ʻO kēia paha ka algorithm compression maʻalahi, akā maikaʻi loa ia no kekahi mau ʻano o ka ʻikepili, a hiki ke hoʻohana ʻia ma ke ʻano he kaʻina hana mua ma mua o zlib. He kūpono ia no ka hoʻopili ʻana i ka ʻāina i haku ʻia me nā tile a i ʻole nā ​​voxels kahi e hoʻihoʻi hou ʻia ai nā mea pili.

Hoʻopiʻi Delta

ʻO ka ʻenehana hoʻoemi hope loa ʻo ka delta compression. Aia i loko o ka ʻoiaʻiʻo e hoʻouna wale ʻia nā ʻokoʻa ma waena o ke kūlana pāʻani o kēia manawa a me ka mokuʻāina hope loa i loaʻa e ka mea kūʻai aku.

Ua hoʻohana mua ʻia ma ka ʻenekini pūnaewele Quake3. Eia ʻelua ʻatikala e wehewehe ana pehea e hoʻohana ai:

Ua hoʻohana pū ʻo Glenn Fiedler iā ia ma ka ʻāpana ʻelua o kāna ʻatikala Paʻi Kiʻi Kiʻi.

Hoʻopāʻālua

Eia hou, pono ʻoe e hoʻopili i ka hoʻoili ʻana o ka ʻike ma waena o nā mea kūʻai aku a me ke kikowaena. Nui nā kumu no kēia:

  • pilikino / hūnā: hiki ke heluhelu wale ʻia nā memo e ka mea i loaʻa, a ʻaʻohe mea ʻē aʻe e honi ana i ka pūnaewele e hiki ke heluhelu iā lākou.
  • hōʻoia: pono e ʻike ke kanaka makemake e pāʻani i kāna kī.
  • Ka pale ʻana i ka hoʻopunipuni: E ʻoi aku ka paʻakikī o nā mea pāʻani ʻino e hana i kā lākou mau pūʻulu hoʻopunipuni ponoʻī, pono lākou e hana hou i ka ʻōnaehana hoʻopunipuni a loaʻa ke kī (e hoʻololi me kēlā me kēia pili).

Paipai ikaika wau e hoʻohana i kahi waihona no kēia. Manaʻo wau e hoʻohana lisodium, no ka mea, he maʻalahi loa ia a he mau haʻawina maikaʻi loa. ʻOi aku ka hoihoi i ke kumu aʻo ma hoʻololi kī, hiki iā ʻoe ke hana i nā kī hou me kēlā me kēia pili hou.

Kaʻina noi: Hoʻopau

Hoʻopau kēia i kā mākou protocol noi. Ke manaʻoʻiʻo nei au he koho loa ka hoʻopaʻa ʻana a ʻo ka hoʻoholo e hoʻohana iā ia e hilinaʻi wale nō i ka pāʻani a me ka bandwidth i koi ʻia. ʻO ka hoʻopunipuni, i koʻu manaʻo, he koi, akā i ka prototype mua hiki iā ʻoe ke hana me ka ʻole.

Loko noi

Hiki iā mākou ke hōʻano hou i ka mokuʻāina i ka mea kūʻai aku, akā hiki ke holo i nā pilikia latency. ʻO ka mea pāʻani, ma hope o ka hoʻopau ʻana i ka hoʻokomo, pono e kali i ka mokuʻāina o ka pāʻani e hōʻano hou mai ka kikowaena e ʻike i ka hopena o ka honua.

Eia kekahi, ma waena o ʻelua mau hoʻolaha mokuʻāina, paʻa loa ka honua. Inā haʻahaʻa ka helu hoʻonui mokuʻāina, a laila e haʻalulu loa nā neʻe.

Nui nā ʻenehana e hōʻemi i ka hopena o kēia pilikia, a e uhi wau iā lākou ma ka ʻāpana aʻe.

Nā Hana Hoʻomaʻamaʻa Latency

Kūkākūkā ʻia nā ʻenehana a pau i wehewehe ʻia ma kēia ʻāpana ma ka moʻo Mea pāʻani pāʻani wikiwiki Gabriel Gambetta. Manaʻo nui wau e heluhelu i kēia pūʻulu ʻatikala maikaʻi loa. Aia pū kekahi demo interactive e hiki ai iā ʻoe ke ʻike pehea e hana ai kēia mau ʻenehana i ka hana.

ʻO ka ʻenehana mua e hoʻopili pololei i ka hopena hoʻokomo me ke kali ʻole i ka pane mai ka kikowaena. Ua kapa ʻia wānana ʻaoʻao kūʻai. Eia naʻe, ke loaʻa ka mea kūʻai i kahi mea hou mai ke kikowaena, pono ia e hōʻoia i ka pololei o kāna wānana. Inā ʻaʻole kēia ka hihia, a laila pono ʻo ia e hoʻololi i kona mokuʻāina e like me ka mea i loaʻa iā ia mai ke kikowaena, no ka mea he mana ke kikowaena. Ua hoʻohana mua ʻia kēia ʻenehana ma Quake. Hiki iā ʻoe ke heluhelu hou aku e pili ana iā ia ma ka ʻatikala ʻO ka loiloi helu Quake Engine Fabien Sanglars [unuhi ʻōlelo ma Habré].

Hoʻohana ʻia ka lua o nā ʻenehana e hoʻomaʻamaʻa i ka neʻe ʻana o nā mea ʻē aʻe ma waena o ʻelua mau hoʻolaha mokuʻāina. ʻElua ala e hoʻoponopono ai i kēia pilikia: interpolation a extrapolation. I ka hihia o ka interpolation, lawe ʻia nā mokuʻāina hope ʻelua a hōʻike ʻia ka hoʻololi ʻana mai kekahi a i kekahi. ʻO kona hemahema, ʻo ia ke kumu o ka lohi liʻiliʻi no ka mea ʻike mau ka mea kūʻai aku i nā mea i hala. ʻO ka Extrapolation e pili ana i ka wānana i kahi e hoʻokumu ʻia ai nā hui i ka mokuʻāina hope loa i loaʻa e ka mea kūʻai. ʻO kona hemahema inā hoʻololi loa ka hui i ke ala o ka neʻe ʻana, a laila e nui ka hewa ma waena o ka wānana a me ke kūlana maoli.

ʻO ka ʻenehana hou loa, ʻoi aku ka maikaʻi ma FPS wale nō lag uku. I ka hoʻohana ʻana i ka uku lag, e noʻonoʻo ke kikowaena i nā lohi o ka mea kūʻai aku ke pana ʻo ia i ka pahu hopu. No ka laʻana, inā hoʻokani ka mea pāʻani i kahi kiʻi poʻo ma ko lākou pale, akā ʻo ka ʻoiaʻiʻo, aia kā lākou pahuhopu ma kahi wahi ʻē aʻe ma muli o ka lohi, a laila ʻaʻole kūpono ke hōʻole i ka mea pāʻani i ke kuleana e pepehi ma muli o ka lohi. No laila, hoʻihoʻi ke kikowaena i ka manawa i ka manawa i kī ai ka mea pāʻani e hoʻohālike i ka mea a ka mea pāʻani i ʻike ai ma kā lākou pale a nānā i ka hui ʻana ma waena o kā lākou pana a me ka pahuhopu.

Ua kākau ʻo Glenn Fiedler (e like me nā manawa mau!) i kahi ʻatikala ma 2004 ʻIkepili Pūnaewele (2004), kahi āna i hoʻokumu ai i ke kumu no ka synchronizing physics simulations ma waena o ke kikowaena a me ka mea kūʻai aku. I ka makahiki 2014, ua kākau ʻo ia i nā ʻatikala hou Pilikino Pūnaewele, ka mea i wehewehe i nā ʻenehana ʻē aʻe no ka hoʻonohonoho ʻana i nā hoʻohālikelike physics.

Aia nō ʻelua ʻatikala ma ka wiki Valve, Pūnaehana Pūnaewele Multiplayer и Nā Kaʻina Hana Hoʻopaʻi Latency ma ka Hoʻolālā a me ka Hoʻolālā Kūʻai Kūʻai Kūʻai/Server In-game Protocol e noʻonoʻo ana i ka uku no ka lohi.

Kāohi ʻana i ka hoʻopunipuni

ʻElua mau hana nui no ka pale ʻana i ka hoʻopunipuni.

ʻO ka mea mua: ʻoi aku ka paʻakikī o ka poʻe hoʻopunipuni e hoʻouna i nā ʻeke ʻino. E like me ka mea i ʻōlelo ʻia ma luna, ʻo kahi ala maikaʻi e hoʻokō ai i kēia ʻo ka encryption.

ʻO ka lua: pono e loaʻa i kahi kikowaena mana nā kauoha / hoʻokomo / hana. ʻAʻole hiki i ka mea kūʻai ke hoʻololi i ka mokuʻāina ma ke kikowaena ʻē aʻe ma ka hoʻouna ʻana i ka hoʻokomo. A laila, i kēlā me kēia manawa e loaʻa ai i ka server ka hoʻokomo, pono e nānā inā he kūpono ia ma mua o ka hoʻohana ʻana.

Loko noi: hopena

Manaʻo wau e hoʻokō ʻoe i kahi ala e hoʻohālikelike ai i nā latencies kiʻekiʻe a me nā helu hoʻomaha haʻahaʻa i hiki iā ʻoe ke hoʻāʻo i ke ʻano o kāu pāʻani i nā kūlana maikaʻi ʻole, ʻoiai ke holo nei ka mea kūʻai aku a me ke kikowaena ma ka kamepiula like. E maʻalahi loa kēia i ka hoʻokō ʻana i nā ʻenehana hoʻopaneʻe lohi.

Nā kumuwaiwai kōkua ʻē aʻe

Inā makemake ʻoe e ʻimi i nā kumuwaiwai ʻē aʻe ma nā hiʻohiʻona pūnaewele, hiki iā ʻoe ke loaʻa iā lākou ma aneʻi:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka