-
Notifications
You must be signed in to change notification settings - Fork 60
Feature/mobile deployment #169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Feature/mobile deployment #169
Conversation
* 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.
There was a problem hiding this 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|| | ||
|152x152|| | ||
|83.5x83.5|| |
There was a problem hiding this comment.
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.
|83.5x83.5|| | |
|167x167|| |
Copilot uses AI. Check for mistakes.
articles/tutorials/advanced/MobileDeployment/05_publishing/index.md
Outdated
Show resolved
Hide resolved
articles/tutorials/advanced/MobileDeployment/04_debugging_locally/index.md
Outdated
Show resolved
Hide resolved
articles/tutorials/advanced/MobileDeployment/01_getting_started/index.md
Outdated
Show resolved
Hide resolved
[https://github.com/vchelaru/Gum](https://github.com/vchelaru/Gum) | ||
|
||
```xml | ||
<PackageReference Include="Gum.MonoGame" Version="2025.6.26.1" /> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
articles/tutorials/advanced/MobileDeployment/04_publishing/index.md
Outdated
Show resolved
Hide resolved
|
||
#### Using Command Line | ||
|
||
The creation of an IPA file can be achieved on the terminal. Currently, Rider does **not** support this process. |
There was a problem hiding this comment.
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 | |
There was a problem hiding this comment.
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, |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…econtroller class was updated to use the new "TouchInfo" class.
There was a problem hiding this 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. |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.)
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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
|
||
 | ||
|
||
 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 | ||
|
||
 |
There was a problem hiding this comment.
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 |
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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'"> |
There was a problem hiding this comment.
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
…ecklist and conclusion. (#18)
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.