This project, Obsidian Launcher, is a custom 'cracked' Minecraft launcher.
It didn't start its life in C#, though. My first attempt was in C++. ๐ Click here to browse the last C++ commit
Why the switch? Letโs just say C++ development, while powerful, presented a series of... character-building experiences that eventually led me to the more streamlined environment of C# and .NET.
-
โ๏ธ The Great Library Hunt & CMake Wars: Simply getting a reliable compression and archive library integrated felt like a quest. I wrestled with CMake for days just to get a clean build across setups. Hours spent debugging build scripts could've built actual features!
-
๐ The SSL Certificate Fiasco: Remember OpenSSLโs lovely inability to easily read system certs on some platforms? I do. I embedded
cacert.pemmanually. It mostly workedโexcept for one URL that always failed outside of tests. The kicker? Tests passed every single time. Eventually, I gave up and disabled SSL verification altogether.
It was clear that for this project, the everything-is-manual nature of C++ was a roadblock. So, I ditched it and started fresh with C#
This project aims to replicate the key features of a modern Minecraft launcher:
- ๐งฉ Fetching and managing official Minecraft versions.
- โ Handling Java runtimes (discovery, download, extraction).
- ๐งฑ Downloading & verifying all required game assets.
- ๐ Managing libraries, including native ones for LWJGL.
- ๐งต Building classpaths and JVM/game arguments.
โถ๏ธ Launching the game!
Actively in development ๐ Here's what's working or in progress:
- ๐ Version Manifests: Fetches and parses Mojang's data.
- โ Java Management: Finds Java, downloads, extracts archives (
.zipโ ,.tar.gzโ ). - ๐จ Asset Management: Downloads and verifies game assets.
- ๐ฆ Library Management: Handles downloads, verification, extraction + native rules.
- ๐ง Argument & Classpath Builder: Fully functional with placeholder support.
- ๐ฎ Game Launch: Successfully launches Minecraft with output capture.
- ๐ Logging: Serilog-based console and file logging.
- ๐ Rich Standard Library โ
HttpClient,System.IO.Compression.ZipFile, and more. - ๐ฆ NuGet Ecosystem โ Easy, fast package management.
- โก Productivity โ Less boilerplate, more logic.
- ๐งผ Modern Features โ Async/await, LINQ, clean syntax.
- ๐ง Sanity Preservation โ No more build system nightmares.
ObsidianLauncher/
โโโ ObsidianLauncher.sln
โโโ ObsidianLauncher/
โโโ ObsidianLauncher.csproj
โโโ Program.cs
โโโ LauncherConfig.cs
โโโ Models/
โ โโโ (e.g., MinecraftVersion.cs, Library.cs)
โโโ Enums/
โ โโโ (e.g., OperatingSystemType.cs)
โโโ Services/
โ โโโ (e.g., HttpManagerService.cs, JavaManager.cs)
โโโ Utils/
โโโ (e.g., CryptoUtils.cs, LoggerSetup.cs)
- .NET 10.0 SDK (or newer) โ
This launcher runs on Windows, Linux, and macOS thanks to .NET 10!
-
๐งฌ Clone the repository.
-
๐ Restore packages:
dotnet restore "Obsidian Launcher.csproj" -
๐๏ธ Build it:
dotnet build "Obsidian Launcher.csproj" -c Release -
๐ Run it:
On Windows:
dotnet run --configuration Release # Or directly: bin\Release\net10.0\Obsidian Launcher.exeOn Linux/macOS:
dotnet run --configuration Release # Or directly: ./bin/Release/net10.0/Obsidian\ Launcher(Data will be stored in
.ObsidianLauncher)
To create a standalone executable for a specific platform:
# For Windows (x64)
dotnet publish -c Release -r win-x64 --self-contained
# For Linux (x64)
dotnet publish -c Release -r linux-x64 --self-contained
# For macOS (x64)
dotnet publish -c Release -r osx-x64 --self-contained
# For macOS (ARM64 - M1/M2/M3)
dotnet publish -c Release -r osx-arm64 --self-containedThe standalone executable will be in bin/Release/net10.0/{runtime-id}/publish/
- ๐ Authentication: Add Microsoft login (only offline mode supported currently).
- ๐ผ๏ธ UI: Build a GUI! (Console โ user-friendly ๐ )
- ๐ Profile Management
- ๐งฉ Mod Management
- ๐ง Placeholder Replacements: Finish โem all.
- ๐งช Unit Tests
- ๐ก And lots more!
See .ai-docs/PRISM_LAUNCHER_FEATURE_COMPARISON.md for a comprehensive feature comparison with PrismLauncher and a roadmap for future development.
This project includes AI-generated documentation to help with development, testing, and feature planning. These documents are located in the .ai-docs/ folder:
- Testing Plan - Comprehensive testing scenarios and procedures
- Feature Comparison - Detailed comparison with PrismLauncher and implementation roadmap
- Task Summaries - Summaries of completed development tasks
These documents are provided as reference material and should be reviewed and validated as the project evolves.
Found a ๐bug or have an ๐กidea?
Open an issue or PR โ all help is appreciated!
This project is licensed under the GPL v3 License ๐