Me pehea ta matou whakarei ake i nga tikanga o te tatauranga poikiri mo te kaikopere pūkoro me te haangai utu utu moowhiti whatunga

Me pehea ta matou whakarei ake i nga tikanga o te tatauranga poikiri mo te kaikopere pūkoro me te haangai utu utu moowhiti whatunga

Kia ora, ko Nikita Brizhak ahau, he kaiwhakawhanake tūmau mai i Pixonic. I tenei ra e hiahia ana ahau ki te korero mo te utu mo te takamuri i roto i te maha o nga waea pūkoro.

He maha nga tuhinga kua tuhia mo te utu mo te wa roa o te tūmau, tae atu ki te reo Ruhia. Ehara tenei i te mea miharo, na te mea kua kaha te whakamahi i tenei hangarau ki te hanga i te FPS multiplayer mai i te mutunga o te 90s. Hei tauira, ka mahara koe ki te QuakeWorld mod, koinei tetahi o nga mea tuatahi ki te whakamahi.

Ka whakamahia ano e matou i roto i ta maatau kaikopere a Dino Squad pūkoro.

I roto i tenei tuhinga, ko taku whainga ehara i te whakahoki ano i nga mea kua oti te tuhi kotahi mano nga wa, engari ko te korero me pehea te whakatinana i nga utu mo te takamuri i roto i ta maatau keemu, me te whai whakaaro ki o maatau hangarau hangarau me nga waahanga whakaari matua.

He kupu torutoru mo to tatou uho me te hangarau.

Ko Dino Squad he kaikopere PvP pūkoro whatunga. Ka whakahaerehia e nga kaitakaro nga mokoweri me nga momo patu me te whawhai tetahi ki tetahi i roto i nga roopu 6v6.

Ko te kiritaki me te tūmau kei runga i te Unity. He tino matarohia te hoahoanga mo nga kaikopere: he mana te kaimau, a ka mahi te matapae a te kiritaki ki nga kaihoko. Ka tuhia te whaihanga o te keemu ma te whakamahi i te ECS i roto i te whare ka whakamahia ki runga i te tūmau me te kiritaki.

Mena koinei te wa tuatahi kua rongo koe mo te utu mo te takamuri, koinei te haerenga poto ki te take.

I roto i nga keemu FPS maha, ka whakatauritehia te tukinga ki runga i te tūmau mamao. Ka tukuna e nga kaitakaro a raatau whakaurunga (nga korero mo nga taviri kua pehia) ki te kaimau, a, hei whakautu ka tukuna e te kaitoro he ahuatanga keemu kua whakahoutia me te whakaaro ki nga raraunga kua riro mai. Ma tenei kaupapa taunekeneke, ko te roa i waenga i te pehi i te paatene whakamua me te wa ka neke te ahua o te kaitakaro i runga i te mata ka nui ake i te ping.

I runga i nga whatunga o te rohe ka kore e kitea tenei whakaroa (e kiia nei ko te takamuri whakauru) ina purei ma te Ipurangi ka puta te ahua o te "hekeheke i runga i te hukapapa" i te wa e whakahaere ana i tetahi ahua. Ko tenei raru e pa ana ki nga whatunga pūkoro, ko te keehi ka 200 ms te ping a te kaitakaro ka kiia he hononga pai. I te nuinga o nga wa ka taea te ping 350, 500, 1000 ms ranei. Katahi ka kore e taea te takaro i te kaikopere tere me te takamuri whakauru.

Ko te otinga ki tenei raru ko te matapae whakataihanga taha-kiritaki. I konei ka tukuna e te kiritaki te whakaurunga ki te ahua o te kaitakaro, me te kore e tatari mo te whakautu mai i te tūmau. A, ka tae mai te whakautu, ka whakataurite noa i nga hua me te whakahou i nga tuunga o nga hoariri. Ko te whakaroa i waenga i te pehi i te taviri me te whakaatu i te hua ki te mata i tenei keehi he iti rawa.

