
Trace the evolution of C# and MonoGame, from .NET and XNA to MonoGame, enabling cross-platform game development on Windows, Mac, Linux, consoles, and mobile.
Install Visual Studio Community 2022, add dotnet desktop development, install MonoGame templates, create a cross-platform desktop MonoGame project, configure NuGet, rebuild, and run the sample.
Access the course code on GitHub, including the Udemy mono game repo with folders for each project and all files. Code on your own first, then compare to spot differences.
Learn the basics of programming with C Sharp, using a step-by-step approach to build games, cover variables, if statements, and functions, with a syntax review and hands-on practice.
Set up a C# console practice project in Visual Studio by creating a new .NET Core console app, naming it, configuring location, and running to see Hello World.
Learn to declare and assign variables in C#, print their values to the screen with a console output, and understand integers, variable naming, and semicolon usage.
Explore how variables hold values that may vary through arithmetic and data types, including addition, subtraction, multiplication, and division, and learn about plus equals, increment, and decrement.
Explore common data types in C# for game development, including integers, floats with the F suffix, strings with quotation marks, chars with single quotes, and booleans for true or false.
Learn how conditional statements in c# use if, else, and else if with check value and my number to handle greater than zero and less than or equal to zero.
Learn how methods in C# work as reusable code blocks, with parameters and return values, using Math.Abs and Math.Max to solve problems in game development with MonoGame.
Discover how code comments guide readers and future you, using // for single-line notes and /* ... */ for block comments to document logic and enable testing by toggling lines.
Review concepts from earlier lectures with Syntex Station Dotcom code snippets, focusing on variables, arithmetic, and conditionals, and reference the sheet before moving on to the first game.
Apply basic C sharp fundamentals to build a simple shooting gallery game that draws graphics, spawns targets randomly, tracks score, and handles mouse clicks within a time limit.
Create a MonoGame cross platform desktop project in Visual Studio, naming it shooting gallery. Explore the game structure with the constructor, initialise, load content, update, and draw.
Download the asset quartet—crosshairs, sky, target, and font—import them into the Munno Games content pipeline with the mmHg editor, and build to create .xnb files.
Declare texture variables for three images, and load them from the content folder. Render them to the screen using a SpriteBatch by calling begin, draw, and end.
Learn how to draw sprites in MonoGame using Vector2 positions, coordinates, and color tints, and master draw order to control background and target visibility.
Learn how to load and use a sprite font in MonoGame, by configuring a sprite font XML (Gallery Font), loading it via content, and drawing text with SpriteBatch.
Set the target position as a variable (vector two) and update it to move the sprite with each shot, while declaring a constant radius of forty-five.
Learn how to access the mouse state in a MonoGame project to detect left button clicks, update the score on release, and display the score on screen.
Implement hit detection by measuring the distance between the mouse and the target using a distance calculation, and update the score when the click falls inside the target radius.
Add using system to access the random class, create a Rand object, and use Rand.Next to place the target at random x and y within the game window.
Set up a countdown timer starting at 10 seconds, update it with game time, display an integer clock via Math.Ceiling, and hide targets when time runs out.
Enhance the game user interface by labeling the score and timer using concatenation, add crosshairs tied to the mouse, adjust alignment, and hide the mouse at wrap-up.
Learn how arrays in C Sharp store multiple values, use indices to access elements, and initialize arrays with new or curly-brace syntax, including size limits and default values.
Master loops in C# by exploring while and for loops, conditions, and iterators. Practice incrementing variables to repeat code until conditions fail.
Learn how to write your own classes in C Sharp, define fields, and use public versus private access to organize data and create person objects.
Learn to define methods in the person class, including void methods that modify weight and methods that return values. Explore parameters and first initial retrieval.
Define and overload constructors in a person class to initialize name and weight at creation. Use default and parameterized constructors to set fields and demonstrate overloading.
Explore the static modifier by defining class-level fields and methods that belong to the class itself, enabling class-wide access via the class name and instance counting.
Move the spaceship with the arrow keys to survive asteroid field as the timer counts up; creating and deleting objects, organizing code with player and asteroid, and a main menu.
Set up a MonoGame project in Visual Studio, load assets via the content pipeline, and render a space background with sprite textures and fonts.
Create a ship class with a position vector, instantiate a player object, and draw the ship sprite at its position, centering it by offsetting half its width and height.
Move ship by updating its x and y position from arrow key input in the ship class. Diagonal movement happens when multiple keys are pressed, aided by the speed field.
Multiply speed by delta time to keep ship movement consistent across varying frame rates, using a game time object to pass elapsed time into update methods.
Define an asteroid class with position, speed, and radius; render the sprite at its position using the radius offset for center alignment, and update its leftward movement with delta time.
Create a controller class to manage dynamic asteroid generation with a public asteroids list, a countdown timer, and update/draw calls for each asteroid.
Iterate through the asteroids list with a for loop, updating each asteroid and drawing them using the game controller's asteroids list indices, and manage spawning every two seconds.
Spawn asteroids off the right edge and let them drift left as the player dodges, using a Random instance for random vertical positions within the screen height, with difficulty progression.
Implement a difficulty progression by reducing asteroid spawn intervals from two seconds toward a minimum and increasing each asteroid's speed with every spawn.
Create a functional main menu for a MonoGame project by using a controller to toggle in-game, pause asteroid spawning, center the ship, and start the game with the enter key.
Center a 'press enter to begin' prompt on the main menu by measuring the text with the game font, computing its size as a vector2, and offsetting half its width.
Apply circle-based collision detection by comparing the distance between ship and asteroid centers to the sum of radii, then reset to the main menu and clear asteroids on collision.
Implement a real-time total time timer that counts while in-game, render it on screen with a font, and reset each round; enforce movement bounds to keep gameplay contained.
Explore enumerations in C# with MonoGame by defining a meal enum (breakfast, lunch, dinner), using it in variables and if statements, and casting with integers.
Explore switch statements in C# within a MonoGame project, learning how they replace multiple if statements with organized cases and a default to control program flow.
Learn how private fields protect data and how public getters, setters, and properties expose controlled access in a cat class example.
Develop an action RPG final project by applying core concepts from the course, featuring player animations, enemy spawning, projectile shooting with spacebar, and a level camera that enables full exploration.
Create a new cross-platform desktop game project in Visual Studio, load assets (player sprites and background) via the content pipeline, and render the background with a sprite batch.
Create a player class with position and speed, expose position via a getter, add set x and set y, and implement update with keyboard input, delta time, and four-direction movement.
Learn to integrate an open source camera from GitHub MIT-licensed into a MonoGame project by installing, initializing, and updating the camera, then attaching it to SpriteBatch to follow the player.
Animate the player by integrating a sprite animation system with a walk-down sprite sheet in a MonoGame project. Update, draw, and center the camera on the player.
Learn to animate a player in four directions with a sprite animation array tied to a direction enum, typecast to select the correct frame and idle frames when not moving.
Build a projectile class with position, direction, speed, and radius to shoot in the direction the player faces, updating and drawing projectiles each frame.
Create an enemy class with position, speed, and skull texture sprite; move toward player using vector from enemy position to player position, normalize it, and apply speed with delta time.
Implement circular collision detection between projectiles and enemies using radii, destroy projectiles on impact, and mark enemies as dead for removal in the update loop.
Spawn enemies automatically using a static controller with a timer that shortens after each spawn, passing the skull texture and random off-screen positions on four sides.
Restrict player movement to island borders using left, right, top, and bottom limits; implement enemy collision with a dead flag to stop movement, drawing, and updates.
Celebrate completing the core concepts of game development with C# and MonoGame, and start your own projects while leveraging MonoGame documentation, forums, and Q&A support.
Create a sounds folder, load a blip sound and nature song in MonoGame, and play them via a shared mySounds class.
Are you ready to embark on an exciting journey into the world of game development? Good news - the path is wide open, and you're invited to join us!
In this course, we'll dive into the basics of creating games with MonoGame, a game framework that has a rich indie development heritage. You'll be in great company, as countless successful titles, including Stardew Valley, Celeste, Fez, Axiom Verge, and Bastion, have been built using this software, each with millions of sales on Steam.
We'll be using C#, a widely used programming language in the industry, to bring our game ideas to life. With this powerful combination of a solid game engine and a well-documented language, you'll have all the tools you need to transform your imagination into stunning games.
Now, let's talk about what makes this course special. It's all about hands-on, project-based learning. We'll apply the programming and game development fundamentals we discuss to create our very own MonoGame projects. No need to worry if you've never written a line of code before - this course is designed for beginners and seasoned developers alike. We've got content that will benefit everyone.
After an introduction to set the stage, we'll dive into three sections on C# programming and three sections on MonoGame development. By alternating between programming and game development, we'll have you up and running, creating games in no time.
Throughout the course, we'll build three games from scratch using MonoGame. We'll start with an exciting Shooting Gallery game where you'll aim and click on targets that pop up on the screen. Next up, we'll launch into a Spaceship game where you'll navigate through space, dodging incoming asteroids using the arrow keys. And to wrap it all up, we'll take on the challenge of creating a top-down action RPG. In this game, you'll control a player who explores a dynamic world, fights enemies, and shoots projectiles.
With each new game we develop, we'll build on the skills acquired in the previous one, ensuring a solid foundation in game development. By the end, you'll have a clear understanding of all the essential components needed to create your own games, including playable characters, input controls, image rendering, collision detection, projectile shooting, enemy mechanics, player scoring, health tracking, animations, timers, and even a camera system.
To master these aspects of game development, we'll need a strong grasp of various C# concepts. That's where our programming sections come in. We'll cover a wide range of topics, such as variables and data types, conditional statements, classes and inheritance, methods, loops, switch statements, and data structures.
While we'll be exploring these concepts in the context of C#, the core fundamentals exist across many programming languages, so the knowledge gained here will serve you well beyond this course. And don't worry, if you're already familiar with programming, we've got you covered with a handy "syntax review" lecture. It'll walk you through the specific usage of these concepts in C#, allowing you to quickly catch up and apply your existing skills to this context.
By actively coding along with the lectures, the information will stick with you as we progress through the material. Plus, you'll have the completed projects right on your computer, ready for reference whenever you need a reminder or a source of inspiration. Armed with a solid understanding of C# and MonoGame, there will be no limits to what you can create!
So, are you ready to turn your game ideas into reality? Join us on this inspiring adventure, and let's build some incredible games together!