An Introduction to Game Development

Published May 24, 2023, updated May 24, 2023

gamedevguide

This content was brought over from the old version of my portfolio blog, so there may be some inconsistencies in styling or formatting.

So you wanna make video games? Well, you've come to the right place! This document will teach you the basics of game development, and give you a solid foundation to build on. This document will cover everything from general game design, to programming, to art, to sound, and more. It will also cover some popular game engines and resources, and include plenty of references to videos, books, or articles.

This guide was made for the Mount Royal University Game Design and Development Club.

Table of Contents

Game Design

What is Game Design?

Game design is the process of designing the content and rules of a game. This includes the game's story, characters, environment, props, sound, interface, and more. Game design is a very broad topic, and can be broken down into many sub-topics. For example, level design is the process of designing the levels in a game. This includes the layout of the level, the placement of enemies, the placement of items, and more. Another example is character design, which is the process of designing the characters in a game. This includes the character's appearance, personality, abilities, and more. Game design is a very important part of game development, and is often overlooked by beginners. It's easy to jump right into programming, but it's important to lay some groundwork before anything. It's important to understand that game design is not just about making a game look good, but also about making it fun to play.

What are some different genres?

Arguably the most important part of game design is the genre. The genre of a game dictates what type of game you're making. There are many different genres, and each one has its own unique set of rules and mechanics. Some of the most popular genres are:

  • Action
  • Adventure
  • Role-Playing
  • Simulation
  • Strategy
  • Sports
  • Puzzle

From there, we can break down what I call the "subgenres". The main genre of a game covers the content of the game, more the setting or overall theme. The subgenre dictates how that theme will be conveyed mechanically. Game mechanics are how you interact with the world around you, and how that world interacts with you. Some common subgenres are:

  • Platformer
  • First Person Shooter
  • Top Down Shooter
  • Turn Based Strategy
  • Real Time Strategy
  • Visual Novel
  • Point and Click
  • Roguelike
  • Metroidvania

Once you combine a genre and a subgenre, you can begin to craft your game around a set of tried and true rules or guidelines. Here are some examples:

  • Strategy Real Time Strategy
    • Age of Empires
    • Starcraft
    • Command and Conquer
  • Action Platformer
    • Super Mario
    • Celeste
    • Super Meat Boy
  • Top Down Shooter Roguelike
    • The Binding of Isaac
    • Enter the Gungeon
    • Nuclear Throne

There's tons of combinations out there, and plenty of genres and subgenres to explore.

Where do I start?

Let's go through the process of designing a game together! We'll use an old game of mine, Rorschach, as an example.

First, let's pick a genre: what kind of game do we want to make? With Rorschach, I wanted to come up with a puzzle game, so the puzzle genre was a great fit.

For the subgenre, I wanted to try my hand at a platformer. I thought these two genres would work well together, so I decided to go with a puzzle platformer!

Now, for the main mechanic. We have some rules about platformers that we have to follow, but in order to create a puzzle game, how can we modify, expand, or limit these rules to force the player to think differently? Well, what if the player can only see so many platforms? Maybe they have some sort of mechanic they have to use to see the rest of the platforms.

Now with my main idea in hand, I had a final genre and subgenre: Puzzle Platformer. I also had a main mechanic: the player must use a mechanic to reveal the platforms.

Roadmapping

When working on a project, it's good to break down the steps you'll need to take to complete it. This is called roadmapping. Roadmapping is a great way to keep track of your progress, and to make sure you're on track to finish your project. It's also a great way to keep yourself motivated, as you can see your progress as you go. Here's an example of a roadmap for Rorschach:

  • Create a player
    • Have the player move, jump, and fall with gravity
    • Have the player collide with platforms
    • Create a simple image, or sprite, for the player
  • Create a platform
    • Have the platform collide with the player
    • Create a simple sprite for the platform
  • Create a level
    • Create a level layout
    • Add a start and end point
  • Add the main mechanic
    • Add some way to indicate how much ink a player has
    • Add a way to drop ink onto platforms
    • Set all platforms to be invisible at the start of the level, and only become visible when ink is dropped on them
  • Add a way to win
    • Add a way to detect when the player reaches the end of the level
    • Add a way to change levels
    • Add restarting a level after death.
  • Finishing touches
    • Add a title screen
    • Add a way to quit the game
    • Add a way to pause the game
    • Create some sound effects
    • Create some music

