Siwuthuthukise kanjani umakhenikha wezibalo ze-ballistic zokudubula kweselula nge-algorithm yesinxephezelo senethiwekhi ye-latency

Siwuthuthukise kanjani umakhenikha wezibalo ze-ballistic zokudubula kweselula nge-algorithm yesinxephezelo senethiwekhi ye-latency

Sawubona, ngingu-Nikita Brizhak, unjiniyela weseva ovela ku-Pixonic. Namuhla ngithanda ukukhuluma mayelana nokunxephezela i-lag in mobile yabadlali abaningi.

Izihloko eziningi zibhaliwe mayelana nesinxephezelo se-server lag, kuhlanganise nesiRashiya. Lokhu akumangazi, ngoba lobu buchwepheshe busetshenziswe ngenkuthalo ekwakhiweni kwe-FPS yabadlali abaningi kusukela ngasekupheleni kweminyaka yama-90s. Isibonelo, ungakhumbula i-QuakeWorld mod, eyayingeyokuqala ukuyisebenzisa.

Siphinde siyisebenzise ku-Dino squad yethu yokudubula yabadlali abaningi.

Kulesi sihloko, umgomo wami awukona ukuphinda lokho osekubhalwe izikhathi eziyinkulungwane, kodwa ukutshela ukuthi sisebenzise kanjani isinxephezelo se-lag kugeyimu yethu, ngokucabangela isitaki sethu sobuchwepheshe kanye nezici zomdlalo wegeyimu.

Amagama ambalwa mayelana ne-cortex yethu nobuchwepheshe.

I-Dino Squad iyisidubuli se-PvP yenethiwekhi yeselula. Abadlali balawula ama-dinosaurs ahlome ngezikhali ezahlukahlukene futhi balwe bodwa emaqenjini ayi-6v6.

Kokubili iklayenti kanye neseva kusekelwe ku-Unity. Ukwakhiwa kwezakhiwo kuyinto yakudala kakhulu kubadubuli: iseva inegunya, futhi ukubikezela kweklayenti kusebenza kumakhasimende. Ukulingisa kwegeyimu kubhalwe kusetshenziswa i-ECS yangaphakathi futhi isetshenziswa kukho kokubili iseva neklayenti.

Uma kungokokuqala uzwa ngesinxephezelo sesikhathi eside, nali uhambo olufushane odabeni.

Emidlalweni ye-FPS yabadlali abaningi, okufanayo kuvame ukulingiswa kuseva ekude. Abadlali bathumela okokufaka kwabo (ulwazi mayelana nezinkinobho ezicindezelwe) kuseva, futhi ngokuphendula iseva ibathumelela isimo segeyimu esibuyekeziwe ngokucabangela idatha etholiwe. Ngalesi sikimu sokusebenzisana, ukubambezeleka phakathi kokucindezela ukhiye oya phambili kanye nesikhathi lapho uhlamvu lomdlali enyakaza esikrinini luzohlala lukhulu kune-ping.

Ngenkathi kukunethiwekhi endawo lokhu kubambezeleka (okudume okubizwa ngokuthi i-input lag) kungase kungabonakali, uma udlala nge-inthanethi kudala umuzwa "wokushibilika eqhweni" lapho ulawula umlingisi. Le nkinga ihambisana ngokuphindwe kabili kumanethiwekhi eselula, lapho icala lapho i-ping yomdlali ingu-200 ms isabhekwa njengokuxhumana okuhle kakhulu. Ngokuvamile i-ping ingaba ngu-350, 500, noma 1000 ms. Bese kuba cishe kungenzeki ukudlala isidubuli esisheshayo esine-input lag.

Isixazululo sale nkinga ukuqagela kokulingisa ohlangothini lweklayenti. Lapha iklayenti ngokwalo lisebenzisa okokufaka kumlingisi womdlali, ngaphandle kokulinda impendulo evela kuseva. Futhi lapho impendulo itholwa, ivele iqhathanise imiphumela futhi ibuyekeze izikhundla zabaphikisi. Ukubambezeleka phakathi kokucindezela ukhiye nokubonisa umphumela esikrinini kulesi simo kuncane.

Kubalulekile ukuqonda i-nuance lapha: iklayenti lihlala lizidonsa ngokwalo okokufaka kwalo kokugcina, kanye nezitha - ngokulibaziseka kwenethiwekhi, ngokusho kwesimo sangaphambilini esivela kudatha evela kuseva. Okusho ukuthi, lapho edubula isitha, umdlali umbona esihlotsheni sakhe esidlule. Okuningi mayelana nokubikezela kweklayenti sabhala ngaphambili.

Ngakho, ukubikezela kweklayenti kuxazulula inkinga eyodwa, kodwa kudala enye: uma umdlali edubula endaweni lapho isitha sasikhona esikhathini esidlule, kuseva lapho edubula endaweni efanayo, isitha singase singabe sisaba kuleyo ndawo. Imizamo yokunxeshezelwa ngokusalibele kweseva ukuxazulula le nkinga. Uma kudutshulwa isikhali, iseva ibuyisela isimo segeyimu umdlali asibone endaweni ngesikhathi sokudutshulwa, futhi ihlola ukuthi ingabe ngempela ubesishaye isitha. Uma impendulo ithi β€œyebo,” i-hit ibalwa, noma ngabe isitha singasekho kuseva ngaleso sikhathi.

Sihlome ngalolu lwazi, saqala ukusebenzisa isinxephezelo se-server lag ku-Dino Squad. Okokuqala, bekufanele siqonde ukuthi singakubuyisela kanjani kuseva lokho iklayenti elikubonile? Futhi yini ngempela edinga ukubuyiselwa? Kugeyimu yethu, amahithi ezikhali namakhono abalwa ngama-raycast kanye nokumbondelana - okungukuthi, ngokusebenzisana nokungqubuzana kwesitha okubonakalayo. Ngokufanelekile, besidinga ukukhiqiza kabusha indawo yalezi zishayisana, umdlali β€œazibone” endaweni, kuseva. Ngaleso sikhathi sasisebenzisa inguqulo ye-Unity 2018.x. I-physics API lapho imile, umhlaba obonakalayo ukhona ngekhophi eyodwa. Ayikho indlela yokulondoloza isimo sayo bese uyibuyisela ebhokisini. Pho yini okumele uyenze?

Isixazululo sasiphezulu; zonke izakhi zalo zase zisetshenziswe yithi ukuxazulula ezinye izinkinga:

  1. Kuklayenti ngalinye, sidinga ukwazi ukuthi ibone ngasiphi isikhathi izimbangi lapho licindezela okhiye. Sesivele sibhale lolu lwazi ephaketheni lokufaka futhi salisebenzisa ukulungisa ukuqagela kweklayenti.
  2. Kudingeka sikwazi ukugcina umlando wezifundazwe. Kukuyo lapho sizobamba khona izikhundla zabaphikisana nathi (ngakho-ke abashayisana nabo). Besesivele sinomlando wezwe kuseva, sawusebenzisa ukwakha i-deltas. Ukwazi isikhathi esifanele, singathola kalula isimo esifanele emlandweni.
  3. Manje njengoba sesinesimo segeyimu esandleni somlando, sidinga ukwazi ukuvumelanisa idatha yomdlali nesimo somhlaba obonakalayo. Ama-collider akhona - hambisa, alahlekile - dala, angadingeki - chitha. Lo mqondo wawusuvele ubhaliwe futhi wawunezinhlelo ze-ECS eziningana. Siyisebenzisele ukubamba amagumbi egeyimu ambalwa ngenqubo yoBunye. Futhi njengoba umhlaba wenyama ungowodwa inqubo ngayinye, bekufanele usetshenziswe kabusha phakathi kwamakamelo. Ngaphambi kokuthika ngakunye kwesifaniso, "sisetha kabusha" isimo somhlaba obonakalayo futhi sawusungula kabusha ngedatha yegumbi lamanje, sizama ukuphinda sisebenzise izinto zegeyimu ye-Unity ngangokunokwenzeka ngesistimu yokuhlanganisa ehlakaniphile. Okwakusele bekuwukucela umqondo ofanayo wesimo somdlalo kusukela esikhathini esedlule.

Ngokuhlanganisa zonke lezi zakhi, sithole β€œumshini wesikhathi” ongabuyisela emuva isimo somhlaba esikhona ngesikhathi esifanele. Ikhodi ibonakale ilula:

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;
     }
}

Okwakusele kwakuwukuthola ukuthi usetshenziswa kanjani lo mshini ukunxephezela kalula isibhamu namakhono.

Esimweni esilula, lapho oomakhenikha besekelwe ku-hitscan eyodwa, yonke into ibonakala icacile: ngaphambi kokuba umdlali adubule, udinga ukuhlehlisa umhlaba wenyama ubuyele esimweni asifunayo, enze i-raycast, abale ukushaya noma ukugeja, futhi buyisela umhlaba esimweni sokuqala.

Kodwa bambalwa kakhulu omakhenikha abanjalo ku-Dino Squad! Izikhali eziningi emdlalweni zidala ama-projectiles - izinhlamvu eziphila isikhathi eside ezindizela imikhaza embalwa yokulingisa (kwezinye izimo, inqwaba yemikhaza). Yini okufanele uyenze ngazo, kufanele zindize ngasiphi isikhathi?

Π’ isihloko sasendulo mayelana nesitaki senethiwekhi ye-Half-Life, abafana abavela ku-Valve babuza umbuzo ofanayo, futhi impendulo yabo yayilokhu: isinxephezelo se-projectile lag siyinkinga, futhi kungcono ukuyigwema.

Besingenayo le nketho: izikhali ezisuselwe ku-projectile beziyingxenye ebalulekile yomklamo wegeyimu. Ngakho bekumele siqhamuke nokuthile. Ngemuva kokubonisana okuncane, senze izinketho ezimbili ezibonakala zisebenza:

1. Sibopha i-projectile nesikhathi somdlali oyidalile. Wonke umaki wokulingiswa kweseva, kuwo wonke amachashazi awo wonke umdlali, sibuyisela umhlaba ophathekayo esimweni seklayenti bese senza izibalo ezidingekayo. Le ndlela yenze kwaba nokwenzeka ukuba nomthwalo osabalalisiwe kuseva kanye nesikhathi sokundiza esibikezelwayo samaphrojekthi. Ukubikezela bekubaluleke kakhulu kithi, njengoba sinawo wonke ama-projectiles, kufaka phakathi ama-projectile esitha, abikezelwe kuklayenti.

Siwuthuthukise kanjani umakhenikha wezibalo ze-ballistic zokudubula kweselula nge-algorithm yesinxephezelo senethiwekhi ye-latency
Esithombeni, umdlali ku-tick 30 udubula umcibisholo elindele: ubona ukuthi isitha sigijimela ngakuphi futhi uyazi ukuthi cishe isivinini se-missile siyaphi. Endaweni uyabona ukuthi ushaye into ecokeme emkhandlwini ka-33. Ngenxa yesinxephezelo se-lag, izovela futhi kuseva

2. Senza yonke into ngendlela efanayo naleyo ekukhetheni kokuqala, kodwa, ngemva kokubala umaka owodwa wokulingisa inhlamvu, asimi, kodwa siqhubeka silingisa ukundiza kwayo ngaphakathi kwethikhi efanayo yeseva, isikhathi ngasinye sisondeza isikhathi saso kuseva. ithikha eyodwa kanye nokubuyekeza izindawo zokungqubuzana. Sikwenza lokhu kuze kwenzeke enye yezinto ezimbili:

  • Ichashazi liphelelwe yisikhathi. Lokhu kusho ukuthi izibalo seziphelile, singabala ukuphuthelwa noma ukushaya. Futhi lokhu kuwuphawu olufanayo lapho isibhamu sidutshulwe khona! Kithina lokhu bekungukuhlanganisa nokususa. Ukuhlanganisa - ngoba kumdlali odubulayo lokhu kunciphise kakhulu ukubambezeleka phakathi kokushaya kanye nokwehla kwempilo yesitha. Okubi ukuthi umphumela ofanayo wabonwa lapho abaphikisi bedubula umdlali: isitha, kubonakala sengathi, sidubula kuphela i-rocket ehamba kancane, futhi umonakalo usubaliwe kakade.
  • Ichashazi selifinyelele isikhathi seseva. Kulokhu, ukulingisa kwayo kuzoqhubeka kokuthika kweseva elandelayo ngaphandle kwesinxephezelo se-lag. Kuma-projectile ahamba kancane, lokhu ngokwethiyori kungehlisa inani lokuhlehla kwe-physics uma kuqhathaniswa nenketho yokuqala. Ngesikhathi esifanayo, umthwalo ongalingani esifanisweni unyukile: iseva ibingenzi lutho, noma umaka weseva eyodwa ibibala omaka bokulingiswa abayishumi nambili bezinhlamvu ezimbalwa.

Siwuthuthukise kanjani umakhenikha wezibalo ze-ballistic zokudubula kweselula nge-algorithm yesinxephezelo senethiwekhi ye-latency
Isimo esifanayo nesesithombeni sangaphambilini, kodwa sibalwa ngokohlelo lwesibili. Umcibisholo "ubanjwe" ngesikhathi seseva ngesikhathi esifanayo lapho kudutshulwa khona, futhi ukushaya kungabalwa ngokushesha nje umaka olandelayo. Kumkhaza wama-31, kulokhu, isinxephezelo se-lag asisasetshenziswa

Ekusebenziseni kwethu, lezi zindlela ezimbili zihluke emigqeni embalwa yekhodi, ngakho-ke sakha kokubili, futhi isikhathi eside zikhona ngokufana. Ngokuya ngomshini wesikhali kanye nesivinini senhlamvu, sikhethe inketho eyodwa noma enye i-dinosaur ngayinye. Ushintsho olukhulu lapha kwaba ukubukeka emdlalweni woomakhenikha njengokuthi β€œuma ushaya isitha izikhathi eziningi ngesikhathi esithize, thola ibhonasi ethi naleyo.” Noma yimuphi umakhenikha lapho isikhathi umdlali ashaya ngaso isitha adlale indima ebalulekile enqaba ukusebenza ngendlela yesibili. Ngakho-ke sigcine sihamba nenketho yokuqala, futhi manje isebenza kuzo zonke izikhali nawo wonke amakhono asebenzayo emdlalweni.

Ngokwehlukana, kufanelekile ukuphakamisa indaba yokusebenza. Uma ubucabanga ukuthi konke lokhu kuzonciphisa izinto, ngiyaphendula: kunjalo. Ubumbano buhamba kancane ekunyakazeni ama-collider nokuyivula nokuyivala. Ku-Dino Squad, esimweni "esibi kakhulu", kungaba nama-projectiles angamakhulu amaningana akhona ngesikhathi esisodwa ekulweni. Ukuhambisa ama-collider ukuze ubale i-projectile ngayinye kuwukunethezeka okungathengeki. Ngakho-ke, kwakudingeka ngempela ukuba sinciphise inani le-physics "rollbacks". Ukwenza lokhu, sidale ingxenye ehlukile ku-ECS lapho siqopha khona isikhathi somdlali. Siyingeze kuwo wonke amabhizinisi adinga isinxephezelo sesikhathi eside (amaphrojekthi, amakhono, njll.). Ngaphambi kokuthi siqale ukucubungula amabhizinisi anjalo, siyawahlanganisa ngalesi sikhathi futhi siwacubungule ndawonye, ​​sibuyisela umhlaba obonakalayo kanye kuqoqo ngalinye.

Kulesi sigaba sinesistimu yokusebenza evamile. Ikhodi yayo ngendlela eyenziwe lula:

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);
               }
          }
     }
}

Okwakusele kwakuwukumisa imininingwane:

1. Qonda ukuthi lingakanani ukukhawulela ibanga eliphakeme lokuhamba ngesikhathi.

Bekubalulekile kithina ukwenza igeyimu ifinyeleleke ngendlela esingakhona ngayo ezimeni zamanethiwekhi eselula ampofu, ngakho-ke sikhawule indaba ngomkhawulo wamakhikhi angu-30 (ngenani lomkhaza elingu-20 Hz). Lokhu kuvumela abadlali ukuthi bashaye abaphikisi ngisho nakuma-pings aphezulu kakhulu.

2. Thola ukuthi yiziphi izinto ezinganyakaziswa ngesikhathi nokuthi iziphi ezingeke zinyakaze.

Thina, vele, sihambisa izimbangi zethu. Kodwa izihlangu zamandla ezifakekayo, isibonelo, azikho. Sinqume ukuthi kungcono ukubeka kuqala ikhono lokuzivikela, njengoba kuvame ukwenziwa kubadubuli be-inthanethi. Uma umdlali esevele ebeke isihlangu esikhathini samanje, izinhlamvu ezinxeshezelwe ngokusalela zesikhathi esedlule akumele zindize ngazo.

3. Nquma ukuthi kuyadingeka yini ukunxephezela amakhono ama-dinosaurs: ukuluma, ukushayeka komsila, njll. Sinqume ukuthi yini eyayidingeka futhi siwacubungule ngokulandela imithetho efanayo nezinhlamvu.

4. Nquma ukuthi yini okufanele uyenze ngezishayisana zomdlali owenzelwa isinxephezelo sokulibala. Ngendlela enhle, isikhundla sabo akufanele siguqukele esikhathini esedlule: umdlali kufanele azibone ngesikhathi esifanayo lapho manje eseseva. Kodwa-ke, siphinde sibuyisele emuva ukushayisana komdlali odubulayo, futhi kunezizathu ezimbalwa zalokhu.

Okokuqala, ithuthukisa ukuhlanganisa: singasebenzisa isimo somzimba esifanayo kubo bonke abadlali abanama-pings aseduze.

Okwesibili, kuwo wonke ama-raycast kanye nokugqagqana sihlala singabandakanyi ukungqubuzana komdlali ongumnikazi wamakhono noma ama-projectiles. Ku-Dino Squad, abadlali balawula ama-dinosaurs, anejiyomethri engajwayelekile ngamazinga okudubula. Ngisho noma umdlali edubula nge-engeli engajwayelekile futhi umkhondo wenhlamvu udlula kungqubuzana ye-dinosaur yomdlali, ichashazi lizokuziba.

Okwesithathu, sibala izindawo zesikhali se-dinosaur noma iphuzu lokusetshenziswa kwekhono sisebenzisa idatha evela ku-ECS nangaphambi kokuqala kwesinxephezelo se-lag.

Ngenxa yalokho, ukuma kwangempela kwama-collider omdlali onxeshezelwe nge-lag akubalulekile kithi, ngakho-ke sithathe indlela ekhiqiza kakhulu futhi ngesikhathi esifanayo elula.

Ukubambezeleka kwenethiwekhi akukwazi ukususwa kalula, kungafihlwa kuphela. Njenganoma iyiphi enye indlela yokuzifihla, isinxephezelo se-server sinokuhweba kwakho. Ithuthukisa ulwazi lokudlala lomdlali odubulayo ngezindleko zomdlali odutshulwayo. Ku-Dino squad, nokho, ukukhetha lapha bekusobala.

Vele, konke lokhu futhi bekufanele kukhokhwe ngobunzima obukhulayo bekhodi yeseva iyonke - kokubili kubahleli bohlelo nabaklami begeyimu. Uma ngaphambili ukulingisa bekuwucingo olulula olulandelanayo lwezinhlelo, khona-ke ngesinxephezelo se-lag, izihibe ezifakwe esidlekeni namagatsha avele kuwo. Siphinde sasebenzisa umzamo omkhulu ukwenza kube lula ukusebenza nakho.

Enguqulweni ka-2019 (futhi mhlawumbe ngaphambili kancane), Ubumbano lwengeze ukusekelwa okugcwele kwezigcawu ezizimele zomzimba. Sizisebenzise kuseva cishe ngokushesha ngemva kokubuyekezwa, ngoba besifuna ukususa ngokushesha umhlaba ophathekayo ovamile kuwo wonke amagumbi.

Sinikeze igumbi legeyimu ngalinye indawo yalo ebonakalayo futhi ngaleyo ndlela sasusa isidingo "sokususa" isigameko kudatha yegumbi elingumakhelwane ngaphambi kokubala ukulingisa. Okokuqala, kunikeze ukwanda okukhulu kokukhiqiza. Okwesibili, kwenze kwaba nokwenzeka ukuqeda ikilasi lonke lezimbungulu ezivele uma umhleli enze iphutha kukhodi yokuhlanza indawo lapho engeza izici ezintsha zegeyimu. Amaphutha anjalo kwakunzima ukuwalungisa, futhi ayevame ukuholela esimweni sezinto ezibonakalayo endaweni yegumbi elilodwa "ezigeleza" kwelinye igumbi.

Ngaphezu kwalokho, senze ucwaningo lokuthi ingabe izigcawu ezibonakalayo zingasetshenziswa yini ukugcina umlando womhlaba wenyama. Okusho ukuthi, ngokwemibandela, unganikeli isigcawu esisodwa ekamelweni ngalinye, kodwa izigcawu ezingu-30, futhi wenze isivimbeli somjikelezo kuzo, lapho kuzogcinwa khona indaba. Ngokuvamile, inketho ibonakale iyasebenza, kodwa asizange siyisebenzise: ayizange ibonise ukwanda kokukhiqiza, kodwa idinga izinguquko eziyingozi. Kwakunzima ukubikezela ukuthi iseva izoziphatha kanjani lapho isebenza isikhathi eside ngezigcawu eziningi. Ngakho-ke, silandele umthetho othi: β€œUma ingaphukile, ungayilungisi".

Source: www.habr.com

Engeza amazwana