วิธีสร้างมินิเกมส์เองในภาพ: คู่มือของกลุ่มผู้พัฒนาเซิร์ฟเวอร์

โดย: name หมวดหมู่: อ่านเมื่อนาที

ต้องการสร้างสงครามเบด หรือเกมล่าชีวิตในจินตนาการ มัคคุเทศก์นี้ครอบคลุมการทํางานเต็มรูปแบบ ทั้งเครื่องเกมและการจัดการสนามกีฬา เพื่อติดตามผู้เล่นจาก ECS, การจับคู่และการใช้งาน รวมตัวอย่างจริงจาก คําสาปที่มีอยู่แล้ว มินิเกมส์.

สถาปัตยกรรมของ Hytle ด้านข้างของเซิร์ฟเวอร์ ทําให้เหมาะสมสําหรับมินิเกมส์ที่กําหนดเอง ไม่เหมือนกับ Minicraft ที่ที่ส่วนเสริมโหมดเกม ต่อสู้กับกล่องทรายวานิลา ไฮตาล ส่วนเสริม API และ ECS ให้คุณควบคุมพฤติกรรมขององค์กรโดยตรง ถ้าคุณสร้างบักกิตมินิเกมส์ แนวความคิดก็แปลได้ -- แต่ระเบียบนี้สะอาดกว่า มัคคุเทศก์นี้ครอบคลุมระบบหลักทุกรายการขนาดเล็กต้องการ: การจัดการเกมรัฐ, กรณีเวที, การติดตามผู้เล่น, การจับสกอร์, การจับคู่, และการใช้งาน Architecture: ส่วนเสริมมินิเกมส์ทํางานอย่างไรในไฮตาล (hh2) ก่อนจะดําน้ําลงในรหัส, เข้าใจสถาปัตยกรรมระดับสูงของเกมมินิกานา: [p] สืบค้นเมื่อ 20 พฤษภาคม พ.ศ. [Thead] ผู้จัดการกาเมะ ทุก ๆ อย่าง เช่น สร้างสนามกีฬา, จัดการ lobbies, ผู้เล่นเส้นทาง [/ttttd] บริการ Singleton ในส่วนเสริมของคุณ (อังกฤษ) Annina instance One Dunling Game perts with local, Player, and World Entergent (tttd) Clas จัดการกับโลกหรือภูมิภาคของมัน เครื่องรัฐกาเมะ (_BAR_) ข้อมูลเพลย์เดอร์ (About) tracks ต่อรัฐผู้เล่น -- คะแนน, ทีม, มีชีวิตอยู่/ตาย, Thects [tttd] ส่วนประกอบที่แนบมากับตัวเครื่องเล่น ผู้จัดการคู่นี้ (* แข็งแกร่ง) ตอบโต้การกระทําของผู้เล่น -- ฆ่า, ปิดกั้น, บล็อก, การเข้าโซน (THD) Hevent Buss + ECS ระบบเหตุการณ์ที่เกิดขึ้นใน ค.ศ. [THE] Step 1: Game State Machine [h2] ทุกมินิเกมส์ต้องการเครื่องรัฐ นี่คือกระดูกสันหลังที่ควบคุมสิ่งที่เกิดขึ้นและเมื่อไหร่ enum Gamestate (เสียงปรบมือ) รอ, / ลอบบี้, รอผู้เล่น เริ่ม, / นับถอยหลัง ก่อนที่จะเริ่มเกม เล่น, / / เกมที่ทํางานอยู่ DeadMATCH, // ตัวเลือก: ระยะการประลองสุดท้าย กําลังจบ / / เกมมากกว่า, แสดงผลผลลัพธ์ [ไ แต่ละตัวอย่างสนามกีฬามี (); การนับถอยหลังส่วนตัว = 10; ฟังก์ชัน CHAR () จะคืนค่าเป็นอักขระที่มีรหัสตัวเลขตรงกับที่กําหนด (เสียงปรบมือ) สลับ (รัฐ) กรณีรอ -> { หาก (Players. size () >= MEN_PLAYER) [(พ.ศ. รัฐ = GameState เริ่ม; การนับถอยหลัง = 10; ) ) การเริ่มงาน -> { นับถอยหลัง-- การจัดอันดับ: หาก (นับถอยหลัง { Checkwindation (); ) คดีสิ้นสุด -> { ตอบกลับทั้งหมด ฟังก์ชัน REMLN () จะคืนค่ากลับมาเป็นค่าเป็นค่าจํานวนวินาทีของเวลาที่กําหนด รัฐ = GameState รอ ) ) ) [ไ Step 2: play with ECS parts [h2] ใช้ระบบคอมโพเนนต์ของไฮทาเคิล เพื่อแนบข้อมูลเกมที่ระบุไปยังตัวผู้เล่น นี้สะอาดกว่าการรักษาภายนอก HashhMap< UUID, ผู้เล่น Data> แผนที่ (*รหัส) — ข้อมูลมีชีวิตอยู่บนตัวเอง. [p] คลาสภาษาอาหรับมินิเกมส์ เครื่องมือเล่น คอมโพเนนท์< EntitiesStore> { สนามสตริงสาธารณะ ID = "" ทีมสายประชาชน =". การฆ่าของประชาชน = 0 การเสียชีวิตของประชาชน = 0 คะแนนประชาชนในนัดที่ 0 บูเลอันยังมีชีวิตอยู่ สาธารณะตลอดกาล ความตาย = 0 @ override Public MingamePlayer Raw ()( ข้อความ) มินิเกม ผู้เล่นคัดลอก = minGameer () ใหม่ คัดลอก. arena ID = this. aredaid รับทราบ ทีม = นี้.เตม รับทราบ ฆ่า = นี่ รับทราบ ความตาย =สิ่งนี้ ความตาย รับทราบ สคอร์ =นี่ คัดลอก.alive =.aliv; รับทราบ ความตายสุดท้าย =สิ่งนี้ ความตาย สําเนาคืน; ) [ไ เรียกส่วนประกอบนี้เมื่อผู้เล่นเข้าร่วมสนามกีฬา, อ่านมันระหว่างเกมเล่นเพื่อตรรกะของทีมและลบมันเมื่อพวกเขาออกไป Step3: Handling for Games character Minigames จําเป็นต้องตอบสนองต่อการกระทําของผู้เล่น ใช้ระบบเหตุการณ์ที่เหมาะสมสําหรับแต่ละประเภท: เหตุการณ์ที่เกิดขึ้นใน ค.ศ. เหตุการณ์บัส (Global) [h3] // ผู้ เล่น จะ ร่วม กับ เครื่อง บิน — แสดง ให้ เขา ดู ที่ ระเบียง ได้รับ HentRegrisText. regorglobal( ข้อความ) ผู้เล่น Ready Went. ชั้น, เหตุการณ์ที่เกิดขึ้น - > เทอร์มินัลไปยัง Lobby(event.getPlayer) ) / / ผู้ เล่น ขาด การ ติด ต่อ — ขจัด ออก ไป จาก สนาม ได้รับ HentRegrisText. regorglobal( ข้อความ) ผู้เล่น Discore. คลาส เหตุการณ์ที่ทํางาน - > optPlayerLoot (event.getPlayer ()) ) / / คํา สั่ง ของ แช ตรู ม — / คู่ สมรส, / ที่ อยู่ อาศัย, / ที่ อยู่ อาศัย, / ที่ เหมาะ สม ได้รับ HentRegristric (). regisnc Global(. ) ผู้เล่นแชต เวสต์ คลาส อนาคต -> อนาคต. ancept (event -") ข้อความ Msg = เหตุการณ์. get CHAR (); หาก (เช่น เริ่มที่ [/ ร่วม") (เสียงปรบมือ) เหตุการณ์ต่าง ๆ จัดการจดหมายเวียน ) } ) (หัวเราะ) OCS เหตุการณ์ (พิเศษ) (h3) สําหรับบล็อกพัก, ความเสียหาย, และการกระทําระดับองค์กรอื่น ๆ สร้าง { @ override โมฆะของประชาชน เพิ่ม (รายการร้านค้า) ปฏิรูป เสียชีวิตอย่างสิ้นซาก) (ค.ศ. / / ความ เป็น กลาง สิ้น ชีวิต — พบ ผู้ ฆ่า, ได้ คะแนน ปรับ ปรุง Ref Killer = Dead.get Killer (); ถ้า (Killer!=ว่าง) { มินิเกม ผู้เล่น Kill Data = รับความร่วมมือ (Component) นักฆ่า มินิเกมส์เพลเยอร์ หาก (KillData!=ว่าง) { ฆาตกร ข้อมูล. ฆ่า++; ฆาตกร ข้อมูล ฆ่าคน ) ) ) [ไ เหตุการณ์ที่เกิดขึ้นใน ECS ต้องถูกยกเลิกใน Filter [_BAR_] ระยะ ไม่ใช่ระยะการตรวจสอบ หากคุณต้องการป้องกันไม่ให้บล็อกแตกระหว่างขั้นตอนการล๊อบบี้ ตัวกรองต้องตรวจสอบสถานะเกมและยกเลิกก่อนการกระทําดําเนินการ Step 4: arena contacting [h2] สําหรับเกมที่ต้องการพื้นที่เล่นแยก (Hunger Games, Bed Wars) คุณจําเป็นต้องมีตัวอย่าง: (wap) รูปแบบ Multi-Americation (h3) (เสียงปรบมือ) Map< ส่วนตัว;String, Arena> เวที = HashMapplt;> (); Public Arena สร้าง Arena( Strring Id, November Center) (เสียงปรบมือ) อเรนา สังเวียน = อะเรน่าใหม่ (ID, Central) สังเวียน ลั่นไก กลับสนามกีฬา; ) Public Areana พบ AVEIIIIIAIIIMEN () ของมหาชน (in อังกฤษ) (เสียงปรบมือ) กลับเป็นเวที. ค่า (). tream () . filter( a -). getstate () GameState. รอ) . filter( a -). getpercate () ทีม (เสียงปรบมือ) รายการที่ httplt;PlayerRef> ผู้เล่น = contact. ggeters (); เครื่องราชอิสริยาภรณ์ สตริง [] ทีม = {"Red", "ฟ้า", "เขียว", "เยโลว" }; สําหรับ (int i = 0; i < Player. ize (); i++) { มินิเกม ข้อมูลผู้เล่น = รับคอมโพเนนต์ (Component) ผู้เล่น รับบท มินิเกมส์เพลเยอร์ ข้อมูล.เตม=ทีม[i% ทีม. ] ) [ไ Scorboard Show [h3] ใช้คําสั่ง ระบบจดหมาย รองรับการฟอร์แมตสี, รูปแบบตัวหนา/ แบบปฏิทิน, และการแทนที่พารามิเตอร์: [p] [คะแนน] ตัวสร้างสตริง sb = ตัวสร้างเส้นใหม่ ("x6=) Projectboard=/n; Contact.getPlayers (). tream () . sortted(a, b) -") รับคะแนน (b) - รับคะแนน (a) ...สําหรับแต่ละคน (p ->) มินิเกม ข้อมูลผู้เล่น = รับคอมโพเนนต์ (Component) พี มินิเกมส์เพลเยอร์ คลาส; sb.append(String.format//fs: §é%d ฆ่า access access/s" P.getnownname (), ข้อมูล. knowns, data.score; ) Nancy. broadcast (sb. tostrring ()) [ไ Step 6: Win Creatures [h2] เกมมินิเกมส์ชนะเงื่อนไขและวิธีการดําเนินการ: ประเภทกาเม่ (Game sport) ผู้ดูแลผู้เสียชีวิต — นับผู้เล่นที่ยังมีชีวิตอยู่ [Tr> เป้าหมายคะแนน < tttd> April update — Check date (help) จํากัดเวลา < tttd> คะแนนสูงสุดเมื่อเวลาหมดอายุ kgame — Check timeter Objective [ttd] งานที่ระบุที่สมบูรณ์ (ธงหน้าต่าง, ทําลายเตียง) Custom ECS เหตุการณ์ที่เกี่ยวข้องกับวัตถุประสงค์ (_) Rounds < ttd> ดีที่สุดของ N Group [tttd] คลาสเปิดโอกาส จับคู่ คิว รอบสุดท้ายส่วนตัว CULXlt;PlayerRef> คิว = LinkedList lt;> (); ต้องการส่วนสุดท้าย ผู้เล่น; ผู้เล่นว่างสาธารณะ คิว (dadd) Check Quue (); ) Checkleue () ส่วนตัว หาก (queue. size () > = ผู้เล่นที่ต้องการ) (เสียงปรบมือ) Arena สนามกีฬา = ContactManager. findAilablehinena (); ถ้า (Arena)=ว่าง) { สําหรับ (in I = 0; i < จําเป็นต้อง ผู้เล่น; i++1) ผู้เล่นRef =คิวรอเล่น.pol (); สังเวียน.AddPlayer (เพลย์เลอร์) ) ) ) ) [ไ Hytle's build-in ระบบร่วม (Party System) ให้ผู้เล่นรวมกลุ่มกัน และอยู่รวมกันผ่านเซิร์ฟเวอร์ย้าย การจับคู่ของคุณควรจะเคารพกลุ่มต่างๆ เช่น การเข้าคิวสมาชิกในพรรค และจัดพวกเขาอยู่ในทีมเดียวกันเมื่อเป็นไปได้ . existing Miniame Mods เพื่อศึกษา (h2) อย่าสร้างจากรอยขีดข่วน ศึกษาสิ่งที่อยู่บนฐานคําสาป Mod> ประเภท สิ่งสําคัญสําหรับการศึกษา [Thead] Bossayna PIVE Arena [tttd]