ULinkRPC.Starter 0.2.14

dotnet tool install --global ULinkRPC.Starter --version 0.2.14
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local ULinkRPC.Starter --version 0.2.14
                    
This package contains a .NET tool you can call from the shell/command line.
#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:

  • --name Project root folder name. Default is ULinkApp.
  • --output Parent directory for the generated project. Default is the current working directory.
  • --transport Transport package to use: tcp, websocket, kcp.
  • --serializer Serializer 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, and package.json are generated at the same level, Directory.Build.props redirects obj/bin to ../_artifacts/Shared/, and the generated .csproj uses LangVersion=latest so MemoryPack source generation can compile.
  • Server/Server.sln or Server/Server.slnx: solution file that references ../Shared/Shared.csproj and Server/Server.csproj.
  • Server/Server/: .NET 10 console app with ULinkRPC.Server plus the selected transport and serializer packages. The generated entry uses RpcServerHostBuilder.Create().UseCommandLine(args) and wires the selected serializer and acceptor explicitly.
  • Client/: Unity 2022 LTS skeleton with NuGetForUnity, packages.config, and a local reference to Shared.
  • .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.Core
  • ULinkRPC.Server
  • ULinkRPC.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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.2.14 74 4/7/2026
0.2.13 98 3/26/2026
Loading failed