That's a lot of steps, but most of them are pretty small! It's important to break down your project into small, manageable steps. This will make it easier to keep track of your progress, and will make it easier to stay motivated.

It's also ok to scrap steps, reorder things, or restart all together. Game development should be fun, and if you're getting stressed, worried, or losing interest, make adjustments to keep yourself engaged.

Game Design Resources

  • Game Maker's Toolkit

    A great YouTube channel that covers all aspects of game design. Highly recommended. This is his playlist of videos on game design, but he also has videos on specific games, genres, or mechanics.

  • WIRED by Design

    A great talk by Ian Bogost, who talks about what makes games fun.

  • Game Design is Hard

    A great video talking about the difficulties of game design.

Programming

This is your meat and potatoes, your skeleton. This is the backbone of what will become your game. Programming is the process of writing code that tells the computer what to do. This code can be written in many different languages, and can be used to do many different things. For example, you can write code to make a website, or code to make a game. You can write code to make a program that does math, or code to make a program that plays music. Programming is a very broad topic, and can be broken down into many sub-topics. Programming is a very important part of game development, and is often overlooked by beginners. It's important to understand that programming is not about making a game look good, but about making it playable, and fun to play.

Intro to Python

If you're a student at Mount Royal University in a degree that involves computing, you should be taking COMP1701. This course will cover all the basics of programming for you, and has a fantastic textbook written by a super humble dude. Python will introduce you to the concepts of datatypes, sequences, functions, loops, inputs, outputs, external files, and merging all these elements together into one cohesive package.

Here are a few resources to get you started:

  • Foundations of Python Programming

    This is one of the best online resources for learning Python. It assumes you're an absolute beginner, and is full of interactive excersizes. Not at all biased, but I am a named author.

  • Python Documentation

    This is the official documentation for Python. It's a great resource for learning the language, and has a ton of examples.

Intro to Java

This is where we start getting into the real content. Python laid out the building blocks for us, but this'll throw us right into the deep end. Object Oriented Programming is a very important concept to understand, and Java is a great language to learn it in. It's used a lot in post-secondary education, and is a great language to learn as it will introduce you to the concepts of classes, objects, inheritance, polymorphism, and more. These are critical for game development, as objects are the building blocks of your game. You'll have a player object, an enemy object, a platform object, and more. These objects will have properties, like position, size, and color. Learning how to create and use these objects is critical to game development, and to programming in general.

Here are a few resources to get you started:

  • Java Documentation

    This is the official documentation for Java. It's a... resource for learning the language, but is probably the most in-depth out there.

  • W3 Schools

    Primarily a home for documentation, W3 Schools has some great tutorials for Java.

  • Python to Java

    This was a guide I made in my first semester of University for my peers, since I work in Java professionally and know my way around. Thought I'd show people the ropes and all that.

C# in a nutshell

If you learned Java, you've learned 90% of C#. C# is a very similar language, and is used in a lot of game engines. It's a great language to learn. C# is used in Unity, Godot, and MonoGame, so it's a great language to learn if you want to use any of those engines. It's also used in a lot of professional settings, and is really powerful for making desktop applications.

  • C# Crash Course

    This is a great crash course for Java developers looking to learn C#.

  • C# Documentation

    This is the official documentation for C#. It's a bit dry, but pretty comprehensive.

Art

Art is the number one reason people will play your game, simple as that. If your game looks good, people will play it. If it doesn't, they won't. It's that simple. Art is a very broad topic, and can be broken down into many sub-topics. For example, pixel art is the process of creating art using pixels, which when used in a game, are called sprites. Another example is 3D modeling, which is the process of creating 3D models. This includes the model's shape, texture, and more. Art is a very important part of game development. It's important to understand that art is not just about making a game look good, but tying everything together.

Intro to Aseprite

Aseprite is the best tool on the market for pixel art, period. It's great for beginners, but has been used on some of the biggest indie games out there like Celeste, Unpacking, or Stardew Valley. It's a great tool to learn, and is a great way to get into pixel art. It's also a great way to get into animation, as it has some great tools for animating sprites. It's a pretty penny, but is well worth the price.

  • Aseprite

    The official website for Aseprite. You can buy it here, or on Steam.

Here are some great resources for learning Aseprite:

  • Aseprite Crash Course

    A great reference for most of the tools in Aseprite.

  • Intro to Pixel Art

    A great video on the basics of pixel art.

  • Tileset Workflow

    Tilesets are a great way to make levels in a game. This is a quick look at how to make a tileset.

  • Sprite Animation

    A great video on how to animate sprites.

  • StudioMiniBoss

    A great blog on pixel art by the lead artist of Celeste. They have some great tutorials, and some great resources.

Intro to Blender

If you're going the 3D game route, this is the tool for you. Blender is a free, open source 3D modeling tool. It's used by professionals and hobbyists alike, and is a great tool to learn. It's a bit daunting at first, but there's plenty of resources out there to help you learn.

  • Blender

    The official website for Blender. You can download it here.

Here are some great resources for learning Blender:

Photoshop for Pixel Art

If you feel so inclined, you can use Photoshop for pixel art. It's not the best tool for the job, but it's a great tool to learn. It's also a great tool for editing sprites, or creating textures for 3D models.

  • Photoshop

    The official website for Photoshop. You can buy it here for a ridiculous price.

Here are some great resources for learning Photoshop:

Extra Tools and Resources

There are tons of great tools out there that we haven't covered. Here are some of the best:

  • Piskel

    A great free online tool for making pixel art.

  • GIMP

    A great free alternative to Photoshop.

  • Krita

    A great free alternative to Photoshop.

  • Inkscape

    A great free alternative to Illustrator.

  • GraphicsGale

    A great free alternative to Aseprite.

  • PlaySCII

    A great free tool for making ASCII art.

  • OpenGameArt and itch.io

    Great resources for free game assets. Sometimes you just need a quick sprite, and these are great places to look.

Sound

A game's soundtrack is critical for establishing atmosphere, and immersing the player in the world you've created. Sound deals with both the music of your game, as well as any sound effects.

Intro to Audacity

Audacity is a free, open source audio editing tool. It's a great tool for editing sound effects, or creating music.

  • Audacity

    The official website for Audacity. You can download it here.

Here are some great resources for learning Audacity:

Intro to FL Studio

FL Studio is a paid audio editing tool. It's a great tool for creating music, and is used by professionals and hobbyists alike.

  • FL Studio

    The official website for FL Studio. You can buy it here.

Here are some great resources for learning FL Studio:

BFXR and SFXR

These are great tools for spinning up some quick sound effects. They're free, and open source, and are great for beginners. They're also totally allowed in game jams, so they're a great tool to have in your back pocket.

  • BFXR

    The official website for BFXR. You can download it here.

  • SFXR

    The official website for SFXR. You can download it here.

Extra Tools and Resources

Once again, there are tons of tools out there that we haven't covered. Here are some of the best:

  • BeepBox

    A great free online tool for making music.

  • LMMS

    A great free alternative to FL Studio.

  • Audiotool

    A great free online tool for making music.

  • Bosca Ceoil

    A great free online tool for making music, super beginner friendly.

  • FamiTracker

    A great free tool for making chiptune music, although it's a bit more advanced.

Game Engines

Tackling a game engine will be the biggest hurdle you'll face. It's a lot to take in, and can be very daunting. It's important to remember that you don't need to know everything about a game engine to use it. You just need to know enough to get started. Once you get started, you can learn more as you go.

It's also important to remember that you don't need to use a game engine to make a game. You can make a game from scratch, but it's a lot of work. Game engines are great because they do a lot of the heavy lifting for you, and let you focus on making your game. There are tons of game engines out there, and each one has its own pros and cons. It's important to find the one that works best for you.

Here are some of the most popular game engines out there. I've included a list of some of the most popular games made with each engine, as well as a table of pros and cons for each one. I've also included some great resources for learning each engine. Each engine has its own style and niche, so make sure you do your research before you pick one.

Unity (C#)

unity banner Games left to right: Overcooked, Cuphead, Hollow Knight.

Unity is one of the most popular game engines out there. It's used by professionals and hobbyists alike, and is a great engine to learn. It's a great engine for 3D games, and has the capabilities to handle 2D games as well. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game. It's also free to use, and has a great community behind it. Our executive Lawrence is a Unity expert, and is always happy to help out.

  • Unity

    The official website for Unity. You can download it here.

ProsCons
Extensive platform supportSteeper learning curve for beginners
Robust and powerful development toolsLimited visual scripting options
Large and active communityPerformance issues with complex scenes and high-end graphics
Asset Store with a wide range of resourcesLack of built-in support for certain advanced features
Cross-platform development capabilitiesLimited support for native mobile features
Powerful 2D and 3D rendering capabilitiesIntegration issues with certain third-party tools

Here are some great resources for learning Unity:

  • Unity Crash Course

    A great reference for starting in Unity.

  • Unity Documentation

    The official documentation for Unity.

  • Brackeys

    A great YouTube channel with tons of Unity tutorials.

  • Unity Learn

    A great resource for learning Unity. It has a ton of tutorials, and is a great place to start.

Godot ("python-ish", C#)

godot banner Games left to right: Usagi Shima, Endoparasitic, City Game Studio.

Unreal Engine is a powerful and widely-used game engine known for its stunning visual fidelity and advanced features. While Unity excels in 2D games, Unreal Engine shines in the realm of 3D games and photorealistic graphics. It offers a comprehensive set of tools for creating immersive and visually impressive experiences.

Godot is a great engine as it allows for several different programming languages. They have support for C# with .NET 6. which has a lot of great features, and is a great language to learn. They also have support for GDScript, which is a language similar to Python. It's a great language to learn, and is a lot more beginner friendly than C#. It's also a great language to learn if you're interested in or already know Python, as it's very similar.

  • Godot

    The official website for Godot. You can download it here.

ProsCons
Free and open-sourceSmaller community compared to some other engines
Intuitive and beginner-friendlyLimited number of official tutorials and resources
Node-based editorLimited third-party plugins and assets compared to Unity
Efficient 2D and 3D rendering capabilitiesLess robust in terms of high-end graphics and performance
Flexible and customizableLimited built-in support for certain advanced features
Supports multiple programming languagesMobile export can require additional setup and optimization
Active and growing communityLimited documentation in some areas
Dedicated support for version controlLess extensive platform support compared to Unity
Export to various platforms and operating systemsLess polished editor interface compared to some competitors

Here are some great resources for learning Godot:

Unreal Engine (C++)

unreal banner Games left to right: ARK: Survival Evolved, Fortnite, Borderlands 2.

Unreal Engine is a powerful and widely-used game engine known for its stunning visuals and advanced features. While Godot excels in 2D games, Unreal Engine shines in the realm of 3D games and photorealistic graphics. It offers a comprehensive set of tools for creating immersive and visually impressive experiences.

One of the key strengths of Unreal Engine is its C++ support, offering flexibility and performance for more experienced developers. However, it also offers a visual scripting system called Blueprints for those who prefer a more code-free approach to programming.

  • Unreal Engine

    The official website for Unreal Engine. You can download it here.

ProsCons
Stunning visualsSteeper learning curve compared to some other engines
Advanced rendering capabilitiesRequires a more powerful hardware to run complex scenes
Robust and feature-rich development toolsC++ programming can be challenging for beginners
Blueprint visual scripting systemLarger file sizes compared to some other engines
Cross-platform supportLonger iteration times due to compilation of C++ code
Active and supportive communityMore resource-intensive than some other engines
Extensive documentation and tutorialsLicensing fees and revenue sharing for commercial projects
Real-time collaboration and version controlFrequent compatibility issues between updates
Virtual reality (VR) and augmented reality (AR) supportMore suitable for larger-scale projects with bigger teams

Here are some great resources for learning Unreal Engine:

GameMaker Studio (GML)

gamemaker banner Games left to right: Hyper Light Drifter, Undertale, Nuclear Throne.

GameMaker Studio is a popular game engine for making 2D games. It's used by professionals and hobbyists alike, and is a great engine to learn. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game. It's free to use to a point, but you'll need to pay to export to certain platforms. It has a great community behind it, and is a great engine to learn.

GameMaker has both a visual scripting system, and a programming language called GML. GML is very similar to JavaScript, and is a great language to learn if you're interested in or already know JavaScript. This is VP Matthew's engine of choice, and he's spent a lot of time tweaking it to his liking. He's sometimes happy to help out. Sometimes.

  • GameMaker Studio

    The official website for GameMaker Studio. You can download it here.

ProsCons
Beginner-friendlyLimited 3D capabilities compared to some other engines
Drag-and-drop visual scriptingPerformance limitations for complex and demanding games
Powerful and flexible coding language (GML)Limited platform support compared to some other engines
Rapid prototypingLimited built-in support for certain advanced features
Active and supportive community2D-focused engine, may not be ideal for 3D game development
Extensive documentation and tutorialsRequires a paid license for advanced features and exports
Asset Marketplace for additional resourcesLimited built-in version control and collaboration features
Multi-platform supportExporting to certain platforms may require additional setup
Seamless integration of audio and graphicsLess robust in terms of high-end graphics and effects

Here are some great resources for learning GameMaker Studio:

MonoGame (C#)

monogame banner Games left to right: Stardew Valley, Celeste, Fez.

MonoGame is the open-source implementation of Microsoft's XNA framework, which is now properly obsolete. It's a great engine for 2D games, and has the capabilities to handle 3D games as well. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game. It's also totally free and open source. It's a great engine to learn if you're already familiar with C# and have strong object oriented programming skills.

MonoGame is not an engine, but a framework. This means a lot of the heavy lifting is done for you, but you'll need to do a lot of the work yourself. In a way, you'll be building the actual engine yourself. It's a great way to learn how game engines work, and is a great way to learn how to make games from scratch. Matthew's done a fair bit of work in MonoGame, and is sometimes happy to help out. Sometimes.

  • MonoGame

    The official website for MonoGame. You can download it here.

ProsCons
Free and open-sourceSteeper learning curve for beginners
Cross-platform development capabilitiesRequires knowledge of programming languages (C#)
Direct access to low-level APIsLess visual scripting options compared to some other engines
High performance and efficiencyLimited built-in tools and features
Flexible and customizableDocumentation can be sparse or outdated in certain areas
Robust community and active forumsLess extensive asset marketplace compared to other engines
Suitable for 2D and 3D game developmentDevelopment workflow can be more manual and hands-on
Compatible with existing XNA projectsLess beginner-friendly compared to some other engines
Integration with popular development toolsLimited support for certain advanced graphics techniques

Here are some great resources for learning MonoGame:

PyGame (Python)

Note: PyGame is a less popular framework for larger games, but is a great framework for smaller games. Therefore, there's no banner or games made in this framework listed. It's still a great framework to learn nonetheless.

If you're intimidated by C# or C++, PyGame is a great alternative. It's a great framework for 2D games, and has the capabilities to handle 3D games as well. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game. It's also totally free and open source. It's a great framework to learn if you're already familiar with Python and have strong object oriented programming skills.

Just like MonoGame, PyGame isn't an engine, but a framework. This means a lot of the heavy lifting is done for you, but you'll need to do a lot of the work yourself. You won't be goven tools like a level editor or a sprite editor, so you'll need to either implement these yourself, or use third party tools.

  • PyGame

    The official website for PyGame. You can download it here.

ProsCons
Beginner-friendlyLimited built-in features and tools compared to other engines
Easy to learn and usePerformance limitations for complex and demanding games
Python programming languageLimited platform support compared to some other engines
Lightweight and efficientLack of built-in support for advanced graphics techniques
Extensive documentation and tutorialsLimited visual scripting options
Active community and resourcesLack of a dedicated integrated development environment (IDE)
Cross-platform supportMay require additional libraries for specific functionalities
Open-source and free2D-focused engine, may not be ideal for 3D game development
Integration with other Python librariesLess suited for large-scale and complex game projects

Here are some great resources for learning PyGame:

Extra Tools and Resources

There are plenty of other great frameworks and engines out there. A great trick is to look into what your favourite games were made in, and see if you can find the engine they used. Here are some of the best:

  • Construct

    A great engine for quick 2D games. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game.

  • RPG Maker

    A great engine for making RPGs. It's a great engine to learn if that's a genre you're interested in. It's able to export to a ton of different platforms, and has a ton of great tools to help you make your game.

  • Stencyl

    A great engine for Mobile Games, although reviews are mixed.

  • Phaser

    A great framework for 2D games with JavaScript. It's used by hobbyists, and is a great framework to learn. It's totally free and open source.

  • React

    This is a web framework, but can be hackjobbed into a game if needed. Matthew did this for Ludum Dare 53, and placed 10th in mood overall. It's a great framework to learn if you're interested in web development, less so for game development.

  • PICO8

    This is a game engine, but it's a bit different. It's a fantasy console, which means it's a game engine that's built to look like a console. It's a great engine to learn if you're interested in retro games, and is a great way to learn how to make games from scratch. It's also a great way to learn Lua, which is a... language to learn if you're interested in or already know Python.

Extra Tools and Resources

What Else Is There?

This is a great question! There's a lot of other things that go into game development that we haven't covered. This is just a bare bones guide to get you started. As you begin your journey into game development, there are tons of other things you'll need to learn and develop. This isn't a comprehensive list of skills and tools you need to learn, it's merely a stepping stone. Make sure you're exploring other resources, and learning other skills.

Here are some extra tools, resources, guides, websites, and references that are super helpful to get you going. Make sure to do your own explorations as well, and find what works best for you. Remember, this is a journey, and you're just getting started. If you have any references you've discovered that you'd like to share, feel free to make a pull request and add them to the list!

Books

Although software development books are normally a bad investment, as the world of programming is changing so rapidly, there are a few resources that go beyond just language comprehension. These books are great for learning ideas beyond just programming, and are great resources for learning how to make games.

  • The Animator's Survival Kit

    This is a Masterclass on animation, and is a great resource for learning how to animate. It's a great resource for learning how to make your game feel alive, and is a must read for any animator or artist. I really encourage you to pick a physical copy of this book up, as it's gorgeous.

  • An Architectural Approach to Level Design

    Written by a professor at George Mason University, this book is acts as a Bible for level design. It's a phenomenal resource for everything level design, and is a must read for any level designer or video game enthusiast. There are some free PDF versions out there if you look hard enough, but I encourage you to pick up a physical copy, as it's a great book to have on your shelf.

  • Spelunky

    Written by Derek Yu, the creator of hit Roguelike game Spelunky, this game covers not just the development of Spelunky, but the culture of the indie development scene. It's a great read, and is a must read for any indie developer. It also has a phallus on the cover, which is funny.

Videos

There's a wide range of indie developers out there, and a lot of them have some very informative videos on their lifestyles, development processes, and everything in between. They're a great resource for learning how to make games, the process of designing a game, and the act of developing a game to fruition.

  • Game Maker's Toolkit

    A great YouTube channel with tons of videos on game design.

  • Miziziziz An indie Godot developer with tons of great videos on game development and design.

  • Pixel Prophecy

    A Ludum Dare veteran with a massive catalogue of documentaries detailing their developmental processes.

  • aarthificial

    A brilliant developer with a great series of videos on conquering difficult programming challenges.

Game Developers Conferences

I'll add in a subsection for a few of the best GDC talks I've seen. These are great resources for learning how to make games, and are a great way to learn from the best in the industry. These are usually quite dense, but are well worth the watch.

Websites / Blogs

Apart from the obvious ones like Gamasutra, GameDev.net, and GameDev StackExchange, there are a few other great resources out there for learning how to make games, such as developer's Twitters, blogs, and websites.

  • RogueBasin

    A hub of information on Roguelike games, and a great resource for everything from level generation to turn based combat systems.

  • Lost Garden

    A little trove of game design articles and essays.

  • 100 Rabbits

    A blog by two indie developers who live on a boat. They have some great articles on game development, software development, and life without a country.

  • ENDESGA Twitter

    ENDESGA is a solo developer who's made some of the most famous indie dev color pallets out there (EDG16, EDG32).

  • Lospec

    A great resource for pixel art, palettes, and pixel art tutorials.