Skip to content
This repository has been archived by the owner on Dec 7, 2024. It is now read-only.

AristurtleDev/building-2d-games-with-monogame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

Thank you all for woring with me on providing feedback in this repository as I am working on the tutorial. Doing it through this repository was one of a few different ways I experimenting with receiving community feedback and feedback from the foundation as the tutorial was written, as I wanted to write it in public (sort of like the build in public stuff).

At this time, I will no longer be using this repository to gather feedback. Instead, the process going forward will be like this

  1. There is an open draft PR for the tutorial in the MonoGame repo at MonoGame/docs.monogame.github.io#85.
  2. All updates that I am performing are done to the 2d-tutorial-bounty branch in my fork at https://github.com/AristurtleDev/docs.monogame.github.io/tree/2d-tutorial-bounty
  3. Each new chapter, or significant reworks/changes, are opened as a new PR in my fork when they are ready for review. During this time, I will make a post in the MonoGame Discord for freedback as well as ask the MonoGame foundation for feedback.
  4. Once all feedback has been handled and a foundation member signs off on it, that chapter PR is merged into the 2d-tutorial-bounty branch of my fork which is tied to the draft PR in the original MonoGame repository.

If there are any questions on this process, please let me know.

This repository will remain open for now as there is still things written here that need to be moved into different sections of the tutorial, but it will be put into archive mode going forward. Thank you all for your feedback and help, and I look forward to working with you all as I write this tutorial moving foward.

Preface

I have been using MonoGame for the past several years (since 2017). It was a time in my game development journey where I was looking for something that I had more control over. I didn't want to spend the time to write a full game engine, but I also wanted to have more control than what the current engines at the time (i.e. Unity) offered. At that time, there was a vast amount of resources available for getting started, but none of them felt like they fit a good beginner series. Even now, the resources available still seem this way. They either require the reader to have a great understanding of game development and programming, or they assume the reader has none and instead focuses on teaching programming more than teaching MonoGame. Even still, some relied too heavily on third party libraries, others were simply very bare bones asking the reader to just copy and paste code without explaining the what of it all.

Since then, I have written various small self contained tutorials on different topics for MonoGame to try and give back to the community for those getting started. I also participate regularly in the community discussion channels, answering questions and offering technical advice, so I'm very familiar with the topics and pain points that users get hung up on when first starting out.

My hopes with this documentation is to take the lessons I've learned, and what I've learned from helping others, to fill the gap that I wanted filled when I first started MonoGame. To present using MonoGame in a straight forward way, introducing concepts and building off of them as we go along in a way that makes sense and is easy to follow.

Who This Is For

This documentation is meant to be an introduction to game development and MonoGame. Readers should have a foundational understanding of C# and be comfortable with concepts such as classes and objects.

Note

If you are just getting started with C# for the first time, I would recommend following the official Learn C# tutorials provided by Microsoft. These are free tutorials that teach you programming concepts as well as the C# languages. Once you feel you have a good foundation with that, come back and continue here.

How This Documentation Is Organized

This documentation will introduce game development concepts using the MonoGame framework while walking the reader through the development of a Snake clone. The documentation is organized such that each chapter should be read sequentially, with each introducing new concepts and building off of the previous chapters.

Caution

This is currently a work in progress and is not finished.

Chapter Summary
Chapter 01: What is MonoGame? Gives a brief history of MonoGame and takes the reader through the features and advantages of using MonoGame for game development.
Chapter 02: Getting Started Walks the reader through setting up their development environment for MonoGame development and creating their first MonoGame game application.
Chapter 02: The Game1 File Gives an overview of the Game1.cs file that is generated when creating a new MonoGame project.
Chapter 04: Working With Textures Walks the read through loading textures in MonoGame both directly from file and using the content pipeline. Then go through methods of drawing the texture, including drawing subregions within a single texture.
Chapter 05 (Coming soon ...)

In additional to the chapter documentation, supplemental documentation is also provided to give a more in-depth look at different topics with MonoGame. These are provided through the Appendix documentation below:

Appendix Summary
Appendix 01: MonoGame Project Templates Shows the different MonoGame project templates available and what each one is used for.
Appendix 02: MonoGame Project Overview An in-depth overview of the standard MonoGame project created from a MonoGame project templates, including all files and the default contents generated for the files.
Appendix 03: The Content Pipeline An in-depth overview of the content pipeline workflow provided by the MonoGame framework and the individual components that make up the overall workflow.

Conventions Used in This Documentation

The following conventions are used in this documentation

Italics

Italics are used for emphasis, technical terms, and paths such as file paths including filenames and extensions.

Inline Code Blocks

Inline code blocks are used for methods, functions, and variable names when they are discussed with the body a text paragraph.

Code Blocks

// Example Code Block
public void Foo() { }

Code blocks are used to show code examples with syntax highlighting

MonoGame

If you ever have questions about MonoGame or would like to talk with other developers to share ideas or just hang out with us, you can find us in the various MonoGame communities below

Acknowledgements

Copyright and License

All documentation is copyright © 2024 Christopher Whitley and is provided for educational purposes only. Permission is not granted to anyone for use of documentation for commercial reasons without express written consent by original copyright holder.

All source code in this repository that accompanies the documentation, but not including source code within the documentation is licensed under the Unlicense as follows

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this 
software, either in source code form or as a compiled binary, for any purpose, 
commercial or non-commercial, and by any means.

In jurisdictions that recognize copyright laws, the author or authors of this 
software dedicate any and all copyright interest in the software to the public 
domain. We make this dedication for the benefit of the public at large and to 
the detriment of our heirs and successors. We intend this dedication to be an 
overt act of relinquishment in perpetuity of all present and future rights to 
this software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE 
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <http://unlicense.org/>

About

A tutorial on building 2D games with MonoGame

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages