Ny fomba nanatsaranay ny mekanika amin'ny kajy ballistic ho an'ny mpitifitra finday miaraka amin'ny algorithm fanonerana fahatarana amin'ny tambajotra

Ny fomba nanatsaranay ny mekanika amin'ny kajy ballistic ho an'ny mpitifitra finday miaraka amin'ny algorithm fanonerana fahatarana amin'ny tambajotra

Salama, izaho no Nikita Brizhak, mpamorona mpizara avy amin'ny Pixonic. Anio aho dia te hiresaka momba ny fanonerana ny fahatarana amin'ny Multiplayer finday.

Lahatsoratra maro no nosoratana momba ny tambin-karama amin'ny server lag, anisan'izany ny teny Rosiana. Tsy mahagaga izany, satria io teknolojia io dia nampiasaina tamin'ny famoronana Multiplayer FPS hatramin'ny faramparan'ny taona 90. Ohatra, azonao atao ny mahatsiaro ny QuakeWorld mod, izay iray amin'ireo voalohany nampiasa azy io.

Ampiasainay koa izany amin'ny Dino Squad mpitifitra Multiplayer finday.

Ato amin'ity lahatsoratra ity, ny tanjoko dia tsy ny hamerina ny efa voasoratra in-arivo, fa ny hilaza ny fomba nampiharantsika ny fanonerana lag amin'ny lalaontsika, amin'ny fiheverana ny antontam-teknolojia sy ny endri-dalao fototra.

Teny vitsivitsy momba ny cortex sy ny teknolojia.

Dino Squad dia mpitifitra PvP finday. Ny mpilalao dia mifehy ny dinΓ΄zΓ΄ra misy fitaovam-piadiana isan-karazany ary miady amin'ny ekipa 6v6.

Samy mifototra amin'ny Unity ny mpanjifa sy ny mpizara. Ny maritrano dia tena mahazatra ho an'ny mpitifitra: manam-pahefana ny mpizara, ary miasa amin'ny mpanjifa ny vinavinan'ny mpanjifa. Ny simulation lalao dia nosoratana tamin'ny ECS an-trano ary ampiasaina amin'ny mpizara sy ny mpanjifa.

Raha vao sambany ianao no nandre momba ny fanonerana ny fahatarana, ity misy fitsangatsanganana fohy momba ilay olana.

Amin'ny lalao FPS Multiplayer, ny lalao dia matetika atao amin'ny mpizara lavitra. Ny mpilalao dia mandefa ny fidirany (fampahalalana momba ny fanalahidy voatsindry) mankany amin'ny mpizara, ary ho setrin'izany dia alefan'ny mpizara azy ny fanjakana lalao nohavaozina amin'ny alΓ lan'ny angon-drakitra voaray. Miaraka amin'ity rafitra fifaneraserana ity, ny fahatarana eo anelanelan'ny fanindriana ny fanalahidy mandroso sy ny fotoana hihetsehan'ny mpilalao eo amin'ny efijery dia ho lehibe kokoa noho ny ping.

Na dia ao amin'ny tambajotra eo an-toerana aza dia mety tsy ho tsikaritra izany fahatarana izany (antsoina matetika hoe fanemorana ny fidirana), rehefa milalao amin'ny Internet dia miteraka fihetseham-po hoe "mihozongozona amin'ny ranomandry" rehefa mifehy toetra iray. Ity olana ity dia manan-danja avo roa heny amin'ny tambajotra finday, izay ny tranga raha 200 ms ny ping an'ny mpilalao dia mbola heverina ho fifandraisana tsara. Matetika ny ping dia mety ho 350, 500, na 1000 ms. Dia lasa saika tsy azo atao ny milalao tifitra haingana miaraka amin'ny fahatarana fidirana.

Ny vahaolana amin'ity olana ity dia ny vinavinan'ny simulation amin'ny lafiny mpanjifa. Eto ny mpanjifa mihitsy no mampihatra ny fidirana amin'ny toetran'ny mpilalao, tsy miandry valiny avy amin'ny mpizara. Ary rehefa voaray ny valiny dia mampitaha fotsiny ny vokatra ary manavao ny toeran'ny mpanohitra. Ny fahatarana eo anelanelan'ny fanindriana fanalahidy iray sy ny fampisehoana ny valiny eo amin'ny efijery amin'ity tranga ity dia kely indrindra.

Zava-dehibe ny mahatakatra ny nuance eto: ny mpanjifa dia misarika ny tenany foana araka ny fampidirana farany, ary ny fahavalo - miaraka amin'ny fahatarana amin'ny tambajotra, araka ny fanjakana teo aloha avy amin'ny angon-drakitra avy amin'ny mpizara. Izany hoe, rehefa mitifitra fahavalo, ny mpilalao dia mahita azy taloha momba ny tenany. Bebe kokoa momba ny vinavinan'ny mpanjifa nanoratra izahay teo aloha.

Noho izany, ny faminanian'ny mpanjifa dia mamaha olana iray, fa mamorona iray hafa: raha misy mpilalao mitifitra amin'ny toerana misy ny fahavalo taloha, eo amin'ny server rehefa mitifitra amin'ny teboka iray ihany, dia mety tsy ho eo amin'io toerana io intsony ny fahavalo. Miezaka mamaha ity olana ity ny fanonerana ny fahataran'ny server. Rehefa tifitra ny fitaovam-piadiana dia averin'ny mpizara ny toetry ny lalao izay hitan'ilay mpilalao teo an-toerana tamin'ny fotoana nitrangan'ny tifitra, ary manamarina raha tena nahavoa ny fahavalo izy. Raha "eny" ny valiny, dia isaina ny voa, na dia tsy eo amin'ny servera intsony aza ny fahavalo amin'io fotoana io.

Miaraka amin'io fahalalana io, dia nanomboka nampihatra ny tambin-karama amin'ny server lag tao amin'ny Dino Squad izahay. Voalohany indrindra, tsy maintsy nahatakatra ny fomba hamerenana amin'ny server ny zavatra hitan'ny mpanjifa? Ary inona marina no tokony haverina? Ao amin'ny lalaontsika, ny tifitra avy amin'ny fitaovam-piadiana sy ny fahaiza-manao dia kajy amin'ny alΓ lan'ny taratra sy overlay - izany hoe amin'ny alΓ lan'ny fifandraisana amin'ireo mpifandona ara-batana amin'ny fahavalo. Noho izany, mila mamerina ny toeran'ireo mpifandona ireo, izay "hita" teo an-toerana ny mpilalao, teo amin'ny mpizara. Tamin'izany fotoana izany dia nampiasa Unity version 2018.x izahay. Ny API fizika any dia static, ny tontolo fizika dia misy ao anaty kopia tokana. Tsy misy fomba hamonjena ny toerany ary hamerina azy avy eo amin'ny boaty. Inona Γ ry no hatao?

Ny vahaolana dia ety ivelany;

  1. Ho an'ny mpanjifa tsirairay dia mila mahafantatra ny fotoana nahitany mpanohitra izy rehefa nanindry ny fanalahidy. Efa nanoratra ity fampahalalana ity tao amin'ny fonosana fampidirana izahay ary nampiasa azy io hanitsiana ny vinavinan'ny mpanjifa.
  2. Mila mahay mitahiry ny tantaran'ny fanjakana lalao isika. Ao anatin’izany no hihazonantsika ny toeran’ny mpifanandrina amintsika (ary noho izany ireo mpifandona aminy). Efa nanana tantaram-panjakana izahay teo amin'ny lohamilina, nampiasainay hanamboarana delta. Noho ny fahafantarana ny fotoana mety, dia afaka nahita mora foana ny toetry ny tantara isika.
  3. Amin'izao fotoana izao dia manana ny toetry ny lalao avy amin'ny tantara isika, mila mahay mampifanaraka ny angona mpilalao amin'ny toetry ny tontolo ara-batana. Ireo mpifandona efa misy - mihetsika, ireo tsy hita - mamorona, ireo tsy ilaina - manimba. Efa nosoratana ihany koa io lojika io ary misy rafitra ECS maromaro. Nampiasa azy io izahay mba hitazonana efitrano lalao maromaro ao anatin'ny dingana iray amin'ny Unity. Ary satria ny tontolo ara-batana dia iray isaky ny dingana, dia tsy maintsy nampiasaina indray teo anelanelan'ny efitrano. Alohan'ny isaky ny tsikombakomba amin'ny simulation, dia "hamerenana" ny toetry ny tontolo ara-batana izahay ary averinay indray miaraka amin'ny angon-drakitra ho an'ny efitrano ankehitriny, manandrana mampiasa indray ny lalao Unity araka izay azo atao amin'ny alΓ lan'ny rafitra famoriam-bola mahay. Ny hany sisa tavela dia ny miantso ny lojika mitovy amin'ny fanjakana lalao taloha.

