Once a few years ago, I made a game with a custom engine. In this post, I share the process.
What's Monogame, C#, and Game Engines?
When you create a game you need a game engine. It's basically the code, assets, etc behind everything you see on screen. Because of my major's specialization, I have learned GameMaker Studio 2, Unity, and now Monogame C#. GameMaker is good for mostly 2D games and is a great place to start if you are just starting out. The likes of Undertale and Fran Bow came from it. Unity, in my opinion, is complicated but very popular. Monogame is complete custom coding in C# but the application actually pops up using Monogame.
What I started with:
Throughout the semester, my class had created a game engine that worked a lot like Unity but without any of the nice user interfaces. The nice thing about making a game engine from the ground up is the customization. I had a game engine that could handle all kinds of player input in order for me to make a 3D game. In class, we covered scene transitions, GUI (graphical user interface--the stuff you see on a screen like buttons), an example Asteroid-like game, and a maze type of game. Due to the semester being cut short by a week, my professor encouraged us to do our best to try and create something that didn't look like anything we did in class. It could use similar code though.
First Step: Ideas for the Monogame project
Since Game Grumps have been playing Danganronpa recently, at the time of writing this, I have been itching to create my own version but I knew I wouldn't have the time so I was feeling stuck. Then I thought about making a game like Giraffe Town so if there were "intended" features, I could explain them as being a part of the game. (I wasn't super confident in my ability to make something actually good but that wasn't going to stop me from trying my best). Then I thought about a quiz game since we had just covered GUI. I brought these options to my mom and she gave me the idea to make a maze game. This was before we covered the maze example game in class.
Immediately I got to work creating a design document and gathering assets for my game. Assets take time to make and with ~2 weeks left, I didn't want to go through the trouble and potentially sacrifice the game quality. I made a cover art in Photoshop:
Second Step: Making the game in Monogame C#
Have you ever tried to do a lot of things all at once? The end of the semester is always hectic with all there is to do. When making June's Butterfly Scavenger Hunt, I had to take a couple of days off from helping my team finish Sharp Scholars and finish one last assignment for this class. I still had to study for my finals so I had a weekend to make the game, plan the presentation, record the video needed, and submit it. Did I mention it was my sister's birthday and she was finally home from her first semester of college?
Since the last assignment was the maze game, I started with that as a base. I added a title and end screen that welcomes you into the game and shows your score. Then I added all of my assets. I had to change the butterflies and bees a few times since the original assets wouldn't load correctly. Then I added the main music which I technically messed up on but we'll get to that in a minute.
Changes & playtest
So far, nothing about the maze was too bad. I changed the color of the maze using a lighting technique we used in a different assignment/lab and I made my own version of the maze using a maze generator, inverting the colors in Photoshop, and making a normal map using Crazybump. After all of that, I added a timer so you have a limited time to collect butterflies and sting bees so you could try to beat your previous score and music that would play if you caught a bee but turn back when you caught a butterfly. Why did I do this? Simple, I wanted a jarring effect to indicate the bee stung you and that's why you lost all of your butterflies.
Actually, I made 3 different versions of the maze
I had my uncle playtest and it was very entertaining. After a few adjustments and some back and forth with my teacher and my TA, the game was done. My professor was able to help me give color to all my assets except one and it looked a lot better.
There were still some issues...The above probably makes it sound like I had no issues making this game. Sorry, that's not my intention. For some reason, I wasn't able to rotate the main character, without messing up the collisions of the maze so I left her in a sideways position. Another issue was coloring the player's character. I did the exact same process for the butterflies and bees and it didn't work. I tried everything I could think of to try and get these two things to work but I couldn't. With everything else colored in though, the player character being white doesn't look terrible.
The other issue I ran into is the maze itself. I couldn't figure out a better way to light the whole maze so that you could see where you were going. The game was still playable but in some places, it was hard to see.
Third Step: Presentation
Even though I made a video, I ended up changing a few things last minute and ended up presenting it over Zoom. Since this class probably uses the same final project every year and I'm not about to violate academic integrity, I screenshot my game to show you even if I don't think I can upload it to ChickenStarRocket, Gumroad, Itch.io, or Gamejolt.
Mistakes were made
So you know how I said I put music in my game? I didn't know this but with the code I had, it would blast the music at full volume over zoom. It wouldn't be like that on my device but my poor classmates and professor had the two songs blaring in their headphones. Oops.
Because of that, it felt like the people I was presenting to didn't like my game which I tried not to take personally for a project I had spent so much time on. One of my classmates reached out to me privately and said they saw how much effort I put into it so I know this wasn't true but I think it's a good reminder that in zoom chat, it's best to extend grace, patience, and kindness to others. I remember feeling a bit dejected after the presentation, but you know what? I still got an A on the project. So, I consider it well done.
Thank you for reading Monogame C# Game Engine Final Project, I appreciate it. Comment below if you've ever worked with Monogame C# and your experience. If you like my content, consider subscribing to my mailing list, I'll see you in the next post!