Redes C# de alto nivel para Godot basadas en las populares soluciones de redes Unity de código abierto Mirror y Mirage
Video de demostración de un proyecto de ejemplo: https://youtu.be/Ty55PZWtsJI
La documentación para la versión Unity de Mirage se puede encontrar en https://miragenet.github.io/Mirage/. La mayoría de los mismos conceptos se aplicarán a la versión Godot.
git clone [email protected]:James-Frowen/Mirage.Godot.git
src/Mirage.Godot/Scripts
en su proyecto Godot.csproj
principal de su proyecto, agregue una referencia a:Mirage.Logging.csproj
Mirage.SocketLayer.csproj
dotnet build Mirage.CodeGen.csproj -c Release
[-o|--output <OUTPUT_DIRECTORY>]
para que la ruta sea más fácil de encontrar< 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
actualmente usa una referencia a Mirage.Godot.csproj
para encontrar tipos de Mirage, pero cuando se ejecuta, usará los tipos dentro del csproj de destino.
Comandos para ejecutar los pasos anteriores (reemplace path/to/project
con su proyecto)
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
y luego agregue el destino PostBuild
manualmente con la ruta a CodeGen/CodeGen.exe
nota: es posible que desee excluir la carpeta src/Mirage.Godot/Scripts/Example1
al compilar o terminará en la dll Mirage.Godot
Mirage.Godot usa Mono.Cecil para modificar el código fuente de C# después de compilarlo, lo que permite que las funciones tengan un alto rendimiento y sean fáciles de usar.
Para configurar, agregue este código al csproj predeterminado para el proyecto 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 >
y modifique la ruta Path/To/Mirage.CodeGen.exe
hasta donde creó el archivo Mirage.CodeGen.exe
.
Tenga en cuenta que se requieren ambos objetivos:
TargetPath
funciona mejor en el editor para garantizar que los cambios de generación de código se apliquen antes de ejecutarsePublishDir
es necesario porque TargetPath
no es la ruta copiada al exportar la compilación. El ejemplo utiliza enlaces simbólicos para incluir los scripts Mirage.Godot en el segundo proyecto.
Para clonar este repositorio con esos enlaces simbólicos, ejecútelo como administrador:
git clone -c core.symlinks=true [email protected]:James-Frowen/Mirage.Godot.git
Si descarga sin enlaces simbólicos (como desde un archivo zip), deberá copiar manualmente (no mover) los archivos de src/Mirage.Godot/Scripts
a src/Mirage.Godot.Example1/Mirage.Godot
Al desarrollar la generación de código localmente, es posible que desee agregar este paso al inicio de los objetivos de PostBuild para que se reconstruya el proyecto de generación de código antes de ejecutarlo.
< Exec Command = " dotnet build $(ProjectDir)/../Mirage.Core/Mirage.CodeGen/Mirage.CodeGen.csproj -c Release " />