diff --git a/README.md b/README.md index 3fea435..66bc968 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ # CoA Server Manager +**Portable characters are experimental.** This feature is in active development and may contain bugs. + A Windows app that installs and runs your own **Conquest of Azeroth** server (AzerothCore) with a few clicks: no console, no config files, no database tools. Tauri 2 + Rust + React. -![Overview](docs/screenshots/play.png) +![Your server at a glance](docs/screenshots/overview.png) ## What it does +* **Portable characters (Experimental).** Keep saved characters in the Manager, review their saved versions and make an existing character portable from a realm you can access. See the [short guide](docs/PORTABLE-CHARACTERS.md). +* **Find a realm.** Browse public realms and compare their game modes, level caps, rates, modules and population. * **One-click install.** Downloads a signed, verified server package (resumable, checked file by file), sets up the database and creates your first account. Or import a server you already have. * **Start / Stop / PLAY.** One button for the whole server (database, auth, world) with live status, uptime and @@ -18,14 +22,14 @@ no console, no config files, no database tools. Tauri 2 + Rust + React. into **UPDATE**. Updates are authenticated (Ed25519), back up first, keep files you changed and can be rolled back. * **Backups.** Characters, accounts and settings on demand, automatically before every update; verify and restore from the app. -* **CoA / Wildcard realms.** Choose the active realm on Overview. A server build with Wildcard support is required; +* **CoA / Wildcard / Warcraft Reborn realms.** Choose the active realm on Overview. A server build supporting the selected realm is required; the first switch copies world data and creates an empty character database. Accounts are shared, characters and module settings are separate, and only one world runs. Switching a running server saves characters and restarts it. The closed client's saved realm follows this selection and is checked again before PLAY. If the client is open, the change is applied on the next launch through the Manager. - CoA companions are unavailable on Wildcard; other optional modules are experimental. Backups include both realms, - and database updates apply to both. - See [realm profiles and validation](docs/WILDCARD.md). + Bots are unavailable on Wildcard and Warcraft Reborn; other optional modules are experimental. Backups and + database updates include every created realm. Simultaneous startup supports CoA + Wildcard only. + See [realm profiles and validation](docs/WILDCARD.md) and [Warcraft Reborn](docs/WARCRAFT-REBORN.md). * **Companions (bots).** Fill the world with level-appropriate bots, see progress, stop spawning, take them offline, despawn N to relieve the server, and choose how many log in at server start. * **Realmlist switcher.** Keep named realmlists (for example *Solo* and *PTR*) and switch the game client between them from a @@ -39,17 +43,22 @@ no console, no config files, no database tools. Tauri 2 + Rust + React. supports LAN, direct and private-network (Tailscale) play, with step-by-step guides and a package to send to friends. * **Updates to the Manager itself** download in the background and install when you close it. Your servers are never stopped or changed by a Manager update. -* **Languages:** English, Russian, German, French, Spanish. +* **Languages:** English, Russian, German, French, Spanish, Simplified Chinese. -| Install | Ready | -|---------|-------| -| ![Installing](docs/screenshots/install.png) | ![Ready](docs/screenshots/ready.png) | +## See the Manager -| Overview | Server updates | -|----------|----------------| -| ![Overview](docs/screenshots/overview.png) | ![Updates](docs/screenshots/updates.png) | +| Portable characters (Experimental) | Public realms | +|---|---| +| ![Portable characters](docs/screenshots/portable.png) | ![Public realms](docs/screenshots/realms.png) | -![Backups](docs/screenshots/backups.png) +| Companions | Backups | +|---|---| +| ![Companions](docs/screenshots/bots.png) | ![Backups](docs/screenshots/backups.png) | + +The full gallery also covers setup, modules, game clients, playing with friends and making an existing character portable. + + +[Browse the screenshot gallery](docs/SCREENSHOTS.md). ## Install @@ -64,9 +73,13 @@ Manager and server updates have separate version histories. ## Status -Phases 0–10 of the plan in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) are done: foundation, import, start/stop, -config engine, backups, clean install from signed packages, updates, companions, client launch, friends, polish. -Remaining work (translation review by native speakers, optional extras) is listed in section 9 of that document. Translation notes: [docs/TRANSLATIONS.md](docs/TRANSLATIONS.md). +**In active development.** Bugs may still occur. If you run into a problem, please [open an issue](https://github.com/Corfirean/coa-server-manager/issues/new/choose). + +### Known Limitations +* **Native client login prefill**: Ascension's 3.3.5 client does not accept command-line credentials; users type their password once or link an existing account. +* **Non-Windows SecretStore**: Windows uses DPAPI (`CryptProtectData`) with domain separation entropy. On Linux/macOS, keys fall back to strict 0600 file permissions. +* **Direct to Relay migration**: Established direct TCP sessions cannot migrate mid-stream to Relay; network breaks trigger automatic fallback on the next JOIN. +* **WorkerThreads**: `CharacterDatabase.WorkerThreads` must be set to `1` (the default) for safe remote portable character imports. ## Develop ``` diff --git a/docs/HOST-A-SERVER.md b/docs/HOST-A-SERVER.md new file mode 100644 index 0000000..322c1c9 --- /dev/null +++ b/docs/HOST-A-SERVER.md @@ -0,0 +1,26 @@ +# Host a CoA server for other players + +**Portable characters are experimental.** The feature is in active development and may contain bugs. + +## Set up your server + +1. Choose **Host a server** on the welcome screen. +2. Choose **Install new server**, or **I already have a server**. +3. Finish setup, then start the server from **Overview**. +4. Link your game client and test joining your server yourself. + +## Play with friends + +Open **Play with friends**. Use the LAN/private-network instructions for your connection method and run the connectivity checks. Your computer and server must stay on while friends play. Share the connection information prepared by the Manager, never database credentials. + +## Let other players find your realm + +1. Open **Settings**, then find **Public listing**. +2. Fill in a clear realm name, a short description, language and region. +3. Review the join/account options and connection route. +4. Publish when you are ready to accept players. +5. Check that the realm appears in the browser and ask a friend to test joining from another connection. + +A listing makes your server discoverable; it does not move hosting to the cloud or guarantee that your network can be reached. If joining fails, use the connection checks before changing router settings. Portable characters also require a compatible server build and its required settings. + +Use **Backups** before changing server versions or optional modules. To stop accepting visitors, turn off the listing; to stop hosting, stop the server. diff --git a/docs/PORTABLE-CHARACTERS.md b/docs/PORTABLE-CHARACTERS.md new file mode 100644 index 0000000..8d8ac27 --- /dev/null +++ b/docs/PORTABLE-CHARACTERS.md @@ -0,0 +1,43 @@ +# Take your character with you + +**Portable characters are experimental.** The feature is in active development and may contain bugs. + +Portable characters let you keep a saved character in the Manager and play it on compatible CoA realms. + +## Make your first character portable + +1. Log out of the character in the game. Keep the Manager open. +2. Open **Characters** and choose **Make an existing character portable**. +3. Select a realm you can access and choose your character. +4. Choose **Make portable**. Your character appears under **Your characters**. + +If a character cannot be selected, read the reason beside it. Bot characters, active challenges and some pending rewards can block the operation. Creating the portable copy does not delete the original realm character. + +## Make a character from another realm portable + +1. Open **Servers** and select the realm where your character lives. +2. Choose **Link an existing account** and enter the account you already use on that realm. +3. Log in to that realm in the game and stay at the character selection screen. +4. Switch back to the Manager with **Alt+Tab** and choose **Show my characters**. +5. Find your character and choose **Make portable**. +6. Wait for the confirmation and the **Portable** badge. + +![Link your realm account](screenshots/09-link-realm-account.jpg) + +![Choose your character](screenshots/10-remote-portable-candidates.jpg) + +![Character saved](screenshots/11-remote-portable-saved.jpg) + +## Play your portable character + +1. Find a compatible server under **Servers** in player mode, or **Play with Friends** when hosting. You can also use a realm already available to your Manager. +2. Choose your portable character and review compatibility before pressing **Play**. +3. Follow the account prompt. Some hosts create an account for you; others require an existing account. +4. Launch the game when the Manager says the character is ready. +5. Keep the Manager open while playing. Log out and wait for progress to finish saving before closing it or moving to another realm. + +A realm with a lower level cap may play your character at a lower level. Check the warning: unsupported content is held back rather than silently discarded. Portable play requires a compatible server; installing the Manager alone does not add support to every server. + +## Saved versions and conflicts + +Use **Saved versions** to see when progress was saved. If the Manager reports a conflict, follow its explanation before continuing. Avoid playing two copies at once, and keep normal server backups as well. diff --git a/docs/SCREENSHOTS.md b/docs/SCREENSHOTS.md new file mode 100644 index 0000000..7f9d171 --- /dev/null +++ b/docs/SCREENSHOTS.md @@ -0,0 +1,41 @@ +# CoA Server Manager 0.7.0 + +### Your server, a few clicks away + +![Your server, a few clicks away](screenshots/setup.png) + +### Your server at a glance + +![Your server at a glance](screenshots/overview.png) + +### Build your own adventuring company + +![Build your own adventuring company](screenshots/bots.png) + +### Manage your server modules + +![Manage your server modules](screenshots/modules.png) + +### Your client, ready to play + +![Your client, ready to play](screenshots/client.png) + +### Keep your progress safe + +![Keep your progress safe](screenshots/backups.png) + +### Bring your friends along + +![Bring your friends along](screenshots/friends.png) + +### Find your next realm + +![Find your next realm](screenshots/realms.png) + +### Portable characters · Experimental + +![Portable characters · Experimental](screenshots/portable.png) + +### Make a character portable · Experimental + +![Make a character portable · Experimental](screenshots/remote-character.png) diff --git a/docs/WARCRAFT-REBORN.md b/docs/WARCRAFT-REBORN.md new file mode 100644 index 0000000..bbb258a --- /dev/null +++ b/docs/WARCRAFT-REBORN.md @@ -0,0 +1,32 @@ +# Warcraft Reborn + +Choose **Warcraft Reborn** on Overview to create or switch to this realm. The +installed worldserver must contain Warcraft Reborn support; an old build is +refused before any databases are created. Stop the client before switching to +have its saved realm updated immediately. + +The profile uses `CoA.ClassModel = "wcr"`, game-mode mask `0`, live realm type, +and realm ID `3`. Accounts remain in the shared `acore_auth` database. World data +is initially copied from CoA into `acore_world_reborn`; the structure of +`acore_characters` is cloned into `acore_characters_reborn` without copying +players. Existing database names or realm ID 3 block creation. + +Settings are stored in `Settings/realm-profiles/reborn.json`. Creating a profile +from Wildcard uses the saved CoA settings as its base, preventing inheritance of +Wildcard gameplay flags. Both bot systems are disabled and cannot be enabled +through this profile; their class mechanics have not been validated. Other +optional modules are marked experimental. + +Backups, updates and database checks include every created realm. Restore keeps +using the realm recorded in the recovery point. The Windows launcher is upgraded +from the Manager's previous two-realm patch and routes Warcraft Reborn to its +own databases. Docker uses the same realm schema mapping. + +Simultaneous startup continues to support CoA + Wildcard only. Disable that +option before switching to Warcraft Reborn; it cannot be enabled while Warcraft +Reborn is selected. + +Automated checks cover profile configuration and restoration, old state files, +binary support detection, database routing, all-realm enumeration, client realm +selection, and upgrading/reversing the launcher patch. These checks do not +constitute a gameplay validation of Warcraft Reborn or optional modules. diff --git a/docs/screenshots/01-welcome.png b/docs/screenshots/01-welcome.png new file mode 100644 index 0000000..ef5ee7f Binary files /dev/null and b/docs/screenshots/01-welcome.png differ diff --git a/docs/screenshots/02-host-setup.png b/docs/screenshots/02-host-setup.png new file mode 100644 index 0000000..f8f3071 Binary files /dev/null and b/docs/screenshots/02-host-setup.png differ diff --git a/docs/screenshots/03-server-browser.jpg b/docs/screenshots/03-server-browser.jpg new file mode 100644 index 0000000..dafdbcb Binary files /dev/null and b/docs/screenshots/03-server-browser.jpg differ diff --git a/docs/screenshots/04-portable-characters.png b/docs/screenshots/04-portable-characters.png new file mode 100644 index 0000000..c11a1c1 Binary files /dev/null and b/docs/screenshots/04-portable-characters.png differ diff --git a/docs/screenshots/05-saved-versions.png b/docs/screenshots/05-saved-versions.png new file mode 100644 index 0000000..8290d15 Binary files /dev/null and b/docs/screenshots/05-saved-versions.png differ diff --git a/docs/screenshots/06-make-portable.png b/docs/screenshots/06-make-portable.png new file mode 100644 index 0000000..06f1316 Binary files /dev/null and b/docs/screenshots/06-make-portable.png differ diff --git a/docs/screenshots/07-public-listing.png b/docs/screenshots/07-public-listing.png new file mode 100644 index 0000000..b608525 Binary files /dev/null and b/docs/screenshots/07-public-listing.png differ diff --git a/docs/screenshots/08-host-overview.png b/docs/screenshots/08-host-overview.png new file mode 100644 index 0000000..3d196a0 Binary files /dev/null and b/docs/screenshots/08-host-overview.png differ diff --git a/docs/screenshots/09-link-realm-account.jpg b/docs/screenshots/09-link-realm-account.jpg new file mode 100644 index 0000000..15e2132 Binary files /dev/null and b/docs/screenshots/09-link-realm-account.jpg differ diff --git a/docs/screenshots/10-remote-portable-candidates.jpg b/docs/screenshots/10-remote-portable-candidates.jpg new file mode 100644 index 0000000..528a8a3 Binary files /dev/null and b/docs/screenshots/10-remote-portable-candidates.jpg differ diff --git a/docs/screenshots/11-remote-portable-saved.jpg b/docs/screenshots/11-remote-portable-saved.jpg new file mode 100644 index 0000000..1d385de Binary files /dev/null and b/docs/screenshots/11-remote-portable-saved.jpg differ diff --git a/docs/screenshots/backups.png b/docs/screenshots/backups.png index c9a6e7d..c784a46 100644 Binary files a/docs/screenshots/backups.png and b/docs/screenshots/backups.png differ diff --git a/docs/screenshots/bots.png b/docs/screenshots/bots.png new file mode 100644 index 0000000..e0112a6 Binary files /dev/null and b/docs/screenshots/bots.png differ diff --git a/docs/screenshots/client.png b/docs/screenshots/client.png new file mode 100644 index 0000000..8b853b0 Binary files /dev/null and b/docs/screenshots/client.png differ diff --git a/docs/screenshots/friends.png b/docs/screenshots/friends.png new file mode 100644 index 0000000..4257d1c Binary files /dev/null and b/docs/screenshots/friends.png differ diff --git a/docs/screenshots/modules.png b/docs/screenshots/modules.png new file mode 100644 index 0000000..073332d Binary files /dev/null and b/docs/screenshots/modules.png differ diff --git a/docs/screenshots/overview.png b/docs/screenshots/overview.png index f23b893..e02fb64 100644 Binary files a/docs/screenshots/overview.png and b/docs/screenshots/overview.png differ diff --git a/docs/screenshots/portable.png b/docs/screenshots/portable.png new file mode 100644 index 0000000..c2d3272 Binary files /dev/null and b/docs/screenshots/portable.png differ diff --git a/docs/screenshots/realms.png b/docs/screenshots/realms.png new file mode 100644 index 0000000..d677bbe Binary files /dev/null and b/docs/screenshots/realms.png differ diff --git a/docs/screenshots/remote-character.png b/docs/screenshots/remote-character.png new file mode 100644 index 0000000..25bb184 Binary files /dev/null and b/docs/screenshots/remote-character.png differ diff --git a/docs/screenshots/setup.png b/docs/screenshots/setup.png new file mode 100644 index 0000000..0dac26a Binary files /dev/null and b/docs/screenshots/setup.png differ