Amin'ny fampifangaroana ireo singa rehetra ireo dia nahazo "masin'ny fotoana" izahay izay afaka mamerina ny toetry ny tontolo ara-batana amin'ny fotoana mety. Tsotra ny kaody:

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

Ny hany sisa tavela dia ny mamantatra ny fomba fampiasana ity milina ity mba hanonerana mora ny tifitra sy ny fahaiza-manao.

Amin'ny tranga tsotra indrindra, rehefa mifototra amin'ny hitcan tokana ny mekanika, dia toa mazava ny zava-drehetra: alohan'ny hitifitra ny mpilalao dia mila mamerina ny tontolo ara-batana amin'ny toe-javatra tadiaviny izy, manao taratra, manisa ny hit na tsy hita, ary avereno amin'ny fanjakana voalohany izao tontolo izao.

Saingy vitsy dia vitsy ny mekanika toy izany ao amin'ny Dino Squad! Ny ankamaroan'ny fitaovam-piadiana amin'ny lalao dia mamorona projectiles - bala ela velona izay manidina ho an'ny tsikombakomba maromaro (amin'ny tranga sasany, ticks am-polony). Inona no hatao amin'izy ireo, amin'ny firy no tokony hanidina?

Π’ lahatsoratra taloha momba ny tambazotran'ny Half-Life dia nametraka fanontaniana mitovy ireo bandy avy ao amin'ny Valve, ary ny valin'izy ireo dia izao: olana ny tambin'ny projectile lag, ary tsara kokoa ny misoroka izany.

Tsy nanana an'ity safidy ity izahay: fitaovam-piadiana mifototra amin'ny projectile no singa fototra amin'ny famolavolana lalao. Noho izany dia tsy maintsy namorona zavatra izahay. Taorian'ny fifampidinihana kely dia namolavola safidy roa izay toa nandaitra izahay:

1. Afatory amin'ny fotoanan'ny mpilalao namorona azy ny projectile. Isaky ny tsikombakomba amin'ny simulation mpizara, ho an'ny bala tsirairay an'ny mpilalao tsirairay, dia mamerina ny tontolo ara-batana amin'ny toetry ny mpanjifa izahay ary manao ny kajikajy ilaina. Io fomba fiasa io dia nahafahana nizara enta-mavesatra teo amin'ny lohamilina sy ny fotoana fanidinan'ny projectiles. Tena zava-dehibe ho anay ny faminaniany, satria manana projectiles rehetra izahay, anisan'izany ny projectiles fahavalo, voalaza mialoha momba ny mpanjifa.

Ny fomba nanatsaranay ny mekanika amin'ny kajy ballistic ho an'ny mpitifitra finday miaraka amin'ny algorithm fanonerana fahatarana amin'ny tambajotra
Eo amin'ny sary, ilay mpilalao amin'ny tick 30 dia mitifitra balafomanga eo am-piandrasana azy: hitany ny lalana alehan'ny fahavalo ary fantany ny hafainganam-pandehan'ny balafomanga. Hitany teny an-toerana fa teo amin’ny tsatoka faha-33 no nahavoa azy. Noho ny fanonerana lag dia hiseho amin'ny mpizara ihany koa

2. Manao ny zava-drehetra mitovy amin'ny safidy voalohany izahay, saingy, rehefa nanisa tsipìka iray amin'ny simulation bala, dia tsy mijanona, fa manohy manao simulate ny sidina ao anatin'ny tick server iray ihany, isaky ny mitondra ny fotoanany akaiky kokoa ny mpizara. tsidiho tsirairay ary manavao ny toeran'ny collider. Manao izany izahay mandra-pahatongan'ny iray amin'ireo zavatra roa:

  • Tapitra ny bala. Midika izany fa tapitra ny kajikajy, afaka manisa tsy ampy na voa. Ary tamin'io fotoana io ihany no nitifitra ilay tifitra! Ho anay dia sady plus no minus izany. A plus - satria ho an'ny mpilalao fitifirana dia nampihena be ny fahatarana teo amin'ny fikapohana sy ny fihenan'ny fahasalaman'ny fahavalo. Ny lafy ratsiny dia ny vokany mitovy no hita rehefa nitifitra ny mpifanandrina amin'ny mpilalao: ny fahavalo, toa, dia nitifitra balafomanga miadana, ary ny fahavoazana dia efa voaisa.
  • Tonga ny fotoanan'ny mpizara ny bala. Amin'ity tranga ity, ny simulation dia hitohy amin'ny tsipika mpizara manaraka tsy misy tambiny. Ho an'ny projectiles miadana dia mety hampihena ny isan'ny fiverenan'ny fizika izany raha oharina amin'ny safidy voalohany. Nandritra izany fotoana izany, nitombo ny enta-mavesatra tsy mitongilana amin'ny simulation: na tsy miasa ny mpizara, na amin'ny tsipika iray amin'ny mpizara iray dia mikajy tapakila simulation am-polony ho an'ny bala maromaro.

Ny fomba nanatsaranay ny mekanika amin'ny kajy ballistic ho an'ny mpitifitra finday miaraka amin'ny algorithm fanonerana fahatarana amin'ny tambajotra
Ny toe-javatra mitovy amin'ny sary teo aloha, fa kajy araka ny rafitra faharoa. Ny balafomanga dia "tratra" tamin'ny fotoanan'ny mpizara tamin'ny tsipika mitovy amin'ny nitrangan'ny tifitra, ary ny tifitra dia azo isaina vao haingana amin'ny kitika manaraka. Amin'ny tsipika faha-31, amin'ity tranga ity, dia tsy mihatra intsony ny tambin-karama

Amin'ny fampiharana anay, ireo fomba roa ireo dia tsy mitovy amin'ny andalana kaody roa, noho izany dia noforoninay izy roa, ary nandritra ny fotoana ela dia nifanandrify izy ireo. Miankina amin'ny mekanika amin'ny fitaovam-piadiana sy ny hafainganam-pandehan'ny bala, nisafidy safidy iray na hafa ho an'ny dinΓ΄zΓ΄ra tsirairay izahay. Ny kihon-dalana eto dia ny fisehoana amin'ny lalao mekanika toy ny hoe "raha mamely ny fahavalo imbetsaka ianao amin'ny fotoana toy izao, dia mahazo bonus toy izao sy izao." Ny mekanika rehetra izay nanana anjara toerana lehibe tamin'ny fotoana namelezan'ny mpilalao ny fahavalo dia tsy nety niasa tamin'ny fomba faharoa. Noho izany dia niafara tamin'ny safidy voalohany izahay, ary mihatra amin'ny fitaovam-piadiana rehetra sy ny fahaiza-manao mavitrika rehetra amin'ny lalao izany.

Misaraka, mendrika ny hampiakatra ny olan'ny fampisehoana. Raha noheverinao fa hampiadana ny zava-drehetra izany rehetra izany, dia hoy aho hoe: marina izany. Tena miadana ny firaisankina amin'ny fampandehanana ny fifandonana sy ny fampidinana azy ireo. Ao amin'ny Dino Squad, amin'ny tranga "tranga ratsy indrindra", dia mety misy projectiles an-jatony maro miaraka amin'ny ady. Rendrarendra tsy takatry ny saina ny fifindran'ny mpifandona hanisa ny projectile tsirairay. Noho izany dia nilaina tanteraka ho antsika ny manamaivana ny isan'ny "famerenana" fizika. Mba hanaovana izany, dia namorona singa manokana ao amin'ny ECS izahay izay mirakitra ny fotoanan'ny mpilalao. Nampianay izany ho an'ny sampana rehetra izay mitaky fanonerana fahatarana (projectiles, fahaiza-manao, sns.). Alohan'ny hanombohantsika ny fanodinana ireo singa ireo, dia manangona azy ireo isika amin'izao fotoana izao ary miara-manodina azy ireo, mamerina indray ny tontolo ara-batana ho an'ny cluster tsirairay.

Amin'ity dingana ity dia manana rafitra miasa amin'ny ankapobeny isika. Ny kaody amin'ny endrika somary notsotsotra:

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

Ny hany sisa tavela dia ny manamboatra ny antsipiriany:

1. Fantaro hoe ohatrinona ny mametra ny halaviran'ny hetsika amin'ny fotoana.

Zava-dehibe ho anay ny nanao ny lalao ho azo idirana araka izay azo atao amin'ny toe-java-misy amin'ny tambajotra finday mahantra, noho izany dia noferanay ny tantara tamin'ny mari-pamantarana 30 ticks (miaraka amin'ny tahan'ny kitika 20 Hz). Izany dia ahafahan'ny mpilalao mamely ny mpifanandrina na dia amin'ny ping avo be aza.

2. Fantaro hoe inona no zavatra azo mifindra amin'ny fotoana ary iza no tsy afaka.

Isika, mazava ho azy, dia manetsika ny mpifanandrina amintsika. Saingy ny ampinga angovo azo apetraka, ohatra, dia tsy izany. Nanapa-kevitra izahay fa tsara kokoa ny manome laharam-pahamehana ny fahaiza-manaon'ny fiarovan-tena, toy ny fanao matetika amin'ny mpitifitra an-tserasera. Raha toa ka efa nametraka ampinga ny mpilalao amin'izao fotoana izao, dia tsy tokony hanidina ao anatin'izany ny bala efa voaloa tamin'ny lasa.

3. Manapa-kevitra raha ilaina ny manonitra ny fahaizan'ny dinΓ΄zΓ΄ra: manaikitra, mitokona amin'ny rambony, sns. Nanapa-kevitra izahay hoe inona no ilaina ary nokarakarainay araka ny fitsipika mitovy amin'ny bala.

4. Farito izay tokony hatao amin'ireo mpifandona amin'ny mpilalao izay anaovana onitra lag. Amin'ny fomba tsara dia tsy tokony hifindra any amin'ny lasa ny toerana misy azy: ny mpilalao dia tokony hahita ny tenany amin'ny fotoana maha-mpizara azy ankehitriny. Na izany aza, dia naverinay ihany koa ny fifandonan'ny mpilalao tifitra, ary misy antony maromaro mahatonga izany.

Voalohany, manatsara ny cluster izany: afaka mampiasa ny toe-batana mitovy amin'ny mpilalao rehetra misy ping akaiky isika.

Faharoa, ao anatin'ny raycasts sy overlaps rehetra dia esorinay foana ireo mpifandona amin'ny mpilalao manana ny fahaiza-manao na projectiles. Ao amin'ny Dino Squad, ny mpilalao dia mifehy ny dinΓ΄zΓ΄ra, izay manana geometrika tsy manara-penitra amin'ny fenitry ny mpitifitra. Na dia mitifitra amin'ny zoro tsy mahazatra aza ny mpilalao ary mandalo amin'ny fifandonan'ny dinΓ΄zΓ΄ra an'ilay mpilalao ny dian'ny bala, dia tsy hiraharaha izany ny bala.

Fahatelo, kajy ny toeran'ny fitaovam-piadian'ny dinΓ΄zΓ΄ra na ny teboka fampiharana ny fahaizana mampiasa angon-drakitra avy amin'ny ECS na dia talohan'ny nanombohan'ny fanonerana lag aza.

Vokatr'izany dia tsy zava-dehibe amintsika ny tena toerana misy ny mpifandona amin'ny mpilalao tambin-karama, noho izany dia nanao lalana mamokatra kokoa sy tsotra kokoa izahay.

Tsy azo esorina tsotra izao ny faharetan'ny tambajotra fa azo saronana ihany. Sahala amin'ny fomba fanafenana hafa rehetra, ny fanonerana ny fiatoan'ny mpizara dia manana ny fanonerana azy. Manatsara ny traikefa amin'ny filalaovana ny mpilalao izay mitifitra amin'ny vidin'ny mpilalao voatifitra. Ho an'ny Dino Squad anefa dia niharihary ny safidy teto.

Mazava ho azy fa izany rehetra izany dia tsy maintsy nandoa ihany koa noho ny fitomboan'ny fahasarotan'ny code server amin'ny ankapobeny - na ho an'ny mpandrindra sy mpamorona lalao. Raha teo aloha ny simulation dia antso an-tariby tsotra amin'ny rafitra, avy eo miaraka amin'ny fanonerana lag, misy tadivavarana sy sampana niseho tao. Nandany ezaka be koa izahay mba hahamora ny fiaraha-miasa.

Tamin'ny dikan-teny 2019 (ary angamba taloha kelin'izay), ny Unity dia nanampy fanohanana feno ho an'ny sehatra ara-batana tsy miankina. Nametraka azy ireo tao amin'ny server izahay saika avy hatrany taorian'ny fanavaozana, satria te hanaisotra haingana ny tontolo ara-batana mahazatra amin'ny efitrano rehetra.

