Mythic GME Adventures is an App for managing adventures using the rules of Mythic Game Master Emulator, 2nd Edition.
Features:
- Fate chart with Chaos variations (standard, mid, low, none)
- Meaning tables (from the book + user-created + translation support)
- Threads and Characters lists
- Thread progress track and Discovery questions
- Scenes with Adjustments
- Basic dice roller
- Save on Google Drive: you can share your adventures between your devices
- Works offline
- Export your adventure to a text file: you can format it properly in your text editor of choice.
Available on Windows and Android.
See the Home page for more details.
Install Inno Setup.
flutter build windows
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" windows\setup.iss
The setup is in .\build\windows
.
- Update the build number in
pubspec.yml
for a new release. The build number will be used asversionCode
inandroid\app\build.gradle
. Android versioning. - Build the App bundle.
The bundle is
flutter build appbundle
build/app/outputs/bundle/release/app-release.aab
.
- Android:
keytool -genkey -v -keystore upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
From Securesafe:
- download
android\upload-keystore.jks
- download
android\key.properties
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
https://docs.flutter.dev/release/upgrade
https://developers.google.com/android/guides/client-auth
magick -background "#2f3066" -size 192x192 assets\ic_launcher.svg android\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png
magick -background "#2f3066" -size 144x144 assets\ic_launcher.svg android\app\src\main\res\mipmap-xxhdpi\ic_launcher.png
magick -background "#2f3066" -size 96x96 assets\ic_launcher.svg android\app\src\main\res\mipmap-xhdpi\ic_launcher.png
magick -background "#2f3066" -size 72x72 assets\ic_launcher.svg android\app\src\main\res\mipmap-hdpi\ic_launcher.png
magick -background "#2f3066" -size 48x48 assets\ic_launcher.svg android\app\src\main\res\mipmap-mdpi\ic_launcher.png
magick -background none -size 108x108 assets\splash-android12-light.svg android\app\src\main\res\drawable\ic_launcher_foreground.png
magick -background none -size 500x500 assets\splash-light.svg assets\splash-light.png
magick -background none -size 500x500 assets\splash-dark.svg assets\splash-dark.png
magick -background "#2f3066" -size 512x512 assets\android-store.svg assets\android-store.png
magick -background none -size 16x16 assets\splash-light.svg %temp%\ic-16.png
magick -background none -size 20x20 assets\splash-light.svg %temp%\ic-20.png
magick -background none -size 24x24 assets\splash-light.svg %temp%\ic-24.png
magick -background none -size 30x30 assets\splash-light.svg %temp%\ic-30.png
magick -background none -size 32x32 assets\splash-light.svg %temp%\ic-32.png
magick -background none -size 36x36 assets\splash-light.svg %temp%\ic-36.png
magick -background none -size 40x40 assets\splash-light.svg %temp%\ic-40.png
magick -background none -size 48x48 assets\splash-light.svg %temp%\ic-48.png
magick -background none -size 60x60 assets\splash-light.svg %temp%\ic-60.png
magick -background none -size 64x64 assets\splash-light.svg %temp%\ic-64.png
magick -background none -size 72x72 assets\splash-light.svg %temp%\ic-72.png
magick -background none -size 80x80 assets\splash-light.svg %temp%\ic-80.png
magick -background none -size 96x96 assets\splash-light.svg %temp%\ic-96.png
magick -background none -size 256x256 assets\splash-light.svg %temp%\ic-256.png
magick %temp%\ic-*.png windows\runner\resources\app_icon.ico
- file_picker: https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup
- flutter_secure_storage: https://pub.dev/packages/flutter_secure_storage
- Only one App instance on Desktop: https://stackoverflow.com/questions/67233239/run-only-single-instance-of-flutter-desktop-application
-
android SDK versions
- in
android\app\build.gradle
defaultConfig { ... minSdkVersion 21 targetSdkVersion 34 }
- in
-
to avoid saving the secure storage:
- in
android\app\src\main\AndroidManifest.xml
add toactivity
:android:fullBackupContent="@xml/auto_backup_rules"
android:dataExtractionRules="@xml/data_extraction_rules"
- add file
android\app\src\main\res\xml\auto_backup_rules.xml
<?xml version="1.0" encoding="utf-8"?> <full-backup-content> <include domain="sharedpref" path="."/> <exclude domain="sharedpref" path="FlutterSecureStorage"/> </full-backup-content>
- add file
android\app\src\main\res\xml\data_extraction_rules.xml
<?xml version="1.0" encoding="utf-8"?> <data-extraction-rules> <cloud-backup> <include domain="sharedpref" path="."/> <exclude domain="sharedpref" path="FlutterSecureStorage"/> </cloud-backup> <device-transfer> <include domain="sharedpref" path="."/> <exclude domain="sharedpref" path="FlutterSecureStorage"/> </device-transfer> </data-extraction-rules>
- in
-
to enable signing
- in
android\app\build.gradle
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) }
android { ... signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } } }
- in
- intercept exit event, in
macos/Runner/AppDelegate.swift
:override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return false }