Skip to content

Sanmill is an open-source, UCI-like Mill/Morris/Merrills/Mühle/Malom (and its variants) program with CUI, Flutter GUI and Qt GUI, sharing and freely distributing the code, tools and data needed to deliver this mill game. We do this because we are convinced that open software and open data are key ingredients to make rapid progress.

License

Notifications You must be signed in to change notification settings

calcitem/Sanmill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

Graphic

Get it on GitHub Get it on Google Play Get it on F-Droid
Download on the App Store Get it from the Microsoft Store Get it from the Snap Store Get it on CafeBazaar

snapcraft

Codemagic build status

Translation status

Readme-Chinese

Sanmill is a free, powerful UCI-like N men's morris program with CUI, Flutter GUI, and Qt GUI. It is distributed under the GNU General Public License version 3 (GPL v3), ensuring that it remains free software. Users can modify and redistribute the software, provided they adhere to the GPL terms.

Nine men's morris is a strategy board game for two players dating back to the Roman Empire. The game is also known as nine-man morris, mill, mills, the mill game, merels, merrills, merelles, marelles, morelles, and ninepenny marl in English.

image

Files

This distribution of Sanmill consists of the following files:

  • Readme.md: The file you are currently reading.
  • Copying.txt: A text file containing the GNU General Public License version 3.
  • src: A subdirectory containing the full source code, including a Makefile for compiling Sanmill CUI on Unix-like systems.
  • src/ui/flutter_app: A subdirectory containing a Flutter frontend.
  • src/ui/qt: A subdirectory containing a Qt frontend.

Frontend Options

Sanmill offers two frontend options: Flutter and Qt. The primary focus is on the Flutter frontend, which is actively developed and maintained, supporting Android, iOS, Windows, and macOS for a consistent cross-platform experience. The Qt frontend is mainly used for debugging the AI engine and is not actively maintained. Users are encouraged to use the Flutter frontend for the latest features and updates.

How to Build

CUI

Sanmill CUI supports 32 or 64-bit CPUs, certain hardware instructions, big-endian machines such as Power PC, and other platforms.

It should be easy to compile Sanmill directly from the source code on Unix-like systems with the included Makefile in the src folder. Generally, it is recommended to run make help to see a list of make targets with corresponding descriptions.

cd src
make help
make build ARCH=x86-64-modern

When reporting an issue or a bug, please provide information about the version and compiler used to create your executable. You can obtain this information by running:

./sanmill compiler

Flutter App

To build the Flutter app, run ./flutter-init.sh, and then use Android Studio or Visual Studio Code to open src/ui/flutter_app.

We use compile-time environment configs to enable specific parts of the code:

  • test to prepare the app for Monkey and Appium testing. (References to external sites will be disabled.)
  • dev_mode to show the developer mode without needing to enable it first.
  • catcher to control the use of Catcher. (Enabled by default; disable if necessary.)

All environment configs can be combined and take boolean values, like:

flutter run --dart-define catcher=false dev_mode=true

Launch configurations for Android Studio or Visual Studio Code are available. Select the needed one in the Run and Debug or Run/Debug Configurations tab.

Qt Application

To build the Qt application on Ubuntu or any Ubuntu-based GNU/Linux distribution, you must install Qt by running the following command as root:

sudo apt-get install qt6-base-dev qt6-multimedia-dev qtcreator

Use Qt Creator to open src/ui/qt/CMakeLists.txt, or run:

cd src/ui/qt
cmake .
cmake --build . --target mill-pro

You can also use Visual Studio to open src\ui\qt\mill-pro.sln to build the Qt application.

Understanding the Code Base and Participating in the Project

Sanmill's improvements have been a community effort. You can contribute in several ways:

Improving the Code

  • Sanmill Wiki: Contains explanations of techniques used in Sanmill, with background information.
  • GitHub Repository: The latest source can always be found here.
  • Discussions: Join discussions about Sanmill.

Terms of Use

Sanmill is distributed under the GNU General Public License version 3 (GPL v3). This allows you to use, modify, and distribute the software, provided you include the full source code or a pointer to where the source can be found. Any changes to the source code must also be made available under the GPL.

For full details, see the GPL v3 in the Copying.txt file.

Note on App Store Distribution: As an additional permission under section 7 of the GPL v3, you are allowed to distribute the software through app stores, even if they have restrictive terms that are incompatible with the GPL. However, the source code must also be available under the GPL, either through the app store or another channel without those restrictive terms.

All unofficial builds and forks of the app must be clearly labeled as unofficial (e.g., "Sanmill UNOFFICIAL") or use a different name altogether. They must use a different application ID to avoid conflicts with official releases.

Crash Reporting and Privacy

Sanmill collects non-sensitive crash information to help improve the software. The information collected may include:

  • Device type and operating system version
  • The actions leading up to the crash
  • The crash error message

Users can review the crash report contents before sending. No personally identifiable information (PII) is collected, and all data is anonymized to ensure user privacy. Users can choose not to send crash reports if they prefer.

This data is used solely for improving the quality and stability of Sanmill and is not shared with any third parties.

Free Software Philosophy

Sanmill is free software, and we emphasize the importance of free software as a matter of freedom. We encourage the use of GPL v3 or later as a license for contributions and discourage the use of non-free licenses.

About

Sanmill is an open-source, UCI-like Mill/Morris/Merrills/Mühle/Malom (and its variants) program with CUI, Flutter GUI and Qt GUI, sharing and freely distributing the code, tools and data needed to deliver this mill game. We do this because we are convinced that open software and open data are key ingredients to make rapid progress.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks