Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: CI

# Fast, cross-platform continuous integration that runs on every push and pull
# request (including feature branches). It complements the Windows-only
# "Build Data Center CoreCLR" workflow by running the unit tests, which do not
# require Unity or IL2CPP assemblies.

on:
push:
pull_request:

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Unit tests
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Restore
run: dotnet restore tests/UnityExplorer.Tests/UnityExplorer.Tests.csproj

- name: Test
run: dotnet test tests/UnityExplorer.Tests/UnityExplorer.Tests.csproj --configuration Release --no-restore --verbosity normal
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ All notable changes to this Data Center-focused UnityExplorer fork are documente

### English

- Repository housekeeping: fixed the corrupted (mojibake) `src/.editorconfig` and rewrote it as clean UTF-8.
- Aligned the Unity editor package version (`UnityEditorPackage/package.json`) with the assembly version `4.13.5`.
- Documented the version scheme: `4.13.5` is the upstream UnityExplorer base; the fork release series (`v1.x`) lives in this changelog.
- Pinned the .NET SDK via `global.json` for reproducible builds.
- Unified `Microsoft.Unity.Analyzers` to `1.19.0` across both projects.
- Added a `CONTRIBUTING.md` with branch, build and style guidance.
- Added a pull-request CI workflow that compiles the Data Center CoreCLR target and runs unit tests.
- Added a first unit-test project (`tests/UnityExplorer.Tests`) covering platform-independent utility logic.
- Added a support package script for collecting Data Center logs, file hashes and detected runtime versions.
- Improved `install-datacenter.ps1` with dry-run, wait-for-exit, MelonLoader preflight and duplicate-file warnings.
- Added a manual GitHub Actions release workflow for Data Center CoreCLR builds.
Expand All @@ -18,6 +26,14 @@ All notable changes to this Data Center-focused UnityExplorer fork are documente

### Deutsch

- Repository-Aufräumarbeiten: beschädigte (Mojibake-)`src/.editorconfig` behoben und als sauberes UTF-8 neu geschrieben.
- Version des Unity-Editor-Pakets (`UnityEditorPackage/package.json`) an die Assembly-Version `4.13.5` angeglichen.
- Versionsschema dokumentiert: `4.13.5` ist die UnityExplorer-Upstream-Basis; die Fork-Release-Serie (`v1.x`) steht in diesem Changelog.
- .NET-SDK über `global.json` für reproduzierbare Builds gepinnt.
- `Microsoft.Unity.Analyzers` in beiden Projekten auf `1.19.0` vereinheitlicht.
- `CONTRIBUTING.md` mit Branch-, Build- und Style-Hinweisen ergänzt.
- Pull-Request-CI-Workflow ergänzt, der das Data-Center-CoreCLR-Ziel kompiliert und Unit-Tests ausführt.
- Erstes Unit-Test-Projekt (`tests/UnityExplorer.Tests`) für plattformunabhängige Utility-Logik hinzugefügt.
- Support-Paket-Skript zum Sammeln von Data-Center-Logs, Datei-Hashes und erkannten Runtime-Versionen hinzugefügt.
- `install-datacenter.ps1` mit Dry-Run, Warten auf Spielende, MelonLoader-Vorprüfung und Warnungen vor doppelten Dateien verbessert.
- Manuellen GitHub-Actions-Release-Workflow für Data-Center-CoreCLR-Builds hinzugefügt.
Expand All @@ -28,6 +44,20 @@ All notable changes to this Data Center-focused UnityExplorer fork are documente
- Lokale zweisprachige Installations- und Troubleshooting-Dokumente für Nutzer ohne Wiki ergänzt.
- Doppelte GitHub-Issue-Vorlagen bereinigt und den Kontaktlink zur Installationsanleitung korrigiert.

### Dependency updates (pending in-game verification) / Dependency-Updates (In-Game-Verifikation ausstehend)

> These bumps were prepared as isolated commits and have **not** been compiled or
> tested against Data Center yet. Verify each in-game (see `CONTRIBUTING.md`)
> before releasing; revert individually if a game regression appears.
>
> Diese Bumps wurden als isolierte Commits vorbereitet und sind noch **nicht**
> kompiliert oder gegen Data Center getestet. Vor einem Release jeweils im Spiel
> verifizieren (siehe `CONTRIBUTING.md`); bei einer Regression einzeln zurückrollen.

- **Il2CppInterop `1.0.0` → `1.5.1`** (`src` and `UniverseLib`, Interop/CoreCLR configs) to match the Il2CppInterop runtime bundled with MelonLoader 0.7.3 (`1.5.1-ci.845`).
- **HarmonyX `2.5.2` → `2.14.0`** (`src` and `UniverseLib`, compile-only). Runtime patching still uses MelonLoader's force-resolved `0Harmony.dll`; only the compile-time API surface changes.
- **Tomlet `3.1.3` → `3.2.2`** (`src`, bundled with the mod). Stays within major `3.x` so the config code (`TomlParser.ParseFile`, `TomlDocument.Put(key, value, bool)`) keeps working; `4.x`/`6.x` are deferred as they change that API.

## v1.0.1 - CoreCLR build cleanup

### English
Expand Down
165 changes: 165 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# Contributing / Mitwirken

Thanks for your interest in this Data Center-focused UnityExplorer fork!
This document is bilingual: **English first, Deutsch darunter.**

---

## English

### Scope of this fork

This repository is a compatibility fork of UnityExplorer, specialized for the
Steam game **Data Center** (Unity 6000, IL2CPP, MelonLoader CoreCLR / net6).
Changes should keep this target working. Features that only make sense for other
games or loaders are welcome only if they do not destabilize the Data Center path.

### Branching

- The default branch is `main`.
- Do **not** commit directly to `main`. Create a feature branch, e.g.
`feature/short-description` or `fix/short-description`, and open a pull request.
- Keep one logical change per pull request where possible.

### Building

Prerequisites: Windows, PowerShell, and the .NET SDK. The SDK version is pinned
in [`global.json`](global.json); install a matching 8.0.x SDK.

- **Data Center target only** (fastest, what most users need):

```powershell
.\build-datacenter.ps1
```

This builds the `ML_Cpp_CoreCLR` configuration and produces
`Release\UnityExplorer.MelonLoader.IL2CPP.CoreCLR.zip` plus
`Release\CHECKSUMS_SHA256.txt`.

- **All configurations** (full upstream build matrix):

```powershell
.\build.ps1
```

- **Install into a local Data Center install** for testing:

```powershell
.\install-datacenter.ps1 -BuildIfMissing
```

### Tests

Platform-independent logic is covered by the test project in
[`tests/`](tests). Run:

```powershell
dotnet test tests/UnityExplorer.Tests/UnityExplorer.Tests.csproj
```

UI/runtime behavior that depends on Unity or IL2CPP cannot be unit-tested and
must be verified in-game (see below).

### Code style

- Style is enforced by [`src/.editorconfig`](src/.editorconfig) and the
`Microsoft.Unity.Analyzers` package. Please keep new code warning-clean.
- Match the surrounding code: naming, brace style, and the existing
`#if CPP / MONO / INTEROP / UNHOLLOWER` conditional-compilation patterns.

### Verifying a change in-game

Dependency and runtime changes **must** be smoke-tested against Data Center
before merging:

1. Build with `build-datacenter.ps1` and install the resulting mod.
2. Launch the game and open the UnityExplorer UI.
3. Confirm the Object Explorer lists objects, the C# console evaluates an
expression, the Inspector opens, and a hook can be created.

### Pull request expectations

- Describe what changed and why, and note whether you tested in-game.
- Update [`CHANGELOG.md`](CHANGELOG.md) under `## Unreleased` (bilingual entries).
- Bump versions only when releasing (see the version scheme note in `CHANGELOG.md`).

---

## Deutsch

### Ziel dieses Forks

Dieses Repository ist ein Kompatibilitäts-Fork von UnityExplorer, spezialisiert
auf das Steam-Spiel **Data Center** (Unity 6000, IL2CPP, MelonLoader CoreCLR /
net6). Änderungen sollen dieses Ziel lauffähig halten. Funktionen, die nur für
andere Spiele oder Loader sinnvoll sind, sind nur willkommen, wenn sie den
Data-Center-Pfad nicht destabilisieren.

### Branches

- Der Standard-Branch ist `main`.
- **Nicht** direkt auf `main` committen. Lege einen Feature-Branch an, z. B.
`feature/kurzbeschreibung` oder `fix/kurzbeschreibung`, und öffne einen Pull Request.
- Möglichst eine logische Änderung pro Pull Request.

### Bauen

Voraussetzungen: Windows, PowerShell und das .NET SDK. Die SDK-Version ist in
[`global.json`](global.json) gepinnt; installiere ein passendes 8.0.x-SDK.

- **Nur Data-Center-Ziel** (am schnellsten, für die meisten Nutzer ausreichend):

```powershell
.\build-datacenter.ps1
```

Baut die Konfiguration `ML_Cpp_CoreCLR` und erzeugt
`Release\UnityExplorer.MelonLoader.IL2CPP.CoreCLR.zip` plus
`Release\CHECKSUMS_SHA256.txt`.

- **Alle Konfigurationen** (vollständige Upstream-Build-Matrix):

```powershell
.\build.ps1
```

- **In eine lokale Data-Center-Installation installieren** (zum Testen):

```powershell
.\install-datacenter.ps1 -BuildIfMissing
```

### Tests

Plattformunabhängige Logik wird durch das Testprojekt in [`tests/`](tests)
abgedeckt. Ausführen:

```powershell
dotnet test tests/UnityExplorer.Tests/UnityExplorer.Tests.csproj
```

UI-/Laufzeitverhalten, das von Unity oder IL2CPP abhängt, lässt sich nicht per
Unit-Test prüfen und muss im Spiel verifiziert werden (siehe unten).

### Code-Stil

- Der Stil wird durch [`src/.editorconfig`](src/.editorconfig) und das Paket
`Microsoft.Unity.Analyzers` erzwungen. Bitte neuen Code warnungsfrei halten.
- Am umgebenden Code orientieren: Benennung, Klammer-Stil und die bestehenden
`#if CPP / MONO / INTEROP / UNHOLLOWER`-Muster der bedingten Kompilierung.

### Änderung im Spiel verifizieren

Dependency- und Laufzeitänderungen **müssen** vor dem Merge gegen Data Center
smoke-getestet werden:

1. Mit `build-datacenter.ps1` bauen und das resultierende Mod installieren.
2. Spiel starten und die UnityExplorer-UI öffnen.
3. Prüfen, dass der Object Explorer Objekte listet, die C#-Konsole einen
Ausdruck auswertet, der Inspector öffnet und ein Hook erstellt werden kann.

### Erwartungen an Pull Requests

- Beschreibe, was sich geändert hat und warum, und ob du im Spiel getestet hast.
- Aktualisiere [`CHANGELOG.md`](CHANGELOG.md) unter `## Unreleased` (zweisprachige Einträge).
- Versionen nur beim Release erhöhen (siehe Versionsschema-Hinweis in `CHANGELOG.md`).
2 changes: 1 addition & 1 deletion UnityEditorPackage/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "com.sinai-dev.unityexplorer",
"version": "4.12.7",
"version": "4.13.5",
"displayName": "UnityExplorer",
"description": "An in-game UI for exploring, debugging and modifying Unity games.",
"unity": "2017.1",
Expand Down
8 changes: 4 additions & 4 deletions UniverseLib/src/UniverseLib.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@
</PropertyGroup>
<!-- NuGet -->
<ItemGroup>
<PackageReference Include="HarmonyX" Version="2.5.2" IncludeAssets="compile" />
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.17.0">
<PackageReference Include="HarmonyX" Version="2.14.0" IncludeAssets="compile" />
<PackageReference Include="Microsoft.Unity.Analyzers" Version="1.19.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand All @@ -59,8 +59,8 @@
<PackageReference Include="Il2CppAssemblyUnhollower.BaseLib" Version="0.4.22" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release_IL2CPP_Interop_BIE' or '$(Configuration)' == 'Release_IL2CPP_Interop_ML'">
<PackageReference Include="Il2CppInterop.Common" Version="1.0.0" />
<PackageReference Include="Il2CppInterop.Runtime" Version="1.0.0" />
<PackageReference Include="Il2CppInterop.Common" Version="1.5.1" />
<PackageReference Include="Il2CppInterop.Runtime" Version="1.5.1" />
</ItemGroup>
<!-- Assembly References -->
<ItemGroup Condition="'$(Configuration)' == 'Release_Mono'">
Expand Down
6 changes: 6 additions & 0 deletions global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"sdk": {
"version": "8.0.100",
"rollForward": "latestFeature"
}
}
Loading
Loading