He mea nui ki te mohio ki te ahua o konei: ko te kiritaki e tuhi ana i a ia ano kia rite ki tana whakauru whakamutunga, me nga hoariri - me te roa o te whatunga, kia rite ki te ahua o mua mai i nga raraunga mai i te tūmau. Arā, i te wa e pupuhi ana i te hoariri, ka kite te kaitakaro i a ia i nga wa o mua, he whanaunga ki a ia ano. He korero ano mo te matapae a te kiritaki i tuhi matou i mua.

No reira, ka whakatauhia e te matapae a te kiritaki tetahi raruraru, engari ka hanga tetahi atu: mena ka pupuhi te kaitakaro ki te waahi i noho ai te hoariri i mua, i runga i te kaimau i te wa e pupuhi ana i te waahi kotahi, ka kore pea te hoariri i tera waahi. Ka ngana te utu tamuri taha-tumau ki te whakaoti i tenei raru. Ka pupuhihia he patu, ka whakahokia e te kaitoro te ahua o te keemu i kitea e te kaitakaro i te takiwa i te wa o te pupuhi, ka tirotirohia mehemea ka taea e ia te patu i te hoariri. Mena ko te whakautu he "ae," ka tatauhia te patu, ahakoa kua kore te hoariri i runga i te tūmau i taua wa.

Na tenei matauranga, i timata matou ki te whakatinana i nga utu mo te wa roa o te tūmau i roto i te Dino Squad. Tuatahi, me maarama taatau me pehea te whakahoki mai i runga i te tuumau nga mea i kitea e te kaihoko? A he aha te mea e tika ana kia whakahokia mai? I roto i ta maatau keemu, ko nga patu mai i nga patu me nga kaha ka tatauhia ma nga hihi hihi me nga whakakikorua - ara, ma te taunekeneke me nga kaiwhaiwhai tinana a te hoariri. Na reira, me whakaputa e matou te tuunga o enei tukinga, i "kitea" e te kaitakaro ki te rohe, i runga i te tūmau. I taua wa kei te whakamahi matou i te putanga Unity 2018.x. Ko te API ahupūngao kei reira he pateko, ko te ao kikokiko kei roto i te kape kotahi. Karekau he huarahi hei whakaora i tona ahua katahi ka whakahokia mai i te pouaka. Na me aha koe?

Ko te otinga i runga i te mata; ko ona huānga katoa kua whakamahia e matou ki te whakaoti rapanga:

  1. Mo ia kiritaki, me mohio tatou i te wa i kite ai ia i nga hoariri i tana pehi i nga ki. Kua tuhia e matou enei korero ki roto i te kete whakauru me te whakamahi hei whakatika i te matapae a te kiritaki.
  2. Me kaha taatau ki te penapena i nga hitori o nga whenua keemu. Kei roto ka mau i a tatou nga tuunga o o tatou hoa whawhai (na reira ko o ratou tukinga). He hitori o mua kei runga i te tūmau, i whakamahia e matou ki te hanga ira. Ma te mohio ki te wa tika, ka kitea e maatau te ahua tika i roto i te hitori.
  3. Inaianei kei a tatou te ahuatanga o te keemu mai i nga hitori, me kaha ki te tukutahi i nga raraunga kaitakaro ki te ahua o te ao kikokiko. Nga tukinga o naianei - neke, ngaro - hanga, kaore e tika - whakangaro. Kua tuhia ano tenei arorau, he maha nga punaha ECS. I whakamahia e matou ki te pupuri i etahi ruma keemu i roto i te mahi kotahitanga. A, i te mea he kotahi te ao kikokiko mo ia tukanga, me whakamahi ano i waenganui i nga ruma. I mua i ia tohu o te whaihanga, ka "whakahou" matou i te ahua o te ao kikokiko me te whakaara ano i nga raraunga mo te ruuma o naianei, me te ngana ki te whakamahi ano i nga taonga keemu Unity i nga mea e taea ana ma te punaha kohinga mohio. Ko te mea i toe ko te tono i te whakaaro kotahi mo te ahua keemu o mua.

Ma te whakakotahi i enei huānga katoa, ka whiwhi matou i te "miihini taima" ka taea te huri i te ahua o te ao kikokiko ki te wa tika. Ko te waehere i puta he ngawari:

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

Ko te mea i toe ko te whakaaro me pehea te whakamahi i tenei miihini kia ngawari te utu mo nga pupuhi me nga pukenga.

I roto i te keehi ngawari noa, i te wa e hangai ana nga miihini ki runga i te hitcan kotahi, he maamaa nga mea katoa: i mua i te kopere o te kaitakaro, me huri ia ki te huri i te ao tinana ki te ahua e hiahiatia ana, ki te mahi i te hihi, tatau te whiu, te ngaro ranei, a whakahokia te ao ki te ahua tuatahi.

Engari he iti noa nga miihini penei i te Dino Squad! Ko te nuinga o nga patu i roto i te keemu ka hangaia he kaupapa - matā roa e rere ana mo etahi tohu whaihanga (i etahi wa, he maha nga tohu). Me aha ki a ratou, he aha te wa e rere ai?

В tuhinga tawhito Mo te roopu whatunga Half-Life, ka patai nga taangata mai i Valve i te patai ano, a ko ta raatau whakautu ko tenei: he raru te utu mo te takamuri o te kaupapa, a he pai ake te karo.

Karekau i a maatau tenei whiringa: ko nga patu i runga i te kaupapa he waahanga nui o te hoahoa keemu. No reira me whakaaro tatou ki tetahi mea. Whai muri i etahi whakaaro whakaaro, i whakatakotohia e matou nga whiringa e rua e ahua pai ana:

1. Ka herea te kaupapa ki te wa o te kaitakaro nana i hanga. Ko nga tohu katoa o te whaihanga tūmau, mo ia matā o ia kaitākaro, ka hurihia e matou te ao kikokiko ki te ahua o te kiritaki me te mahi i nga tatauranga e tika ana. Na tenei huarahi i taea ai te tohatoha o te uta ki runga i te tūmau me te wa rere matakite o nga kaupapa. He mea nui te matapae ki a matou, i te mea kei a matou katoa nga kaupapa, tae atu ki nga kaupapa a te hoariri, kua tohuhia ki te kaihoko.

Me pehea ta matou whakarei ake i nga tikanga o te tatauranga poikiri mo te kaikopere pūkoro me te haangai utu utu moowhiti whatunga
I roto i te pikitia, ko te kaitakaro i te tohu 30 ka pupuhi i te pere i runga i te tumanako: ka kite ia i te huarahi e rere ana te hoariri me te mohio ki te tere tata o te pere. I te rohe ka kite ia i eke ia ki te whainga i te tohu 33. He mihi ki te utu whakamuri, ka puta ano ki runga i te tūmau

2. He rite tonu ta matou mahi i nga mea katoa i te whiringa tuatahi, engari, i te tatau i tetahi tohu o te whaihanga matā, e kore matou e mutu, engari ka whai tonu i tana rere i roto i te tohu tūmau kotahi, ia wa ka whakatata atu ki te tūmau. kotahi i te kotahi tohu me te whakahōu tūnga collider. Ka mahia e matou kia puta ra ano tetahi o nga mea e rua:

  • Kua pau te matā. Ko te tikanga kua mutu nga tatauranga, ka taea e tatou te tatau i te ngaro, i te whiu ranei. Na ko tenei i te tohu kotahi i pupuhihia te pupuhi! Mo matou he taapiri me te iti tenei. He taapiri - na te mea mo te kaitakaro pupuhi i tino whakahekehia te roa i waenga i te whiu me te heke o te hauora o te hoariri. Ko te kino ko te ahua ano i kitea i te wa i pupuhi nga hoariri ki te kaitakaro: ko te hoariri, ko te ahua, i pupuhi noa i te toka puhoi, kua tatauhia te kino.
  • Kua tae te matā ki te wa tūmau. I roto i tenei take, ka haere tonu tana whaihanga i roto i te tohu tūmau e whai ake nei me te kore he utu mo te takamuri. Mo nga kaupapa puhoi, ka taea e tenei te whakaiti i te maha o nga hurihanga ahupūngao ka whakatauritea ki te whiringa tuatahi. I te wa ano, ka piki ake te taumahatanga koretake i runga i te whaihanga: he mangere te tūmau, i roto ranei i te tohu tūmau kotahi e tātai ana i te tekau ma rua tohu whaihanga mo etahi matā.

Me pehea ta matou whakarei ake i nga tikanga o te tatauranga poikiri mo te kaikopere pūkoro me te haangai utu utu moowhiti whatunga
He rite tonu te ahuatanga ki te pikitia o mua, engari ka tatauhia kia rite ki te kaupapa tuarua. Ko te pere "ka mau" ki te wa tūmau i te tohu kotahi i puta te pere, a ka taea te tatau i te whiu i te wa o te tohu e whai ake nei. I te tohu 31, i tenei keehi, karekau he utu mo te takamuri

I roto i ta maatau whakatinanatanga, he rereke enei huarahi e rua i roto i nga rarangi waehere e rua, no reira i hanga e matou nga mea e rua, a mo te wa roa i noho whakarara. I runga i nga miihini o te patu me te tere o te matā, i whiriwhiria e maatau tetahi waahanga mo ia dinosaur. Ko te hurihanga i konei ko te ahua o te keemu o nga miihini penei "mehemea he maha nga wa i patu koe i te hoariri i roto i nga waa penei me tera waa, tikina he putea pera." Ko nga miihini katoa he waahi nui te wa i pa ai te kaitakaro ki te hoariri kaore i pai ki te mahi me te huarahi tuarua. Na ka mutu ta maatau haere me te whiringa tuatahi, a inaianei ka pa ki nga patu katoa me nga kaha kaha katoa o te keemu.

Ma te wehe, he mea tika ki te whakaara ake i te take o te mahi. Mena i whakaaro koe ka whakaroa enei mea katoa, ka whakahoki ahau: ko. He tino puhoi te kotahitanga ki te neke i nga tukinga me te whakahuri me te whakaweto. I roto i te Dino Squad, i roto i te keehi "kino rawa atu", he maha nga rau o nga kaupapa i te wa kotahi ki te whawhai. Ko te neke i nga kaitarai ki te tatau i ia kaupapa takitahi he mea papai kore utu. Na reira, i tino tika kia whakaitihia e matou te maha o nga "whakahoki" ahupūngao. Hei mahi i tenei, i hangaia e matou he waahanga motuhake i roto i te ECS hei tuhi i te wa o te kaitakaro. I tapiritia e matou ki nga hinonga katoa e hiahia ana ki te utu mo te wa roa (nga kaupapa, nga kaha, me etahi atu). I mua i te tiimata ki te tukatuka i aua hinonga, ka whakahiatohia e matou i tenei wa ka tukatuka tahi, ka huri whakamuri i te ao kikokiko kotahi mo ia tautau.

I tenei wahanga he punaha mahi tonu ta matou. Ko tana waehere i roto i te ahua ngawari:

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

Ko te mea i toe ko te whirihora i nga korero:

1. Kia mohio ki te nui o te whakawhāiti i te tawhiti o te neke i te waa.

He mea nui ki a matou kia whai waahi te keemu i roto i nga ahuatanga o nga whatunga pūkoro ngoikore, na reira i whakawhäitihia e mätou te körero me te 30 ticks (me te reiti tohu 20 Hz). Ma tenei ka taea e nga kaitakaro te patu i nga hoa whawhai ahakoa nga ping tino tiketike.

2. Te whakatau ko wai nga mea ka taea te nuku i te waa me te aha kaore e taea.

Ko tatou, ko te tikanga, kei te neke i o tatou hoa whawhai. Engari ko nga whakangungu rakau ka taea te whakauru, hei tauira, ehara. I whakatauhia e maatau he pai ake te tuku i te kaupapa matua ki te kaha arai, pera i te nuinga o nga wa e mahia ana i nga kaikopere ipurangi. Mena kua tukuna e te kaitakaro he whakangungu rakau i tenei wa, kaua e rere nga matā kua utua mai i nga wa o mua.

3. Whakatauhia mehemea e tika ana ki te utu mo nga kaha o nga mokoweri: te ngau, te patu hiku, me etahi atu. I whakatauhia e matou nga mea e hiahiatia ana ka tukatukahia kia rite ki nga ture o te matā.

