การสร้างเครือข่าย c# ระดับสูงสำหรับ Godot โดยใช้โซลูชันเครือข่าย Unity แบบโอเพ่นซอร์สยอดนิยม Mirror และ Mirage
วิดีโอสาธิตโครงการตัวอย่าง: https://youtu.be/Ty55PZWtsJI
สามารถดูเอกสารประกอบสำหรับ Mirage เวอร์ชันเอกภาพได้ที่ https://miragenet.github.io/Mirage/ แนวคิดเดียวกันส่วนใหญ่จะนำไปใช้กับเวอร์ชัน Godot
git clone [email protected]:James-Frowen/Mirage.Godot.git
src/Mirage.Godot/Scripts
ลงในโปรเจ็กต์ godot ของคุณ.csproj
หลักของโปรเจ็กต์ของคุณให้เพิ่มการอ้างอิงไปที่:Mirage.Logging.csproj
Mirage.SocketLayer.csproj
dotnet build Mirage.CodeGen.csproj -c Release
[-o|--output <OUTPUT_DIRECTORY>]
เพื่อให้ค้นหาเส้นทางได้ง่ายขึ้น< Project Sdk = " Godot.NET.Sdk/4.1.1 " >
...
< Target Name = " PostBuild " AfterTargets = " PostBuildEvent " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(TargetPath) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
< Target Name = " PrePublish " BeforeTargets = " Publish " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(PublishDir)$(TargetFileName) $(TargetDir) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
</ Project >
ปัจจุบัน Mirage.CodeGen.csproj
ใช้การอ้างอิงถึง Mirage.Godot.csproj
เพื่อค้นหาประเภท Mirage แต่เมื่อรันจะใช้ประเภทภายใน csproj เป้าหมาย
คำสั่งเพื่อรันขั้นตอนข้างต้น (แทนที่ path/to/project
ด้วยโปรเจ็กต์ของคุณ)
git clone [email protected]:James-Frowen/Mirage.Godot.git
cd Mirage.Godot
cp src/Mirage.Godot/Scripts " path/to/project/Mirage.Godot "
dotnet build src/Mirage.Core/Mirage.CodeGen/Mirage.CodeGen.csproj -o ./CodeGen
จากนั้นเพิ่มเป้าหมาย PostBuild
ด้วยตนเองพร้อมเส้นทางไปยัง CodeGen/CodeGen.exe
หมายเหตุ: คุณอาจต้องการยกเว้นโฟลเดอร์ src/Mirage.Godot/Scripts/Example1
เมื่อสร้าง ไม่เช่นนั้นมันจะไปจบลงที่ Mirage.Godot dll
Mirage.Godot ใช้ Mono.Cecil เพื่อแก้ไขซอร์สโค้ด c# หลังจากคอมไพล์แล้ว ซึ่งช่วยให้ฟีเจอร์ต่างๆ มีประสิทธิภาพสูงและใช้งานง่าย
หากต้องการตั้งค่าให้เพิ่มโค้ดนี้ลงใน csproj เริ่มต้นสำหรับโปรเจ็กต์ godot
< Target Name = " PostBuild " AfterTargets = " PostBuildEvent " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(TargetPath) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
< Target Name = " PrePublish " BeforeTargets = " Publish " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(PublishDir)$(TargetFileName) $(TargetDir) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
และแก้ไขพาธ Path/To/Mirage.CodeGen.exe
ไปยังตำแหน่งที่คุณสร้างไฟล์ Mirage.CodeGen.exe
หมายเหตุ ต้องมีทั้งสองเป้าหมาย:
TargetPath
ทำงานได้ดีที่สุดในโปรแกรมแก้ไขเพื่อให้แน่ใจว่ามีการใช้การเปลี่ยนแปลงรหัสก่อนที่จะทำงานPublishDir
เนื่องจาก TargetPath
ไม่ใช่เส้นทางที่ถูกคัดลอกเมื่อส่งออกบิลด์ ตัวอย่างใช้ symlink เพื่อรวมสคริปต์ Mirage.Godot ไว้ในโปรเจ็กต์ที่ 2
หากต้องการโคลน repo นี้ด้วยลิงก์สัญลักษณ์เหล่านั้นให้ทำงานในฐานะผู้ดูแลระบบ:
git clone -c core.symlinks=true [email protected]:James-Frowen/Mirage.Godot.git
หากดาวน์โหลดโดยไม่มีลิงก์สัญลักษณ์ (เช่น จากไฟล์ zip) คุณจะต้องคัดลอก (ไม่ย้าย) ไฟล์ด้วยตนเองจาก src/Mirage.Godot/Scripts
ไปยัง src/Mirage.Godot.Example1/Mirage.Godot
เมื่อพัฒนาโค้ดเจนในเครื่อง คุณอาจต้องการเพิ่มขั้นตอนนี้ที่จุดเริ่มต้นของเป้าหมาย PostBuild เพื่อที่จะสร้างโปรเจ็กต์โค้ดเจนใหม่ก่อนที่จะรัน
< Exec Command = " dotnet build $(ProjectDir)/../Mirage.Core/Mirage.CodeGen/Mirage.CodeGen.csproj -c Release " />