
Molo, ndinguNikita Brizhak, umakhi weseva ovela kwiPixonic. Namhlanje ndingathanda ukuthetha malunga nokuhlawulela i-lag kubadlali abaninzi beselula.
Amanqaku amaninzi abhaliwe malunga nembuyekezo ye-server lag, kubandakanywa nesiRashiya. Oku akumangalisi, kuba le teknoloji isetyenziswe ngokusebenzayo ekudalweni kwe-FPS yabadlali abaninzi ukususela ekupheleni kwe-90s. Umzekelo, unokukhumbula i-QuakeWorld mod, eyayiyeyokuqala ukuyisebenzisa.
Sikwayisebenzisa kwi-Dino squad yethu yokudubula yabadlali abaninzi.
Kweli nqaku, injongo yam ayikokuphinda into esele ibhaliwe izihlandlo eziliwaka, kodwa kukuxelela indlela esiphumeze ngayo imbuyekezo ye-lag kumdlalo wethu, sithathela ingqalelo isitakhi setekhnoloji yethu kunye neempawu eziphambili zokudlala.
Amagama ambalwa malunga ne-cortex kunye netekhnoloji yethu.
I-Dino Squad yinethiwekhi ye-PvP shooter. Abadlali balawula iidinosaurs ezixhotyiswe ngezixhobo ezahlukeneyo kwaye balwe kumaqela angama-6v6.
Zombini umxhasi kunye nomncedisi zisekwe kuManyano. Uyilo lolwakhiwo luyinto eqhelekileyo kubadubuli: umncedisi unegunya, kwaye uqikelelo lwabathengi lusebenza kubaxumi. Umdlalo wokulinganisa ubhalwa usebenzisa i-ECS yangaphakathi kwaye isetyenziswe kumncedisi kunye nomxhasi.
Ukuba uyaqala ukuva malunga nembuyekezo ye-lag, nalu uhambo olufutshane kulo mba.
Kwimidlalo yeFPS yabadlali abaninzi, umdlalo udla ngokufaniswa kwiseva ekude. Abadlali bathumela igalelo labo (ulwazi malunga nezitshixo zicinezelwe) kumncedisi, kwaye ekuphenduleni umncedisi ubathumelela imo yomdlalo ehlaziyiweyo ethathela ingqalelo idatha efunyenweyo. Ngesi sikimu sokusebenzisana, ukulibaziseka phakathi kokucofa isitshixo sokuya phambili kunye nomzuzu umdlali eshukumayo kwiscreen uya kuhlala umkhulu kuneping.
Ngelixa kuthungelwano lwasekhaya oku kulibaziseka (okubizwa ngokuba yi-input lag) kusenokungabonakali, xa idlala nge-Intanethi idala imvakalelo βyokutyibilika emkhenkceniβ xa ulawula umlinganiswa. Le ngxaki ibaluleke ngokuphindwe kabini kuthungelwano lweselula, apho imeko xa i-ping yomdlali i-200 ms isabonwa njengonxibelelwano oluhle kakhulu. Rhoqo i-ping inokuba yi-350, 500, okanye i-1000 ms. Emva koko kuba phantse akunakwenzeka ukudlala i-shooter ekhawulezayo kunye ne-input lag.
Isisombululo sale ngxaki kukuqikelela ukulinganisa kwicala lomxhasi. Apha umxhasi ngokwakhe usebenzisa igalelo kumlingisi womdlali, ngaphandle kokulinda impendulo evela kumncedisi. Kwaye xa impendulo ifunyenwe, ithelekisa ngokulula iziphumo kwaye ihlaziye izikhundla zabachasi. Ukulibaziseka phakathi kokucofa isitshixo kunye nokubonisa isiphumo kwisikrini kule meko kuncinci.
Kubalulekile ukuqonda i-nuance apha: umxhasi uhlala ezisondeza ngokwegalelo lakhe lokugqibela, kunye neentshaba - ngokulibaziseka kwenethiwekhi, ngokwelizwe langaphambili ukusuka kwidatha evela kumncedisi. Oko kukuthi, xa udubula utshaba, umdlali umbona kwixesha elidlulileyo elihlobene naye. Okungakumbi malunga noqikelelo lwabathengi .
Ngaloo ndlela, uqikelelo lomxhasi lusombulula ingxaki enye, kodwa ludala enye: ukuba umdlali udubula kwindawo apho utshaba lwalukho ngaphambili, kumncedisi xa ukudubula kwindawo enye, utshaba lusenokungabikho kuloo ndawo. Iinzame zembuyekezo zeseva ukusombulula le ngxaki. Xa isixhobo sikhutshiwe, umncedisi ubuyisela imeko yomdlalo ukuba umdlali wabona ekuhlaleni ngexesha lokudutyulwa, kwaye ukhangele ukuba ngaba ngenene wayelubethe utshaba. Ukuba impendulo ngu "ewe," ukubetha kubalwa, nokuba utshaba alusekho kumncedisi ngelo xesha.
Sixhobe ngolu lwazi, saqala ukuphumeza imbuyekezo ye-server lag kwi-Dino Squad. Okokuqala, kwafuneka siqonde indlela yokubuyisela kwiseva into ebonwa ngumxhasi? Yaye yintoni kanye kanye ekufuneka ibuyiselwe? Kumdlalo wethu, ukubetha kwezixhobo kunye nesakhono kubalwa kusetyenziswa iiraycasts kunye nokwaleka- oko kukuthi, ngonxibelelwano kunye nezixhobo zotshaba zotshaba. Ngokufanelekileyo, kwafuneka sivelise kwakhona indawo yezi zingqubana, apho umdlali "abone" ekuhlaleni, kumncedisi. Ngelo xesha sasisebenzisa Unity version 2018.x. I-API yefiziksi ikhona i-static, ihlabathi elibonakalayo likhona kwikopi enye. Akukho ndlela yokugcina imeko yayo kwaye uyibuyisele ukusuka kwibhokisi. Ke mandenze ntoni?
Isisombululo sasiphezu komhlaba;
- Kumxhasi ngamnye, kufuneka sazi ukuba leliphi ixesha awabona ngalo abachasi xa ecofa izitshixo. Sele sibhale olu lwazi kwiphakheji yokufaka kwaye siyisebenzise ukulungisa uqikelelo lomxhasi.
- Kufuneka sikwazi ukugcina imbali yamazwe omdlalo. Kuyo apho siya kubamba izikhundla zabachasi bethu (kwaye ke ngoko abangqubanisi babo). Sasisele sinembali yelizwe kumncedisi, sasisebenzisa ukwakha . Ukwazi ixesha elifanelekileyo, sinokuyifumana ngokulula imeko eyiyo embalini.
- Ngoku ekubeni sinesimo somdlalo kwimbali esandleni, kufuneka sikwazi ukuvumelanisa idatha yomdlali kunye nemeko yehlabathi. Ii-colliders ezikhoyo- zishukume, ezilahlekileyo - dala, ezingeyomfuneko- zitshabalalise. Le ngqiqo yayisele ibhaliwe kwaye iquka iinkqubo ezininzi ze-ECS. Sasisebenzisa ukubamba amagumbi amaninzi omdlalo kwinkqubo enye yoManyano. Kwaye ekubeni umhlaba wenyama unye inkqubo nganye, kwafuneka iphinde isetyenziswe phakathi kwamagumbi. Phambi kwenqaku ngalinye lokulinganisa, "siseta ngokutsha" imeko yelizwe elibonakalayo kwaye siphinde siyiqalise ngedatha yegumbi langoku, sizama ukuphinda sisebenzise izinto zomdlalo woBumbano kangangoko sinakho ngenkqubo yokudibanisa ekrelekrele. Ekuphela kwento eyayisele yayikukucela ingqiqo efanayo yelizwe lomdlalo ukusuka kwixesha elidlulileyo.
Ngokudibanisa zonke ezi zinto, sifumene "umatshini wexesha" onokubuyisela umva imeko yelizwe lomzimba kwithuba elifanelekileyo. Ikhowudi iye yabonakala 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;
}
}Ekuphela kwento eseleyo yayikukujonga indlela yokusebenzisa lo matshini ukuhlawulela ngokulula ukudubula kunye nobuchule.
Kweyona meko ilula, xa oomatshini basekwe kwi-hitscan enye, yonke into ibonakala icacile: ngaphambi kokuba umdlali adubule, kufuneka abuyisele umhlaba wenyama kwindawo ayifunayo, enze i-raycast, abale ukubetha okanye ukuphoswa, kwaye buyisela ihlabathi kwimeko yokuqala.
Kodwa bambalwa kakhulu oomatshini abanjalo kwiDino Squad! Uninzi lwezixhobo kumdlalo zenza iiprojectiles - iimbumbulu ezihlala ixesha elide ezibhabha ngamakhalane amaninzi okulinganisa (kwezinye iimeko, uninzi lwamakhalane). Yintoni enokwenziwa ngabo, leliphi ixesha ekufuneka babhabhe ngalo?
Π malunga ne-Half-Life network stack, abafana abavela kwiValve babuza umbuzo ofanayo, kwaye impendulo yabo yaba yile: imbuyekezo ye-projectile lag yingxaki, kwaye kungcono ukuyiphepha.
Besingenalo olu khetho: izixhobo ezisekwe kwiprojekti ibiyeyona nto iphambili kuyilo lomdlalo. Ngoko bekufuneka size nento. Emva kokubonisana ngengqondo, siye saqulunqa iindlela ezimbini ezibonakala zisebenza:
1. Sibopha iprojekti kwixesha lomdlali owadalayo. Lonke uphawu lokulinganisa umncedisi, kuyo yonke imbumbulu yomdlali ngamnye, sibuyisela umhlaba wenyama kwisimo somthengi kwaye senze izibalo eziyimfuneko. Le ndlela yenza ukuba kube nomthwalo osasazwayo kumncedisi kunye nexesha lokuhamba eliqikelelweyo leprojekthi. Ukuqikelelwa kwakubaluleke kakhulu kuthi, kuba sinazo zonke iiprojectiles, kubandakanywa neeprojectile zotshaba, ezixelwe kwangaphambili kumxhasi.

Emfanekisweni, umdlali okwi-tick 30 udubula umjukujelwa elindele: ubona ukuba utshaba lubaleka kweliphi icala kwaye uyasazi isantya esiqikelelwayo somjukujelwa. Ekuhlaleni uyabona ukuba ubethe ithagethi kuphawu lwe-33. Enkosi kwimbuyekezo ye-lag, iya kuvela kwakhona kwiseva
2. Senza yonke into ngokufana nokhetho lokuqala, kodwa, emva kokubala inqaku elinye le-bullet simulation, asiyeki, kodwa siqhubeke silinganisa ukubhabha kwayo ngaphakathi kwetick yeseva efanayo, ixesha ngalinye lisondeza ixesha lalo kumncedisi. ithiki enye kunye nokuhlaziya iindawo zokungqubana. Senza oku de kwenzeke enye yezinto ezimbini:
- Imbumbulu iphelelwe lixesha. Oku kuthetha ukuba izibalo ziphelile, singabala ukuphosa okanye ukubetha. Kwaye oku kukwela nqaku linye apho kudutyulwe khona! Kuthi le ibiyi-plus kunye ne-minus. Ukudibanisa - kuba kumdlali odubulayo oku kunciphise kakhulu ukulibaziseka phakathi kokubetha kunye nokuncipha kwempilo yotshaba. I-downside kukuba umphumo ofanayo wabonwa xa abachasi bedubula kumdlali: utshaba, kubonakala ngathi, lukhuphe i-rocket ecothayo kuphela, kwaye umonakalo wawusele ubalwa.
- Ibhulethi ifikelele kwixesha leseva. Kule meko, ukulinganisa kwayo kuya kuqhubeka kwi-server elandelayo ithiki ngaphandle kwembuyekezo ye-lag. Kwiiprojekthi ezicothayo, oku kunokunciphisa ngokwethiyori inani lefiziksi ebuyela umva xa kuthelekiswa nokhetho lokuqala. Kwangaxeshanye, umthwalo ongalinganiyo kumlinganiso wonyukile: iseva ibingasebenzi, okanye kumncedisi omnye ithiki ibibala amanqaku okulinganisa alishumi elinesibini kwiibhulethi ezininzi.

Imeko efanayo kumfanekiso wangaphambili, kodwa ibalwa ngokweskimu sesibini. Umjukujelwa "ubanjwe" kunye nexesha lomncedisi kwinqaku elifanayo apho udubulo lwenzekile, kwaye ukubetha kunokubalwa kwangoko njengenqaku elilandelayo. Kwi-tick ye-31, kule meko, imbuyekezo ye-lag ayisasetyenziswa
Ekuphunyezweni kwethu, ezi ndlela zimbini zahluke kwimigca embalwa yekhowudi, ngoko ke siye sazidala zombini, kwaye ixesha elide zikhona ngokufana. Ngokuxhomekeke kubuchwephesha besixhobo kunye nesantya sebhulethi, sikhethe enye okanye enye inketho kwidayinaso nganye. Inguquko apha yayiyinkangeleko kumdlalo wobuchwephesha obunje βukuba ubethe utshaba amaxesha amaninzi ngexesha elinje, fumana ibhonasi enjalo.β Nawuphi na umkhandi apho ixesha apho umdlali wabetha utshaba wadlala indima ebalulekileyo wala ukusebenza ngendlela yesibini. Ke sigqibe kwelokuba sihambe nokhetho lokuqala, kwaye ngoku lusebenza kuzo zonke izixhobo kunye nabo bonke ubuchule obusebenzayo kumdlalo.
Ngokwahlukileyo, kuyafaneleka ukuphakamisa umba wokusebenza. Ukuba ubucinga ukuba konke oku kuya kucothisa izinto, ndiyaphendula: kunjalo. Umanyano lucotha kakhulu ekuhambiseni ii-colliders kwaye uzivule kwaye uzicime. Kwi-Dino Squad, kwimeko "embi kakhulu", kunokubakho amakhulu eeprojekthi ezikhoyo ngaxeshanye ekulweni. Ukuhambisa ii-colliders ukubala iprojekti nganye nganye bubunewunewu obungafikelelekiyo. Ke ngoko, bekuyimfuneko kakhulu kuthi ukuba sinciphise inani lefiziksi "i-rollbacks". Ukwenza oku, senze icandelo elahlukileyo kwi-ECS apho sibhala khona ixesha lomdlali. Siyongeze kuwo onke amaqumrhu afuna imbuyekezo ye-lag (iiprojekthi, izakhono, njl.). Phambi kokuba siqalise ukucubungula amaziko anjalo, siyawadibanisa ngeli xesha kwaye siwenze kunye, sibuyisela umva umhlaba obonakalayo kube kanye kwiqela ngalinye.
Kweli nqanaba sinenkqubo yokusebenza ngokubanzi. Ikhowudi yayo ikwimo 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);
}
}
}
}Ekuphela kwento eyayisele kukulungisa iinkcukacha:
1. Qonda ukuba ungakanani ukukhawulela umgama omkhulu wokuhamba ngexesha.
Kwakubalulekile kuthi ukuba senze umdlalo ufikeleleke ngokusemandleni kwiimeko zothungelwano olungelulo, ngoko ke siye salinciphisa ibali ngomda wamakhalane angama-30 (ngexabiso lokukorekisha le-20 Hz). Oku kuvumela abadlali ukuba babethe abachasi nakwi-pings ephezulu kakhulu.
2. Qinisekisa ukuba zeziphi izinto ezinokushukunyiswa ngexesha kwaye zeziphi ezingenako.
Thina, ngokuqinisekileyo, sihambisa abachasi bethu. Kodwa izikhuselo zamandla ezifakelwayo, umzekelo, azikho. Sigqibe kwelokuba kungcono ukubeka phambili amandla okuzikhusela, njengoko kuqhele ukwenziwa kubadubuli be-intanethi. Ukuba umdlali sele ebeke ikhaka ngoku, iibhulethi ezihlawulelwe lag ukusuka kwixesha elidlulileyo akufanele zibhabhe kuyo.
3. Yenza isigqibo sokuba ngaba kuyimfuneko ukuhlawulela izakhono zeedinosaurs: ukuluma, ukubetha umsila, njl.
4. Gqiba ukuba wenze ntoni ngezigigaba zomdlali lowo kwenziwa kuye imbuyekezo ye-lag. Ngendlela efanelekileyo, isikhundla sabo akufanele sitshintshe kwixesha elidlulileyo: umdlali kufuneka azibonele ngexesha elifanayo apho ngoku kumncedisi. Nangona kunjalo, siphinda sibuyisele umva ii-colliders zomdlali odubulayo, kwaye kukho izizathu ezininzi zoku.
Okokuqala, iphucula ukudibanisa: sinokusebenzisa isimo somzimba esifanayo kubo bonke abadlali abaneepings ezisondeleyo.
Okwesibini, kuzo zonke iiraycasts kunye ne-overlaps sihlala singabandakanyi ii-colliders zomdlali ongumnikazi wezakhono okanye iiprojectiles. Kwiqela leDino, abadlali balawula iidinosaurs, ezinejometri engeyiyo eyomgangatho ngokwemigangatho yokudubula. Nokuba umdlali udubula nge-engile engaqhelekanga kwaye umkhondo wembumbulu udlula kwingqubana yedayinaso yomdlali, imbumbulu ayizukuyihoya.
Okwesithathu, sibala izikhundla zesixhobo se-dinosaur okanye inqaku lesicelo sokukwazi ukusebenzisa idatha esuka kwi-ECS nangaphambi kokuqala kwembuyekezo ye-lag.
Ngenxa yoko, indawo yokwenyani yee-colliders zomdlali ohlawulelwe nge-lag ayibalulekanga kuthi, ngoko sithathe indlela evelisa ngakumbi kwaye ngexesha elifanayo elula.
I-Network latency ayinakususwa ngokulula, inokugqunywa kuphela. Njengayo nayiphi na enye indlela yokuzifihla, imbuyekezo ye-server lag ine-tradeoffs yayo. Iphucula amava emidlalo yomdlali odubulayo ngeendleko zomdlali odutyulwayo. Kwiqela leDino, nangona kunjalo, ukhetho apha lwalucacile.
Ewe kunjalo, konke oku kuye kwafuneka kuhlawulwe kukuntsonkotha okwandisiweyo kwekhowudi yeseva iyonke - zombini kubenzi benkqubo kunye nabayili bemidlalo. Ukuba ngaphambili ukulinganisa kwakuyifowuni elula yokulandelelana kweenkqubo, ngoko ngembuyekezo ye-lag, i-loops ene-nested kunye namasebe avele kuyo. Kwakhona sachitha umgudu omkhulu ukwenza kube lula ukusebenza kunye.
Kwinguqulelo ka-2019 (kwaye mhlawumbi kwangaphambilana), Umanyano longeze inkxaso epheleleyo yemiboniso yomzimba ezimeleyo. Siziphumeze kumncedisi ngokukhawuleza emva kohlaziyo, kuba sifuna ukususa ngokukhawuleza ihlabathi elibonakalayo eliqhelekileyo kuwo onke amagumbi.
Sinike igumbi ngalinye lomdlalo indawo yalo kwaye ke sasusa isidingo "sokucoca" indawo kwidatha yegumbi elingummelwane phambi kokubala ukulinganisa. Okokuqala, yanika ukwanda okukhulu kwimveliso. Okwesibini, yenze ukuba kube lula ukususa udidi olupheleleyo lweempazamo eziye zavela ukuba umdwelisi wenze impazamo kwikhowudi yokucoca indawo xa esongeza izinto ezintsha zomdlalo. Ezo ziphoso kwakunzima ukuzilungisa, kwaye zazihlala zikhokelela kwimeko yezinto ezibonakalayo kwindawo yegumbi elinye "ezihamba" kwelinye igumbi.
Ukongeza, senze uphando malunga nokuba imiboniso ebonakalayo ingasetyenziselwa ukugcina imbali yehlabathi. Oko kukuthi, ngokwemiqathango, akunikezeli umfanekiso omnye kwigumbi ngalinye, kodwa imiboniso engama-30, kwaye wenze isithinteli sebhayisekile kuyo, apho kuya kugcinwa khona ibali. Ngokubanzi, ukhetho luye lwasebenza, kodwa asizange siluphumeze: aluzange lubonise ukwanda okuphambeneyo kwimveliso, kodwa lufuna utshintsho olunobungozi. Kwakunzima ukuqikelela ukuba umncedisi uya kuziphatha njani xa esebenza ixesha elide kunye nemiboniso emininzi. Ngoko ke, silandele umgaqo: "Ukuba ayophukanga, sukuyilungisaΒ».
umthombo: www.habr.com
