- 
                Notifications
    You must be signed in to change notification settings 
- Fork 63
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|| | 
    
      
    
      Copilot
AI
    
    
    
      Aug 18, 2025 
    
  
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|| | 
        
          
                articles/tutorials/advanced/MobileDeployment/05_publishing/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                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.
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 3.8.5 base branch has been updated, so you should be able to refresh to the latest used by the base tutorial
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 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.
        
          
                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?
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 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.
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.
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 | | 
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
        
          
                articles/tutorials/advanced/MobileDeployment/01_getting_started/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      |  | ||
| **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?
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 Google Developer account is required to publish, but not to build I think.
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.
Added comment to page to say that you do not need a paid developer account to build locally and test.
        
          
                articles/tutorials/advanced/MobileDeployment/01_getting_started/index.md
          
            Show resolved
            Hide resolved
        
      |  | ||
| # 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
        
          
                articles/tutorials/advanced/MobileDeployment/04_publishing/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                articles/tutorials/advanced/MobileDeployment/04_publishing/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                articles/tutorials/advanced/MobileDeployment/04_publishing/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      |  | ||
| ### 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
        
          
                articles/tutorials/advanced/MobileDeployment/04_publishing/index.md
              
                Outdated
          
            Show resolved
            Hide resolved
        
      | 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)
5af3400    to
    1504684      
    Compare
  
    98d170a    to
    b484644      
    Compare
  
    …properties. AoT issue may happen during publish on own projects.
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.