RakNetty เป็นการใช้งาน (พอร์ต) ที่สะอาดตาและทันสมัยของ RakNet ของ Oculus ใน java
RakNet เป็นไลบรารีเครือข่ายที่ใช้ในหลายโครงการ รวมถึง Minecraft: Bedrock Edition และ Unity Engine ที่มีชื่อเสียง RakNet ใช้ UDP เป็นโปรโตคอลเครือข่าย ซึ่งไม่มีการเชื่อมต่อตามค่าเริ่มต้น และไม่รับประกันว่าแพ็กเก็ตจะไปถึงปลายทาง เมื่อเปรียบเทียบกับ TCP RakNet ใช้อัลกอริธึมหลายอย่างเพื่อให้แน่ใจว่าแพ็กเก็ตสามารถจัดส่งได้อย่างเป็นระเบียบและเชื่อถือได้ RakNetty พอร์ตโปรโตคอลและอัลกอริธึมไปยัง java
RakNetty สร้างขึ้นจาก Netty ซึ่งเป็นเฟรมเวิร์กที่ขับเคลื่อนด้วยเหตุการณ์แบบอะซิงโครนัสประสิทธิภาพสูง เมื่อเปรียบเทียบกับเวอร์ชัน c++ ดั้งเดิมที่ใช้ Blocking IO แล้ว RakNetty มีข้อดีของการไม่บล็อก IO เพื่อปรับปรุงประสิทธิภาพโดยรวมเพิ่มเติม ซึ่งทำได้โดยการส่งแพ็กเก็ตที่จะจัดการโดยหลายเธรด ในการเปรียบเทียบ RakNet เวอร์ชันดั้งเดิมยังจัดการแพ็กเก็ตสำหรับการเชื่อมต่อทั้งหมดในเธรดเดียวด้วย
ปัจจุบัน RakNetty ใช้งานได้และรองรับฟีเจอร์ RakNet ส่วนใหญ่ แต่มีการทดสอบเพียงเล็กน้อยเท่านั้น โค้ดยังถูกจัดระเบียบในโครงสร้างแบบ Netty พร้อมการแปลงสไตล์ Java แทนที่จะเป็นสำเนาแบบไบต์ต่อไบต์ของเวอร์ชัน c++ ดั้งเดิม
< repositories >
< repository >
< id >nukkit-releases</ id >
< url >https://nukkit.org/nexus/repository/maven-releases/</ url >
</ repository >
</ repositories >
< dependency >
< groupId >org.nukkit</ groupId >
< artifactId >raknetty</ artifactId >
< version >1.0</ version >
</ dependency >
ดูตัวอย่างไคลเอนต์
ดูเซิร์ฟเวอร์ตัวอย่าง
RakNet กำหนดค่าคงที่จำนวนหนึ่งในโค้ดดั้งเดิม ซึ่งช่วยให้นักพัฒนาสามารถแทนที่ค่าคงที่เหล่านั้นโดยการกำหนดใหม่ Minecraft: Bedrock Edition ใช้ RakNet เวอร์ชันอื่นและเปลี่ยนค่าคงที่บางอย่าง เพื่อวัตถุประสงค์ในการใช้งานทั่วไป RakNetty รองรับการแทนที่ค่าคงที่ด้วยวิธีอื่น โดยการใช้ประโยชน์จากตัวเลือกช่องของ Netty
ตัวเลือก | คำอธิบาย | RakNet เริ่มต้น | ข้อเท็จจริง |
---|---|---|---|
RAKNET_GUID | คำแนะนำของเซิร์ฟเวอร์ | สุ่ม | สุ่ม |
RAKNET_NUMBER_OF_INTERNAL_IDS | ขนาดของรายการที่อยู่ในคำขอเชื่อมต่อ | 10 | 20 |
RAKNET_PROTOCOL_VERSION | เวอร์ชันของโปรโตคอล RakNet | 6 | 10 |
RAKNET_MAX_CONNECTIONS | จำนวนการเชื่อมต่อสูงสุด | เฉพาะผู้ใช้ | เฉพาะผู้ใช้ |
RAKNET_MAX_MTU_SIZE | ขนาด MTU สูงสุดที่อนุญาต | 1492 | 1400 |
RAKNET_OFFLINE_RESPONSE | การตอบสนองแบบออฟไลน์เมื่อส่ง Ping | สตริง | เซิร์ฟเวอร์ MOTD |
การใช้งาน:
ServerBootstrap boot ; // your own server bootstrap
boot . option ( RakServerChannelOption . RAKNET_GUID , 123456L )
. option ( RakServerChannelOption . RAKNET_NUMBER_OF_INTERNAL_IDS , 20 )
. option ( RakServerChannelOption . RAKNET_PROTOCOL_VERSION , 10 )
. option ( RakServerChannelOption . RAKNET_MAX_CONNECTIONS , 15 )
. option ( RakServerChannelOption . RAKNET_MAX_MTU_SIZE , 1400 )
. option ( RakServerChannelOption . RAKNET_OFFLINE_RESPONSE , new ExampleBedrockPingResponse ());
ตัวเลือก | คำอธิบาย | RakNet เริ่มต้น | ข้อเท็จจริง |
---|---|---|---|
RAKNET_GUID | คำแนะนำของเซิร์ฟเวอร์ | สุ่ม | สุ่ม |
RAKNET_NUMBER_OF_INTERNAL_IDS | ขนาดของรายการที่อยู่ในคำขอเชื่อมต่อ | 10 | 20 |
RAKNET_PROTOCOL_VERSION | เวอร์ชันของโปรโตคอล RakNet | 6 | 10 |
RAKNET_CONNECT_MTU_SIZES | ขนาดสำหรับทดลองใช้เพื่อตรวจจับขนาด MTU | 1492, 1200, 576 | 1492, 1200, 576 |
RAKNET_CONNECT_ATTEMPTS | ความพยายามที่จะทำก่อนที่คำขอการเชื่อมต่อจะล้มเหลว | 6 | 12 |
RAKNET_CONNECT_INTERVAL | ช่วงเวลาระหว่างคำขอเชื่อมต่อแต่ละครั้ง | 1,000 | 500 |
RAKNET_CONNECT_TIMEOUT | หมดเวลาของการร้องขอการเชื่อมต่อ | 0 | 0 |
RAKNET_UNRELIABLE_TIMEOUT | หมดเวลาของแพ็กเก็ตที่ไม่น่าเชื่อถือที่จะทิ้ง | 0 | 0 |
RAKNET_TIMEOUT | หมดเวลาของการเชื่อมต่อ | 10,000 | 10,000 |
การใช้งาน:
Bootstrap boot ; // your own bootstrap
boot . option ( RakChannelOption . RAKNET_GUID , 654321L )
. option ( RakChannelOption . RAKNET_NUMBER_OF_INTERNAL_IDS , 20 )
. option ( RakChannelOption . RAKNET_PROTOCOL_VERSION , 10 )
. option ( RakChannelOption . RAKNET_CONNECT_INTERVAL , 500 )
. option ( RakChannelOption . RAKNET_CONNECT_ATTEMPTS , 12 );