เจ…เจธเฉ€เจ‚ เจกเฉ‹เจŸเจพ 2014 เจฒเจˆ เจฎเฉˆเจšเจฎเฉ‡เจ•เจฟเฉฐเจ— เจฒเจฟเจ– เจฐเจนเฉ‡ เจนเจพเจ‚

เจนเจพเจˆ เจนเจฐ เจ•เฉ‹เจˆ

เจ‡เจธ เจฌเจธเฉฐเจค เจตเจฟเฉฑเจš เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฎเจฟเจฒเจฟเจ† เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเฉเฉฐเจกเจฟเจ†เจ‚ เจจเฉ‡ เจกเฉ‹เจŸเจพ 2 เจธเจฐเจตเจฐ เจธเฉฐเจธเจ•เจฐเจฃ 2014 เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡, เจ‡เจธเจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจธ 'เจคเฉ‡ เจ–เฉ‡เจกเจฃเจพ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆเฅค เจฎเฉˆเจ‚ เจ‡เจธ เจ–เฉ‡เจก เจฆเจพ เจฌเจนเฉเจค เจตเฉฑเจกเจพ เจชเฉเจฐเจธเจผเฉฐเจธเจ• เจนเจพเจ‚, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจฌเจšเจชเจจ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจฒเฉ€เจจ เจ•เจฐเจจ เจฆเฉ‡ เจ‡เจธ เจตเจฟเจฒเฉฑเจ–เจฃ เจฎเฉŒเจ•เฉ‡ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจ—เฉเจ† เจธเจ•เจฆเจพเฅค

เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจกเฉ‚เฉฐเจ˜เจพเจˆ เจจเจพเจฒ เจ˜เฉเฉฑเจ—เฉ€ เจชเจพเจˆ, เจ…เจคเฉ‡ เจ…เจœเจฟเจนเจพ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจกเจฟเจธเจ•เจพเจฐเจก เจฌเฉ‹เจŸ เจฒเจฟเจ–เจฟเจ† เจœเฉ‹ เจฒเจ—เจญเจ— เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพเจตเจพเจ‚ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ เจœเฉ‹ เจ—เฉ‡เจฎ เจฆเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจฐเจฅเจพเจค เจฎเฉˆเจšเจฎเฉ‡เจ•เจฟเฉฐเจ—เฅค
เจฌเฉ‹เจŸ เจจเจพเจฒ เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจพเจขเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฒเจพเจฌเฉ€ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเฉ‡ เจฒเจˆ 10 เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจ‡เจ•เฉฑเจ เฉ€เจ†เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ, เจœเจพเจ‚ เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจฒเจพเจฌเฉ€ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจ•เฉ€เจคเฉ€เฅค

เจ…เจธเฉ€เจ‚ เจกเฉ‹เจŸเจพ 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 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจฏเจพเจจเฉ€ เจธเฉฐเจฆเฉ‡เจธเจผ 'เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเจพ เจนเฉˆ:

เจ…เจธเฉ€เจ‚ เจกเฉ‹เจŸเจพ 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) เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ "เจธเจญ เจคเฉ‹เจ‚ เจ‰เฉฑเจšเฉ‡" เจ…เจฅเจพเจฐเจŸเฉ€ - เจ•เจฒเจพเจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ—เจ เจฌเฉŒเจŸเจฎ. เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‰เจน เจ—เฉ‡เจŸเจตเฉ‡เจœเจผ (เจฎเฉˆเจ‚ เจธเจฎเจ เจจเจนเฉ€เจ‚ เจธเจ•เจฆเจพ เจ•เจฟ เจ‡เจน เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš เจ•เจฟเฉฐเจจเจพ เจฎเจœเจผเจพเจ•เฉ€เจ† เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ เจฎเฉˆเจšเจฎเฉ‡เจ•เจฟเฉฐเจ— เจฆเฉ‡ เจตเจชเจพเจฐเจ• เจคเจฐเจ• เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจธเจฌเฉฐเจงเจพเจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฆเจพ เจนเฉˆเฅค เจฌเฉ‹เจŸ เจ˜เจŸเจจเจพ เจจเฉ‚เฉฐ เจธเฉเจฃเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ DiscordGateway เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐเฉ€ เจœเจพเจ‚เจš เจญเฉ‡เจœเจฃ เจฆเจพ เจ†เจฆเฉ‡เจธเจผ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจกเฉ‹เจŸเจพ 2014 เจฒเจˆ เจฎเฉˆเจšเจฎเฉ‡เจ•เจฟเฉฐเจ— เจฒเจฟเจ– เจฐเจนเฉ‡ เจนเจพเจ‚

8) เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ 3 เจฎเจฟเฉฐเจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจฐเฉฑเจฆ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจธเจตเฉ€เจ•เจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจฌเจพเจ•เฉ€ เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจตเจพเจชเจธ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ 10 เจฒเฉ‹เจ• เจฆเฉเจฌเจพเจฐเจพ เจนเฉ‹เจฃ เจคเฉฑเจ• เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡ เจธเจพเจฐเฉ‡ เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‡ เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐ เจฒเจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจฆเจฟเจฒเจšเจธเจช เจนเจฟเฉฑเจธเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ.

เจธเจฎเจฐเจชเจฟเจค เจธเจฐเจตเจฐ เจธเฉฐเจฐเจšเจจเจพ

เจธเจพเจกเฉ€เจ†เจ‚ เจ—เฉ‡เจฎเจพเจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฐเจตเจฐ 2012 เจฆเฉ‡ เจจเจพเจฒ VDS 'เจคเฉ‡ เจนเฉ‹เจธเจŸ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจ•เจˆ เจธเจฟเฉฑเจŸเฉ‡ เจ•เฉฑเจข เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

  1. เจ‡เจธ เจคเฉ‡ เจ•เฉ‹เจˆ เจกเฉŒเจ•เจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจœเฉ‹ เจฎเฉ‡เจฐเฉ‡ เจฆเจฟเจฒ เจตเจฟเฉฑเจš เจฎเจพเจฐเจฆเจพ เจนเฉˆ
  2. เจ…เจธเฉ€เจ‚ เจ•เจฟเจฐเจพเจ 'เจคเฉ‡ เจฌเจšเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจ•เฉฐเจฎ เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• VPS เจคเฉ‹เจ‚ VDS เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจซเจฒเจพเจธเจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจธเจฐเจตเจฐ เจฒเจฟเจ–เจฟเจ†. เจนเจพเจ‚, เจฎเฉˆเจจเฉ‚เฉฐ เจชเจพเจˆเจฅเจจ เจชเจธเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจ•เฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเจพเจ‚? เจ‡เจธ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจฒเจฟเจ–เจฃเจพ เจคเฉ‡เจœเจผ เจ…เจคเฉ‡ เจ†เจธเจพเจจ เจนเฉˆเฅค

เจ‡เจน 3 เจซเฉฐเจ•เจธเจผเจจ เจ•เจฐเจฆเจพ เจนเฉˆ:

  1. เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ - เจ‡เฉฑเจ• เจจเจ•เจธเจผเจพ เจšเฉเจฃเจจเจพ, เจ—เฉ‡เจฎ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€, เจ…เจคเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸเฅค เจฎเฉˆเจ‚ เจนเฉเจฃ เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เจพเจ‚เจ—เจพ - เจ‡เจน เจฐเจพเจค เจจเฉ‚เฉฐ เจนเฉฐเจเฉ‚เจ†เจ‚ เจ…เจคเฉ‡ เจซเจŸเฉ‡ เจตเจพเจฒเจพเจ‚ เจจเจพเจฒ เจฒเฉ€เจŸเจฐ เจ•เฉŒเจซเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจ•เจนเจพเจฃเฉ€ เจนเฉˆเฅค
  2. เจ…เจธเจซเจผเจฒ เจ•เฉเจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ/เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจนเฉฑเจฅเฉ€เจ‚ เจธเฉฐเจญเจพเจฒ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ‡เฉฑเจฅเฉ‡ เจธเจญ เจ•เฉเจ เจธเจงเจพเจฐเจจ เจนเฉˆ, เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจตเฉ€ เจ‰เจšเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจเฅค 100 เจฒเจพเจˆเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ

เจ‡เจธ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ 10 เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‡ เจ‡เจ•เฉฑเจ เฉ‡ เจนเฉ‹ เจ•เฉ‡ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เฉ€เจคเจพ, เจธเจฐเจตเจฐ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจ…เจคเฉ‡ เจนเจฐ เจ•เฉ‹เจˆ เจ–เฉ‡เจกเจฃ เจฒเจˆ เจ‰เจคเจธเฉเจ• เจธเฉ€, เจจเจฟเฉฑเจœเฉ€ เจธเฉฐเจฆเฉ‡เจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจ—เฉ‡เจฎ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจญเฉ‡เจœเจฟเจ† เจ—เจฟเจ†เฅค

เจ…เจธเฉ€เจ‚ เจกเฉ‹เจŸเจพ 2014 เจฒเจˆ เจฎเฉˆเจšเจฎเฉ‡เจ•เจฟเฉฐเจ— เจฒเจฟเจ– เจฐเจนเฉ‡ เจนเจพเจ‚

เจฒเจฟเฉฐเจ• 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจ เจจเจพเจฒ, เจ–เจฟเจกเจพเจฐเฉ€ เจ—เฉ‡เจฎ เจธเจฐเจตเจฐ เจจเจพเจฒ เจœเฉเฉœเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เจน เจนเฉ‹ เจ—เจฟเจ†เฅค ~25 เจฎเจฟเฉฐเจŸเจพเจ‚ เจฌเจพเจ…เจฆ, เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจตเจพเจฒเจพ เจตเจฐเจšเฉเจ…เจฒ โ€œเจ•เจฎเจฐเจพโ€ เจธเจพเจซเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจฒเฉ‡เจ– เจฆเฉ€ เจ…เจœเฉ€เจฌเจคเจพ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉเจ†เจซเฉ€ เจฎเฉฐเจ—เจฆเจพ เจนเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เฉฑเจฅเฉ‡ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจœเจพเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจ•เฉ‹เจก เจนเฉˆเฅค เจจเฉ‚เจกเจฒเจœเจผ, เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš.

เจœเฉ‡ เจฎเฉˆเจ‚ เจตเจฟเจธเจผเฉ‡ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจตเฉ‡เจ–เจฆเจพ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เฉฑเจ• เจฆเฉ‚เจœเจพ เจญเจพเจ— เจนเฉ‹เจตเฉ‡เจ—เจพ - เจ‡เจธ เจตเจฟเฉฑเจš srcds (เจธเจฐเฉ‹เจค เจธเจฎเจฐเจชเจฟเจค เจธเจฐเจตเจฐ) เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉ‡เจฐเฉ€ เจคเจธเฉ€เจนเฉ‡ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ‡, เจ…เจคเฉ‡, เจธเฉฐเจญเจต เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจฎเจฟเฉฐเจจเฉ€-เจกเฉ‹เจŸเจพเจฌเจซ, เจ—เฉ‡เจฎ เจฆเฉ‡ เจ…เฉฐเจ•เฉœเจฟเจ†เจ‚ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจธเจพเจˆเจŸ.

เจ•เฉเจ เจฒเจฟเฉฐเจ•:

  1. เจธเจพเจกเฉ€ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ (เจ…เฉฐเจ•เฉœเฉ‡, เจฒเฉ€เจกเจฐเจฌเฉ‹เจฐเจก, เจ›เฉ‹เจŸเจพ เจฒเฉˆเจ‚เจกเจฟเฉฐเจ— เจชเฉฐเจจเจพ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจกเจพเจŠเจจเจฒเฉ‹เจก)
  2. เจกเจฟเจธเจ•เจพเจฐเจก เจธเจฐเจตเจฐ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