MSEngine.Core
4.0.64
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package MSEngine.Core --version 4.0.64
NuGet\Install-Package MSEngine.Core -Version 4.0.64
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MSEngine.Core" Version="4.0.64" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MSEngine.Core" Version="4.0.64" />
<PackageReference Include="MSEngine.Core" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MSEngine.Core --version 4.0.64
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MSEngine.Core, 4.0.64"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MSEngine.Core@4.0.64
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MSEngine.Core&version=4.0.64
#tool nuget:?package=MSEngine.Core&version=4.0.64
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
MSEngine ZA Ultra
A High Performance Zero Allocation Minesweeper Engine/Solver Built with c# and .NET Standard 2.1
The core API of MSEngine Ultra
void FillCustomBoard(Span<Node> nodes, int mineCount, byte columns);
void ComputeBoard(Matrix<Node> matrix, Turn turn);
Who is this library for?
- Anyone who wants to build a Minesweeper game/UI without having to implement all the ugly/confusing internal logic
- Anyone planning on creating a Minesweeper solver bot
- Anyone interested in learning how to implement zero allocation c# code
How do I use this library?
- See the example
RunSimulations()inside the console appsrc\MSEngine.ConsoleApp\ - This example uses the automated solver, but the selection of a turn may come from any UI/input
Notes
- With just the initial board and a queue of turns, we can compute the expected state of any minesweeper game
- This approach allows for easy debugging, replays and backwards time travel
- Inspired by the Starcraft 2 replay engine and TAS (tool assisted speedruns)
API
public interface IEngine
{
void FillBeginnerBoard(Span<Node> nodes);
void FillIntermediateBoard(Span<Node> nodes);
void FillExpertBoard(Span<Node> nodes);
void FillCustomBoard(Span<Node> nodes, int mineCount, byte columns);
void FillCustomBoard(Span<Node> nodes, ReadOnlySpan<int> mines, byte columns);
}
public interface IBoardStateMachine
{
void EnsureValidBoardConfiguration(Matrix<Node> matrix, Turn turn);
void ComputeBoard(Matrix<Node> matrix, Turn turn);
}
Tests
To run tests, open a terminal and navigate to src\MSEngine.Tests\ and execute dotnet test
Benchmarks
To run benchmarks, open a terminal and navigate to src\MSEngine.Benchmarks\ and execute dotnet run
TODO / Future Goals
NuGet PackageZero AllocationsPerformance EnhancementsExtensive and deterministic test suiteBenchmarksMatrix / Linear Algebra solver(Special thanks to Robert Massaioli for providing a detailed implementation)- Probabilistic Solver
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.0.133 | 626 | 11/29/2021 |
| 5.0.132 | 491 | 11/18/2021 |
| 5.0.131 | 585 | 11/14/2021 |
| 5.0.125 | 507 | 9/7/2021 |
| 5.0.124 | 517 | 9/7/2021 |
| 5.0.123 | 521 | 9/7/2021 |
| 5.0.122 | 498 | 9/4/2021 |
| 5.0.121 | 494 | 8/21/2021 |
| 5.0.118 | 573 | 4/25/2021 |
| 5.0.117 | 542 | 4/20/2021 |
| 5.0.116 | 598 | 4/18/2021 |
| 5.0.115 | 620 | 12/3/2020 |
| 5.0.114 | 589 | 12/3/2020 |
| 5.0.113 | 614 | 12/2/2020 |
| 5.0.106 | 650 | 8/14/2020 |
| 5.0.104 | 736 | 8/14/2020 |
| 5.0.103 | 641 | 8/12/2020 |
| 5.0.102 | 664 | 7/8/2020 |
| 5.0.100 | 641 | 7/6/2020 |
| 4.0.64 | 686 | 6/1/2020 |
Loading failed