Skip to content
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

[Draft] 2D Onboarding Tutorial #85

Draft
wants to merge 274 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
bdf4a1d
Add source files column for chapters that will have them
AristurtleDev Nov 18, 2024
4782293
Add introduction paragraph
AristurtleDev Nov 18, 2024
f16f296
Expand contractions
AristurtleDev Nov 18, 2024
370716d
Draft commit to create PR
AristurtleDev Nov 18, 2024
d29af49
Merge pull request #1 from AristurtleDev/2d-tutorial-bounty--index
AristurtleDev Nov 18, 2024
7a7da17
Merge branch '2d-tutorial-bounty' into 2d-tutorial-bounty--chapter-01
AristurtleDev Nov 18, 2024
2eac775
Move into tutorials directory
AristurtleDev Nov 18, 2024
a100e91
Make images a 2x2 grid per Simon
AristurtleDev Nov 18, 2024
f62d454
Move tutorials file into tutorials directory and rename to index
AristurtleDev Nov 18, 2024
8af2879
Update chapter table
AristurtleDev Nov 18, 2024
1f80762
Update toc for tutorial
AristurtleDev Nov 18, 2024
b5c0f80
Merge pull request #2 from AristurtleDev/2d-tutorial-bounty--chapter-01
AristurtleDev Nov 18, 2024
224bda3
Merge branch '2d-tutorial-bounty' into 2d-tutorial-bounty--chapter-02
AristurtleDev Nov 18, 2024
2c1f8d4
Move into tutorial directory
AristurtleDev Nov 18, 2024
3f323f3
Fix links
AristurtleDev Nov 18, 2024
08e7131
Add chapter 2 link
AristurtleDev Nov 18, 2024
c883b2e
Update toc for chapter 2
AristurtleDev Nov 18, 2024
312ca66
Merge pull request #3 from AristurtleDev/2d-tutorial-bounty--chapter-02
AristurtleDev Nov 18, 2024
b89a749
Merge branch '2d-tutorial-bounty' into 2d-tutorial-bounty--chapter-03
AristurtleDev Nov 18, 2024
dfe6e55
Move into tutorial directory
AristurtleDev Nov 18, 2024
e6835e3
Update introduction to not repeat "this chapter" statement per Simon
AristurtleDev Nov 18, 2024
7f9e6ae
Restructured document to include sections for each number list item i…
AristurtleDev Nov 18, 2024
55bb2cc
Reword to expand or remove contraction words as necessary
AristurtleDev Nov 18, 2024
df6eba6
Appendixes are not written yet, replaced with default link for now so…
AristurtleDev Nov 18, 2024
0a5d2f7
Added chapter 3 link
AristurtleDev Nov 18, 2024
0099e2b
Include chapter 3 in toc
AristurtleDev Nov 18, 2024
3c5f66a
Merge pull request #4 from AristurtleDev/2d-tutorial-bounty--chapter-03
AristurtleDev Nov 19, 2024
8b12502
Merge branch '2d-tutorial-bounty' into 2d-tutorial-bounty--chapter-04
AristurtleDev Nov 19, 2024
586d71d
Remove duplicate heading
AristurtleDev Nov 19, 2024
510015a
Reword intro
AristurtleDev Nov 19, 2024
d2b8e72
Updated description to match changes being made
AristurtleDev Nov 19, 2024
b8fac3d
Reword intro again
AristurtleDev Nov 20, 2024
a7d494f
Update to focus on content pipeline usage
AristurtleDev Nov 20, 2024
685e215
Move to tutorial directory
AristurtleDev Nov 20, 2024
4ed9400
Minor corrections
AristurtleDev Nov 20, 2024
31e8aa0
Add api links
AristurtleDev Nov 20, 2024
f5d04ee
Add chapter 4 link
AristurtleDev Nov 21, 2024
0b8837f
Correct link to content pipeline documentation
AristurtleDev Nov 21, 2024
ea082ea
Fix xref link for SpriteBatch.Begin
AristurtleDev Nov 21, 2024
c515caa
Added clarification that textures are referred to as sprites per Simon
AristurtleDev Nov 22, 2024
477c6e9
Include chapter 4 in chapters table
AristurtleDev Nov 22, 2024
6c4ee2f
Update toc to include chapter 4
AristurtleDev Nov 22, 2024
33d6694
Make xref links bold as suggested by Simon
AristurtleDev Nov 22, 2024
cccdc22
Move section into an important admonition with clarification on handl…
AristurtleDev Nov 22, 2024
36a88ff
Bold "content pipeline" to make it stand out and put it in title case…
AristurtleDev Nov 22, 2024
9e8fcae
Update verbiage to include "for the target platform" for compiled ass…
AristurtleDev Nov 22, 2024
3d5c577
Correct type of THis to This
AristurtleDev Nov 22, 2024
ed050b9
Expand contraction of We're to We are per suggestion from Simon
AristurtleDev Nov 22, 2024
d87097c
Add bullet point about learning advantages of using content pipeline …
AristurtleDev Nov 22, 2024
d122c45
Merge branch '2d-tutorial-bounty--chapter-04' of https://github.com/A…
AristurtleDev Nov 22, 2024
0ca13f6
Correct summary of chapter 4
AristurtleDev Nov 22, 2024
1ec4645
Correct grammar of "loading" to "load"
AristurtleDev Nov 25, 2024
692dbe6
Added Understanding Content Paths section per recommendation by Simon…
AristurtleDev Nov 25, 2024
6fc93e4
Merge branch 'main' into 2d-tutorial-bounty
SimonDarksideJ Nov 26, 2024
4678054
Merge branch '2d-tutorial-bounty' into 2d-tutorial-bounty--chapter-04
AristurtleDev Nov 27, 2024
81730e8
Remove trailing '
AristurtleDev Nov 27, 2024
8ae134c
Fix issue where xref links in table columns break and wrap in the mid…
AristurtleDev Nov 27, 2024
228b6d8
new draft
AristurtleDev Nov 27, 2024
6abd65f
Move Important admonition block up
AristurtleDev Nov 27, 2024
993a488
Add space after comma
AristurtleDev Nov 27, 2024
4534eee
Add proper xref links
AristurtleDev Nov 27, 2024
10526d4
Make this a subsection of the Drawing A Texture section
AristurtleDev Nov 27, 2024
b54c66e
Merge branch '2d-tutorial-bounty--chapter-04' of https://github.com/A…
AristurtleDev Nov 27, 2024
ce3aaf9
Reword section for better clarity and add focus on MonoGame advantages
AristurtleDev Dec 2, 2024
28fcc93
Expand contractions
AristurtleDev Dec 2, 2024
a545af5
Match description of parameters in tables
AristurtleDev Dec 2, 2024
adbc572
Auto format
AristurtleDev Dec 2, 2024
4960e5e
Sync with upstream main
AristurtleDev Dec 2, 2024
0d039d1
Merge branch '2d-tutorial-bounty' of https://github.com/AristurtleDev…
AristurtleDev Dec 2, 2024
5f368bf
Merge upstream main changes
AristurtleDev Dec 2, 2024
fdda409
Grammar/spelling errors
AristurtleDev Dec 2, 2024
a0158c9
Merge pull request #5 from AristurtleDev/2d-tutorial-bounty--chapter-04
AristurtleDev Dec 2, 2024
9af2a6c
Sync with 2d-tutorial-bounty
AristurtleDev Dec 2, 2024
88efc38
wip
AristurtleDev Dec 2, 2024
4382765
WIP: Chapter 05 rework
AristurtleDev Dec 3, 2024
27d4573
WIP: Split Game Library section into separate chapter, reworked text
AristurtleDev Dec 4, 2024
730395c
Adjustments in wording
AristurtleDev Dec 5, 2024
c32bcb1
Restructure section to build class up in sections
AristurtleDev Dec 6, 2024
98ab907
Initial draft of Using Sprite section
AristurtleDev Dec 6, 2024
6c5dd0e
"when" to "with"
AristurtleDev Dec 7, 2024
8de9765
reword section
AristurtleDev Dec 7, 2024
7468c25
Remove tip section, not useful for beginner tutorial
AristurtleDev Dec 7, 2024
548b2c0
Reword section
AristurtleDev Dec 7, 2024
a9d0ad7
Remove tip, doesn't read right.
AristurtleDev Dec 9, 2024
e6ef9d4
Wordmark was off center
AristurtleDev Dec 9, 2024
55e2053
Correct spelling of boundary
AristurtleDev Dec 9, 2024
fe56887
Fix figure numbers from copy/paste
AristurtleDev Dec 9, 2024
9460cb1
Added conclusion
AristurtleDev Dec 9, 2024
4233dd2
Added Test Your Knowledge questions
AristurtleDev Dec 9, 2024
5196e17
Remove appendix, was added by accident and not part of this PR
AristurtleDev Dec 9, 2024
bca1e36
Optimize to Optimizing
AristurtleDev Dec 10, 2024
8849071
Rephrase to be single sentences for constancy
AristurtleDev Dec 10, 2024
f1e265d
Add missing period
AristurtleDev Dec 10, 2024
da77935
Missing period
AristurtleDev Dec 10, 2024
1ee12c3
Add "It" for consistency
AristurtleDev Dec 10, 2024
b3de4ab
Update image to match new one from chapter 6
AristurtleDev Dec 10, 2024
78d7b80
Missing space
AristurtleDev Dec 10, 2024
34f2a51
Remove "then", not needed
AristurtleDev Dec 10, 2024
6099053
Update summaries to be verbs instead of a mix of verbs and nouns
AristurtleDev Dec 10, 2024
2ddbbe2
Update description metadata of chapters to match summaries
AristurtleDev Dec 10, 2024
24f492f
Add xref links
AristurtleDev Dec 10, 2024
0732986
Resolve Markdown Lint Warnings:
AristurtleDev Dec 10, 2024
174a465
Use markdown tabs
AristurtleDev Dec 10, 2024
2532efa
Include link for MSDN article on DLLs
AristurtleDev Dec 10, 2024
4daea0c
Remove contractions
AristurtleDev Dec 10, 2024
77527a7
Include link to MSDN article on namespaces
AristurtleDev Dec 10, 2024
6564b4e
Links to MSDN article on Debug.Assert added
AristurtleDev Dec 10, 2024
93c4728
Use fully syntax for commands
AristurtleDev Dec 10, 2024
cc4f38f
Update to use the solution explorer panel
AristurtleDev Jan 14, 2025
94cff38
Add section validating reference setup correctly
AristurtleDev Jan 14, 2025
6eed239
Replaced image
AristurtleDev Jan 14, 2025
8a43808
Changed validation section
AristurtleDev Jan 17, 2025
545a000
Simplify validation step
AristurtleDev Jan 17, 2025
240ee27
Merge branch 'main' into 2d-tutorial-bounty--chapter-05
AristurtleDev Jan 17, 2025
182b8f0
Merge pull request #6 from AristurtleDev/2d-tutorial-bounty--chapter-05
AristurtleDev Jan 17, 2025
30a2a6e
image no longer needed
AristurtleDev Jan 17, 2025
917423a
Add tabs for OS sections
AristurtleDev Jan 17, 2025
ae7d047
Combine 04 and 06 into a single chapter
AristurtleDev Jan 17, 2025
3a9d131
Combine chapter 4 into chapter 6 making it a single chapter 5
AristurtleDev Jan 21, 2025
0b80a36
Update next chapter sentence
AristurtleDev Jan 21, 2025
126587b
Merge pull request #7 from AristurtleDev/rewrite-chapter-05
AristurtleDev Jan 21, 2025
d0d165a
Fixed chapter number in title
AristurtleDev Jan 21, 2025
6ca06bf
Markdown formatting fixes
AristurtleDev Jan 21, 2025
a4ad372
Rework Chapters
AristurtleDev Jan 31, 2025
3c01abe
Fix chapter number in table
AristurtleDev Jan 31, 2025
69b3f8b
Merge pull request #8 from AristurtleDev/reorginize
AristurtleDev Feb 3, 2025
35c29a4
Fix chapter number
AristurtleDev Feb 3, 2025
796fa50
Add Chapter 07: The Sprite Class
AristurtleDev Feb 3, 2025
42e8169
Merge pull request #9 from AristurtleDev/07_the_sprite_class
AristurtleDev Feb 3, 2025
993066f
Remove inline code block in header
AristurtleDev Feb 3, 2025
c989270
Add chapter 8
AristurtleDev Feb 3, 2025
9f1a486
Merge pull request #10 from AristurtleDev/08_the_animatedsprite_class
AristurtleDev Feb 3, 2025
16fa3ea
Update images
AristurtleDev Feb 4, 2025
47f826e
Add chapter 9
AristurtleDev Feb 6, 2025
d09e62b
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev Feb 6, 2025
2c370b5
wip
AristurtleDev Feb 7, 2025
5938d56
Add image of controller with button layout
AristurtleDev Feb 7, 2025
73d0904
Moved notice about storing state higher in document
AristurtleDev Feb 7, 2025
f9ddda1
Updated smaller example snippets to store state for consistency of note
AristurtleDev Feb 7, 2025
c83fa8d
Rewrite notes on screen coordinates to include callback references
AristurtleDev Feb 7, 2025
f24f8f8
Added playstation controller image
AristurtleDev Feb 7, 2025
dc750e9
Update images
AristurtleDev Feb 8, 2025
7df428f
Replace `joysticks` with `thumbsticks`
AristurtleDev Feb 8, 2025
6531438
Added touch input section
AristurtleDev Feb 8, 2025
8747fb7
Additional questions
AristurtleDev Feb 8, 2025
5924167
Remove notice about not talking about mobile since Simon requested to…
AristurtleDev Feb 8, 2025
58d8e27
Merge pull request #11 from AristurtleDev/09-handling-input
AristurtleDev Feb 8, 2025
b206f1b
Merge branch '2d-tutorial-bounty' into 10-input-management
AristurtleDev Feb 8, 2025
a95ad62
Chapter 10
AristurtleDev Feb 10, 2025
db55086
Add description
AristurtleDev Feb 10, 2025
fe34bca
Update toc
AristurtleDev Feb 10, 2025
b3f9ef7
Add chapter 10 to chapter list
AristurtleDev Feb 10, 2025
ec38ecd
Add xref links
AristurtleDev Feb 10, 2025
c9e4c74
Fix bullets in conclusion
AristurtleDev Feb 10, 2025
7015bc2
Markdown lint fixes
AristurtleDev Feb 10, 2025
577b0e8
Add statements about gamepad connection
AristurtleDev Feb 10, 2025
bea1cc7
Add position deltas for mouse info
AristurtleDev Feb 10, 2025
304200f
Update list to include new delta properties
AristurtleDev Feb 10, 2025
1ef2f57
Merge pull request #12 from AristurtleDev/10-input-management
AristurtleDev Feb 10, 2025
a925288
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev Feb 10, 2025
ae4a2ab
Revise input chapters
AristurtleDev Feb 12, 2025
e3c768f
Fix method name in documentation
AristurtleDev Feb 13, 2025
80f8bd4
Include video files when building
AristurtleDev Feb 13, 2025
516e1a6
Add collision detection chapter
AristurtleDev Feb 13, 2025
279df50
Update links to collision detection chapter
AristurtleDev Feb 13, 2025
a70eefd
Format code in block
AristurtleDev Feb 13, 2025
e5791e1
Fix markdown bold
AristurtleDev Feb 13, 2025
4162e3f
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev Feb 14, 2025
fbc37dc
Remove extra space between lists to fix rendering issue
AristurtleDev Feb 16, 2025
df40465
Reword section to differentiate different checks that can be made for…
AristurtleDev Feb 16, 2025
5eeacc3
Add section on optimizing collision performance
AristurtleDev Feb 16, 2025
bfc6ae3
Add style to match th,td for figures
AristurtleDev Feb 16, 2025
2951a73
Replace <figure> with md tables
AristurtleDev Feb 16, 2025
029270b
Merge branch '2d-tutorial-bounty' into 11_collision_detection
AristurtleDev Feb 16, 2025
9472c38
Replace <figure> elements with tables
AristurtleDev Feb 16, 2025
6adc55d
Merge css changes from chapter 11 so I can start on chapter 12
AristurtleDev Feb 17, 2025
d23c956
Initial chapter draft
AristurtleDev Feb 17, 2025
aa73840
Sync with chapter 11 toc and index
AristurtleDev Feb 17, 2025
9673e06
Update toc and index for chapter 12
AristurtleDev Feb 17, 2025
8e26735
wip
AristurtleDev Feb 18, 2025
dab58f0
Finish revision
AristurtleDev Feb 18, 2025
f2c570c
Code block not indented in numbered list
AristurtleDev Feb 18, 2025
514ba2e
Moved XACT information into an admonition section
AristurtleDev Feb 18, 2025
85622c3
Broke last part of paragraph into bullet points
AristurtleDev Feb 18, 2025
e18a780
Added constraints on the number of simultanious audio
AristurtleDev Feb 18, 2025
29e97b8
Updated to use mediaplayer state before playing new song
AristurtleDev Feb 18, 2025
f1c7744
Separate differences between SoundEffect.Play and SoundEffect.CreateI…
AristurtleDev Feb 18, 2025
c12a06b
Restructure
AristurtleDev Feb 19, 2025
00000b9
Added simple Play method
AristurtleDev Feb 19, 2025
144bd5a
Remove contractions
AristurtleDev Feb 19, 2025
043172f
Merge pull request #13 from AristurtleDev/11_collision_detection
AristurtleDev Feb 20, 2025
836fb63
Merge branch '2d-tutorial-bounty' into 12-soundeffects-and-music
AristurtleDev Feb 20, 2025
3cce019
Merge pull request #14 from AristurtleDev/12-soundeffects-and-music
AristurtleDev Feb 20, 2025
c28c520
Retroactively added game components and class library chapters
AristurtleDev Feb 22, 2025
c76a79e
Update input manager to be a game component
AristurtleDev Feb 22, 2025
56ee949
Fix all link errors
AristurtleDev Feb 22, 2025
12095dc
Restructure chapters
AristurtleDev Mar 4, 2025
ea8ae27
Update style for answer box
AristurtleDev Mar 4, 2025
2c1d3b7
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev Mar 4, 2025
4930281
fix snippet code
AristurtleDev Mar 6, 2025
8d8224e
Fix snippet
AristurtleDev Mar 6, 2025
a6e3440
Fix snippet
AristurtleDev Mar 6, 2025
3b5a1e3
Initial chapter 15 draft
AristurtleDev Mar 7, 2025
046eb7e
Reword introduction
AristurtleDev Mar 9, 2025
e7cfa85
Spelling fixes
AristurtleDev Mar 9, 2025
d03236d
Explain why SpriteFonts use a texture atlas
AristurtleDev Mar 10, 2025
9b5c5eb
Added admonition about Arial font
AristurtleDev Mar 10, 2025
b19112a
Updated Size section
AristurtleDev Mar 10, 2025
199ce69
Added not about kerning
AristurtleDev Mar 10, 2025
1f5356b
Added section transition
AristurtleDev Mar 10, 2025
ab1e4c8
Make section a tip admoition to stand out
AristurtleDev Mar 11, 2025
fdf95b8
Merge pull request #16 from AristurtleDev/15-working-with-spritefonts
AristurtleDev Mar 11, 2025
08a152c
Rework since removing services chapter
AristurtleDev Mar 11, 2025
acad39d
Remove components chapter, renumber other chapters
AristurtleDev Mar 11, 2025
d1fc3ed
Update for rework
AristurtleDev Mar 11, 2025
3722475
Updated for rework
AristurtleDev Mar 11, 2025
e9ccd08
Reworking from removing services
AristurtleDev Mar 12, 2025
665a591
wip
AristurtleDev Mar 12, 2025
c7e65c4
Finish update after remove components and services chapters
AristurtleDev Mar 13, 2025
d15324a
Update for rework
AristurtleDev Mar 13, 2025
4e3e182
Initial draft
AristurtleDev Mar 14, 2025
50b0eb4
Forgot to add the font file for title screen
AristurtleDev Mar 14, 2025
14c0b84
Fix bug in game, move song play to Game1
AristurtleDev Mar 15, 2025
4b1f691
Call base.LoadContent
AristurtleDev Mar 15, 2025
9d1a8c6
Make GraphicsDevice and Content statics
AristurtleDev Mar 15, 2025
00e9404
Merge branch '2d-tutorial-bounty' into 16-scene-management
AristurtleDev Mar 15, 2025
3b53145
Make GraphicsDevice and Content statics
AristurtleDev Mar 15, 2025
fa57e4a
Correct name of varaible
AristurtleDev Mar 20, 2025
3684e2f
Reduce long names by caching to a variable first
AristurtleDev Mar 20, 2025
653525b
Merge branch '16-scene-management' of https://github.com/aristurtlede…
AristurtleDev Mar 20, 2025
62d79ad
Add IDisposable info
AristurtleDev Mar 20, 2025
01d1084
removed contractions or reworded sections to no longer need contracte…
AristurtleDev Mar 20, 2025
bd9c7fe
Merge pull request #18 from AristurtleDev/16-scene-management
AristurtleDev Mar 20, 2025
fbd3a7f
Add blurb about texture atlas size being power of 2
AristurtleDev Mar 21, 2025
a208886
Initial draft
AristurtleDev Mar 22, 2025
2f5e696
Updating chapters from retroactivly adding chapter
AristurtleDev Mar 24, 2025
3b57e94
Use correct image for comparison
AristurtleDev Mar 24, 2025
0bdde91
Use space separated tilemap config
AristurtleDev Mar 24, 2025
c8fd8a0
Update chapter numbers
AristurtleDev Mar 24, 2025
aa4bcc3
Update to win11 capture for consistency
AristurtleDev Mar 24, 2025
27d3ade
Use correct image
AristurtleDev Mar 24, 2025
62b93ee
Autoformatting
AristurtleDev Mar 24, 2025
5fd20ab
No longer using this font
AristurtleDev Mar 24, 2025
e57e3a4
Fix toc misnumber
AristurtleDev Mar 24, 2025
f94927a
Added updated atlas for chapter 17
AristurtleDev Mar 24, 2025
fa7885f
Update chapter 17 for new atlas
AristurtleDev Mar 24, 2025
bf3781c
Fix typos in main index and Chapter 1
Quadx117 Mar 25, 2025
c21773c
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev Mar 25, 2025
1510b74
Use * instead of _ for italics as per style guide
Quadx117 Mar 25, 2025
3b1f151
Merge pull request #19 from Quadx117/fix-typos
AristurtleDev Mar 26, 2025
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
2 changes: 1 addition & 1 deletion articles/getting_started/5_adding_basic_code.md
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,6 @@ We recommend browsing through the [Getting to know MonoGame](../getting_to_know/

## Further Reading

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

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.
2 changes: 1 addition & 1 deletion articles/help_and_support.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Where to get help and support when using MonoGame.

# Help and Support

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

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.

Expand Down
226 changes: 132 additions & 94 deletions articles/toc.yml
Original file line number Diff line number Diff line change
@@ -1,113 +1,151 @@
- name: Introduction
href:
href:
- name: Roadmap
href: /roadmap/
- name: What's New
href: whats_new.md
- name: Getting Started
href: getting_started/index.md
items:
- name: Introduction
href: getting_started/
- name: Supported platforms
href: getting_started/platforms.md
- name: 1. Setting up your OS for development
items:
- name: Windows
href: getting_started/1_setting_up_your_os_for_development_windows.md
- name: macOS
href: getting_started/1_setting_up_your_os_for_development_macos.md
- name: Ubuntu 20.04
href: getting_started/1_setting_up_your_os_for_development_ubuntu.md
- name: 2. Choosing your IDE
items:
- name: Visual Studio for Windows
href: getting_started/2_choosing_your_ide_visual_studio.md
- name: Visual Studio Code
href: getting_started/2_choosing_your_ide_vscode.md
- name: Rider
href: getting_started/2_choosing_your_ide_rider.md
- name: 3. Understanding the Code
href: getting_started/3_understanding_the_code.md
- name: 4. Adding Content
href: getting_started/4_adding_content.md
- name: 5. Adding Basic Code
href: getting_started/5_adding_basic_code.md
- name: Packaging
href: getting_started/packaging_games.md
- name: Preparing for consoles
href: getting_started/preparing_for_consoles.md
- name: Using Development Nuget Packages
href: getting_started/using_development_nuget_packages.md
- name: Tools
items:
- name: Introduction
href: getting_started/tools/
- name: MGCB
href: getting_started/tools/mgcb.md
- name: MGCB Editor
href: getting_started/tools/mgcb_editor.md
- name: MGFXC
href: getting_started/tools/mgfxc.md
- name: Content Pipeline
items:
- name: Introduction
href: getting_started/content_pipeline/index.md
- name: Why use the Content Pipeline
href: getting_started/content_pipeline/why_content_pipeline.md
- name: Using MGCB Editor
href: getting_started/content_pipeline/using_mgcb_editor.md
- name: Custom Effects
href: getting_started/content_pipeline/custom_effects.md
- name: TrueType fonts
href: getting_started/content_pipeline/adding_ttf_fonts.md
- name: Localization
href: getting_started/content_pipeline/localization.md
href: getting_started/
- name: Supported platforms
href: getting_started/platforms.md
- name: 1. Setting up your OS for development
items:
- name: Windows
href: getting_started/1_setting_up_your_os_for_development_windows.md
- name: macOS
href: getting_started/1_setting_up_your_os_for_development_macos.md
- name: Ubuntu 20.04
href: getting_started/1_setting_up_your_os_for_development_ubuntu.md
- name: 2. Choosing your IDE
items:
- name: Visual Studio for Windows
href: getting_started/2_choosing_your_ide_visual_studio.md
- name: Visual Studio Code
href: getting_started/2_choosing_your_ide_vscode.md
- name: Rider
href: getting_started/2_choosing_your_ide_rider.md
- name: 3. Understanding the Code
href: getting_started/3_understanding_the_code.md
- name: 4. Adding Content
href: getting_started/4_adding_content.md
- name: 5. Adding Basic Code
href: getting_started/5_adding_basic_code.md
- name: Packaging
href: getting_started/packaging_games.md
- name: Preparing for consoles
href: getting_started/preparing_for_consoles.md
- name: Using Development Nuget Packages
href: getting_started/using_development_nuget_packages.md
- name: Tools
items:
- name: Introduction
href: getting_started/tools/
- name: MGCB
href: getting_started/tools/mgcb.md
- name: MGCB Editor
href: getting_started/tools/mgcb_editor.md
- name: MGFXC
href: getting_started/tools/mgfxc.md
- name: Content Pipeline
items:
- name: Introduction
href: getting_started/content_pipeline/index.md
- name: Why use the Content Pipeline
href: getting_started/content_pipeline/why_content_pipeline.md
- name: Using MGCB Editor
href: getting_started/content_pipeline/using_mgcb_editor.md
- name: Custom Effects
href: getting_started/content_pipeline/custom_effects.md
- name: TrueType fonts
href: getting_started/content_pipeline/adding_ttf_fonts.md
- name: Localization
href: getting_started/content_pipeline/localization.md
- name: Getting to know MonoGame
href: getting_to_know/
items:
- name: What is
href: getting_to_know/whatis/
items:
- name: Audio
href: getting_to_know/whatis/audio/
- name: Content Pipeline
href: getting_to_know/whatis/content_pipeline/
- name: Graphics
href: getting_to_know/whatis/graphics/
- name: Input
href: getting_to_know/whatis/input/
- name: The Game Loop
href: getting_to_know/whatis/game_loop/
- name: Vector / Matrix / Quaternions
href: getting_to_know/whatis/vector_matrix_quat/
- name: MonoGame Class Library
href: getting_to_know/whatis/monogame_class_library/
- name: How to
href: getting_to_know/howto/
items:
- name: Audio
href: getting_to_know/howto/audio/
- name: Content Pipeline
href: getting_to_know/howto/content_pipeline/
- name: Graphics
href: getting_to_know/howto/graphics/
- name: Input
href: getting_to_know/howto/input/
- name: What is
href: getting_to_know/whatis/
items:
- name: Audio
href: getting_to_know/whatis/audio/
- name: Content Pipeline
href: getting_to_know/whatis/content_pipeline/
- name: Graphics
href: getting_to_know/whatis/graphics/
- name: Input
href: getting_to_know/whatis/input/
- name: The Game Loop
href: getting_to_know/whatis/game_loop/
- name: Vector / Matrix / Quaternions
href: getting_to_know/whatis/vector_matrix_quat/
- name: MonoGame Class Library
href: getting_to_know/whatis/monogame_class_library/
- name: How to
href: getting_to_know/howto/
items:
- name: Audio
href: getting_to_know/howto/audio/
- name: Content Pipeline
href: getting_to_know/howto/content_pipeline/
- name: Graphics
href: getting_to_know/howto/graphics/
- name: Input
href: getting_to_know/howto/input/
- name: Migration
items:
- name: Migrating from XNA
href: migration/migrate_xna.md
- name: Migrating from 3.7
href: migration/migrate_37.md
- name: Migrating from 3.8.0
href: migration/migrate_38.md
- name: Updating Versions
href: migration/updating_versions.md
- name: Migrating from XNA
href: migration/migrate_xna.md
- name: Migrating from 3.7
href: migration/migrate_37.md
- name: Migrating from 3.8.0
href: migration/migrate_38.md
- name: Updating Versions
href: migration/updating_versions.md
- name: Samples and Demos
href: samples.md
- name: Community Tutorials
href: tutorials.md
- name: Tutorials
href: tutorials/
items:
- name: Building 2D Games
href: tutorials/building_2d_games/
items:
- name: "01: What Is MonoGame?"
href: tutorials/building_2d_games/01_what_is_monogame/
- name: "02: Getting Started"
href: tutorials/building_2d_games/02_getting_started/
- name: "03: The Game1 File"
href: tutorials/building_2d_games/03_the_game1_file/
- name: "04: Creating a Class Library"
href: tutorials/building_2d_games/04_creating_a_class_library/
- name: "05: Content Pipeline"
href: tutorials/building_2d_games/05_content_pipeline/
- name: "06: Working with Textures"
href: tutorials/building_2d_games/06_working_with_textures/
- name: "07: Optimizing Texture Rendering"
href: tutorials/building_2d_games/07_optimizing_texture_rendering/
- name: "08: The Sprite Class"
href: tutorials/building_2d_games/08_the_sprite_class/
- name: "09: The AnimatedSprite Class"
href: tutorials/building_2d_games/09_the_animatedsprite_class/
- name: "10: Handling Input"
href: tutorials/building_2d_games/10_handling_input/
- name: "11: Input Management"
href: tutorials/building_2d_games/11_input_management/
- name: "12: Collision Detection"
href: tutorials/building_2d_games/12_collision_detection/
- name: "13: Working With Tilemaps"
href: tutorials/building_2d_games/13_working_with_tilemaps/
- name: "14: Sound Effects and Music"
href: tutorials/building_2d_games/14_soundeffects_and_music/
- name: "15: Audio Controller"
href: tutorials/building_2d_games/15_audio_controller/
- name: "16: Working with SpriteFonts"
href: tutorials/building_2d_games/16_working_with_spritefonts/
- name: "17: Scenes"
href: tutorials/building_2d_games/17_scenes/
- name: Console Access
href: console_access.md
- name: Help and Support
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
83 changes: 83 additions & 0 deletions articles/tutorials/building_2d_games/01_what_is_monogame/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: "Chapter 01: What is MonoGame"
description: Learn about the history of MonoGame and explore the features it provides to developers when creating games.
---

## A Brief History

In 2006, Microsoft released a game development framework named *XNA Game Studio* 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.

> [!NOTE]
>
> Fun fact, provided by community member 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).

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.

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/).

