Giunsa namo paghimo ang mga mekaniko sa pagkalkula sa ballistic alang sa usa ka mobile shooter nga adunay usa ka network delay compensation algorithm

Giunsa namo paghimo ang mga mekaniko sa pagkalkula sa ballistic alang sa usa ka mobile shooter nga adunay usa ka network delay compensation algorithm

Kumusta, ako si Nikita Brizhak, usa ka developer sa server gikan sa Pixonic. Karon gusto nakong hisgutan ang bahin sa pagbayad sa lag sa mobile multiplayer.

Daghang mga artikulo ang gisulat bahin sa bayad sa server lag, lakip ang Russian. Dili kini katingad-an, tungod kay kini nga teknolohiya aktibo nga gigamit sa paghimo sa Multiplayer FPS sukad sa ulahing bahin sa 90s. Pananglitan, mahinumduman nimo ang QuakeWorld mod, nga usa sa mga una nga migamit niini.

Gigamit usab namo kini sa among mobile multiplayer shooter nga Dino Squad.

Niini nga artikulo, ang akong tumong dili ang pagsubli sa nasulat na sa usa ka libo ka beses, apan sa pagsulti kung giunsa namo pagpatuman ang lag compensation sa among dula, nga gikonsiderar ang among teknolohiya nga stack ug core gameplay features.

Pipila ka mga pulong mahitungod sa atong cortex ug teknolohiya.

Ang Dino Squad usa ka network mobile PvP shooter. Gikontrol sa mga magdudula ang mga dinosaur nga adunay lainlaing mga hinagiban ug nakig-away sa usag usa sa 6v6 nga mga koponan.

Ang kliyente ug ang server gibase sa Unity. Ang arkitektura medyo klasiko alang sa mga shooters: ang server awtoritarian, ug ang panagna sa kliyente molihok sa mga kliyente. Ang simulation sa dula gisulat gamit ang in-house nga ECS ug gigamit sa server ug kliyente.

Kung kini ang unang higayon nga nakadungog ka bahin sa lag compensation, ania ang usa ka mubo nga ekskursiyon sa isyu.

Sa Multiplayer nga FPS nga mga dula, ang duwa kasagaran gi-simulate sa usa ka hilit nga server. Ang mga magdudula nagpadala sa ilang input (impormasyon bahin sa mga yawe nga gipugos) sa server, ug agig tubag ang server nagpadala kanila usa ka gi-update nga estado sa dula nga gikonsiderar ang nadawat nga datos. Uban niini nga pamaagi sa interaksyon, ang paglangan tali sa pagpindot sa forward key ug sa higayon nga ang player nga karakter molihok sa screen kanunay nga mas dako kaysa sa ping.

Samtang sa mga lokal nga network kini nga paglangan (popular nga gitawag nga input lag) mahimong dili mamatikdan, kung magdula pinaagi sa Internet makamugna kini usa ka pagbati sa "pag-slide sa yelo" kung nagkontrol sa usa ka karakter. Kini nga problema doble nga may kalabutan alang sa mga mobile network, diin ang kaso kung ang ping sa usa ka magdudula 200 ms giisip gihapon nga usa ka maayo kaayo nga koneksyon. Kasagaran ang ping mahimong 350, 500, o 1000 ms. Unya hapit imposible nga magdula usa ka paspas nga shooter nga adunay input lag.

Ang solusyon sa kini nga problema mao ang pagtagna sa simulation sa kliyente. Dinhi ang kliyente mismo nagpadapat sa input sa karakter sa player, nga wala maghulat sa tubag gikan sa server. Ug kung madawat na ang tubag, gitandi lang niini ang mga resulta ug gi-update ang posisyon sa mga kontra. Ang paglangan tali sa pagpindot sa usa ka yawe ug pagpakita sa resulta sa screen sa kini nga kaso gamay ra.

Importante nga masabtan ang nuance dinhi: ang kliyente kanunay nga nagdrowing sa iyang kaugalingon sumala sa katapusan nga input niini, ug mga kaaway - nga adunay paglangan sa network, sumala sa miaging estado gikan sa data gikan sa server. Sa ato pa, kung gipusil ang usa ka kaaway, ang magdudula nakakita kaniya kaniadto nga paryente sa iyang kaugalingon. Dugang pa bahin sa panagna sa kliyente nagsulat kami kaniadto.

