Skip to content

mmpworks/SMZ3Randomizer

Repository files navigation

SMZ3 Randomizer — Herald migration demo

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.

The Serilog → Herald migration

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.

The entire source change

// 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);

What we proved — we ran it, not just compiled it

  • 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 SourceContext substitution render intact.
  • On 0.12.6 the file provider is bundled — no extra package, no RegisterAll line.
  • 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.File wrote a fully rendered, 3,046-byte dated log file on the 0.12.6 run.

The bug we caught by running the app

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.

SMZ3 Cas’ Randomizer

“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.

Features

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.

Installation

Windows

  • Download the latest SMZ3CasRandomizerSetupWin version from the GitHub releases and run the installer

Linux

  • 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

Mac

  • 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

Credits

  • 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.

Hosting a SMZ3 Cas' Multiplayer Server

Interested in hosting your own server for multiplayer games? Take a look at the Server Setup Documentation.

About

Herald migration demo (fork) — Serilog->Herald on a real Avalonia app. Original: TheTrackerCouncil/SMZ3Randomizer (MIT).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors