Skip to content

fix(docs): correct typos and improve consistency across articles #145

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

Merged
merged 7 commits into from
Jun 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions articles/console_access.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: How do I get access to console versions of MonoGame?

MonoGame is free to use on all platforms from the [public repository](https://github.dev/MonoGame/monogame), but the code for supporting console platforms is only accessible to authorized console developers.

These platforms are provided as private code repositories that add integrations with the console vendor's APIs and platform specific documentation.
These platforms are provided as private code repositories that add integrations with the console vendor's APIs and platform-specific documentation.

## Application process

Expand All @@ -23,7 +23,7 @@ The instructions below will help you gain access to each platform.

![Nintendo Switch](images/nintendo_switch.png)

Your first step is to register as [Nintendo Developer](https://developer.nintendo.com/register) for Nintendo Switch.
Your first step is to register as a [Nintendo Developer](https://developer.nintendo.com/register) for Nintendo Switch.

Once you are in the program, you can go to the middleware page and fill out the [MonoGame - Nintendo Developer Authorization](https://developer.nintendo.com/group/development/getting-started/g1kr9vj6/middleware/monogame) form.

Expand Down
8 changes: 4 additions & 4 deletions articles/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Thank you for choosing to contribute to the MonoGame project! This page provides

The MonoGame documentation contains two types of documents: articles and API references.

Articles include manuals, guides and tutorials on how to use the MonoGame Framework to create games.
Articles include manuals, guides, and tutorials on how to use the MonoGame Framework to create games.

API references provide detailed explanation of each class and method found in the MonoGame Framework. The documentation is written in the [C# XML format](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/xml-documentation-comments) and is inline to the MonoGame source code.

Expand Down Expand Up @@ -68,7 +68,7 @@ Being inline with the code allows you to easily look for critical information wi

### Focus on What Adds Value to the Consumer

Limit documentation to public methods and functions unless there is a specific reason to include internal methods, while documenting internals helps with readability of the code, it provides limited use to consumers of the MonoGame Framework.
Limit documentation to public methods and functions unless there is a specific reason to include internal methods, while documenting internals helps with the readability of the code, it provides limited use to consumers of the MonoGame Framework.

### Documentation Is Referenced Not Read

Expand All @@ -94,7 +94,7 @@ With a few points to call out:

#### `<see>` and `<cref/>` should be used whenever an API reference is used in the documentation

To ensure that API documentation is linked to whichever reference is used, `<see>` and `<cref/>` references should be used, this helps users navigate the methods, especially when looking up initializers or use of a property or method.
To ensure that API documentation is linked to whichever reference is used, `<see>` and `<cref/>` references should be used. This helps users navigate the methods, especially when looking up initializers or use of a property or method.

#### Avoid self referencing `<cref/>` unless it provides value

Expand All @@ -121,7 +121,7 @@ and the y component uses 6 bits.

> [!NOTE]
> If the `cref` description would cause the line to exceed the 120 recommendation, this is generally ok, so long as the rendered line does not exceed the limit.
> THe limit however, is more of a guideline than a hard rule, so common sense should be applied to keep the limit near 120 characters.
> The limit however, is more of a guideline than a hard rule, so common sense should be applied to keep the limit near 120 characters.

#### Use the packed multi-line style with surrounding tags

Expand Down
6 changes: 3 additions & 3 deletions articles/help_and_support.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ title: Help and Support
description: Where to get help and support when using MonoGame.
---

There is a wealth of [community created content, blogs and tutorials](tutorials/index.md) available.
There is a wealth of [community-created content, blogs and tutorials](tutorials/index.md) available.

You can also chat to other MonoGame users via [Discord](https://discord.com/invite/monogame).
You can also chat with other MonoGame users via [Discord](https://discord.com/invite/monogame).

If you want to find an answer to a more specific problem, you can ask it on our [GitHub Discussions](https://github.com/MonoGame/MonoGame/discussions) page.

## Bugs and feature requests

If you find a bug or have a feature request, [please open a new issue](https://github.com/mono/monogame/issues). Before opening any issue, please search for existing issues.
If you find a bug or have a feature request, [please open a new issue](https://github.com/mono/monogame/issues). Before opening an issue, please check for existing ones.

Please note that the issue tracker is not for requesting help.
4 changes: 2 additions & 2 deletions articles/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This documentation [helps you to get started](getting_started/index.md) by provi

Please use the links at the top and left to navigate the documentation sections.

> This documentation assume that the reader has a basic knowledge of the C# programming language.
> This documentation assumes that the reader has a basic knowledge of the C# programming language.
## What is MonoGame exactly?

Expand All @@ -36,4 +36,4 @@ If you love coding and understanding how things work under the hood, MonoGame mi

MonoGame is an open-source project maintained by its community. Great open source projects require high-quality documentation. This is a call for volunteers to continue to help us make the MonoGame documentation truly great. If you can create tutorials, feature guides, code snippets, reference docs, video walkthroughs, or make any improvement to the current documentation, we could use your help!

Check out the [README on GitHub](https://github.com/MonoGame/MonoGame/blob/develop/README.md) or [talk with us on discord](https://discord.gg/monogame) to learn how to help!
Check out the [README on GitHub](https://github.com/MonoGame/MonoGame/blob/develop/README.md) or [talk with us on Discord](https://discord.gg/monogame) to learn how to help!
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ As XNA became more popular, the need for cross-platform development started to g

The official first release of MonoGame occurred in 2011, as an open-source version of XNA. While it still had the same familiar API as XNA, the cross-platform support was expanded to include Windows, macOS, Linux, iOS, Android, Xbox, and PlayStation. Despite Microsoft discontinuing XNA in 2013, MonoGame continued to grow and develop. Maintenance of the project was given to [Steve Williams](https://github.com/KonajuGames) and [Tom Spilman](https://github.com/tomspilman) in 2014. In order to direct its future development and undertaking, the [MonoGame Foundation](https://monogame.net/about/) was formed on September 29th, 2023.

Today, MonoGame is a mature cross-platform framework, that is built with the spirit of preserving XNA while adopting modern game development practices. Some popular titles created using MonoGame includes [Celeste](https://store.steampowered.com/app/504230/Celeste/), [Stardew Valley](https://store.steampowered.com/app/413150/Stardew\_Valley/), and [Streets of Rage 4](https://store.steampowered.com/app/985890/Streets\_of\_Rage\_4/).
Today, MonoGame is a mature cross-platform framework, that is built with the spirit of preserving XNA while adopting modern game development practices. Some popular titles created using MonoGame include [Celeste](https://store.steampowered.com/app/504230/Celeste/), [Stardew Valley](https://store.steampowered.com/app/413150/Stardew\_Valley/), and [Streets of Rage 4](https://store.steampowered.com/app/985890/Streets\_of\_Rage\_4/).

| ![Figure 1-1: Celeste](./images/celeste.png) | ![Figure 1-2: Stardew Valley](./images/stardew-valley.png) |
| :-------------------------------------------------: | :--------------------------------------------------------: |
Expand All @@ -36,7 +36,7 @@ MonoGame, following in the footsteps of XNA, is a "bring your own tools" framewo
At its core, MonoGame offers a set of libraries and APIs to handle common game development tasks. These include:

1. **Graphics Rendering**: 2D and 3D rendering are supported through the graphics API offered by MonoGame. This API provides sprite batching for 2D graphics, a flexible 3D pipeline, and shaders for custom visuals and effects.
2. **Input Handling**: Input from keyboard, mouse, gamepads, and touchscreens are supported, allowing for development of games for any platform and different styles of play.
2. **Input Handling**: Input from keyboard, mouse, gamepads, and touchscreens is supported, allowing for development of games for any platform and different styles of play.
3. **Audio**: A comprehensive audio system that can be used to create sound effects as well as play music with included support for many audio formats.
4. **Content Pipeline**: An out-of-the-box workflow for importing and processing game assets such as textures, models, and audio, and compiling them to a format that is optimal for the game's target platform.
5. **Math Library**: A math library specifically optimized for game development, providing essential mathematical functions and operations.
Expand Down
12 changes: 6 additions & 6 deletions articles/tutorials/building_2d_games/02_getting_started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ The first thing we need to do is install the .NET *Software Development Kit* (SD
> [!NOTE]
> The minimum supported version is .NET 8
3. Once the download finishes, run the installer
3. Once the download finishes, run the installer.

### [macOS](#tab/macos)

1. Open a web browser and navigate to [https://dotnet.microsoft.com/en-us/download](https://dotnet.microsoft.com/en-us/download).
2. Choose the version of the .NET SDK to install and click lick the *Download .NET SDK x64 (Intel)* button start the download of the .NET SDK Installer.
2. Choose the version of the .NET SDK to install and click the *Download .NET SDK x64 (Intel)* button start the download of the .NET SDK Installer.

> [!NOTE]
> The minimum supported version is .NET 8
Expand All @@ -58,7 +58,7 @@ sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0

## Install Additional Workloads (Optional)

After installing the .NET SDK, if you intend to target mobile devices such as Android or iOS, you will also need to install the corresponding mobile workloads. To do this, open a *Command Prompt* or *Terminal* window and enter the following commands
After installing the .NET SDK, if you intend to target mobile devices such as Android or iOS, you will also need to install the corresponding mobile workloads. To do this, open a *Command Prompt* or *Terminal* window and enter the following commands.

```sh
dotnet workload install ios
Expand All @@ -75,7 +75,7 @@ dotnet new install MonoGame.Templates.CSharp

## Installing Visual Studio Code

*Visual Studio Code* (VSCode) is a free, light weight editor. Depending on the programming language you are using, it is just a matter of installing the appropriate extension to support that particular language. VSCode is also cross-platform, meaning you can use it for development on Windows, macOS, and Linux. To ensure that all readers can follow this tutorial regardless of the operating system used, we will be using VSCode as our IDE.
*Visual Studio Code* (VSCode) is a free, lightweight editor. Depending on the programming language you are using, it is just a matter of installing the appropriate extension to support that particular language. VSCode is also cross-platform, meaning you can use it for development on Windows, macOS, and Linux. To ensure that all readers can follow this tutorial regardless of the operating system used, we will be using VSCode as our IDE.

To install VSCode, follow the instructions for your operating system below:

Expand Down Expand Up @@ -193,7 +193,7 @@ With your development environment setup, it is time to create your first MonoGam
> dotnet new install MonoGame.Templates.CSharp
> ```
5. After choosing the template, a dialog window will appear asking you to choose a location to save the project, this is a folder where your projects will will be created by default.
5. After choosing the template, a dialog window will appear asking you to choose a location to save the project, this is a folder where your projects will be created by default.
6. Next, you will be prompted to enter a name for the project. Enter the name `DungeonSlime`, which will create your project in a new folder with the same name.
7. If this is your first time creating your project, you will be asked to choose a solution format, simply select the default `.sln` option and click `Next` to continue. (This does not occur with subsequent projects)
8. Finally, select the *Create Project* prompt.
Expand Down Expand Up @@ -255,7 +255,7 @@ Now that your development environment is setup and ready to go, you can dive in
2. What is the primary reason that game applications implement a *game loop* structure instead of using an event-based approach like traditional desktop applications?
:::question-answer
Game application implement a *game loop* structure because games need to continuously update and render, event when there is no user input. In games, objects might be moving, animations playing, and physics calculating regardless of user interaction, requiring constant updating and rendering until the game is told to exit.
Game applications implement a *game loop* structure because games need to continuously update and render, event when there is no user input. In games, objects might be moving, animations playing, and physics calculating regardless of user interaction, requiring constant updating and rendering until the game is told to exit.
:::
3. What is the color of the game window when you run a MonoGame project for the first time?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ This class provides the following structure:

## Graphics and Rendering

The graphics pipeline in monogame starts with two components: the [**GraphicsDeviceManager**](xref:Microsoft.Xna.Framework.GraphicsDeviceManager) and [**SpriteBatch**](xref:Microsoft.Xna.Framework.Graphics.SpriteBatch).
The graphics pipeline in MonoGame starts with two components: the [**GraphicsDeviceManager**](xref:Microsoft.Xna.Framework.GraphicsDeviceManager) and [**SpriteBatch**](xref:Microsoft.Xna.Framework.Graphics.SpriteBatch).

[!code-csharp[](./snippets/game1.cs?start=9&end=10)]

Expand All @@ -50,7 +50,7 @@ After that, the [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) m
This separation allows you to perform setup tasks in a logical order; core systems in the constructor and game-specific initializations in the [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) method. The call to `base.Initialize()` should never be removed, as this is where the graphics device is initialized for the target platform.

> [!TIP]
> You may be wondering why there is an [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) method instead of performing all initializations in the constructor. The [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) method is a `virtual` method that is overridden, and [it is advised to not call overridable methods from within a constructor](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2214), as this can lead to unexpected states in object constructor when called. Additionally, when the constructor is called, the base constructor will instantiate properties and services based on the target platform that may be needed first before performing initializations for the game itself.
> You may be wondering why there is an [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) method instead of performing all initializations in the constructor. The [**Initialize**](xref:Microsoft.Xna.Framework.Game.Initialize) method is a `virtual` method that is overridden, and [it is advised to not call overridable methods from within a constructor](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2214), as this can lead to unexpected states in the object constructor when called. Additionally, when the constructor is called, the base constructor will instantiate properties and services based on the target platform that may be needed first before performing initializations for the game itself.
## Content Loading

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ To use the template to add the class library, perform the following based on whi
To add the class library using the MonoGame Game Library project template in Visual Studio Code, perform the following:

1. In the [*Solution Explorer*](../02_getting_started/index.md#install-the-c-dev-kit-extension) panel, right-click the *DungeonSlime* solution.
2. Chose *New Project* from the context menu.
2. Choose *New Project* from the context menu.
3. Enter "MonoGame Game Library" and select it as the template to use.
4. Name the project "MonoGameLibrary".
5. When prompted for a location, use the default option, which will put the new project in a folder next to your game project.
Expand Down Expand Up @@ -128,7 +128,7 @@ When using the *MonoGame Game Library* project template, the generated project c
>
> If you would like more information on this, Simon Jackson has written the article [Going cross-platform with MonoGame](https://darkgenesis.zenithmoon.com/going-cross-platform-with-monogame.html) which covers this in more detail.
>
> Also the `2D Start Kit` and `2D Blank Start Kit` templates provide you with a richer startup project targetting all platforms, using a common Class Library to reuse code across them all. Although we recommend completing this tutorial first before tackling that beast.
> Also the `2D StartKit` and `2D Blank StartKit` templates provide you with a richer startup project targeting all platforms, using a common Class Library to reuse code across them all. Although we recommend completing this tutorial first before tackling that beast.
## Creating Our First Library Module

Expand All @@ -153,7 +153,7 @@ The `Core` class provides the following features:
This approach provides a consistent foundation for all our games, handling common setup tasks and providing convenient access to core functionality.

> [!NOTE]
> As this tutorial progress, we will be coming back to this `Core` class to add more to it.
> As this tutorial progresses, we will be coming back to this `Core` class to add more to it.
## Updating Our Game to Use the Core Class

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,25 @@ public Core(string title, int width, int height, bool fullScreen)
// Create a new graphics device manager.
Graphics = new GraphicsDeviceManager(this);

// Set the graphics defaults
// Set the graphics defaults.
Graphics.PreferredBackBufferWidth = width;
Graphics.PreferredBackBufferHeight = height;
Graphics.IsFullScreen = fullScreen;

// Apply the graphic presentation changes
// Apply the graphic presentation changes.
Graphics.ApplyChanges();

// Set the window title
// Set the window title.
Window.Title = title;

// Set the core's content manager to a reference of the base Game's
// content manager.
Content = base.Content;

// Set the root directory for content
// Set the root directory for content.
Content.RootDirectory = "Content";

// Mouse is visible by default
// Mouse is visible by default.
IsMouseVisible = true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ Running the game now will show the MonoGame logo displayed in the upper-left cor
| :--------------------------------------------------------------------------------: |
| **Figure 5-8: The MonoGame logo drawn to the game window** |

## Adding Build-In Asset Types
## Adding Built-In Asset Types

The MGCB Editor can also create certain built-in asset types. In this section we will explore these types and this functionality. If not already open, [open the MGCB Editor](#the-mgcb-editor) and perform the following:

Expand Down
Loading