A fork published by MMPWorks to demonstrate migrating a real .NET application from Serilog to Herald. This repository is an unmodified copy of the upstream application except for the logging migration described below.
Original project TheTrackerCouncil/SMZ3Randomizer — an Avalonia desktop randomizer for a SNES classic Original authors The TrackerCouncil project (originally tewtal) License MIT — © 2022 Laura Verdoes. Preserved unchanged in LICENSE; all copyright remains with the original authors.What MMPWorks changed Only the logging migration below. The application itself is untouched.
Verdict: clean drop-in. net10. The 3 ILogger<T> call sites did not change — the migration touches the bootstrap and the package list, not your code.
// TrackerCouncil.Smz3.UI.csproj
- <PackageReference Include="Serilog" Version="4.3.1" />
- <PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
- <PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
+ <PackageReference Include="MMP.Herald.Serilog" Version="0.12.6" />
+ <PackageReference Include="MMP.Herald.Serilog.AspNetCore" Version="0.12.6" />
Your log calls stay exactly as written:
Log.Information("Starting SMZ3 Cas' Randomizer {Version}", version);
- Bootstrap + 3 package lines; the 3
ILogger<T>call sites unchanged. - Static
Log.*startup calls carried — confirmed in the captured file output. - Message templates and
SourceContextsubstitution render intact. - On 0.12.6 the file provider is bundled — no extra package, no
RegisterAllline. - Rolling and retention read straight off
WriteTo.File, including calendar Year and Month rolls. - Tests: 191 passed, 1 failed — the failure is a GitHub-release meta-test, unrelated to logging.
- Live run: a bare
WriteTo.Filewrote a fully rendered, 3,046-byte dated log file on the 0.12.6 run.
WriteTo.File compiled, the build went green, the console worked — and no file was ever written (a silent no-op). We found it only by running the app and looking for the file. The fix bundled the file provider into Herald core, and fixing it surfaced a second bug underneath (empty message body) the no-op had masked. Both shipped in the published 0.12.6 package, and a re-pinned fork re-ran clean against it.
Herald is Apache-2.0 open source: github.com/mmpworks/Herald.OSS.
The original project README follows, unchanged.
“This is the cas'est version of the rando you’ll ever see.”
— Diabetus, 2021
The SMZ3 Cas’ Randomizer is a fork of the original Super Metroid & A Link to the Past Crossover Randomizer. Originally created to remove the decidedly uncas’ IBJ (Infinite Bomb Jump) technique, it's since grown into a project with a built-in tracker, accessibility patches, and other general quality of life changes added to make SMZ3 more casual and approachable..
A Windows installer for latest version of the SMZ3 Cas’ Randomizer can be found on the GitHub releases page. Linux and Mac versions are also available with slightly limited functionality.
In addition to making IBJ completely optional, there is also:
- Integrated voice-enabled/automated item & location tracker;
- Built-in MSU-1 support for custom music packs;
- Customizable logic for either casual or advanced play;
- Various accessibility and quality of life patches;
- Customizable ship sprites;
- Patches for modern Super Metroid controls;
- In game hint tiles and voice-enabled hints via tracker;
- Basic Twitch integration for tracker responding to chat;
- Multiworld support with individual player logic and game settings;
- Sprites made by members of Diabetus’ community and others;
Note
Voice recognition and text-to-speech functionality currently only has native support available on Windows. Linux users can use the PySpeechService application for voice recognition and text-to-speech.
- Download the latest SMZ3CasRandomizerSetupWin version from the GitHub releases and run the installer
- Download the latest AppImage version from the GitHub releases and place in the desired folder
- Make the AppImage file executable and run it
- (Optional) Download or install the PySpeechService application for voice recognition and text-to-speech
- Note that if you want custom Piper voices, you will need to add the following Piper speech files to
~/.local/share/SMZ3CasRandomizer/PiperModels/:- Tracker_Female.json
- Tracker_Female.onnx
- Tracker_Male.json
- Tracker_Male.onnx
- Note that if you want custom Piper voices, you will need to add the following Piper speech files to
- Install .NET 10
- Download the latest version from the GitHub releases and move to the desired folder
- In the terminal, go to the folder and execute the command
xattr -dr com.apple.quarantine SMZ3CasRandomizer.app
- Below you can find a list of all of the sprites included and their creators
- Various Super Metroid patches were pulled from the VARIA Randomizer by theonlydude
- Diabetus and PinkKittyRose and the members of their communities have helped test and stream with this fork
The original repository can be found at https://github.com/tewtal/SMZ3Randomizer.
Interested in hosting your own server for multiplayer games? Take a look at the Server Setup Documentation.