Getting Started with MonoGame

CSE 3902 Sprint #0

Objective: This is an individual assignment to get everyone comfortable using Visual Studio, .NET, C#, and MonoGame, as well as designing and implementing objects and interfaces. Advanced students may also make use of the Command design pattern. The core requirements of this Sprint are content loading, sprite drawing, and input handling, in an event loop.

This assignment has two due dates. You are expected to turn in whatever you have completed by the first deadline, but will be allowed to turn in your work again without a late penalty as long as the resubmission is turned in by the second deadline. If you completly finish the assignment by the first deadline you will earn a 5% extra credit bonus, possibly going over 100% for the assignment.

First (early bonus) deadline: Friday 9/2 by 11:59pm
Second deadline: Saturday 9/10 by 11:59pm. Submissions on Sunday 9/11 will still be accepted, but with a 5% late penalty

Step 1) Software setup

It is recommended that you use a device running Windows for this course. There is a native option for Macs, but we can't help with troubleshooting them as much. Virtual machines are an option but tend to run much slower than you'd prefer, so using a second partition for Windows is recommended if you don't have a Windows PC already. Machines in CL112 may or may not have the most up to date versions of the software we are using. We'll be using Visual Studio 2022 and Monogame version 3.8.1 (or later, whatever the MonoGame VS extension provides)

As of around 2018, OSU's liscening no longer includes the Enterprise version of Visual Studio for installing on personal machines, so you can proceed right to Monogame's Getting Started page as it now includes steps on installing Visual Studio with the necessary modules/plug-ins. [Au'22 note - the icons for the MonoGame project templates in Visual Studio were missing, but still worked for creating a project of the type. Note that you have to restart Visual Studio to finish installation of an the MonoGame extension] You might be able to get a 90-day trial of the Pro/Enterprise version of VS, but this is slightly too short for the whole semester. If you want to use the more robust version (comparing versions) this semester then you can use the Community version for Sprint0 and wait until the start of Sprint2 to install a temporary trial. In any case, start early as installation and setup may take several hours due to file sizes and configuration time.

Legacy link to OSU's Microsoft academic services (link) as it has other software you may find useful for other courses

Miscellaneous troubleshooting - read these before you ask for help on the install!

Step 2) Working with Monogame - tutorials

For understanding the basics of working with MonoGame, there are two sets of tutorials you might find useful.

Legacy tutorials - these use terms and have screenshots from an older version of MonoGame, but include an example of more reusable code for sprite drawing that we'll look at in class.

Step 3) Programming assignment

Your task is to implement a very simple interactive program. At run-time, the user should be able to select between display of a motionless and non-animated sprite (ex: luigi standing still), a motionless and animated sprite (ex: luigi running in place), a moving and non-animated sprite (ex: dead luigi floating up and down), and a moving and animated sprite (ex: luigi running right and left). Note: only one of these sprites should be visible at a time. The user should also be able to quit the program with a key press. Additionally, you should use a text sprite to display your name and the source of your art assets. One significant purpose of this assignment is to gain experience using interfaces (designing them, implementing them, and using them like objects). Carefully read and follow these requirements:


Illustration of what is meant by quad. You don't have to draw the lines or Quad# text in the actual program

Design suggestions:

Sprite Resources:

Work to turn in:

Grading:

If you cannot complete enough functionality to reach 60% on this assignment, you will have a difficult time being able to contribute on the team project. You should be able to evaluate your work using the rubric provided below and reach out for help before the assignment's deadline if it looks like you will come up short. If you are not able to complete the assignment by the date of the resubmission option it is recommended that you consider dropping the course.

Your grade on this assignment will be based on correctness, but you will also receive feedback on how you could improve upon the quality of your code.