4. Whakatauhia he aha te mahi ki nga kaitukino o te kaitakaro kei te mahia he utu mo te takamuri. Ma te pai, kaua e huri to raatau tuunga ki nga wa o mua: me kite te kaitakaro ia ia ano i te wa ano kei runga ia i te kaimau. Heoi ano, ka hoki whakamuri matou i nga kaipatu o te kaitakaro pupuhi, a he maha nga take mo tenei.

Tuatahi, ka whakapai ake i te kohinga: ka taea e taatau te whakamahi i te ahua o te tinana mo nga kaitakaro katoa me nga ping tata.

Tuarua, i roto i nga hihi hihi katoa me te inaki ka whakakorehia e matou nga kaiwhaiwhai o te kaitakaro nona nga pukenga me nga kaupapa. I roto i te Dino Squad, ka whakahaerehia e nga kaitakaro nga mokoweri, he ahuahanga kore-paerewa na nga paerewa kaikopere. Ahakoa ka pupuhi te kaitakaro ki tetahi koki rereke ka haere te huarahi o te matā i roto i te tukinga mokoweri a te kaitakaro, kare e arohia e te matā.

Tuatoru, ka tatauhia e matou nga waahi o te patu a te dinosaur, te waahi ranei o te whakamahinga o te kaha ki te whakamahi i nga raraunga mai i te ECS ahakoa i mua i te tiimata o te utu utu.

Ko te mutunga mai, ko te tino tuunga o nga kaiwhaiwhai o te kaitäkaro lag-compensated he mea nui ki a maatau, na reira i whai hua ake, i te wa ano he huarahi ngawari ake.

Kaore e taea te tango noa te torohūtanga whatunga, ka taea anake te huna. Pērā i ētahi atu tikanga huna, ko te kapeneheihana takamuri o te tūmau kei a ia ano te utu. Ka pai ake te wheako petipeti o te kaitakaro e pupuhi ana i te utu o te kaitakaro e pupuhihia ana. Mo Dino Squad, heoi, i kitea te whiringa i konei.

Ae ra, ko enei mea katoa me utu ma te nui haere o te uaua o te waehere tūmau i te katoa - mo nga kaiwhakahoahoa me nga kaihoahoa keemu. Mena i mua ko te whaihanga he waea raupapa ngawari o nga punaha, katahi ka puta he utu mo te wa roa, ka puta nga kohanga me nga manga ki roto. I whakapau kaha ano matou kia pai ai te mahi tahi.

I roto i te putanga 2019 (a he iti ake pea i mua), i taapirihia e te Unity te tautoko katoa mo nga ahuatanga tinana motuhake. I whakatinanahia e matou i runga i te tūmau tata tonu i muri i te whakahou, na te mea i pirangi matou ki te whakakore wawe i te ao kikokiko noa ki nga ruma katoa.

I hoatu e matou ki ia ruma keemu tona ake ahuatanga tinana, na reira i whakakorehia te hiahia ki te "whakamama" i te whakaaturanga mai i nga raraunga o te ruma tata i mua i te tatau i te whaihanga. Tuatahi, he nui te pikinga o te hua. Tuarua, na reira i taea ai te whakakore i nga momo pepeke katoa i ara ake mena ka he te kaihōtaka i roto i te waehere horoi i te waahi ka taapirihia nga huānga keemu hou. Ko enei hapa he uaua ki te patuiro, a he maha nga wa i puta ai te ahua o nga taonga tinana i roto i te waahi o tetahi ruma ka "rere" ki tetahi atu ruma.

I tua atu, i rangahauhia e matou mehemea ka taea te whakamahi i nga tirohanga tinana ki te penapena i nga hitori o te ao kikokiko. Arā, ko te here, kaua e toha i te tirohanga kotahi ki ia ruma, engari kia 30 nga ahuatanga, ka hanga he parepare porohita mai i roto, hei penapena i nga korero. I te nuinga o te waa, ka puta ke te mahi, engari kaore i whakatinanahia e matou: kaore i whakaatuhia he pikinga haurangi i roto i te hua, engari me whakarereke i nga huringa kino. He uaua ki te matapae me pehea te mahi a te kaimau i te wa e mahi ana mo te wa roa me te maha o nga ahuatanga. No reira, i whai matou i te ture: “Mena kaore i pakaru, kaua e whakatika".

Source: will.com

Tāpiri i te kōrero