Skip to main content

Install from Scratch

This walks you from a fresh machine to source you can build and run. If you only want to play, you don't need any of this — see Play online.

Prerequisites

Install these first:

ToolVersionForGet it
gitany recentcloning + submoduleshttps://git-scm.com/downloads
.NET SDK9.0the server / enginehttps://dotnet.microsoft.com/download/dotnet/9.0
Node.js20+ (22 recommended)the web clienthttps://nodejs.org/

Verify:

git --version
dotnet --version # should print 9.x
node --version # should print v20+ (v22 recommended)
You don't need both

The server needs only the .NET SDK. The web client needs only Node.js. Install the toolchain(s) for the part(s) you plan to run.

Get the source

Both repos use a git submodule (RabiRiichi-Proto) for the shared Protobuf definitions, so always initialize submodules after cloning.

Server / engine

git clone https://github.com/RabiMimi/RabiRiichi.git
cd RabiRiichi
git submodule update --init --remote # pull the shared protos

Web client

git clone https://github.com/RabiMimi/RabiRiichi-Web.git
cd RabiRiichi-Web
git submodule update --init --remote # pull the shared protos

Build to verify

Server

# from the RabiRiichi checkout
dotnet build RabiRiichi.Server/RabiRiichi.Server.csproj

A successful build means the engine, server, and protos all compiled. Next: Run the server.

Web client

# from the RabiRiichi-Web checkout
npm install
npm run proto:gen # generate TS bindings from the proto submodule (required once)
npm run build # type-check + production build into dist/

proto:gen writes generated TypeScript into src/generated/ (git-ignored); run it once after cloning before building or importing from it. Next: Host the web client.

Keeping the protos in sync

If you pull changes later and something fails to compile, refresh the submodule: git submodule update --remote (server) or npm run proto:update && npm run proto:gen (web).

What's next