Synix home/Guides/Development & Game Definitions
Documentation

Development & Game Definitions

Guides and release notes are shown in their original language.

On this page

← All guides · DEVELOPMENT


This page is for contributors and advanced users. You do not need developer tools to install or manage normal servers.

Synix is a C#/.NET 10 Windows Forms application with built-in game definitions. Source availability does not remove the project's license restrictions; read them before redistributing code or builds.

Source layout

Within SynixApp:

Folder Responsibility
UI Feature-oriented windows for Dashboard, ServerSetup, Settings, Diagnostics, ServerManagement, Transfers, Discord, GameDefinitions, Help, Onboarding, and Updates
ServerHandler Game/lifecycle controllers, Minecraft, Satisfactory, configuration handling, and related server integrations
SynixEngine Application coordination, lifecycle, maintenance, networking, backups, transfers, security, diagnostics, and other feature groups
Design Shared controls, layout, menus, themes, and window helpers
Database/GameDefinitions Per-game JSON definitions and configuration templates
Database/ModSystems Built-in add-on-system definitions
Localization Offline interface catalogs, language selection and translation tooling; see the Language reference
Tests Tests organized by feature

Use the repository's project/solution files and .NET 10 SDK when building from source. The SDK is a development requirement; official application downloads already include their runtime.

Adding or correcting a game profile

Start with the Game Definition Library instructions.

A definition supplies supported executable and download information, Steam AppID/login requirements, arguments, ports, configuration behavior, runtime prerequisites, and controller capabilities.

  • Use official dedicated-server documentation and real generated configuration files.
  • Keep paths relative to the server root where required.
  • Include every supported complete configuration template with the correct installed location.
  • Keep machine-facing identifiers, arguments, and configuration values exact.
  • Increment the appropriate definition/configuration/template revisions for changes.
  • Validate the library, build, and run the relevant tests.
  • Test install, start, stop, and monitoring with the actual game before recording verification.

The Definition Builder is a development-build tool. Dropping an arbitrary JSON file into a user's installed Synix folder does not add a new game to the compiled release.

Definitions select approved built-in behavior; they cannot dynamically load arbitrary handlers, assemblies, or downloaded scripts.

Add-on definitions

Read the Mod-system library. Document whether a workflow installs local files, manages provider IDs, or only detects content.

Do not describe external catalog links as automatic package/dependency installation.

Configuration mappings and recovery

Shared settings are synchronized using explicit game/file/section/key bindings. When adding a field, cover both Synix-to-config generation and config-to-Synix Save/restore behavior where appropriate. Do not match arbitrary identical key names across unrelated files.

Preserve unknown settings, encoding, comments, and external-edit detection. Protect credentials in Synix storage and test failure rollback without exposing secrets in fixtures/logs.

Read Server workflow safety. Requested backup/update failures must block later launch steps. Restore completion must retain recoverable state until saved settings agree with restored files.

Mod support is separate from import rules

The game-mod-support.modsupport.json catalog records documentation evidence, methods, review dates, and sources for every built-in game. Documented must not mean “automatic installer” or “live-tested.” NeedsVerification must not be presented as unsupported.

The .modsystem.json profiles define concrete file-import or provider-ID behavior. Built-in profiles are compiled resources; validated external mod-system overrides and server-scoped import locations are separate from adding new compiled game definitions.

Import review must explain compatibility, exact destinations, activation, and recovery. Never execute a downloaded package to discover its metadata, guess a provider identity, or claim a generic file copy performs every game's registration.

Rust's framework installation and individual plugin import are separate workflows; the released Mod & Plugin Manager does manage supported local plugins.

Translations

Follow the localization instructions.

Update the neutral English resources and supported translated catalogs together. Preserve format placeholders. Translate user-facing labels and explanations, not game commands, config keys, tokens, file paths, or output-recognition markers.

Help and technical text-log/support-report contents intentionally remain English.

Testing and release documentation

The GitHub Windows test workflow restores and builds the test project in Release, then runs it. From the repository root, the equivalent commands are:

dotnet restore "SynixApp/Tests/Synix.Tests.csproj"
dotnet build "SynixApp/Tests/Synix.Tests.csproj" --configuration Release --no-restore
dotnet test "SynixApp/Tests/Synix.Tests.csproj" --configuration Release --no-build --logger "trx;LogFileName=synix-tests.trx" --results-directory "TestResults"

Use a supported Windows/.NET 10 development environment. Some live-server integration checks are opt-in and need their documented setup; a skipped live check is not a passed live check.

Choose tests for the affected feature and run the release-readiness checks appropriate to the change. Do not substitute a successful build or MSI install for a real game lifecycle test.

Before publishing a release:

  • Verify the published version, installer identity, runtime packaging, and official download links.
  • Verify package hashes and installation/upgrade behavior.
  • Exercise affected server workflows and failure/recovery paths.
  • Update the wiki pages that explain changed user-visible behavior.
  • Never include real tokens, credentials, or private test logs in fixtures, issues, or documentation.

CI and publish troubleshooting

A failed GitHub check can be a test, build, security alert, or infrastructure failure. Read the failing job and its exact log/TRX artifact. Push and pull-request runs may exercise different commits/merge state. Do not disable a test or dismiss a security alert merely to turn a check green.

A successful application build followed by a failed GenerateBundle publish is not necessarily a compilation failure. If access to the output executable is denied, close the application running from that exact output path, then check folder permissions and security/sync-software messages. Do not delete game data or force-kill unrelated server processes.

Release assets and WinGet

Publish the intended stable self-contained Windows x64 build, then package and test the complete installer payload. Confirm the actual release version, product identity, upgrade behavior, and official asset URLs.

For WinGet, PackageVersion, InstallerUrl, and InstallerSha256 must describe the same final published asset. Hash the bytes served by that exact URL after upload, not an earlier local build. Replacing an asset can invalidate an already-created manifest.

Do not bypass an installer hash mismatch. Correct the version/URL/hash and retest. Code signing, hash matching, manifest validation, package installation, and game compatibility are different checks.

A valid manifest can still wait on fork synchronization, repository review, or the WinGet publication service. A general publish-pipeline health badge is not by itself a Synix application-test failure; inspect the package PR's specific checks and maintainer messages.

Report corrections through GitHub Issues, including official references and redacted reproduction steps.

All guidesNeed help?
GET SYNIX

Choose your download

For Windows 10 / 11, 64-bit. The .NET runtime is included.

Checking latest release…
NO INSTALLATION

Standalone app

Run Synix without installing it. Download the executable and open it from your chosen folder.

Download standaloneSynix.Control.Panel.exe
Prefer WinGet?winget install --exact --id ubidzz.Synix

Application files and game-server data are kept separately. Game-server files are downloaded when you set up a server.

Release notes & downloadsLicense
FIND YOUR NEXT WORLD

Explore game profiles

Browse the profiles included in Synix’s current game database. Availability and setup requirements vary by game.

A profile is not a guarantee for every game version.Full game reference
A LITTLE GUIDANCE GOES A LONG WAY

Help for every step

Open the Synix guides for setup instructions and game-specific details.

All documentation ↗Community
From setup to restore

Read the guide

A closer look at Synix

Synix dashboard preview with example data

English interface shown with sample data. The desktop app supports multiple languages and appearance options.