| ![Figure 1-1: Celeste](./images/celeste.png) | ![Figure 1-2: Stardew Valley](./images/stardew-valley.png) |
| :---: | :---: |
| **Figure 1-1 Celeste.** | **Figure 1-2: Stardew Valley** |
| ![Figure 1-3: Streets of Rage 4](./images/sor4.jpg) | |
| **Figure 1-3: Streets of Rage 4** | |

## Features

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.

### API

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

### Cross Platform

One of the main advantages of MonoGame is its cross-platform support. Games built with MonoGame are compatible with a variety of platforms, including:

* **Desktop**: Windows, macOS, and Linux.
* **Mobile**: iOS and Android.
* **Consoles** [(with appropriate license)](https://docs.monogame.net/articles/console\_access.html): Xbox, PlayStation, and Nintendo Switch.

By providing cross-platform support, developers can target multiple platforms from a single code base, significantly reducing development time and resources needed for porting.

### Programming Language Support

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

> [!CAUTION]
> While the alternative .NET languages can be used, community support may be limited outside the scope of C#.

Regardless of which .NET language is used, developers should have a foundational understanding of the language and programming concepts such as:

* Object-oriented programming.
* Data types and structures.
* Control flow and loops.
* Error handling and debugging.

## See Also

* [About MonoGame | MonoGame](https://monogame.net/about)

## Test Your Knowledge

1. Name one of the advantages of using the MonoGame framework to develop games.

:::question-answer
Any of the following are advantages of using the MonoGame framework.
1. It provides cross-platform support, allowing developers to target multiple platforms from a single code base.
2. It offers a set of libraries and APIs common for game development tasks, such as graphics rendering, input handling, audio, and content management.
3. It is a "bring your own tools" framework, giving developers flexibility in their working environment.
:::

2. What programming languages can be used when creating a game with MonoGame?

:::question-answer
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.
:::
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading