Open your terminal or command prompt.
Use the following command to install the rbfx.template.thirdperson template package from NuGet:
dotnet new install rbfx.template.thirdperson
This command will download and install the template package. If you want to install a specific version, you can specify it using the format rbfx.template.thirdperson::.
Navigate to the directory where you want to create your solution.
Run the following command to generate a new solution based on the installed template:
dotnet new rbfx.thirdperson -n MyAwesomeGame
Replace MyAwesomeGame with your desired solution name.
This command will create a new solution with the necessary project structure and files based on the Third-Person template.
Inside the newly created solution folder (MyAwesomeGame in this example), you’ll find project files for the game, character, and other related components.
Customize the project files according to your requirements. You can add more game features, modify existing code, and create additional projects within the solution.
Build the solution using the following command:
dotnet build
Run your game using:
dotnet run --project MyAwesomeGame.Desktop/MyAwesomeGame.Desktop.csproj
This will compile your solution and execute the game. Remember to adjust the commands and folder names based on your specific setup. Happy coding! 🚀🎮
For more information, you can refer to the official documentation on installing and managing SDK templates.
Whenever you push changes to the master branch, GitHub Actions will automatically trigger the workflow.
It will build your game, create a GitHub release, and upload the precompiled game artifact.
Visit the Releases section of your repository to verify that the release was created successfully.
If you want to publish to itch.io setup itch.io token. Go to your GitHub repository.
Navigate to Settings > Secrets and variables
.
Add a new secret named BUTLER_API_KEY and set its value to your itch.io personal access token.
Add new variable ITCH_PROJECT to the itch.io project id like rebelfork/rbfx-csharp-thirdperson
That's it! Your GitHub Actions workflow will now build your game and make it available for download via GitHub Releases. Optionally, it can also publish to itch.io if configured.
This action assumes you are registered as a partner with Steam.
One way of publishing the app would be to download zip files for .Desktop. builds and manually upload them to relevant depots. The rest of this readme is dedicated to publish automation via Github Action.
Set STEAM_USERNAME to the builder's user name.
Set STEAM_APPID to the application or demo id.
You need to create a "prerelease" branch in the App Data Admin. Go to SteamPipe/Builds menu and click Create new branch.
The reason for this is that Steam doesn't allow to make default branch live automatically and the Github Action for Steam publication will fail to do so.
The Github Action deploys into 3 depots:
- Depot 1: Operating System : Windows, Architecture : 64-bit OS Only
- Depot 2: Operating System : Linux + SteamOS, Architecture : 64-bit OS Only
- Depot 3: Operating System : macOS, Architecture : 64-bit OS Only
If either of these depots missing the publish_to_steam job will fail.
Once you are done defining your depots, publish the changes that you have made from the Publish page. If you try to run Github Action before publishing the depots the action will fail to publish binaries.
Create a specialised builder account that only has access to Edit App Metadata
and Publish App Changes To Steam
,
and permissions to edit your specific app.
https://partner.steamgames.com/doc/sdk/uploading#Build_Account
Deploying to Steam requires using Multi-Factor Authentication (MFA) through Steam Guard unless totp
is passed.
This means that simply using username and password isn't enough to authenticate with Steam.
However, it is possible to go through the MFA process only once by setting up GitHub Secrets for configVdf
with these steps:
- Install Valve's offical steamcmd on your local machine. All following steps will also be done on your local machine. Downloading_SteamCMD
- Try to login with
steamcmd +login <username> <password> +quit
, which may prompt for the MFA code. If so, type in the MFA code that was emailed to your builder account's email address. - Validate that the MFA process is complete by running
steamcmd +login <username> +quit
again. It should not ask for the MFA code again. - The folder from which you run
steamcmd
will now contain an updatedconfig/config.vdf
file.- Windows: Use certutil to convert config.vdf content to base64 encoded string
certutil -encodehex -f config/config.vdf config_base64.txt 0x40000001 1>nul
- Linux/MacOS: Use
cat config/config.vdf | base64 > config_base64.txt
to encode the file.
- Windows: Use certutil to convert config.vdf content to base64 encoded string
- Copy the contents of
config_base64.txt
to a GitHub SecretSTEAM_CONFIG_VDF
. If:
when running the action you recieve another MFA code via email, runsteamcmd +set_steam_guard_code <code>
on your local machine and repeat theconfig.vdf
encoding and replace secretSTEAM_CONFIG_VDF
with its contents.
More documentation on steam publishing could be found at https://github.com/game-ci/steam-deploy
To publish app to Google Play directly from the GitHub Action you need to define several secrets in the pipeline.
First you need to generate Java Key Store file by running the following command:
keytool -v -genkey -v -keystore googleplay.jks -alias someKindOfName -keyalg RSA -validity 10000
Don't user quotes " as part of the password, it may mess up the GitHub action scripts!
Replace alias with a name related to you. Store the alias into PLAY_KEYSTORE_ALIAS secret of the GitHub pipeline. The password you set to the keystore should go into PLAY_KEYSTORE_PASS secret.
Also you need to store the whole content of the googleplay.jks file into the PLAY_KEYSTORE secret. The easy way of doing that is to encode the file content into base64 string and store the string value into the secret by running the following command on windows:
certutil -encodehex -f googleplay.jks googleplay.txt 0x40000001 1>nul
or using openssl elsewhere:
openssl base64 < googleplay.jks | tr -d '\n' | tee googleplay.txt
Upload the content of googleplay.txt to PLAY_KEYSTORE variable.
Dont' forget to delete googleplay.txt and keep the googleplay.jks in a safe place locally!
More on this: https://thewissen.io/making-maui-cd-pipeline/
This step use https://github.com/r0adkll/upload-google-play for the publishing. Here is what you need to do:
- Enable the Google Play Android Developer API.
- Go to https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com.
- Click on Enable.
- Create a new service account in Google Cloud Platform (docs).
- Navigate to https://cloud.google.com/gcp.
- Open
Console
>IAM & Admin
>Credentials
>Manage service accounts
>Create service account
. - Pick a name for the new account. Do not grant the account any permissions.
- To use it from the GitHub Action use either:
- Account key in GitHub secrets (simpler):
- Open the newly created service account, click on
keys
tab and add a new key, JSON type. - When successful, a JSON file will be automatically downloaded on your machine.
- Store the content of this file to your GitHub secrets, e.g.
PLAYSTORE_SERVICE_ACC
.
- Open the newly created service account, click on
- Account key in GitHub secrets (simpler):
- Add the service account to Google Play Console.
- Open https://play.google.com/console and pick your developer account.
- Open Users and permissions.
- Click invite new user and add the email of the service account created in the previous step.
- Grant permissions to the app that you want the service account to deploy in
app permissions
.
- Create new application via Google Play Console
- Open https://play.google.com/console and pick your developer account.
- Press
Create App
and create new application using the same ApplicationId as in your c# project - Make sure you upload an apk or aab manually first by creating a release through the play console.