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 AI review requested due to automatic review settings August 18, 2025 16:56
Copy link

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

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.

Copy link
Collaborator

Choose a reason for hiding this comment

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

The 3.8.5 base branch has been updated, so you should be able to refresh to the latest used by the base tutorial

Copy link
Author

Choose a reason for hiding this comment

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

The mobile tutorial is using 2025.8.3.3 where as the original tutorial is using 2025.5.1.1.
I've updated the doc to match the tutorial.


#### 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?

Copy link
Collaborator

Choose a reason for hiding this comment

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

The 2D tutorial focused on Visual Studio Code, so I think it is ok to continue with that here. Using full Visual Studio is the same pattern, just a different interface. Same with Rider.

Copy link
Author

Choose a reason for hiding this comment

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

Yes the tooling for MacOS is not perfect since the departure of VS for Mac. Especially when terminal is needed to do the publish part then it's just a preference about the IDE.

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


**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?

Copy link
Contributor

Choose a reason for hiding this comment

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

A Google Developer account is required to publish, but not to build I think.

Copy link
Author

Choose a reason for hiding this comment

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

Added comment to page to say that you do not need a paid developer account to build locally and test.


# 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


### 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

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

@olivegamestudio olivegamestudio force-pushed the feature/MobileDeployment branch from 5af3400 to 1504684 Compare October 14, 2025 17:55
@olivegamestudio olivegamestudio force-pushed the feature/MobileDeployment branch from 98d170a to b484644 Compare October 22, 2025 21:05
…properties. AoT issue may happen during publish on own projects.
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