Nomenay ny efitranon'ny lalao tsirairay ny sehatra ara-batana ary noho izany dia nesorinay ny filΓ na "hanadio" ny sehatra avy amin'ny angon-drakitra ao amin'ny efitrano mifanila alohan'ny kajy ny simulation. Voalohany, nanome fitomboana lehibe amin'ny famokarana izany. Faharoa, azo atao ny manala ny karazana bibikely rehetra izay nipoitra raha nanao fahadisoana tao amin'ny kaody fanadiovana sehatra ny programmer rehefa nanampy singa lalao vaovao. Ny fahadisoana toy izany dia sarotra ny debug, ary matetika izy ireo no nahatonga ny toetry ny zavatra ara-batana ao amin'ny efitrano iray "mikoriana" mankany amin'ny efitrano hafa.

Fanampin'izany, nanao fikarohana izahay raha azo ampiasaina hitehirizana ny tantaran'ny tontolo fizika ny sehatra ara-batana. Izany hoe, amin'ny fepetra, dia tsy manome sehatra iray ho an'ny efitrano tsirairay, fa sehatra 30, ary manaova buffer cyclic amin'izy ireo, izay hitahirizana ny tantara. Amin'ny ankapobeny, ny safidy dia niasa, saingy tsy nampihatra izany izahay: tsy nampiseho fitomboana adala ny vokatra, fa mitaky fanovana mampidi-doza. Sarotra ny naminavina ny fihetsiky ny mpizara rehefa miasa maharitra amin'ny sehatra maro be. Noho izany, nanaraka ny fitsipika izahay: "Raha tsy vaky io dia aza amboary".

Source: www.habr.com

Mividiana fampiantranoana azo antoka ho an'ny tranokala misy fiarovana DDoS, mpizara VPS VDS πŸ”₯ Mividiana fampiantranoana tranonkala azo antoka miaraka amin'ny fiarovana DDoS, mpizara VPS VDS | ProHoster