Ichi chinali chondichitikira choyamba ndikulemba bot ya Discord, koma zidakhala zosavuta. Npm module discord.js imapereka mawonekedwe osavuta ogwirira ntchito ndi mauthenga, kusonkhanitsa mayankho, ndi zina.
Chodzikanira: Zitsanzo zonse za ma code ndi "zakali pano", kutanthauza kuti adutsa kangapo polembanso usiku.
Maziko a matchmaking ndi "mzere" momwe osewera omwe akufuna kusewera amayikidwa ndikuchotsedwa pamene sakufuna kapena kupeza masewera.
Izi ndi zomwe tanthauzo la "player" limawonekera. Poyamba inali id yogwiritsa ntchito ku Discord, koma pali mapulani oyambitsa / kusaka masewera kuchokera patsamba, koma zinthu zoyamba poyamba.
Ndipo apa pali mawonekedwe amzere. Apa, m'malo mwa "osewera," kuchotsedwa kwa "gulu" kumagwiritsidwa ntchito. Kwa wosewera m'modzi, gululi limakhala la iye yekha, komanso kwa osewera pagulu, motsatana, mwa onse omwe ali mgululi.
Ndinaganiza zogwiritsa ntchito zochitika kuti ndisinthe zochitika. Zinali zoyenera pamilandu - pamwambowu "masewera a anthu 10 adapezeka", mutha kutumiza uthenga wofunikira kwa osewera m'mawu achinsinsi, ndikuchita zoyambira zamabizinesi - yambitsani ntchito yoyang'ana kukonzekera, kukonzekera malo olandirira alendo. kwa kukhazikitsa, ndi zina zotero.
Kwa IOC ndimagwiritsa ntchito InversifyJS. Ndimasangalala ndikugwira ntchito ndi laibulale iyi. Mofulumira komanso zosavuta!
Tili ndi mizere ingapo pa seva yathu - tawonjezera 1x1, yachizolowezi/yovotera, ndi mitundu ingapo yachizolowezi. Chifukwa chake, pali singleton RoomService yomwe ili pakati pa wosuta ndi kusaka kwamasewera.
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)
}
});
}
);
}
(Code Zakudyazi kuti upereke lingaliro la momwe njirazo zimawonekera)
Apa ndikuyambitsa mzere wamtundu uliwonse wamasewera omwe akhazikitsidwa, ndikumvetseranso kusintha kwa "magulu" kuti musinthe mizere ndikupewa mikangano.
Chifukwa chake, mwachita bwino, ndidayikapo ma code omwe alibe chochita ndi mutuwo, ndipo tsopano tiyeni tipite patsogolo pakupanga machesi.
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) Kotero ife tinafika ku ulamuliro "wapamwamba" - kalasi Bot. Kawirikawiri, amakhudzana ndi kugwirizana pakati pa zipata (sindingathe kumvetsa momwe zimakhalira zoseketsa mu Chirasha) ndi malingaliro amalonda a matchmaking. Bot imamva zomwe zinachitika ndikulamula DiscordGateway kutumiza cheke kwa ogwiritsa ntchito onse.
Masewera athu amachitidwa pa VDS ndi Windows seva 2012. Kuchokera apa titha kupeza mfundo zingapo:
Palibe docker pamenepo, zomwe zidandikhudza mtima
Timasunga pa renti
Ntchitoyo ndikuyendetsa njira pa VDS kuchokera ku VPS pa Linux. Ndinalemba seva yosavuta mu Flask. Inde, sindimakonda Python, koma mungachite chiyani?Ndizofulumira komanso zosavuta kulemba seva iyi pa izo.
Imagwira ntchito zitatu:
Kuyambitsa seva ndi kasinthidwe - kusankha mapu, kuchuluka kwa osewera kuti ayambitse masewerawo, ndi mapulagini ambiri. Sindilemba za mapulagini tsopano - ndiyo nkhani yosiyana ndi malita a khofi usiku wosakanikirana ndi misozi ndi tsitsi long'ambika.
Kuyimitsa/kuyambitsanso seva ngati kulumikizidwa kosapambana, komwe titha kungogwira pamanja.
Chilichonse ndi chosavuta apa, zitsanzo zamakhodi sizoyenera. 100 mzere script
Kotero, pamene anthu a 10 adasonkhana pamodzi ndikuvomereza masewerawo, seva inayambika ndipo aliyense anali wofunitsitsa kusewera, chiyanjano chogwirizanitsa ndi masewerawo chinatumizidwa mu mauthenga apadera.
Mwa kuwonekera pa ulalo, wosewera mpira amalumikizana ndi seva yamasewera, ndiye ndizomwezo. Pambuyo pa mphindi pafupifupi 25, "chipinda" chokhala ndi osewera chimachotsedwa.
Ndikupepesa pasadakhale chifukwa chazovuta za nkhaniyi, sindinalembe pano kwa nthawi yayitali, ndipo pali code yochulukirapo yowunikira magawo ofunikira. Zakudyazi, mwachidule.
Ngati ndiwona chidwi pamutuwu, padzakhala gawo lachiwiri - lidzakhala ndi kuzunzika kwanga ndi mapulagini a srcds (Source odzipereka seva), ndipo, mwinamwake, dongosolo la ndondomeko ndi mini-dotabuff, malo omwe ali ndi ziwerengero zamasewera.