ULinkRPC.Starter
0.2.14
dotnet tool install --global ULinkRPC.Starter --version 0.2.14
dotnet new tool-manifest
dotnet tool install --local ULinkRPC.Starter --version 0.2.14
#tool dotnet:?package=ULinkRPC.Starter&version=0.2.14
nuke :add-package ULinkRPC.Starter --version 0.2.14
ULinkRPC.Starter
Scaffold a runnable ULinkRPC template with fixed project folders:
Shared(netstandard2.1 + net10.0)Server(.NET 10)Client(Unity 2022 LTS skeleton)
The tool asks for transport and serializer before generating files.
Install
Requires .NET SDK 10.0 or later. If you only have .NET 8 or .NET 9 installed, upgrade the SDK before running dotnet tool install.
dotnet tool install -g ULinkRPC.Starter
Usage
ulinkrpc-starter [--name MyGame] [--output ./out] [--transport tcp|websocket|kcp] [--serializer json|memorypack]
Options:
--nameProject root folder name. Default isULinkApp.--outputParent directory for the generated project. Default is the current working directory.--transportTransport package to use:tcp,websocket,kcp.--serializerSerializer package to use:json,memorypack.
If --transport or --serializer is omitted, the tool enters interactive mode and asks you to choose them in the terminal.
Examples
Create a project in the current directory and choose transport/serializer interactively:
ulinkrpc-starter --name MyGame
Create a project non-interactively:
ulinkrpc-starter --name MyGame --output ./samples --transport kcp --serializer memorypack
This generates:
samples/
MyGame/
.gitignore
Shared/
Server/
Server.sln or Server.slnx
Server/
Server.csproj
Client/
What Gets Generated
Shared/: shared DTO project for .NET and a local Unity UPM package. The.csproj,.asmdef, andpackage.jsonare generated at the same level,Directory.Build.propsredirectsobj/binto../_artifacts/Shared/, and the generated.csprojusesLangVersion=latestso MemoryPack source generation can compile.Server/Server.slnorServer/Server.slnx: solution file that references../Shared/Shared.csprojandServer/Server.csproj.Server/Server/: .NET 10 console app withULinkRPC.Serverplus the selected transport and serializer packages. The generated entry usesRpcServerHostBuilder.Create().UseCommandLine(args)and wires the selected serializer and acceptor explicitly.Client/: Unity 2022 LTS skeleton withNuGetForUnity,packages.config, and a local reference toShared..gitignore: ignore rules for .NET build outputs, editor files, Unity generated folders, and NuGetForUnity restored packages.
The tool uses a bundled, release-tested package manifest for:
ULinkRPC.CoreULinkRPC.ServerULinkRPC.Client- the selected transport package
- the selected serializer package
ULinkRPC.CodeGen
Default shared DTOs are generated under Shared/Interfaces/.
Starter also generates a minimal IPingService contract plus Server/Server/PingService.cs, installs a local ULinkRPC.CodeGen tool manifest, and runs code generation for both server and Unity output automatically.
When memorypack is selected, the generated Shared.csproj uses LangVersion=latest so MemoryPack.Generator output can compile.
Shared generation disables implicit usings to avoid C# 10 global using files in generated build artifacts.
Generated namespaces do not include the user-provided project name. Shared code uses the Shared... namespace prefix, and server code uses the Server... namespace prefix.
In Client/Assets/packages.config, the user-selected transport and serializer packages are written with manuallyInstalled="true".
Project generation also runs git init at the project root.
Next Steps
After generation:
cd MyGame
dotnet run --project Server/Server/Server.csproj
Then open Client/ with Unity 2022 LTS.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.