Skip to content

2D Onboarding Tutorial #85

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 605 commits into from
May 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
605 commits
Select commit Hold shift + click to select a range
e78146f
Quick 21 draft added
AristurtleDev Apr 22, 2025
377deb1
update toc
AristurtleDev Apr 22, 2025
080cdce
Fix panel text and make video
AristurtleDev Apr 22, 2025
e2897c8
as a bridge typo
AristurtleDev Apr 23, 2025
1be9896
can't typo
AristurtleDev Apr 23, 2025
5b73a84
are 'a' part grammer
AristurtleDev Apr 23, 2025
ac3cb31
container typo
AristurtleDev Apr 23, 2025
71e2cba
each typo
AristurtleDev Apr 23, 2025
c4e088a
Remove old text about Gum before chapter split
AristurtleDev Apr 23, 2025
ba2a361
directory typo
AristurtleDev Apr 23, 2025
dbb9c47
Render link to audio file properly
AristurtleDev Apr 23, 2025
0415132
Use name of the file, and slight rewording
AristurtleDev Apr 23, 2025
967d1ea
Fix link (remove the !)
AristurtleDev Apr 23, 2025
9607c82
Add heading links
AristurtleDev Apr 23, 2025
76e130d
Reword tip so text isn't so dense
AristurtleDev Apr 23, 2025
529a353
Fix 'the' typo
AristurtleDev Apr 23, 2025
e584ff4
fix 'we' typo
AristurtleDev Apr 23, 2025
9f06642
Instead of individual code blocks, make them contiguous
AristurtleDev Apr 23, 2025
f9da148
Add What is Gum section along with Understanding Gum's Structure section
AristurtleDev Apr 23, 2025
b7ef9db
use presentation params
AristurtleDev Apr 23, 2025
1df0b62
Add note about the Solution Explorer panel with link to official docu…
AristurtleDev Apr 23, 2025
1072ba3
Add callback links to solution explorer tip
AristurtleDev Apr 23, 2025
7efb0e1
Add note about .NET 8 LTS
AristurtleDev Apr 23, 2025
911bdb0
Bump monogame version number
AristurtleDev Apr 23, 2025
8716880
Move gum init to its own method
AristurtleDev Apr 23, 2025
20967c2
Merge branch '19-ui' of https://github.com/aristurtledev/docs.monogam…
AristurtleDev Apr 23, 2025
35c260f
renamed to chapter 22 since adding other UI chapters
AristurtleDev Apr 24, 2025
a0f66a2
Make game controller static
AristurtleDev Apr 24, 2025
268b538
Captilazation
AristurtleDev Apr 24, 2025
76cb4ed
Chapter 20 small fixes
vchelaru Apr 25, 2025
5f59339
Minor changes to chapter 21
vchelaru Apr 25, 2025
b52af66
Use new shortcuts to Anchor and Dock
AristurtleDev Apr 25, 2025
ec19fa7
Added kaltinril video about nineslices
AristurtleDev Apr 25, 2025
5691e80
Update diagrams
AristurtleDev Apr 26, 2025
7203cea
Merge pull request #25 from AristurtleDev/19-ui
AristurtleDev Apr 26, 2025
762bf34
Merge branch '2d-tutorial-bounty' into 20-the-game
AristurtleDev Apr 26, 2025
2426354
Renamed directory to chapter title
AristurtleDev Apr 28, 2025
b6767b1
Rewrite
AristurtleDev Apr 28, 2025
796a1c0
Update toc title
AristurtleDev Apr 28, 2025
9353458
Update title in index table
AristurtleDev Apr 28, 2025
08e8e38
Resolve bug in position away from slime code
AristurtleDev Apr 29, 2025
5dc2ce1
Update images with less text and more descriptive captions
AristurtleDev Apr 30, 2025
a8af406
Specify directory
AristurtleDev Apr 30, 2025
b41b7e0
Specify directory
AristurtleDev Apr 30, 2025
d0f96f0
Specify directory
AristurtleDev Apr 30, 2025
c1fc470
Add important admonition about struct boxing
AristurtleDev Apr 30, 2025
7511af5
Be more explicit as to where methods are placed in which order, with …
AristurtleDev Apr 30, 2025
b6f3e0b
Have method return type instead of adding element within method
AristurtleDev Apr 30, 2025
c7684f0
Split into two chapters
AristurtleDev May 1, 2025
1929b58
Added input buffering to end of chapter
AristurtleDev May 1, 2025
aaf632d
Add 'Chapter' to start of each entry
AristurtleDev May 1, 2025
21b2f15
Add links to source code
AristurtleDev May 1, 2025
7a0cd2d
Remove appendix, will add later
AristurtleDev May 1, 2025
86d06b7
Add colon to start list
AristurtleDev May 1, 2025
03785cb
Add acknowledgement section
AristurtleDev May 1, 2025
241d8c8
Update conventions
AristurtleDev May 1, 2025
f510f17
Add fourth game to table
AristurtleDev May 1, 2025
45de4f9
Fix bold markdown syntax
AristurtleDev May 1, 2025
f235fa7
you to your
AristurtleDev May 1, 2025
b366a8b
add dev kit extension image
AristurtleDev May 1, 2025
b506a28
Replaced questions
AristurtleDev May 1, 2025
61a1e5d
Show where to make change with image preview
AristurtleDev May 1, 2025
82bab89
Remove the old part of chapter that was split (oops)
AristurtleDev May 1, 2025
0c81ece
Update diagrams
AristurtleDev May 1, 2025
45c5556
Specify to use tabs
AristurtleDev May 2, 2025
7a989aa
Fix markdown formatting
AristurtleDev May 2, 2025
e00c677
Updated origin section to show that position was changed in code as well
AristurtleDev May 2, 2025
31a010c
Updated scale section to mention the rotation reset
AristurtleDev May 2, 2025
8285f7f
Fir to for
AristurtleDev May 2, 2025
dbbc96a
Updated color sectionto mention effect reset
AristurtleDev May 2, 2025
b8d3295
Fix figure reference
AristurtleDev May 2, 2025
8df47a5
Fix indention
AristurtleDev May 2, 2025
5618250
directory to folder
AristurtleDev May 2, 2025
839db6c
Snippets place {} on seperate lines for class declaration sections
AristurtleDev May 2, 2025
2c900c0
Snippets place {} on seperate lines for class declaration sections
AristurtleDev May 2, 2025
d9bc71e
Explicitly state to add the message
AristurtleDev May 2, 2025
6441918
Update based on feedback
AristurtleDev May 2, 2025
05c1e97
Add note about big button
AristurtleDev May 2, 2025
5c822ca
Remove all "we'll" contractions
AristurtleDev May 2, 2025
698074d
Replace all "what's" contractions
AristurtleDev May 2, 2025
d2b2602
Remove all "Let's" contractions
AristurtleDev May 2, 2025
e61e79d
Remove all "'re" contractions
AristurtleDev May 2, 2025
4788538
Replace all "n't" contractions
AristurtleDev May 2, 2025
28a099a
Remove all "I'm" contractions
AristurtleDev May 2, 2025
caa52ac
Remove all "I've" contractions
AristurtleDev May 2, 2025
3b5cf8b
Replace all "'ll" contractions
AristurtleDev May 2, 2025
4eb8821
Replace all "it's" contractions
AristurtleDev May 2, 2025
0c6f7cf
Remove contraction words
AristurtleDev May 2, 2025
8e5f34d
Remove the overlay since we will use shader in next chapter
AristurtleDev May 2, 2025
6c8d0b7
Initial draft
AristurtleDev May 2, 2025
f4cf840
Add video showing effect
AristurtleDev May 2, 2025
0d300d3
Fix spelling issue
AristurtleDev May 2, 2025
c3515ff
Highlight using statement in code block
AristurtleDev May 2, 2025
c36122f
Remove duplicate 'to' in snippet
AristurtleDev May 2, 2025
f590f8d
Highlight all of new Update method that is added
AristurtleDev May 2, 2025
88812f4
Highlight using statement in game1 class
AristurtleDev May 2, 2025
e28e203
Spelling error 'sine' to 'since'
AristurtleDev May 2, 2025
472ef39
Rasterize images to half size
AristurtleDev May 2, 2025
fe67a8a
IN to In
AristurtleDev May 2, 2025
52fa8e3
IN to In
AristurtleDev May 2, 2025
a68ff87
Fix 'hen' to 'when'
AristurtleDev May 2, 2025
0255deb
Break down into individual sections instead of one after another addi…
AristurtleDev May 2, 2025
d3756b6
Move input buffer overview to chapter 10
AristurtleDev May 2, 2025
c49e113
Initial draft
AristurtleDev May 3, 2025
9e029d2
Update index and toc
AristurtleDev May 3, 2025
3a69756
Chapter 1-6 review
SimonDarksideJ May 3, 2025
5bf5a69
Updated admonition based on feedback
AristurtleDev May 3, 2025
d1bf4e7
Add link for GLSL
AristurtleDev May 3, 2025
ce60a44
Updated paragraph based on feedback
AristurtleDev May 3, 2025
60a073a
Add note about future shader support
AristurtleDev May 3, 2025
d3bfb10
Add note about preprocessor directives
AristurtleDev May 3, 2025
b1e04a1
Update samplers state list item based on feedback
AristurtleDev May 3, 2025
940310e
Added semantics link
AristurtleDev May 3, 2025
ac194c8
Add tip about ship model sample with blur shader
AristurtleDev May 3, 2025
387bc6c
Remove contraction "you've" to be "you have"
AristurtleDev May 3, 2025
87697f0
Reword loading shader section to state that it is before our game imp…
AristurtleDev May 3, 2025
38b35ab
Capitalize G in MonoGame
AristurtleDev May 3, 2025
96614be
Reword section heading and title to be more clear that we're moving i…
AristurtleDev May 3, 2025
5e1678e
Use unordered list
AristurtleDev May 3, 2025
27607ec
Fixed the spelling issue
AristurtleDev May 3, 2025
9aca3d3
Add note about shaders being stateless
AristurtleDev May 3, 2025
f458f7f
Remove extra whitespace line
AristurtleDev May 3, 2025
49f5c33
Emphasis that only the last paramater value is set
AristurtleDev May 3, 2025
81673ab
Move into admonition block to highlight importance
AristurtleDev May 3, 2025
fe9df04
Reword and suggest 3_0 for OpenGL models
AristurtleDev May 3, 2025
5e9c1ce
Use correct term "Profile" and not "Model"
AristurtleDev May 3, 2025
cc4dd4f
Proof up to ch 12
SimonDarksideJ May 3, 2025
e2b3bac
Proof up to chapter 15
SimonDarksideJ May 4, 2025
9127bf2
Proof up to chapter 18
SimonDarksideJ May 4, 2025
360e1c3
Add diagram and pipeline section
AristurtleDev May 5, 2025
184b303
Fix spelling issues
AristurtleDev May 5, 2025
a4f4e2b
Fix MonoGame spelling
AristurtleDev May 5, 2025
9916e41
update to state that it will be in a future tutorial
AristurtleDev May 5, 2025
1fdede8
Spelling errors
AristurtleDev May 5, 2025
dfb1847
Added note about AoT on mobile and consoles
AristurtleDev May 5, 2025
6b82368
Add note about trimming
AristurtleDev May 5, 2025
d5e848d
the to is
AristurtleDev May 5, 2025
b4d260d
Add file paths example
AristurtleDev May 5, 2025
a38fdc9
Add case sensitivity example
AristurtleDev May 5, 2025
fc50377
Add note about dependency disclosure
AristurtleDev May 5, 2025
0e503f4
fil to file
AristurtleDev May 5, 2025
2e61ef5
bot to but
AristurtleDev May 5, 2025
1b6e43b
Ensure that it is clear that it is an example
AristurtleDev May 5, 2025
d255669
Ensure that it is clear that it is an example
AristurtleDev May 5, 2025
0bc0034
We will implement
AristurtleDev May 5, 2025
0e35506
Reduce use of 'First,
AristurtleDev May 5, 2025
c13ed8c
This to the
AristurtleDev May 5, 2025
1269cde
hightlight to highlight
AristurtleDev May 5, 2025
0490ba5
Revert Game1 change following discussion
SimonDarksideJ May 5, 2025
aea2cc3
Merge branch '2d-tutorial-bounty' into 20-the-game
AristurtleDev May 5, 2025
ab6c4ee
Merge pull request #23 from AristurtleDev/20-the-game
AristurtleDev May 5, 2025
0f0d41a
Merge branch '2d-tutorial-bounty' into 24-shaders
AristurtleDev May 5, 2025
76d420a
Merge pull request #40 from AristurtleDev/24-shaders
AristurtleDev May 5, 2025
b554d88
Merge branch '2d-tutorial-bounty' into 25-packaging-game
AristurtleDev May 5, 2025
75a9709
Merge pull request #41 from AristurtleDev/25-packaging-game
AristurtleDev May 5, 2025
0ec771c
Update conventions and proof chapter 18
SimonDarksideJ May 5, 2025
507198f
Merge branch '2d-tutorial-bounty' of https://github.com/AristurtleDev…
SimonDarksideJ May 5, 2025
15d3128
Address feedback
SimonDarksideJ May 5, 2025
947123f
Proof to chapter 20 - incomplete
SimonDarksideJ May 5, 2025
a75db6c
code hightlight and explination
AristurtleDev May 5, 2025
c7e9538
Merge pull request #43 from AristurtleDev/fix/only-show-title-when-ti…
AristurtleDev May 5, 2025
40d0f80
Merge branch '2d-tutorial-bounty' of https://github.com/AristurtleDev…
SimonDarksideJ May 5, 2025
708675c
Initial draft
AristurtleDev May 5, 2025
e1283bc
Fix yaml title
AristurtleDev May 5, 2025
61f4873
Change Unreal to Epic Games Store
AristurtleDev May 5, 2025
943b961
Reword sentence, sounded lame
AristurtleDev May 5, 2025
65b78d9
Add analytics and game jams to benefits
AristurtleDev May 5, 2025
fc10a00
setup should be 'set up'
AristurtleDev May 5, 2025
e6746b3
Slight rewording of sentence
AristurtleDev May 5, 2025
a9b64b1
Missing period
AristurtleDev May 5, 2025
1ff8af9
Redraft
AristurtleDev May 6, 2025
94d3fba
Remove contraction before Simon sees them
AristurtleDev May 6, 2025
a41e340
Remove Let's
AristurtleDev May 6, 2025
3dbcd75
Add info about Apos's automated release workflow
AristurtleDev May 6, 2025
3ed9c87
Remove redunent statement
AristurtleDev May 6, 2025
5c374ae
Final chapter draft
AristurtleDev May 6, 2025
12bfab7
Update index and toc
AristurtleDev May 6, 2025
a0f106c
Fix signature
AristurtleDev May 6, 2025
c82d58f
Merge branch 'feature/proof-run' of https://github.com/SimonDarksideJ…
SimonDarksideJ May 7, 2025
3fe6382
Fix incorrect markdown script tag
SimonDarksideJ May 7, 2025
3b777d3
Merge branch '2d-tutorial-bounty' of https://github.com/AristurtleDev…
SimonDarksideJ May 7, 2025
03219aa
Proof incomplete in ch20 - missing elements
SimonDarksideJ May 7, 2025
b352245
Add note about Gum is one of many in the first GUM chapter
SimonDarksideJ May 7, 2025
8ceec51
Add missing usings
AristurtleDev May 7, 2025
92c6ac8
Use Markdig attributes extension, mark files with download attribute
AristurtleDev May 7, 2025
6f544a4
Ensure to tell reader to save changes
AristurtleDev May 7, 2025
74babc2
Highlight using in code snippet
AristurtleDev May 7, 2025
e765df9
Add notes and specify method add order like in chapter 22
AristurtleDev May 7, 2025
765d413
State to replace contents of game1 in chapter 17
AristurtleDev May 7, 2025
a93254c
GameScene doesn't need Contnet using
AristurtleDev May 7, 2025
8a5139e
Fix admonition
AristurtleDev May 7, 2025
421b4a5
Add link to dungeon slime on itch as preview
AristurtleDev May 7, 2025
b6e46d4
Merge pull request #44 from AristurtleDev/26-deploy-to-itch
AristurtleDev May 7, 2025
4896c28
on to one
AristurtleDev May 7, 2025
c806f69
Merge branch '2d-tutorial-bounty' into 27-conclusion
AristurtleDev May 7, 2025
8372d0d
Merge pull request #45 from AristurtleDev/27-conclusion
AristurtleDev May 7, 2025
4a1d4ca
Add missing snippets
AristurtleDev May 7, 2025
6f3d38e
Initial redraft based on feedback
AristurtleDev May 7, 2025
b2b9687
Remove the base.LoadContent call, it's not needed
AristurtleDev May 7, 2025
2e419ef
Proof to ch 20 plus pull in latest
SimonDarksideJ May 8, 2025
5076255
Proof to ch 22
SimonDarksideJ May 8, 2025
fbbfcdc
Fix unicode character
SimonDarksideJ May 8, 2025
2a01a7c
Merge pull request #42 from SimonDarksideJ/feature/proof-run
AristurtleDev May 8, 2025
97adb10
Remove descriptive text from image. Reference #31
AristurtleDev May 8, 2025
483aa57
Update alt text: Reference #31
AristurtleDev May 8, 2025
a9da49d
Reword sentence to be more clear on where to create file.
AristurtleDev May 8, 2025
d3194be
Use specific version of Gum, added adomnition about why
AristurtleDev May 8, 2025
780d401
Add text between multiple code block sections.
AristurtleDev May 8, 2025
da54244
Add note on the font file being pregenerated with link to Gum documen…
AristurtleDev May 8, 2025
e483d9a
Use correct region name
AristurtleDev May 8, 2025
9bd6e3c
Remove using statement. Dock enum needs to be explicit
AristurtleDev May 8, 2025
a8ae068
Must be spelled exactly like this
AristurtleDev May 8, 2025
38c0b10
Remove using statement. Dock enum needs to be explicit
AristurtleDev May 8, 2025
3505c9e
Ensure that the tilemap region is updated
AristurtleDev May 8, 2025
b9842b5
Fix MonoGame captilzation spelling
AristurtleDev May 9, 2025
4a6bc47
Correct type of "a field tos tore"
AristurtleDev May 9, 2025
aeace2d
Merge branch '2d-tutorial-bounty' into redraft/chapter-05
AristurtleDev May 9, 2025
5df0fd7
Merge pull request #49 from AristurtleDev/redraft/chapter-05
AristurtleDev May 9, 2025
ef99857
Merge pull request #55 from AristurtleDev/feedback/chapter-21
AristurtleDev May 10, 2025
c194c5a
Include link to gum documentation
AristurtleDev May 10, 2025
5c16c21
Merge pull request #54 from AristurtleDev/feedback/chapter-20
AristurtleDev May 10, 2025
3424016
Merge pull request #53 from AristurtleDev/feedback/chapter-22
AristurtleDev May 10, 2025
09fc316
Initial proof run complete
SimonDarksideJ May 11, 2025
b4a800d
Figures and indexes pass - done
SimonDarksideJ May 11, 2025
c6c7bc2
Remove duplicate chapter 10 file
AristurtleDev May 12, 2025
cc2ba6f
Merge pull request #1 from AristurtleDev/feature/proof-final
SimonDarksideJ May 12, 2025
9840c83
Ensure that all dependent dll, etc files are copied to the bundle dir…
AristurtleDev May 12, 2025
20a7e43
Update number list numbers
AristurtleDev May 12, 2025
b8ce61e
Inform reader that the icon must be a .png and if they don't have one…
AristurtleDev May 12, 2025
a757a37
Add tip about refreshing icon and what to do if it still doesn't show up
AristurtleDev May 12, 2025
633c153
Add screenshots of game
AristurtleDev May 12, 2025
8f3bbef
Add intro section showing the game that will be built throughout the …
AristurtleDev May 12, 2025
4b41562
Remove the caution, we done bois
AristurtleDev May 12, 2025
2e890e0
Also fix dumb toc mistake
AristurtleDev May 12, 2025
4e36e90
Add usings for slime class and ensure highlighting
AristurtleDev May 12, 2025
3d08b52
fix wording
AristurtleDev May 12, 2025
d5f0ba4
Respawning
SimonDarksideJ May 12, 2025
ef7234b
Merge pull request #59 from AristurtleDev/update/intro-add-game
AristurtleDev May 12, 2025
42d8436
Merge pull request #57 from SimonDarksideJ/feature/proof-final
AristurtleDev May 12, 2025
e21507f
Merge branch '2d-tutorial-bounty' into fix/mac-build-steps
AristurtleDev May 12, 2025
bed9c0f
Merge pull request #58 from AristurtleDev/fix/mac-build-steps
AristurtleDev May 12, 2025
bf5c6b7
Merge branch '2d-tutorial-bounty' into feedback/chapter-23
AristurtleDev May 12, 2025
cc9822c
Merge pull request #60 from AristurtleDev/feedback/chapter-23
AristurtleDev May 12, 2025
ec48260
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev May 12, 2025
0d87925
Merge branch '2d-tutorial-bounty' of https://github.com/aristurtledev…
AristurtleDev May 12, 2025
8063423
Add the input buffering section back, not sure what removed it again
AristurtleDev May 12, 2025
4050852
Fix link errors
AristurtleDev May 12, 2025
c170292
Minor merge fixes
SimonDarksideJ May 12, 2025
6ba08f2
Merge pull request #62 from SimonDarksideJ/feature/merge-fixes
AristurtleDev May 12, 2025
c473273
Merge branch 'main' into 2d-tutorial-bounty
AristurtleDev May 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
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
134 changes: 96 additions & 38 deletions articles/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,48 +67,106 @@ items:
- 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: "18: Texture Sampling"
href: tutorials/building_2d_games/18_texture_sampling/
- name: "19: User Interface Fundamentals"
href: tutorials/building_2d_games/19_user_interface_fundamentals/
- name: "20: Implementing UI with Gum"
href: tutorials/building_2d_games/20_implementing_ui_with_gum/
- name: "21: Customizing Gum UI"
href: tutorials/building_2d_games/21_customizing_gum_ui/
- name: "22: Snake Game Mechanics"
href: tutorials/building_2d_games/22_snake_game_mechanics/
- name: "23: Completing the Game"
href: tutorials/building_2d_games/23_completing_the_game/
- name: "24: Shaders"
href: tutorials/building_2d_games/24_shaders/
- name: "25: Packaging Your Game for Distribution"
href: tutorials/building_2d_games/25_packaging_game/
- name: "26: Publishing Your Game to itch.io"
href: tutorials/building_2d_games/26_publish_to_itch/
- name: "27: Conclusion and Next Steps"
href: tutorials/building_2d_games/27_conclusion/
- 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.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 87 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,87 @@
---
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](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.

> [!NOTE]
>
> 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).

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-4: Bastion](./images/bastion.jpg) |
| **Figure 1-3: Streets of Rage 4** | **Figure 1-4: Bastion** |

> [!NOTE]
>
> For more details about MonoGame's history, check the [About](https://monogame.net/about/) on the official MonoGame website.

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