Skip to content

Conversation

olivegamestudio
Copy link

@olivegamestudio olivegamestudio commented Aug 18, 2025

This is the documentation part of deploying to the app stores - Apple and Google Play. This covers the continuation of Dungeon Slime game from it's Windows-ness to the mobile world.

In addition, we have a separate touch demo that can be used to test out the gestures.

olivegamestudio and others added 2 commits June 12, 2025 18:46
* Add screenshots from deploying to iOS simulator and Android emulator.

* Set landscape orientation.

* Android documentation started.

* Updated android doc.

* More information about csproj.

* Fix image link.

* Initial notes for part 1.

* Updated doc and images.

* Add android doc and images.

* Add android project image.

* Work on the cross platform changes.

* More tidy ups.

* notes

* Restructure.

* Update for debugging.

* Updated image.

* Renamed screenshots.

* Add iOS simulator.

* Adding rider images.

* Added getting started section.

* Refactoring folders.

* Parts 1 and 2. Setup 3 and 4 the right order.

* Update mobile development tutorial: refine iOS section, add modern .NET features, and enhance clarity

* Updated versions of library.

* Cropped image better and removed unnecessary one.

* Touch tutorial.

* Publishing documentation.

* Include transporter images.

* Updated documents and tidy ups.
@Copilot Copilot AI review requested due to automatic review settings August 18, 2025 16:56
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a comprehensive mobile deployment tutorial series for MonoGame, extending the existing desktop tutorial to cover Android and iOS development. The tutorial covers the complete mobile development lifecycle from initial setup through app store publishing.

Key changes include:

  • Complete mobile development workflow tutorial spanning 5 chapters
  • Cross-platform project architecture and setup guidance
  • Touch input handling for mobile interfaces
  • Publishing processes for both iOS App Store and Google Play Store

Reviewed Changes

Copilot reviewed 5 out of 40 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
01_getting_started/index.md Introduction chapter covering development environment setup and requirements for Android/iOS
02_crossplatform/index.md Guide for converting Windows-only projects to cross-platform architecture
03_touch/index.md Touch gesture handling fundamentals and implementation patterns
04_debugging_locally/index.md Local debugging setup with screenshots for Android and iOS
05_publishing/index.md Comprehensive publishing guide for iOS App Store and Google Play Store
Comments suppressed due to low confidence (1)

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

|120x120|![120x120](images/icons/appicon40x40@3x.png)|
|120x120|![120x120](images/icons/appicon60x60@2x.png)|
|152x152|![152x152](images/icons/appicon76x76@2x.png)|
|83.5x83.5|![167x167](images/icons/appicon83.5x83.5@2x.png)|
Copy link
Preview

Copilot AI Aug 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table shows '83.5x83.5' but the image filename and alt text show '167x167'. This inconsistency will confuse readers about the correct icon size.

Suggested change
|83.5x83.5|![167x167](images/icons/appicon83.5x83.5@2x.png)|
|167x167|![167x167](images/icons/appicon83.5x83.5@2x.png)|

Copilot uses AI. Check for mistakes.

