Kei te tuhi maatau mo Dota 2014

Aroha katoa.

I tenei puna i kite ahau i tetahi kaupapa i ako ai nga taangata ki te whakahaere i te putanga tūmau Dota 2 2014 a, na reira, ka takaro ki runga. He tino powhiriwhiri ahau ki tenei keemu, a kare e taea e au te paopao i tenei waahi ahurei ki te ruku i a au i taku tamarikitanga.

He tino hohonu taku kukupa, a na reira i tuhia e au he karetao Discord te kawenga mo te tata ki nga mahi katoa kaore i te tautokohia i roto i te putanga tawhito o te keemu, ara ko te mahi takaro.
I mua i nga mahi hou katoa me te karetao, i hangaia ma te ringa te tomokanga. I kohia e matou nga tauhohenga 10 ki tetahi karere me te whakahiato a ringa i tetahi tūmau, i manaaki ranei i tetahi waahi o te rohe.

Kei te tuhi maatau mo Dota 2014

Ko taku ahua o te kaitoha karekau e kaha ki te tu atu i te maha o nga mahi a-ringa, a i te po ka tuhia e ahau te putanga ngawari o te karetao, i whakaara aunoa i te tūmau i te 10 nga tangata.

I whakatau tonu ahau ki te tuhi i roto i nga nodejs, no te mea kaore au i te tino pai ki a Python, ka pai ake ahau ki tenei taiao.

Koinei taku wheako tuatahi ki te tuhi i te karetao mo Discord, engari he tino ngawari. Ko te kōwae npm mana discord.js e whakarato ana i tetahi atanga watea mo te mahi me nga karere, te kohi urupare, aha atu.

Whakakahoretanga: Ko nga tauira waehere katoa he "naianei", ko te tikanga he maha nga huringa o te tuhi ano i te po.

Ko te putake o te whakataurite he "tutira" ka whakanohohia nga kaitakaro e hiahia ana ki te takaro ki roto ka nekehia ina kore ratou e hiahia ki te kimi keemu.

Koinei te ahua o te ahua o te "kaitakaro". I te timatanga he id kaiwhakamahi noa i Discord, engari he mahere ki te whakarewa/rapu mo nga keemu mai i te papanga, engari ko nga mea tuatahi.

export enum Realm {
  DISCORD,
  EXTERNAL,
}

export default class QueuePlayer {
  constructor(public readonly realm: Realm, public readonly id: string) {}

  public is(qp: QueuePlayer): boolean {
    return this.realm === qp.realm && this.id === qp.id;
  }

  static Discord(id: string) {
    return new QueuePlayer(Realm.DISCORD, id);
  }

  static External(id: string) {
    return new QueuePlayer(Realm.EXTERNAL, id);
  }
}

Na konei ko te atanga tūtira. I konei, hei utu mo nga "kaitakaro," ka whakamahia he tangohanga i te ahua o te "rōpū". Mo te kaitakaro kotahi, ko te roopu ko ia ano, mo nga kaitakaro i roto i te roopu, ia, o nga kaitakaro katoa o te roopu.

export default interface IQueue extends EventEmitter {
  inQueue: QueuePlayer[]
  put(uid: Party): boolean;
  remove(uid: Party): boolean;
  removeAll(ids: Party[]): void;

  mode: MatchmakingMode
  roomSize: number;
  clear(): void
}

I whakatau ahau ki te whakamahi i nga kaupapa hei whakawhiti horopaki. He pai mo nga keehi - i runga i te huihuinga "kua kitea he keemu mo te 10 tangata", ka taea e koe te tuku i nga korero e tika ana ki nga kaitakaro i roto i nga karere motuhake, me te kawe i nga whakaaro pakihi taketake - whakarewahia he mahi ki te tirotiro i te noho rite, te whakarite i te waahi. mo te whakarewatanga, me era atu.

Mo te IOC ka whakamahi ahau i te InversifyJS. He pai taku wheako ki te mahi me tenei whare pukapuka. Tere me te ngawari!

He maha nga rarangi kei runga i ta maatau tūmau - kua taapirihia e matou te 1x1, te tikanga/whakataunga, me etahi momo ritenga. Na reira, he kotahitanga RoomService kei waenganui i te kaiwhakamahi me te rapu keemu.

constructor(
    @inject(GameServers) private gameServers: GameServers,
    @inject(MatchStatsService) private stats: MatchStatsService,
    @inject(PartyService) private partyService: PartyService
  ) {
    super();
    this.initQueue(MatchmakingMode.RANKED);
    this.initQueue(MatchmakingMode.UNRANKED);
    this.initQueue(MatchmakingMode.SOLOMID);
    this.initQueue(MatchmakingMode.DIRETIDE);
    this.initQueue(MatchmakingMode.GREEVILING);
    this.partyService.addListener(
      "party-update",
      (event: PartyUpdatedEvent) => {
        this.queues.forEach((q) => {
          if (has(q.queue, (t) => t.is(event.party))) {
            // if queue has this party, we re-add party
            this.leaveQueue(event.qp, q.mode)
            this.enterQueue(event.qp, q.mode)
          }
        });
      }
    );

    this.partyService.addListener(
      "party-removed",
      (event: PartyUpdatedEvent) => {
        this.queues.forEach((q) => {
          if (has(q.queue, (t) => t.is(event.party))) {
            // if queue has this party, we re-add party
            q.remove(event.party)
          }
        });
      }
    );
  }

(Waehere kihu hei whakaatu he aha te ahua o nga mahi)

I konei ka arataki ahau i te rarangi mo ia o nga momo keemu kua whakatinanahia, me te whakarongo ano hoki ki nga huringa o nga "rōpū" hei whakatika i nga rarangi me te karo i etahi pakanga.

Na, ka pai te mahi, i whakaurua e au etahi wahanga o te waehere karekau he take ki te kaupapa, katahi ka haere tika atu ki te whakataurite.

Kia whakaarohia te keehi:

1) Kei te hiahia te kaiwhakamahi ki te takaro.

2) Hei timata i te rapu, ka whakamahia e ia a Gateway=Discord, ara, ka hoatu he tauhohenga ki te karere:

Kei te tuhi maatau mo Dota 2014

3) Ka haere tenei kuaha ki RoomService ka kii "Kei te pirangi tetahi kaiwhakamahi mai i te tautohetohe ki te uru ki te rarangi, aratau: keemu kaore i whakatauhia."

4) Ka whakaae a RoomService i te tono a te kuaha ka panaia te kaiwhakamahi (he tino tika, ko te roopu kaiwhakamahi) ki te rarangi e hiahiatia ana.

5) Ka tirohia e te tutira i nga wa katoa ka nui nga kaitakaro ki te takaro. Mena ka taea, tukuna he huihuinga:

private onRoomFound(players: Party[]) {
    this.emit("room-found", {
      players,
    });
  }

6) E tino harikoa ana a RoomService ki te whakarongo ki nga rarangi katoa i runga i te awangawanga mo tenei huihuinga. Ka whakawhiwhia e matou he rarangi o nga kaitakaro hei whakaurunga, hanga he "ruma" mariko mai i a raatau, a, ko te tikanga, ka tukuna he huihuinga:

queue.addListener("room-found", (event: RoomFoundEvent) => {
      console.log(
        `Room found mode: [${mode}]. Time to get free room for these guys`
      );
      const room = this.getFreeRoom(mode);
      room.fill(event.players);

      this.onRoomFormed(room);
    });

7) Na ka tae matou ki te mana "tino teitei" - te karaehe Bot. I te nuinga o te waa, ka pa ana ia ki te hononga i waenga i nga kuaha (kaore au e mohio ki te ahua rorirori i te reo Russian) me te arorau pakihi mo te whakataurite. Ka rongo te karetao i te huihuinga me te whakahau i a DiscordGateway kia tukuna he haki reri ki nga kaiwhakamahi katoa.

Kei te tuhi maatau mo Dota 2014

8) Ki te whakakahore tetahi, kare ranei e whakaae ki te keemu i roto i te 3 meneti, KAUA e whakahoki mai ki te rarangi. Ka whakahokia e matou katoa ki te rarangi ka tatari kia 10 ano nga tangata. Mena kua whakaae nga kaitakaro katoa ki te keemu, katahi ka timata te waahanga whakamere.

whirihoranga tūmau motuhake

Ka whakahaerehia a maatau keemu i runga i te VDS me te tūmau Windows 2012. Mai i tenei ka taea e taatau te whakatau i etahi whakatau:

  1. Karekau he kaipara i runga, i pa ki ahau i roto i te ngakau
  2. Ka penapena matou i runga i te reti

Ko te mahi he whakahaere i tetahi tukanga i runga i te VDS mai i te VPS i runga i te Linux. I tuhia e ahau he tūmau ngawari ki te Flask. Ae, kaore au i te pai ki a Python, engari me aha ahau? He tere ake, he ngawari ake te tuhi i tenei tūmau ki runga.

E 3 nga mahi:

  1. Te tiimata i te tūmau me te whirihoranga - te kowhiri mapi, te maha o nga kaitakaro ki te tiimata i te keemu, me te huinga mono. Kare au e tuhi mo nga monomai inaianei - he korero rereke tera me nga rita o te kawhe i te po i konatunatua ki nga roimata me nga makawe haehae.
  2. Ka mutu/whakahou ano i te tūmau mena he hononga kore i angitu, ka taea e matou te whakahaere a-ringa anake.

He ngawari nga mea katoa i konei, kaore e tika ana nga tauira waehere. 100 rarangi tuhi

No reira, i te huihuinga 10 nga tangata ka whakaae ki te keemu, ka whakarewahia te tūmau, ka hikaka te katoa ki te takaro, ka tukuna he hononga hono ki te keemu i roto i nga karere motuhake.

Kei te tuhi maatau mo Dota 2014

Ma te paato i te hono, ka hono te kaitoro ki te tūmau keemu, katahi ka mutu. Whai muri i te ~25 meneti, ka whakawāteahia te "ruma" mariko me nga kaitakaro.

Ka mihi ahau i mua mo te kino o te tuhinga, kaore au i tuhi i konei mo te wa roa, a he nui rawa te waehere hei whakanui i nga waahanga nui. Noodles, poto.

Mena ka kite ahau i te hiahia ki te kaupapa, ka puta he waahanga tuarua - kei roto taku mamae me nga mono mo nga srcds (Source dedicated server), a, tera pea, he punaha whakatauranga me te mini-dotabuff, he waahi me nga tatauranga keemu.

Ko etahi hononga:

  1. To tatou paetukutuku (tatauranga, papaarahi, wharangi tauranga iti me te tango a te kiritaki)
  2. tūmau Discord

Source: will.com

Tāpiri i te kōrero