Skip to content

Commit 7fc95a9

Browse files
AristurtleDevvchelaruSimonDarksideJ
authored
2D Onboarding Tutorial (#85)
The new MonoGame 2D onboarding tutorial base content --------- Co-authored-by: Victor <VicChelaru@gmail.com> Co-authored-by: Simon (Darkside) Jackson <darkside@zenithmoon.com>
1 parent 58d1edf commit 7fc95a9

File tree

370 files changed

+22946
-41
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

370 files changed

+22946
-41
lines changed

articles/getting_started/5_adding_basic_code.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,6 @@ We recommend browsing through the [Getting to know MonoGame](../getting_to_know/
319319

320320
## Further Reading
321321

322-
Check out the [Tutorials section](../tutorials.md) for many more helpful guides and tutorials on building games with MonoGame. We have an expansive library of helpful content, all provided by other MonoGame developers in the community.
322+
Check out the [Tutorials section](../tutorials/index.md) for many more helpful guides and tutorials on building games with MonoGame. We have an expansive library of helpful content, all provided by other MonoGame developers in the community.
323323

324324
Additionally, be sure to check out the official [MonoGame Samples](../samples.md) page for fully built sample projects built with MonoGame and targeting our most common platforms.

articles/help_and_support.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Where to get help and support when using MonoGame.
55

66
# Help and Support
77

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

1010
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.
1111

articles/toc.yml

Lines changed: 96 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -67,48 +67,106 @@ items:
6767
- name: Getting to know MonoGame
6868
href: getting_to_know/
6969
items:
70-
- name: What is
71-
href: getting_to_know/whatis/
72-
items:
73-
- name: Audio
74-
href: getting_to_know/whatis/audio/
75-
- name: Content Pipeline
76-
href: getting_to_know/whatis/content_pipeline/
77-
- name: Graphics
78-
href: getting_to_know/whatis/graphics/
79-
- name: Input
80-
href: getting_to_know/whatis/input/
81-
- name: The Game Loop
82-
href: getting_to_know/whatis/game_loop/
83-
- name: Vector / Matrix / Quaternions
84-
href: getting_to_know/whatis/vector_matrix_quat/
85-
- name: MonoGame Class Library
86-
href: getting_to_know/whatis/monogame_class_library/
87-
- name: How to
88-
href: getting_to_know/howto/
89-
items:
90-
- name: Audio
91-
href: getting_to_know/howto/audio/
92-
- name: Content Pipeline
93-
href: getting_to_know/howto/content_pipeline/
94-
- name: Graphics
95-
href: getting_to_know/howto/graphics/
96-
- name: Input
97-
href: getting_to_know/howto/input/
70+
- name: What is
71+
href: getting_to_know/whatis/
72+
items:
73+
- name: Audio
74+
href: getting_to_know/whatis/audio/
75+
- name: Content Pipeline
76+
href: getting_to_know/whatis/content_pipeline/
77+
- name: Graphics
78+
href: getting_to_know/whatis/graphics/
79+
- name: Input
80+
href: getting_to_know/whatis/input/
81+
- name: The Game Loop
82+
href: getting_to_know/whatis/game_loop/
83+
- name: Vector / Matrix / Quaternions
84+
href: getting_to_know/whatis/vector_matrix_quat/
85+
- name: MonoGame Class Library
86+
href: getting_to_know/whatis/monogame_class_library/
87+
- name: How to
88+
href: getting_to_know/howto/
89+
items:
90+
- name: Audio
91+
href: getting_to_know/howto/audio/
92+
- name: Content Pipeline
93+
href: getting_to_know/howto/content_pipeline/
94+
- name: Graphics
95+
href: getting_to_know/howto/graphics/
96+
- name: Input
97+
href: getting_to_know/howto/input/
9898
- name: Migration
9999
items:
100-
- name: Migrating from XNA
101-
href: migration/migrate_xna.md
102-
- name: Migrating from 3.7
103-
href: migration/migrate_37.md
104-
- name: Migrating from 3.8.0
105-
href: migration/migrate_38.md
106-
- name: Updating Versions
107-
href: migration/updating_versions.md
100+
- name: Migrating from XNA
101+
href: migration/migrate_xna.md
102+
- name: Migrating from 3.7
103+
href: migration/migrate_37.md
104+
- name: Migrating from 3.8.0
105+
href: migration/migrate_38.md
106+
- name: Updating Versions
107+
href: migration/updating_versions.md
108108
- name: Samples and Demos
109109
href: samples.md
110-
- name: Community Tutorials
111-
href: tutorials.md
110+
- name: Tutorials
111+
href: tutorials/
112+
items:
113+
- name: Building 2D Games
114+
href: tutorials/building_2d_games/
115+
items:
116+
- name: "01: What Is MonoGame?"
117+
href: tutorials/building_2d_games/01_what_is_monogame/
118+
- name: "02: Getting Started"
119+
href: tutorials/building_2d_games/02_getting_started/
120+
- name: "03: The Game1 File"
121+
href: tutorials/building_2d_games/03_the_game1_file/
122+
- name: "04: Creating a Class Library"
123+
href: tutorials/building_2d_games/04_creating_a_class_library/
124+
- name: "05: Content Pipeline"
125+
href: tutorials/building_2d_games/05_content_pipeline/
126+
- name: "06: Working with Textures"
127+
href: tutorials/building_2d_games/06_working_with_textures/
128+
- name: "07: Optimizing Texture Rendering"
129+
href: tutorials/building_2d_games/07_optimizing_texture_rendering/
130+
- name: "08: The Sprite Class"
131+
href: tutorials/building_2d_games/08_the_sprite_class/
132+
- name: "09: The AnimatedSprite Class"
133+
href: tutorials/building_2d_games/09_the_animatedsprite_class/
134+
- name: "10: Handling Input"
135+
href: tutorials/building_2d_games/10_handling_input/
136+
- name: "11: Input Management"
137+
href: tutorials/building_2d_games/11_input_management/
138+
- name: "12: Collision Detection"
139+
href: tutorials/building_2d_games/12_collision_detection/
140+
- name: "13: Working With Tilemaps"
141+
href: tutorials/building_2d_games/13_working_with_tilemaps/
142+
- name: "14: Sound Effects and Music"
143+
href: tutorials/building_2d_games/14_soundeffects_and_music/
144+
- name: "15: Audio Controller"
145+
href: tutorials/building_2d_games/15_audio_controller/
146+
- name: "16: Working with SpriteFonts"
147+
href: tutorials/building_2d_games/16_working_with_spritefonts/
148+
- name: "17: Scenes"
149+
href: tutorials/building_2d_games/17_scenes/
150+
- name: "18: Texture Sampling"
151+
href: tutorials/building_2d_games/18_texture_sampling/
152+
- name: "19: User Interface Fundamentals"
153+
href: tutorials/building_2d_games/19_user_interface_fundamentals/
154+
- name: "20: Implementing UI with Gum"
155+
href: tutorials/building_2d_games/20_implementing_ui_with_gum/
156+
- name: "21: Customizing Gum UI"
157+
href: tutorials/building_2d_games/21_customizing_gum_ui/
158+
- name: "22: Snake Game Mechanics"
159+
href: tutorials/building_2d_games/22_snake_game_mechanics/
160+
- name: "23: Completing the Game"
161+
href: tutorials/building_2d_games/23_completing_the_game/
162+
- name: "24: Shaders"
163+
href: tutorials/building_2d_games/24_shaders/
164+
- name: "25: Packaging Your Game for Distribution"
165+
href: tutorials/building_2d_games/25_packaging_game/
166+
- name: "26: Publishing Your Game to itch.io"
167+
href: tutorials/building_2d_games/26_publish_to_itch/
168+
- name: "27: Conclusion and Next Steps"
169+
href: tutorials/building_2d_games/27_conclusion/
112170
- name: Console Access
113171
href: console_access.md
114172
- name: Help and Support
Loading
Loading
Loading
Loading
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
title: "Chapter 01: What is MonoGame"
3+
description: Learn about the history of MonoGame and explore the features it provides to developers when creating games.
4+
---
5+
6+
## A Brief History
7+
8+
In 2006, Microsoft released a game development framework named *[XNA Game Studio](https://learn.microsoft.com/en-us/previous-versions/windows/xna/bb203894(v=xnagamestudio.42))* to facilitate game development for Windows PC and the Xbox 360 console. It revolutionized game development for indie creators by bringing a simplified approach to building games and offering a set of tools that lowered the entry barrier for aspiring game developers. Out of XNA Game Studio came critically acclaimed titles such as [Bastion](https://www.supergiantgames.com/games/bastion/) and [Terraria](https://terraria.org/). In 2008, XNA was expanded to support development for both the Zune and Windows Phone.
9+
10+
> [!NOTE]
11+
>
12+
> Fun fact, provided by community member [stromkos](https://github.com/stromkos), The release of XNA 3.0 in 2008, which added the support for Windows Phone, is also the release that specified the default window resolution of 800x480 for new projects as this was the preferred resolution on Windows Phone. [It is still the default resolution used in MonoGame projects today](https://github.com/MonoGame/MonoGame/blob/8b35cf50783777507cd6b21828ed0109b3b07b50/MonoGame.Framework/GraphicsDeviceManager.cs#L44).
13+
14+
As XNA became more popular, the need for cross-platform development started to grow. In 2009, [José Antonio Leal de Farias](https://github.com/jalf) introduced *XNA Touch*, an open-source project that aimed to make games with XNA playable on iOS devices. This marked the beginning of what would later become MonoGame. [Dominique Louis](https://github.com/CartBlanche) came on board in 2009 and soon took over as full-time project lead, driving its initial development and expansion. The project attracted other developers, such as [Tom Spilman](https://github.com/tomspilman), who were interested in expanding the scope of the project as well as its reach.
15+
16+
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.
17+
18+
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/).
19+
20+
| ![Figure 1-1: Celeste](./images/celeste.png) | ![Figure 1-2: Stardew Valley](./images/stardew-valley.png) |
21+
| :-------------------------------------------------: | :--------------------------------------------------------: |
22+
| **Figure 1-1 Celeste.** | **Figure 1-2: Stardew Valley** |
23+
| ![Figure 1-3: Streets of Rage 4](./images/sor4.jpg) | [Figure 1-4: Bastion](./images/bastion.jpg) |
24+
| **Figure 1-3: Streets of Rage 4** | **Figure 1-4: Bastion** |
25+
26+
> [!NOTE]
27+
>
28+
> For more details about MonoGame's history, check the [About](https://monogame.net/about/) on the official MonoGame website.
29+
30+
## Features
31+
32+
MonoGame, following in the footsteps of XNA, is a "bring your own tools" framework. It provides developers the basic blocks to design the game, engines, and/or tools. As a code-first approach to game development, MonoGame does not include any pre-built editors or interfaces; instead, it gives developers the freedom to create their own working environment.
33+
34+
### API
35+
36+
At its core, MonoGame offers a set of libraries and APIs to handle common game development tasks. These include:
37+
38+
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.
39+
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.
40+
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.
41+
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.
42+
5. **Math Library**: A math library specifically optimized for game development, providing essential mathematical functions and operations.
43+
44+
### Cross Platform
45+
46+
One of the main advantages of MonoGame is its cross-platform support. Games built with MonoGame are compatible with a variety of platforms, including:
47+
48+
* **Desktop**: Windows, macOS, and Linux.
49+
* **Mobile**: iOS and Android.
50+
* **Consoles** [(with appropriate license)](https://docs.monogame.net/articles/console\_access.html): Xbox, PlayStation, and Nintendo Switch.
51+
52+
By providing cross-platform support, developers can target multiple platforms from a single code base, significantly reducing development time and resources needed for porting.
53+
54+
### Programming Language Support
55+
56+
MonoGame is designed and built in C#. It is the official programming language supported in documentation, samples, and community discussion. However, MonoGame is not exclusively tied to C#. As a .NET library, MonoGame can be used with any .NET-compatible language, including Visual Basic and F#.
57+
58+
> [!CAUTION]
59+
> While the alternative .NET languages can be used, community support may be limited outside the scope of C#.
60+
61+
Regardless of which .NET language is used, developers should have a foundational understanding of the language and programming concepts such as:
62+
63+
* Object-oriented programming.
64+
* Data types and structures.
65+
* Control flow and loops.
66+
* Error handling and debugging.
67+
68+
## See Also
69+
70+
* [About MonoGame | MonoGame](https://monogame.net/about)
71+
72+
## Test Your Knowledge
73+
74+
1. Name one of the advantages of using the MonoGame framework to develop games.
75+
76+
:::question-answer
77+
Any of the following are advantages of using the MonoGame framework.
78+
1. It provides cross-platform support, allowing developers to target multiple platforms from a single code base.
79+
2. It offers a set of libraries and APIs common for game development tasks, such as graphics rendering, input handling, audio, and content management.
80+
3. It is a "bring your own tools" framework, giving developers flexibility in their working environment.
81+
:::
82+
83+
2. What programming languages can be used when creating a game with MonoGame?
84+
85+
:::question-answer
86+
The primary language used is C#, which is the same language that the MonoGame framework is developed in. However, any .NET language can be used, such as F# or Visual Basic.
87+
:::
Loading
Loading
Loading

0 commit comments

Comments
 (0)