From 633c1531ddbf128bde6a1a01c22b6a16354eb3bd Mon Sep 17 00:00:00 2001 From: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com> Date: Mon, 12 May 2025 13:35:57 -0400 Subject: [PATCH 1/4] Add screenshots of game --- .../images/dungeon-slime-game.png | Bin 0 -> 35217 bytes .../images/dungeon-slime-title.png | Bin 0 -> 38411 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 articles/tutorials/building_2d_games/images/dungeon-slime-game.png create mode 100644 articles/tutorials/building_2d_games/images/dungeon-slime-title.png diff --git a/articles/tutorials/building_2d_games/images/dungeon-slime-game.png b/articles/tutorials/building_2d_games/images/dungeon-slime-game.png new file mode 100644 index 0000000000000000000000000000000000000000..624b26872f4d94cd192811471306aa520dca4321 GIT binary patch literal 35217 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 literal 0 HcmV?d00001 From 8f3bbefac038b04dadaa02fb2b32a1a4c98cd87b Mon Sep 17 00:00:00 2001 From: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com> Date: Mon, 12 May 2025 13:36:20 -0400 Subject: [PATCH 2/4] Add intro section showing the game that will be built throughout the tutorial with link to it on itch --- articles/tutorials/building_2d_games/index.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/articles/tutorials/building_2d_games/index.md b/articles/tutorials/building_2d_games/index.md index 3be03ea0..3e965f04 100644 --- a/articles/tutorials/building_2d_games/index.md +++ b/articles/tutorials/building_2d_games/index.md @@ -5,6 +5,22 @@ description: A beginner tutorial for building 2D games with MonoGame. This tutorial covers game development concepts using the MonoGame framework as our tool. Throughout each chapter, we will explore game development with MonoGame, introducing new concepts to build upon previous ones as we go. We will create a Snake game, which will serve as the vehicle to apply the concepts learned throughout the tutorial. The goal of this tutorial is to give you a solid foundation in 2D game development with MonoGame and provide you with reusable modules that you can leverage to jump start future projects. +## What We Will Build + +Throughout this tutorial series, we will build a complete game called **Dungeon Slime**; a snake-like game with a dungeon theme. By the end of this series, you will have created a polished game with: + +- Smooth animated sprites +- Responsive controls across keyboard and gamepad +- Sound effects and background music +- UI menus with customized styling +- A complete game loop with scoring and game over states + +You can see the finished game here: [Dungeon Slime on itch.io](https://shyfoxstudio.itch.io/dungeon-slime) + +| ![Figure 0-1: The title screen of Dungeon Slime](./images/dungeon-slime-title.png) | ![Figure 0-2: The gameplay screen of Dungeon Slime showing the player controlling a chain of slime segments (in blue) while navigating through the dungeon to collect bats for points.](./images/dungeon-slime-game.png) | +| :--------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| **Figure 0-1: The title screen of Dungeon Slime** | **Figure 0-2: Gameplay of Dungeon Slime showing the player controlling a chain of slime segments (in blue) while navigating through the dungeon to collect bats for points.** | + ## 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. From 4b41562a588e98e98042e7cdac19d0908d71f3a6 Mon Sep 17 00:00:00 2001 From: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com> Date: Mon, 12 May 2025 13:36:41 -0400 Subject: [PATCH 3/4] Remove the caution, we done bois --- articles/tutorials/building_2d_games/index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/articles/tutorials/building_2d_games/index.md b/articles/tutorials/building_2d_games/index.md index 3e965f04..12453b1c 100644 --- a/articles/tutorials/building_2d_games/index.md +++ b/articles/tutorials/building_2d_games/index.md @@ -32,10 +32,6 @@ This documentation is meant to be an introduction to game development and MonoGa 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 | Source Files | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | [Chapter 01: What Is MonoGame](01_what_is_monogame/index.md) | Learn about the history of MonoGame and explore the features it provides to developers when creating games. | [01-What-Is-MonoGame](https://github.com/shyfox-studio/learn-monogame-2d/tree/main/src/01-What-Is-MonoGame/) | From 2e890e09a92f07034e1504a371d1a4e9b9077353 Mon Sep 17 00:00:00 2001 From: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com> Date: Mon, 12 May 2025 13:44:35 -0400 Subject: [PATCH 4/4] Also fix dumb toc mistake --- articles/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/toc.yml b/articles/toc.yml index 846d635e..5e585378 100644 --- a/articles/toc.yml +++ b/articles/toc.yml @@ -164,7 +164,7 @@ 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: "Chapter 27: Conclusion and Next Steps" + - name: "27: Conclusion and Next Steps" href: tutorials/building_2d_games/27_conclusion/ - name: Console Access href: console_access.md