Sa ingon, ang panagna sa kliyente nagsulbad sa usa ka problema, apan nagmugna og lain: kung ang usa ka magdudula mag-shoot sa punto kung diin ang kaaway kaniadto, sa server kung nagpusil sa parehas nga punto, ang kaaway mahimo’g wala na sa kana nga lugar. Server lag compensation misulay sa pagsulbad niini nga problema. Kung gipabuto ang usa ka hinagiban, gipahiuli sa server ang estado sa dula nga nakita sa magdudula sa lokal sa oras sa pagpusil, ug gisusi kung naigo ba gyud niya ang kaaway. Kung ang tubag "oo," ang hit maihap, bisan kung ang kaaway wala na sa server nianang puntoha.

Armado sa kini nga kahibalo, nagsugod kami sa pagpatuman sa bayad sa server lag sa Dino Squad. Una sa tanan, kinahanglan namon nga masabtan kung giunsa ibalik sa server kung unsa ang nakita sa kliyente? Ug unsa gyud ang kinahanglan nga ibalik? Sa among dula, ang mga hit gikan sa mga hinagiban ug mga abilidad gikalkula pinaagi sa mga raycast ug mga overlay - nga mao, pinaagi sa mga interaksyon sa mga pisikal nga bangga sa kaaway. Tungod niini, kinahanglan namon nga kopyahon ang posisyon sa kini nga mga nagbangga, nga "nakita" sa magdudula sa lokal, sa server. Niadtong panahona gigamit namo ang Unity version 2018.x. Ang physics API didto static, ang pisikal nga kalibutan anaa sa usa ka kopya. Wala’y paagi aron maluwas ang estado niini ug ibalik kini gikan sa kahon. Busa unsa ang buhaton?

Ang solusyon anaa sa ibabaw; ang tanan nga mga elemento niini gigamit na namo sa pagsulbad sa ubang mga problema:

  1. Alang sa matag kliyente, kinahanglan naton mahibal-an kung unsang orasa nakita niya ang mga kaatbang sa dihang gipugos niya ang mga yawe. Gisulat na namo kini nga impormasyon ngadto sa input package ug gigamit kini sa pag-adjust sa prediksyon sa kliyente.
  2. Kinahanglan naton nga matipigan ang kasaysayan sa mga estado sa dula. Anaa niini nga atong huptan ang mga posisyon sa atong mga kaatbang (ug busa ang ilang mga bangga). Kami adunay kasaysayan sa estado sa server, gigamit namon kini sa pagtukod delta. Sa pagkahibalo sa hustong panahon, dali natong makit-an ang hustong kahimtang sa kasaysayan.
  3. Karon nga naa na namo ang kahimtang sa dula gikan sa kasaysayan, kinahanglan namong ma-synchronize ang data sa player sa kahimtang sa pisikal nga kalibutan. Anaa nga mga bangga - paglihok, nawala - paghimo, wala kinahanglana - gub-on. Kini nga lohika gisulat na usab ug gilangkuban sa daghang mga sistema sa ECS. Gigamit namo kini sa paghawid sa daghang mga lawak sa dula sa usa ka proseso sa Unity. Ug tungod kay ang pisikal nga kalibutan usa ra matag proseso, kinahanglan kini gamiton pag-usab taliwala sa mga kwarto. Sa wala pa ang matag marka sa simulation, among "i-reset" ang kahimtang sa pisikal nga kalibutan ug gi-reinitialize kini sa mga datos alang sa kasamtangan nga kwarto, naningkamot nga gamiton pag-usab ang mga butang sa Unity game kutob sa mahimo pinaagi sa usa ka maalamon nga sistema sa pooling. Ang nahabilin mao ang paggamit sa parehas nga lohika alang sa kahimtang sa dula gikan sa nangagi.

Pinaagi sa paghiusa sa tanan niini nga mga elemento, nakakuha kami usa ka "makina sa oras" nga makapabalik sa kahimtang sa pisikal nga kalibutan sa husto nga higayon. Ang code nahimo nga yano:

public class TimeMachine : ITimeMachine
{
     //Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… состояний
     private readonly IGameStateHistory _history;

     //Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС Π½Π° сСрвСрС
     private readonly ExecutableSystem[] _systems;

     //Набор систСм, Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Ρ‹ Π² физичСском ΠΌΠΈΡ€Π΅ 
     //ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ состояния
     private readonly GameState _presentState;

     public TimeMachine(IGameStateHistory history, GameState presentState, ExecutableSystem[] timeInitSystems)
     {
         _history = history; 
         _presentState = presentState;
         _systems = timeInitSystems;  
     }

     public GameState TravelToTime(int tick)
     {
         var pastState = tick == _presentState.Time ? _presentState : _history.Get(tick);
         foreach (var system in _systems)
         {
             system.Execute(pastState);
         }
         return pastState;
     }
}

Ang nahabilin mao ang paghunahuna kung giunsa paggamit kini nga makina aron dali nga mabayran ang mga shot ug abilidad.

Sa pinakasimple nga kaso, kung ang mga mekaniko gibase sa usa ka hitcan, ang tanan ingon og klaro: sa wala pa ang magdudula mag-shoot, kinahanglan niyang ibalik ang pisikal nga kalibutan sa gusto nga kahimtang, maghimo usa ka raycast, ihap ang hit o miss, ug ibalik ang kalibutan sa una nga kahimtang.

Apan gamay ra ang ingon nga mga mekaniko sa Dino Squad! Kadaghanan sa mga hinagiban sa dula naghimo og mga projectiles - dugay na nga mga bala nga naglupad alang sa daghang mga simulation ticks (sa pipila ka mga kaso, dosena nga mga ticks). Unsa ang buhaton kanila, unsa nga oras sila kinahanglan nga molupad?

Π’ karaang artikulo mahitungod sa Half-Life network stack, ang mga lalaki gikan sa Valve nangutana sa samang pangutana, ug ang ilang tubag mao kini: ang kompensasyon sa projectile lag adunay problema, ug mas maayo nga likayan kini.

Wala kami niini nga kapilian: ang mga hinagiban nga nakabase sa projectile usa ka hinungdanon nga bahin sa laraw sa dula. Mao nga kinahanglan namon nga maghimo usa ka butang. Human sa pipila ka brainstorming, naghimo kami og duha ka mga opsyon nga morag epektibo:

1. Among ihigot ang projectile sa panahon sa magdudula nga nagbuhat niini. Ang matag marka sa simulation sa server, alang sa matag bala sa matag magdudula, gibalik namon ang pisikal nga kalibutan sa kahimtang sa kliyente ug gihimo ang kinahanglan nga mga kalkulasyon. Kini nga pamaagi nagpaposible nga adunay usa ka giapod-apod nga load sa server ug matag-an nga oras sa paglupad sa mga projectiles. Ang pagkatag-an labi ka hinungdanon alang kanamo, tungod kay kami adunay tanan nga mga projectiles, lakip ang mga projectiles sa kaaway, nga gitagna sa kliyente.

Giunsa namo paghimo ang mga mekaniko sa pagkalkula sa ballistic alang sa usa ka mobile shooter nga adunay usa ka network delay compensation algorithm
Sa hulagway, ang magdudula sa tick 30 nagpabuto og usa ka missile sa pagpaabot: nakita niya kung asa nga direksyon ang kaaway nagdagan ug nahibal-an ang gibanabana nga gikusgon sa missile. Sa lokal iyang nakita nga naigo niya ang target sa ika-33 nga marka. Salamat sa lag compensation, makita usab kini sa server

2. Gibuhat namo ang tanan sama sa una nga kapilian, apan, sa pag-ihap sa usa ka marka sa simulation sa bala, dili kami mohunong, apan magpadayon sa pagsundog sa pagkalagiw niini sulod sa sama nga tick sa server, sa matag higayon nga magdala sa iyang oras nga mas duol sa server usa-usa nga tiktik ug pag-update sa mga posisyon sa collider. Gibuhat namo kini hangtod nga mahitabo ang usa sa duha ka butang:

  • Na-expire na ang bala. Kini nagpasabut nga ang mga kalkulasyon nahuman na, mahimo naton maihap ang usa ka sipyat o usa ka hit. Ug kini sa parehas nga marka diin ang buto gipabuto! Alang kanamo kini usa ka plus ug minus. Usa ka dugang - tungod kay alang sa magdudula sa pagpamusil kini hinungdanon nga nakunhuran ang paglangan tali sa pag-igo ug pagkunhod sa kahimsog sa kaaway. Ang downside mao nga ang sama nga epekto naobserbahan sa diha nga ang mga kaatbang nagpabuto sa player: ang kaaway, ingon og, nagpabuto lamang og usa ka hinay nga rocket, ug ang kadaot naihap na.
  • Ang bala niabot na sa oras sa server. Sa kini nga kaso, ang simulation niini magpadayon sa sunod nga tick sa server nga wala’y bayad sa lag. Alang sa hinay nga mga projectiles, mahimo’g makunhuran ang gidaghanon sa mga rollback sa pisika kung itandi sa una nga kapilian. Sa parehas nga oras, ang dili patas nga pagkarga sa simulation misaka: ang server wala’y mahimo, o sa usa ka server tick kini nagkalkula sa usa ka dosena nga simulation ticks alang sa daghang mga bala.

Giunsa namo paghimo ang mga mekaniko sa pagkalkula sa ballistic alang sa usa ka mobile shooter nga adunay usa ka network delay compensation algorithm
Ang parehas nga senaryo sama sa miaging litrato, apan gikalkula sumala sa ikaduha nga laraw. Ang missile "nasakpan" sa oras sa server sa parehas nga marka nga nahitabo ang shot, ug ang pag-igo mahimong maihap nga sayo sa sunod nga marka. Sa ika-31 nga marka, sa kini nga kaso, ang bayad sa lag wala na magamit

Sa among pagpatuman, kining duha ka mga pamaagi magkalahi sa usa lang ka linya sa code, mao nga among gibuhat ang duha, ug sa dugay nga panahon sila naglungtad nga managsama. Depende sa mekaniko sa hinagiban ug sa katulin sa bala, gipili namon ang usa o lain nga kapilian alang sa matag dinosaur. Ang pagbag-o dinhi mao ang dagway sa dula sa mga mekaniko sama sa "kung naigo nimo ang kaaway sa daghang mga higayon sa ingon ug ingon niana nga panahon, pagkuha ug ingon niana nga bonus." Ang bisan unsang mekaniko diin ang oras diin ang magdudula naigo sa kaaway adunay hinungdanon nga papel nagdumili sa pagtrabaho sa ikaduha nga pamaagi. Mao nga nahuman namon ang una nga kapilian, ug kini magamit na karon sa tanan nga mga hinagiban ug tanan nga aktibo nga mga abilidad sa dula.

Sa tinuud, angay nga ipataas ang isyu sa pasundayag. Kung naghunahuna ka nga kining tanan makapahinay sa mga butang, tubagon ko: mao na. Ang panaghiusa hinay sa paglihok sa mga nagbangga ug pagpalong niini ug pagpalong. Sa Dino Squad, sa usa ka "labing grabe nga kaso" nga senaryo, mahimong adunay daghang gatos nga mga projectiles nga dungan nga naglungtad sa panagsangka. Ang pagbalhin sa mga collider sa pag-ihap sa matag projectile usa ka dili barato nga kaluho. Busa, gikinahanglan gayud alang kanamo nga mamenosan ang gidaghanon sa mga "rollback" sa pisika. Aron mahimo kini, naghimo kami usa ka lahi nga sangkap sa ECS diin among girekord ang oras sa magdudula. Gidugang namo kini sa tanang entidad nga nanginahanglan ug lag compensation (projectiles, abilidad, ug uban pa). Sa dili pa namo sugdan ang pagproseso sa maong mga entidad, among gi-cluster sila niining panahona ug giproseso kini nga dungan, gibalikbalik ang pisikal nga kalibutan kausa alang sa matag cluster.

Niini nga yugto kita adunay usa ka kasagaran nga sistema sa pagtrabaho. Ang code niini sa medyo gipasimple nga porma:

public sealed class LagCompensationSystemGroup : ExecutableSystem
{
     //Машина Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
     private readonly ITimeMachine _timeMachine;

     //Набор систСм лагкомпСнсации
     private readonly LagCompensationSystem[] _systems;
     
     //Наша рСализация кластСризатора
     private readonly TimeTravelMap _travelMap = new TimeTravelMap();

    public LagCompensationSystemGroup(ITimeMachine timeMachine, 
        LagCompensationSystem[] lagCompensationSystems)
     {
         _timeMachine = timeMachine;
         _systems = lagCompensationSystems;
     }

     public override void Execute(GameState gs)
     {
         //На Π²Ρ…ΠΎΠ΄ кластСризатор ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ состояниС,
         //Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Β«ΠΊΠΎΡ€Π·ΠΈΠ½Β». Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ Π»Π΅ΠΆΠ°Ρ‚ энтити,
         //ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ для лагкомпСнсации Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈΠ· истории.
         var buckets = _travelMap.RefillBuckets(gs);

         for (int bucketIndex = 0; bucketIndex < buckets.Count; bucketIndex++)
         {
             ProcessBucket(gs, buckets[bucketIndex]);
         }

         //Π’ ΠΊΠΎΠ½Ρ†Π΅ лагкомпСнсации ΠΌΡ‹ восстанавливаСм физичСский ΠΌΠΈΡ€ 
         //Π² исходноС состояниС
         _timeMachine.TravelToTime(gs.Time);
     }

     private void ProcessBucket(GameState presentState, TimeTravelMap.Bucket bucket)
     {
         //ΠžΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ врСмя ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹
         var pastState = _timeMachine.TravelToTime(bucket.Time);

         foreach (var system in _systems)
         {
               system.PastState = pastState;
               system.PresentState = presentState;

               foreach (var entity in bucket)
               {
                   system.Execute(entity);
               }
          }
     }
}

Ang nahabilin mao ang pag-configure sa mga detalye:

1. Sabta kung pila ang limitahan ang labing taas nga gilay-on sa paglihok sa oras.

Mahinungdanon alang kanamo nga himuon ang dula nga ma-access kutob sa mahimo sa mga kondisyon sa dili maayo nga mga mobile network, mao nga gilimitahan namon ang istorya nga adunay margin nga 30 ticks (nga adunay tick rate nga 20 Hz). Gitugotan niini ang mga magdudula nga maigo ang mga kaatbang bisan sa taas kaayo nga mga ping.

2. Tinoa kung unsang mga butanga ang mabalhin sa oras ug dili.

Kami, siyempre, nagpalihok sa among mga kaatbang. Apan ang ma-install nga mga taming sa enerhiya, pananglitan, dili. Nakahukom kami nga mas maayo nga hatagan og prayoridad ang abilidad sa pagdepensa, sama sa kanunay nga gihimo sa mga online shooter. Kung ang magdudula nakabutang na ug taming sa pagkakaron, ang mga bala nga nabayran sa lag gikan sa nangagi kinahanglan dili molupad pinaagi niini.

3. Pagdesisyon kung kinahanglan ba nga bayran ang mga abilidad sa mga dinosaur: mopaak, welga sa ikog, ug uban pa. Nakahukom kami kung unsa ang kinahanglan ug giproseso kini sumala sa parehas nga mga lagda sama sa mga bala.

4. Tinoa kung unsa ang buhaton sa mga nakabangga sa magdudula kung kinsa ang lag compensation gihimo. Sa usa ka maayo nga paagi, ang ilang posisyon kinahanglan dili mabalhin sa nangagi: ang magdudula kinahanglan nga makakita sa iyang kaugalingon sa parehas nga oras diin siya naa karon sa server. Bisan pa, gipabalik usab namon ang mga nagbangga sa magdudula sa pagpamusil, ug adunay daghang mga hinungdan niini.

Una, gipauswag niini ang pag-cluster: magamit namon ang parehas nga pisikal nga kahimtang alang sa tanan nga mga magdudula nga adunay suod nga ping.

Ikaduha, sa tanan nga mga raycast ug mga overlap kanunay namon nga wala iapil ang mga bangga sa magdudula nga tag-iya sa mga abilidad o projectiles. Sa Dino Squad, ang mga magdudula nagkontrol sa mga dinosaur, nga adunay dili standard nga geometry pinaagi sa mga sumbanan sa shooter. Bisan kung ang magdudula mag-shoot sa usa ka talagsaon nga anggulo ug ang agianan sa bala moagi sa dinosaur collider sa magdudula, ang bala dili magtagad niini.

Ikatulo, gikalkulo namo ang mga posisyon sa hinagiban sa dinosaur o ang punto sa paggamit sa abilidad gamit ang data gikan sa ECS bisan sa wala pa magsugod ang lag compensation.

Ingon usa ka sangputanan, ang tinuud nga posisyon sa mga nagbangga sa lag-compensated nga magdudula dili hinungdanon alang kanamo, mao nga mikuha kami usa ka labi ka produktibo ug sa samang higayon mas simple nga agianan.

Ang latency sa network dili basta-basta matangtang, mahimo ra kini ma-maskara. Sama sa bisan unsang paagi sa pagtakuban, ang bayad sa server lag adunay mga tradeoff. Gipauswag niini ang kasinatian sa pagdula sa magdudula nga nagpusil sa gasto sa magdudula nga gipusil. Alang sa Dino Squad, bisan pa, ang pagpili dinhi klaro.

Siyempre, kining tanan kinahanglan usab nga bayran pinaagi sa dugang nga pagkakomplikado sa code sa server sa kinatibuk-an - alang sa mga programmer ug mga tigdesinyo sa dula. Kung sa sayo pa ang simulation usa ka yano nga sunud-sunod nga tawag sa mga sistema, unya uban ang lag compensation, ang mga nested loops ug mga sanga nagpakita niini. Gigugol usab namo ang daghang paningkamot aron mahimo kining kombenyente sa pagtrabaho.

Sa 2019 nga bersyon (ug tingali usa ka gamay nga sayo pa), ang Unity nagdugang bug-os nga suporta alang sa independente nga pisikal nga mga talan-awon. Gipatuman namon kini sa server hapit dayon pagkahuman sa pag-update, tungod kay gusto namon nga dali nga makuha ang pisikal nga kalibutan nga kasagaran sa tanan nga mga kwarto.

Gihatagan namo ang matag lawak sa dula sa kaugalingong pisikal nga talan-awon ug sa ingon giwagtang ang panginahanglan sa "paglimpyo" sa talan-awon gikan sa datos sa silingang lawak sa dili pa makalkula ang simulation. Una, naghatag kini usa ka hinungdanon nga pagtaas sa pagka-produktibo. Ikaduha, nahimo nga posible nga makuha ang tibuuk nga klase sa mga bug nga mitungha kung ang programmer nakahimo usa ka sayup sa code sa paglimpyo sa eksena sa pagdugang bag-ong mga elemento sa dula. Ang ingon nga mga kasaypanan lisud nga i-debug, ug kini kanunay nga nagresulta sa kahimtang sa pisikal nga mga butang sa usa ka talan-awon sa usa ka kwarto nga "nag-agay" sa lain nga kwarto.

Dugang pa, naghimo kami ug pipila ka panukiduki kung ang pisikal nga mga talan-awon mahimong magamit sa pagtipig sa kasaysayan sa pisikal nga kalibutan. Kana mao, kondisyonal, paggahin dili usa ka talan-awon sa matag lawak, apan 30 ka mga talan-awon, ug paghimo sa usa ka cyclic buffer gikan kanila, diin ibutang ang istorya. Sa kinatibuk-an, ang opsyon nahimo nga nagtrabaho, apan wala namo kini gipatuman: wala kini nagpakita sa bisan unsa nga buang nga pagtaas sa produktibo, apan nagkinahanglan hinuon og peligrosong mga kausaban. Lisud ang pagtagna kung unsa ang buhaton sa server kung nagtrabaho sa dugay nga panahon nga adunay daghang mga eksena. Busa, gisunod namo ang lagda: β€œKung dili kini nabuak, ayaw kini ayoha".

Source: www.habr.com

Idugang sa usa ka comment