196 lines
4.8 KiB
Markdown
196 lines
4.8 KiB
Markdown
# Artificer's Scrollwork
|
|
|
|
A local development workbench for ServUO shard developers. Browse UO client assets (statics, mobiles, gumps), navigate ServUO C# scripts with full class and method trees, trace method call chains as interactive flow diagrams, and render Gump classes visually — all without a live shard connection.
|
|
|
|
Built with **Tauri** (Rust shell) + **React** frontend + **C# Roslyn sidecar**.
|
|
|
|
---
|
|
|
|
## Requirements
|
|
|
|
You need the following installed before you can build or run the app.
|
|
|
|
### 1. Rust (stable)
|
|
|
|
Download and run the installer from https://rustup.rs
|
|
|
|
During installation, accept the default options. When it finishes, open a new terminal and verify:
|
|
|
|
```
|
|
rustc --version
|
|
cargo --version
|
|
```
|
|
|
|
### 2. Node.js 20 or later
|
|
|
|
Download the LTS installer from https://nodejs.org
|
|
|
|
After installing, verify:
|
|
|
|
```
|
|
node --version
|
|
npm --version
|
|
```
|
|
|
|
### 3. .NET 8 SDK
|
|
|
|
Download from https://dotnet.microsoft.com/download/dotnet/8.0
|
|
|
|
Choose the **SDK** (not Runtime) for Windows x64. After installing, verify:
|
|
|
|
```
|
|
dotnet --version
|
|
```
|
|
|
|
Should print `8.x.x` or higher.
|
|
|
|
### 4. Tauri CLI
|
|
|
|
After Rust is installed, run:
|
|
|
|
```
|
|
cargo install tauri-cli
|
|
```
|
|
|
|
This takes a few minutes. Verify with:
|
|
|
|
```
|
|
cargo tauri --version
|
|
```
|
|
|
|
### 5. WebView2 Runtime
|
|
|
|
Required by Tauri on Windows. Most Windows 10/11 machines already have it via Microsoft Edge. If the app fails to launch, download it from:
|
|
|
|
https://developer.microsoft.com/microsoft-edge/webview2/
|
|
|
|
---
|
|
|
|
## Getting Started
|
|
|
|
### Clone the repository
|
|
|
|
```
|
|
git clone https://gitea.whitlocktech.com/whitlocktech/Artificers-Scrollwork.git
|
|
cd Artificers-Scrollwork
|
|
```
|
|
|
|
### Install JavaScript dependencies
|
|
|
|
```
|
|
npm install
|
|
```
|
|
|
|
### Build the C# sidecar
|
|
|
|
The sidecar handles Roslyn script parsing. It must be compiled before running the app.
|
|
|
|
```
|
|
cd sidecar
|
|
dotnet publish -c Release -r win-x64 --self-contained
|
|
cd ..
|
|
```
|
|
|
|
Then copy the compiled binary into the Tauri binaries folder:
|
|
|
|
```
|
|
copy sidecar\bin\Release\net8.0\win-x64\publish\asw-sidecar.exe src-tauri\binaries\asw-sidecar-x86_64-pc-windows-msvc.exe
|
|
```
|
|
|
|
---
|
|
|
|
## Running in Dev Mode
|
|
|
|
Dev mode runs the app with hot reload. The Rust backend and React frontend reload automatically as you make changes.
|
|
|
|
Make sure you have completed the sidecar build step above, then run:
|
|
|
|
```
|
|
npm run tauri dev
|
|
```
|
|
|
|
The app window will open. First launch may take a minute while Rust compiles the backend.
|
|
|
|
On first run, use the Config screen (gear icon, top right) to set:
|
|
- **UO Root** — path to your Ultima Online client folder (must contain `art.mul` or `artLegacyMUL.uop`)
|
|
- **ServUO Scripts** — path to your ServUO `Scripts/` folder
|
|
|
|
---
|
|
|
|
## Building the MSI Installer
|
|
|
|
### Windows Defender note
|
|
|
|
The Tauri bundler patches the compiled `.exe` immediately after Rust finishes building it. Windows Defender or the Program Compatibility Assistant can lock the file during this window and cause the build to fail with error 1224.
|
|
|
|
**Before building**, add the target folder to Windows Defender exclusions:
|
|
|
|
1. Open **Windows Security** → **Virus & threat protection** → **Manage settings**
|
|
2. Scroll to **Exclusions** → **Add or remove exclusions**
|
|
3. Add this folder: `<repo root>\src-tauri\target`
|
|
|
|
If the build still fails, run this in an **Administrator** PowerShell before building:
|
|
|
|
```powershell
|
|
Stop-Service PcaSvc -Force
|
|
npm run tauri build
|
|
Start-Service PcaSvc
|
|
```
|
|
|
|
### Build steps
|
|
|
|
Make sure the sidecar is compiled and copied (see above), then:
|
|
|
|
```
|
|
npm run tauri build
|
|
```
|
|
|
|
The finished MSI will be at:
|
|
|
|
```
|
|
src-tauri\target\release\bundle\msi\Artificer's Scrollwork_0.1.0_x64_en-US.msi
|
|
```
|
|
|
|
Double-click the MSI to install. The app will appear in your Start menu as **Artificer's Scrollwork**.
|
|
|
|
---
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
artificers-scrollwork/
|
|
├── src/ React frontend
|
|
├── src-tauri/ Rust / Tauri backend
|
|
│ ├── src/
|
|
│ │ ├── assets/ .mul / .uop file parsers
|
|
│ │ ├── commands/ Tauri IPC command handlers
|
|
│ │ └── ipc/ C# sidecar process management
|
|
│ └── binaries/ Compiled sidecar binary (git-ignored)
|
|
├── sidecar/ C# Roslyn sidecar
|
|
│ ├── Parsing/ Script indexer and call chain tracer
|
|
│ └── Gumps/ Gump constructor extractor
|
|
├── UO Gumps/ Bundled gump BMP art + XML manifests
|
|
└── UO artwork/ Bundled static tile BMP art
|
|
```
|
|
|
|
---
|
|
|
|
## Updating the Sidecar
|
|
|
|
If you change any C# code in `sidecar/`, you must recompile and copy the binary before the changes take effect:
|
|
|
|
```
|
|
cd sidecar
|
|
dotnet publish -c Release -r win-x64 --self-contained
|
|
cd ..
|
|
copy sidecar\bin\Release\net8.0\win-x64\publish\asw-sidecar.exe src-tauri\binaries\asw-sidecar-x86_64-pc-windows-msvc.exe
|
|
```
|
|
|
|
Then restart dev mode or rebuild the MSI.
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
MIT — see LICENSE file.
|