Dota 2014 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚ āĻ˛ā§‡āĻ–āĻž

āĻšāĻžāĻ‡ āĻ¸āĻŦāĻžāĻ‡

āĻāĻ‡ āĻŦāĻ¸āĻ¨ā§āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ›ā§‡āĻ˛ā§‡āĻ°āĻž āĻļāĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛ āĻ•ā§€āĻ­āĻžāĻŦā§‡ Dota 2 āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 2014 āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, āĻāĻŸāĻŋāĻ¤ā§‡ āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ—ā§‡āĻŽāĻŸāĻŋāĻ° āĻāĻ•āĻœāĻ¨ āĻŦāĻĄāĻŧ āĻ­āĻ•ā§āĻ¤, āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻļā§ˆāĻļāĻŦā§‡ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŽāĻœā§āĻœāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻāĻ‡ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻ¸ā§āĻ¯ā§‹āĻ—āĻŸāĻŋ āĻ›āĻžāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋāĨ¤

āĻ†āĻŽāĻŋ āĻ–ā§āĻŦ āĻ—āĻ­ā§€āĻ°āĻ­āĻžāĻŦā§‡ āĻĄā§‹āĻ­ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¤āĻžāĻ‡ āĻ˜āĻŸā§‡āĻ›ā§‡ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻĄāĻŋāĻ¸āĻ•āĻ°ā§āĻĄ āĻŦāĻŸ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ āĻ¯āĻž āĻ—ā§‡āĻŽā§‡āĻ° āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡āĻŽāĻ¨ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚āĨ¤
āĻŦāĻŸ āĻ¸āĻš āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĻā§āĻ­āĻžāĻŦāĻ¨ā§‡āĻ° āĻ†āĻ—ā§‡, āĻ˛āĻŦāĻŋāĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ 10āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻ˛āĻŦāĻŋ āĻšā§‹āĻ¸ā§āĻŸ āĻ•āĻ°ā§‡āĻ›āĻŋā§ˇ

Dota 2014 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚ āĻ˛ā§‡āĻ–āĻž

āĻāĻ•āĻœāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻŋ āĻāĻ¤ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ•āĻžāĻœ āĻ¸āĻšā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĻŋ, āĻāĻŦāĻ‚ āĻ°āĻžāĻ¤āĻžāĻ°āĻžāĻ¤āĻŋ āĻ†āĻŽāĻŋ āĻŦāĻŸāĻŸāĻŋāĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻšāĻœ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ¸ā§āĻ•ā§‡āĻš āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻž 10 āĻœāĻ¨ āĻ˛ā§‹āĻ• āĻĨāĻžāĻ•āĻžāĻ•āĻžāĻ˛ā§€āĻ¨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ•ā§‡ āĻ‰āĻ¤ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ¨ā§‹āĻĄā§‡āĻœā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋ āĻ¨āĻž āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻžāĻšā§āĻ›āĻ¨ā§āĻĻā§āĻ¯ āĻŦā§‹āĻ§ āĻ•āĻ°āĻŋāĨ¤

āĻāĻŸāĻŋ āĻĄāĻŋāĻ¸āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻŸ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻŦ āĻ¸āĻšāĻœ āĻŦāĻ˛ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ npm āĻŽāĻĄāĻŋāĻ‰āĻ˛ discord.js āĻŽā§‡āĻ¸ā§‡āĻœ, āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻĻāĻžāĻŦāĻŋāĻ¤ā§āĻ¯āĻžāĻ—: āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ "āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨", āĻ¯āĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻ¤āĻžāĻ°āĻž āĻ°āĻžāĻ¤ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻ˛āĻŋāĻ–āĻ¨ā§‡āĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤

āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ "āĻ¸āĻžāĻ°āĻŋ" āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻ°āĻž āĻ¯āĻžāĻ°āĻž āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻšāĻžāĻ¯āĻŧ āĻ¤āĻžāĻĻā§‡āĻ° āĻ°āĻžāĻ–āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¯āĻ–āĻ¨ āĻ¤āĻžāĻ°āĻž āĻ•ā§‹āĻ¨ āĻ–ā§‡āĻ˛āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻžāĻ¯āĻŧ āĻ¨āĻž āĻŦāĻž āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ¯āĻŧ āĻ¨āĻž āĻ¤āĻ–āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ "āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ" āĻāĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻ•āĻŋ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ. āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡, āĻāĻŸāĻŋ āĻĄāĻŋāĻ¸āĻ•āĻ°ā§āĻĄā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ†āĻ‡āĻĄāĻŋ āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻ¸āĻžāĻ‡āĻŸ āĻĨā§‡āĻ•ā§‡ āĻ—ā§‡āĻŽāĻ—ā§āĻ˛āĻŋ āĻ˛āĻžā§āĻš/āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻŦā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡āĨ¤

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

āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸āĻžāĻ°āĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸. āĻāĻ–āĻžāĻ¨ā§‡, "āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ" āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ "āĻ—ā§āĻ°ā§āĻĒ" āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ—ā§āĻ°ā§āĻĒāĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ—āĻ āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ¯āĻĨāĻžāĻ•ā§āĻ°āĻŽā§‡, āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĨ¤

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
}

āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ— āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›ā§‡. āĻāĻŸāĻŋ āĻŽāĻžāĻŽāĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ›āĻŋāĻ˛ - āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ "10 āĻœāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ—ā§‡āĻŽ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ—ā§‡āĻ›ā§‡", āĻ†āĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ - āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨, āĻ˛āĻŦāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°ā§āĻ¨ āĻ˛āĻžā§āĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡āĨ¤

IOC āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ InversifyJS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻ†āĻŽāĻžāĻ° āĻāĻ‡ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ†āĻ¨āĻ¨ā§āĻĻāĻĻāĻžāĻ¯āĻŧāĻ• āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻ†āĻ›ā§‡āĨ¤ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ!

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻ†āĻŽāĻ°āĻž 1x1, āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•/āĻ°ā§‡āĻŸā§‡āĻĄ, āĻāĻŦāĻ‚ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻŽā§‹āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ™ā§āĻ—āĻ˛āĻŸāĻ¨ āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻ—ā§‡āĻŽ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

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

(āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ—ā§āĻ˛āĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ•ā§‡āĻŽāĻ¨ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ āĻ¨ā§āĻĄāĻ˛āĻ¸)

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ—ā§‡āĻŽ āĻŽā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°āĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ, āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°āĻŋāĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻāĻĄāĻŧāĻžāĻ¤ā§‡ "āĻ—ā§āĻ°ā§āĻĒāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡" āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĻ“ āĻļā§āĻ¨āĻŋāĨ¤

āĻ¤āĻžāĻ‡, āĻ­āĻžāĻ˛ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ†āĻŽāĻŋ āĻ•ā§‹āĻĄā§‡āĻ° āĻŸā§āĻ•āĻ°ā§‹āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡āĻ° āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ• āĻ¨ā§‡āĻ‡, āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚āĻ¯āĻŧā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻ•ā§‡āĻ¸ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

1) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻšāĻžāĻ¯āĻŧāĨ¤

2) āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¤āĻŋāĻ¨āĻŋ Gateway=Discord āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻœāĻžāĻ¨āĻžāĻ¨:

Dota 2014 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚ āĻ˛ā§‡āĻ–āĻž

3) āĻāĻ‡ āĻ—ā§‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻŸāĻŋ āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻ˛ā§‡ "āĻāĻ•āĻœāĻ¨ āĻŦāĻŋāĻŦāĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¯āĻŧ, āĻŽā§‹āĻĄ: āĻ°ā§‡āĻŸ āĻ¨āĻž āĻ•āĻ°āĻž āĻ—ā§‡āĻŽāĨ¤"

4) āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ—ā§‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ (āĻ†āĻ°ā§‹ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ—ā§‹āĻˇā§āĻ ā§€) āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻ ā§‡āĻ˛ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

5) āĻ–ā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ āĻ†āĻ›ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ¸āĻžāĻ°āĻŋ āĻšā§‡āĻ• āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽā§āĻ­āĻŦ āĻšāĻ¯āĻŧ, āĻāĻ•āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻ—āĻ¤ āĻ•āĻ°ā§āĻ¨:

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

6) āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡ āĻāĻ‡ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ‰āĻĻā§āĻŦāĻŋāĻ—ā§āĻ¨ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻ†āĻ¨āĻ¨ā§āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§āĻ¨āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¨āĻĒā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒāĻžāĻ‡, āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ "āĻ°ā§āĻŽ" āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻœāĻžāĻ°āĻŋ āĻ•āĻ°āĻŋ:

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) āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž "āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš" āĻ•āĻ°ā§āĻ¤ā§ƒāĻĒāĻ•ā§āĻˇā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĒā§ŒāĻāĻ›ā§‡āĻ›āĻŋ - āĻ•ā§āĻ˛āĻžāĻ¸ āĻŦāĻŸ. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ¤āĻŋāĻ¨āĻŋ āĻ—ā§‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ¨ (āĻ†āĻŽāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž āĻāĻŸāĻŋ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ•āĻ¤āĻŸāĻž āĻŽāĻœāĻžāĻ° āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ) āĻāĻŦāĻ‚ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĨ¤ āĻŦāĻŸāĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻŸāĻŋ āĻļā§‹āĻ¨ā§‡ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸āĻ•āĻ°ā§āĻĄāĻ—ā§‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻ†āĻĻā§‡āĻļ āĻĻā§‡āĻ¯āĻŧāĨ¤

Dota 2014 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚ āĻ˛ā§‡āĻ–āĻž

8) āĻ¯āĻĻāĻŋ āĻ•ā§‡āĻ‰ 3 āĻŽāĻŋāĻ¨āĻŋāĻŸā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ–ā§‡āĻ˛āĻžāĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻ–ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻŦāĻž āĻ—ā§āĻ°āĻšāĻŖ āĻ¨āĻž āĻ•āĻ°ā§‡, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻŦ āĻ¨āĻžāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŦāĻžāĻ‡āĻ•ā§‡ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ†āĻŦāĻžāĻ° 10 āĻœāĻ¨ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ āĻ–ā§‡āĻ˛āĻžāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ āĻ¤āĻŦā§‡ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ…āĻ‚āĻļ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤

āĻĄā§‡āĻĄāĻŋāĻ•ā§‡āĻŸā§‡āĻĄ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ—ā§‡āĻŽāĻ—ā§āĻ˛āĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° 2012 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻŋāĻĄāĻŋāĻāĻ¸-āĻ āĻšā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ā§‡ āĻ†āĻ¸āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ:

  1. āĻ¤āĻžāĻ° āĻ‰āĻĒāĻ° āĻ•ā§‹āĻ¨ āĻĄāĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡, āĻ¯āĻž āĻ†āĻŽāĻžāĻ° āĻšā§ƒāĻĻāĻ¯āĻŧā§‡ āĻ†āĻ˜āĻžāĻ¤ āĻ•āĻ°ā§‡
  2. āĻ†āĻŽāĻ°āĻž āĻ­āĻžāĻĄāĻŧāĻž āĻŦāĻžāĻāĻšāĻžāĻ‡

āĻ•āĻžāĻœāĻŸāĻŋ āĻšāĻ˛ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻĒāĻŋāĻāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ­āĻŋāĻĄāĻŋāĻāĻ¸-āĻ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĨ¤ āĻ†āĻŽāĻŋ āĻĢā§āĻ˛āĻžāĻ¸ā§āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻ†āĻŽāĻŋ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§€ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨? āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ˛ā§‡āĻ–āĻž āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœāĨ¤

āĻāĻŸāĻŋ 3āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡:

  1. āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻž - āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻž, āĻ—ā§‡āĻŽāĻŸāĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸā§ˇ āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ˛āĻŋāĻ–āĻŦ āĻ¨āĻž - āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ—āĻ˛ā§āĻĒ āĻ¯āĻž āĻ°āĻžāĻ¤ā§‡ āĻ˛āĻŋāĻŸāĻžāĻ° āĻ•āĻĢāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻšā§‹āĻ–ā§‡āĻ° āĻœāĻ˛ āĻāĻŦāĻ‚ āĻ›ā§‡āĻāĻĄāĻŧāĻž āĻšā§āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤āĨ¤
  2. āĻ…āĻ¸āĻĢāĻ˛ āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž/āĻĒā§āĻ¨āĻƒāĻ¸ā§‚āĻšāĻ¨āĻž āĻ•āĻ°āĻž, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœ, āĻ•ā§‹āĻĄ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ 100 āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ¯āĻ–āĻ¨ 10 āĻœāĻ¨ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ—ā§‡āĻŽāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻžāĻ‡ āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻ›āĻŋāĻ˛, āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ—ā§‡āĻŽāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

Dota 2014 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻšāĻŽā§‡āĻ•āĻŋāĻ‚ āĻ˛ā§‡āĻ–āĻž

āĻ˛āĻŋāĻ™ā§āĻ•āĻŸāĻŋāĻ¤ā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡, āĻĒā§āĻ˛ā§‡āĻ¯āĻŧāĻžāĻ° āĻ—ā§‡āĻŽ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡āĻ‡ āĻāĻŸāĻŋāĨ¤ ~25 āĻŽāĻŋāĻ¨āĻŋāĻŸā§‡āĻ° āĻĒāĻ°ā§‡, āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ "āĻ°ā§āĻŽ" āĻ¸āĻžāĻĢ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§ˇ

āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ° āĻŦāĻŋāĻļā§āĻ°ā§€āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ—ā§āĻ°āĻŋāĻŽ āĻ•ā§āĻˇāĻŽāĻžāĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§€, āĻ†āĻŽāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻĻāĻŋāĻ¨ āĻ˛āĻŋāĻ–āĻŋāĻ¨āĻŋ, āĻāĻŦāĻ‚ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻ­āĻžāĻ—āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ‡āĻ˛āĻžāĻ‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻŦā§‡āĻļāĻŋ āĻ•ā§‹āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻ¨ā§āĻĄāĻ˛āĻ¸āĨ¤

āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻ†āĻ—ā§āĻ°āĻš āĻĻā§‡āĻ–āĻŋ, āĻ¤āĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ…āĻ‚āĻļ āĻĨāĻžāĻ•āĻŦā§‡ - āĻāĻ¤ā§‡ srcds (āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĄā§‡āĻĄāĻŋāĻ•ā§‡āĻŸā§‡āĻĄ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°) āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¸āĻš āĻ†āĻŽāĻžāĻ° āĻ¯āĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻž āĻĨāĻžāĻ•āĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤, āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āĻŽāĻŋāĻ¨āĻŋ-āĻĄā§‹āĻŸāĻžāĻŦāĻžāĻĢ, āĻ—ā§‡āĻŽā§‡āĻ° āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ‡āĻŸāĨ¤

āĻ•āĻŋāĻ›ā§ āĻ˛āĻŋāĻ™ā§āĻ•:

  1. āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ (āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨, āĻ˛āĻŋāĻĄāĻžāĻ°āĻŦā§‹āĻ°ā§āĻĄ, āĻ›ā§‹āĻŸ āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŋāĻ‚ āĻĒā§ƒāĻˇā§āĻ āĻž āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ)
  2. āĻĄāĻŋāĻ¸āĻ•āĻ°ā§āĻĄ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