[https://github.com/vchelaru/Gum](https://github.com/vchelaru/Gum)

```xml
<PackageReference Include="Gum.MonoGame" Version="2025.6.26.1" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend upgrading to the latest version of Gum before releasing this, unless of course you are concerned that you haven't spent enough time with it to verify compatibility.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have an issue with updating the version number and would need to check compatibility.


#### Using Command Line

The creation of an IPA file can be achieved on the terminal. Currently, Rider does **not** support this process.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about Visual Studio - is that worth discussing here?

AlwaysRetainTaskState = true,
LaunchMode = LaunchMode.SingleInstance,
ScreenOrientation = ScreenOrientation.SensorLandscape,
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do these mean? Why might I want to change them?

Label = "@string/app_name",
MainLauncher = true,
Icon = "@drawable/icon",
AlwaysRetainTaskState = true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does AlwaysRetainTaskState mean? Why might I want to change it?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue raised - olivegamestudio#2


```bash
# Build AAB using .NET CLI
dotnet publish -f net8.0-android -c Release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth discussing how to do all of this in normal Visual Studio? Or linking to the MS docs?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@SimonDarksideJ SimonDarksideJ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A good start, but a few crucial changes needed to align with the styles from the original 2D tutorial:

  • Encapsulation of images into figures.
  • More explanation of subjects instead of just headings.
  • No contractions :D (just ask @AristurtleDev :P )
  • More instructions rather than referring to the sample
  • Doesn't include links to the finished sample :S

Overall a great start, just needs some finishing touches.


# Getting Started and Overview

This tutorial extends the **MonoGame 2D Dungeon Slime tutorial** to mobile platforms. If you haven't completed the desktop tutorial yet, we recommend finishing it first as we'll be building directly on that foundation.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When mentioning other content or API's, provide a hyperlink back to the source content so the user does not have to search


## What You'll Learn

By the end of this mobile tutorial series, you'll have:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To ensure readability for non-english speakers, the MonoGame tutorials "do not" use contractions.

Please ensure to update where they have been used, e.g. "you'll" should be "you will"


**Required Tools:**
- **Android Device Manager** - Used to set up simulators (accessible through Visual Studio)
- **Android SDK Manager** - Used to install the SDK platforms
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

iOS mentions having an iOS developer account. Is the same setup not also required for Android?


**Required Tools:**
- **Android Device Manager** - Used to set up simulators (accessible through Visual Studio)
- **Android SDK Manager** - Used to install the SDK platforms
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the Android SDK manager required, or is the Android DotNet workload not enough? (since the workload is already part of the MonoGame install instructions.)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instructions on installing the SDK are at https://learn.microsoft.com/en-us/dotnet/android/getting-started/installation/. We should link to that documentation.

we could also link to the docs on installing the Maui workload https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation. Maui is the workload which includes all the mobile bits.
The C# DevKit in VSCode can also install the Android SDK afaik.


# Prerequisites

Before starting this chapter, ensure you have:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, this should be included in the previous chapter, which detailed what the reader should know before starting the tutorial.
By Chapter 2, they should be "ready" to begin :D


![Transporter](images/ios/testflight-build.png)

![Transporter](images/ios/testflight-build-encryption.png)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I personally would love to know how to bypass this. I've tried several things and with automated builds, it is a pain to have to revisit the store to keep doing this :D

Copy link
Author

@olivegamestudio olivegamestudio Sep 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apparently, the option is in info.plist - will try it out.

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

3. **Status Check:** Wait for "Ready to Submit" status
4. **Build Selection:** Choose the build for your app version

![Transporter](images/ios/testflight-build.png)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Design point, the original 2D tutorial used specific formatting/figured around images.
Can you please replicate it across the tutorial. If you prefer not to, not to worry as I can do this in post.

E.G.

Figure 2-1: The C# Dev Kit Extension listed in Visual Studio Code
Figure 2-1: The C# Dev Kit Extension listed in Visual Studio Code

This ensure the same format across the tutorials


**Important:** Keep your keystore file secure and backed up. Lost keystores cannot be recovered and prevent app updates.

## Google Play Console Setup
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This chapter is already quite large, might be better splitting this into another chapter


### Creating Your App

1. **Create App** in Google Play Console
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty much the same comments as already stated for the iOS walk through.

  • More concise
  • Explain a bit more (far too many sections are just lists, e.g. signing configuration, shows the configuration but does not explain to the reader what signing is and what it is for?
  • include links to tools that help, e.g. generating icons/images

adb install your-app.apk
```

# Conclusion
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Conclusion could be a separate and final chapter, providing a catchup/review of what the reader has achieved and some links to where they might want to find out more? E.G. different store docs/help guides.

For **Android**:

```xml
<ItemGroup Condition="'$(TargetFramework)'=='net8.0-android'">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should be using
Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'"
This means the code will not need to change when the TargetFramework changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants