How to Design a Game Engine Using C++

How does one make a game?

Perhaps this is a sentiment you've thought of before as you daydreamed about your video game project that could be amazing if only you could make it reality.  Of course, you could hire a small studio to make it for you, but most people don't have a spare $1,000+ laying around to afford even a few days of programmer and artist labor.  Instead, many opt for the route of building computer games themselves, since that only costs your own time.  That still begs the same question though: how do you even get started making games?

This question comes with a bunch of other questions as well.  What game engine should you use?  Where is the best place to publish your game?  How much programming do you need to learn before you start making your games?  Do you even need to know how to code to make a game?  How do you design a game?

Unity playground platformer demo

In this guide, we will aim to provide a baseline understanding of as many questions as possible, both in terms of how to plan out your video game, what engines you can use, and so forth.  While this guide won't specifically cover creating your first game from scratch, it will lead you in the right direction so that you will be able to do that via the resources provided.

So, if you're ready to learn how to make a game, let's dive in.

What is the Cycle of Game Development?

In game development, there is a general cycle that many game projects follow, whether we're talking about a huge 200 person studio or a solo indie project.  We will delve into each section in-depth, but as a brief overview, the cycle is as follows when it comes to making a game:

  1. Thinking of an idea: Developing an idea in your head of what you want the game to be.
  2. Designing the game: Developing that idea further, creating documents, and formulating each of the systems, levels, art style, etc.
  3. Making the game: This is where you begin to create the game. Many people like to develop a very simple version of their game with basic graphics to quickly get a feel for how it will play before polishing everything.
  4. Testing the game: Showing the game to other people. As the developer, you already know everything about the game, so in order to know if the game works, is fun to play, easy to understand, etc., you need people testing it out. This process should also be done regularly as new changes to the game might change how people play it.
  5. Finalizing the game: In a sense, no game is ever finished. You either run out of time or money. Eventually, you need to, or feel you need to, finish up on the game and get it out there.
  6. Publishing the game: This is when you publish your game for everyone in the world to see.

5 Steps in the Cycle of Game Development

Thinking of a Game Idea

Everyone has an idea of what their dream video game would be, but not many people can actually make that a reality. If you're wanting to learn game development, it may seem tempting to just jump in and createyour game with all the amazing technology that's available. But I don't recommend you do that. When creating a game, you need to think aboutscope. Ask yourself: how long will this take to make? Do I have all the skills required to make this game? Do I have an understanding of the game and how I might make it?

Understanding your game is the most vital part. You may have the story in your head, the setting, or some of the mechanics – but to understand your game, you need to know every aspect. How each of the systems interact, what the player can/can't do, the goal, etc. This may seem like a lot of stuff to keep track of, but do remember that large games are created by large companies.

As a solo developer, I've found the best way of creating a manageable game with an appropriate scope, is this method:

  1. Think of a core mechanic. Mario's jumping or the grappling hook in Just Cause are but a few examples of core mechanics.
  2. Develop the game around that core mechanic. Every feature of the game should encourage players to use the core mechanic.

Puzzle platformer example

Let's take Mario for example. Mario's core mechanic isjumping. Pretty much every aspect of the game required the player to jump.

  • Jumping on enemies
  • Jumping up to punch blocks
  • Jumping over gaps
  • Jumping on the flag at the end of the level

This is part of the reason why the Mario games (especially the earlier ones) were so successful. The developers focused on building the game around one core mechanic to make it as fun, polished and versatile as possible. Here's a list of resources to help you develop a game idea and figure out a core mechanic:

  • How to Come up with New Game Ideas – by Gamasutra
  • Designing Around a Core Mechanic – by Gamasutra
  • Why Your Core Mechanics Should Come First in Game Development – by Game Dev Underground

Designing your Game

So you've got an idea and need to develop it further. If you've got a small game with one or two mechanics then you could probably just keep that in your head, but if it's any larger or especially if you're working in a team, you need to document it. A game design document is what you can use in order to layout: the idea of the game, how it works, the goal, the player, interactions, art style, theme, etc. You should be able to give a GDD (game design document) to two people and have them both develop a fairly similar game. If you're working in a team, then this is necessary to communicate how you want to make your game. Here's some helpful resources to do with game design documents:

  • How to Write a Game Design Document – by Gamasutra
  • Game Design Document Template – by Game Dev Underground
  • How to Design a Game: Game Design Documents by Tim Bonzon

Now in terms of actuallydesigning the game – that's up to you. Game design is one of those fields where there's no 100% way to do something. There's no formula for creating a unique and fun game. This doesn't mean there's no good practices or guidelines you should follow. Knowing game design can help you develop a game that's engaging and easy for the player to understand. Here's some online resources which can help you in game design:

  • Game Maker's Toolkit
  • Design Doc
  • 7 Must Read Books for Game Designers
  • Basic Principles of Game Design – by Brackeys
  • Game Developers Conference

Game Designer planning out game

What Type of Game Do You Want to Create?

When thinking of a game to make, you probably also know what type it's going to be. Here's a list of different types of games and platforms you can develop for.

  • 2D is what most game engines provide and is generally the best step for beginner game developers.
  • 3Dis what many of the most popular game engines provide and is also a great first step for beginners.
  • Mobilecan open you up to an entirely new market and user interface with touch controls.
  • Virtual Realityis a rapidly growing sector of the games industry and allows for immersive experiences. There are some special things to consider for VR though.
  • Augmented Realityis a technology that has uses both in and out of the games industry – so there are lots of applications for it.

Making the Game – What is a Game Engine?

With an idea in your head and a plan down on paper (hopefully), it's time to get to the "how" in our question of how to make a game.  However, there is a crucial step that will determine the entire process: which game engine do you use and which programming language should you learn?

These are all questions you should ask yourself, but there is no one answer. What to learn will depend on the types of games you want to create, your current skills, and whether or not you even want to learn programming.

So what is a game engine? A game engine is a piece of software or a framework that allows you as a developer to create games. It provides a platform to structure your game, build levels, assign logic to objects and build it to your specified platform. There are a large number of game engines out there, with each of them providing different features and specialties.

Below is a list of some popular game engines, the type of games you can create with them, and the skills you'll need to learn. We have a detailed blog post about the various different game engines of 2020 you can read here as well in case you need a bit more time to decide. You may also want to delve into what the best coding languages are for game development too.


Unity

Unity logo

Unity, is the most popular game engine out there on the market right now, with many online learning resources to get you started. Unity prides itself on being very accessible, allowing almost any type of game to be created.

What types of games can I create? Unity is one of the most versatile engines, allowing you to create: 3D, 2D, VR, AR, and multiplayer games on a large number of platforms.

Do I need to learn a programming language? Unity uses the C# programming language, although there are many visual scripting plugins available to purchase, along with an integrated solution coming soon to the engine.

Links
  • Unity Website
  • Unity User Manual
  • Unity YouTube Channel
Tutorials
  • How to Make a Video Game in Unity – by Brackeys
  • How to Make a 2D Game in Unity – by Brackeys
  • Unity Game Development Mini-Degree – by Zenva
  • Unity 101 – Game Development and C# Foundations – by Zenva
  • Unity Programming for Human Beings – by Jesse Glover and Pablo Farias Navarro
  • Unity Animation for Beginners – by Tim Bonzon
  • Learn the Unity Game Engine in 90 MINUTES – by Zenva
  • Introduction to Game Development with Unity and C# – by Sebastian Lague

Shader Graph demo example from Unity Engine


Unreal Engine

Unreal Engine logo

Unreal Engine, is developed by Epic Games and features powerful 3D graphics. Alongside Unity as one of the most popular game engines, Unreal is also used by many AAA game studios.

What types of games can I create?Unreal is primarily a 3D game engine although it does support 2D. You can also develop VR, AR and multiplayer games.

Do I need to learn a programming language?Unreal Engine features a powerful integrated visual scripter, which is ideal for beginners. The engine can also be used with C++.

Links
  • Unreal Engine Website
  • Unreal Engine Getting Started
  • Unreal Engine YouTube Channel
Tutorials
  • Getting Started in Unreal Engine 4 – by Ryan Manning
  • Intro to Blueprints – by Unreal Engine
  • User Interface and Getting Started – by AstrumSensei
  • Unreal Game Development Mini-Degree – by Zenva
  • Unreal Engine 101 – 3D Game Creation – by Zenva
  • Beginner's Guide to Game Development with Unreal Engine – by Daniel Buckley
  • Unreal Engine 4 Beginners Tutorial – by Zenva

Game demo as seen in Unreal Engine 4 Editor


Godot

Godot logo

Godot, is an open-source game engine which can be used to create 2D and 3D games. Since the engine is open source, there is constant fixes and features being added, along with customized versions made by developers.

What types of games can I create?Godot can be used to create 2D and 3D games, with many new upcoming features to their 3D engine.

Do I need to learn a programming language?Godot primarily uses their GDScript language (similar to Python), but also has support for visual scripting, C# and C++.

Links
  • Godot Website
  • Godot Documentation
  • Godot GitHub
  • Godot YouTube Channel
Tutorials
  • Godot Tutorials – by Zenva
  • Godot Game Development Mini-Degree – by Zenva
  • Learn the Godot Game Engine in 50 Minutes – by Zenva
  • Godot Beginners Tutorial – by Jeremy Bullock
  • Your First Game – by Godot
  • Godot 101 – Game Engine Foundations – by Zenva
  • Godot Game Development for Beginners – by Daniel Buckley
  • How to Make a Complete Game with Godot – by Daniel Buckley

Godot game example in Godot Editor


Phaser

Phaser logo

Phaser, is an open-source, 2D framework for making HTML5 games. Unlike the previously mentioned engines, Phaser does not have a user interface. Instead, it provides you with a game engine library you can use while programming.

What types of games can I create? With Phaser, you can create 2D games for desktop and mobile.

Do I need to learn a programming language? Phaser uses JavaScript.

Links
  • Phaser Website
  • Phaser Community Tutorial List
Tutorials
  • HTML5 Game Development Mini-Degree – by Zenva
  • Getting Started with Phaser 3 – by Gamefromscratch
  • How to Create a Game with Phaser 3 – by Zenva
  • Phaser Tutorial List – by Zenva
  • Free eBook – How to Create a Game with Phaser 3 – by Pablo Farias Navarro
  • Phaser 101 – Introduction to Game Development – by Zenva

Phaser concept example as seen in mobile phone

Testing Your Game

Testing your game is an important part of development. How do you know if something is going to be obvious to the player? Will they know where to go? What to do? For you it may seem obvious, but for someone who has never seen the game before – things might be very different. This is why it's important to test your game all throughout development. Here's some resources for learning more about testing your game:

  • Design 101: Playtesting – by Gamasutra
  • Five Tips for Better Playtesting – by Gamasutra
  • How to Get Good Feedback on Your Game – by Extra Credits
  • How to Create a Critical Path Walkthrough on Games – by Johnn Four
  • Testing and Debugging in Unity – by Zenva
  • The Complete Guide to Debugging Phaser Games – by Ben Sparks

Finalizing Your Game

Some game developers will say that the first 90% of your game will take 10% of the time, and the last 10% will take 90% of the time. This is a bit of an overstatement, but the idea is still the same. This is where you're ironing out the bugs, adding in the final art style, polishing everything, and doing some final testing. Here are some resources to help you get through the final step of finishing your game:

  • 9 Tips To Help You Finish Your Indie Game – by Game Dev Underground
  • How to Finish Your Game – by Gamasutra
  • How to Improve Game Feel in Three Easy Ways by
  • How to Playtest your Game – Game Design Tips by Cypress Reeves

Two programmers showcasing exhaustion and happiness

Publishing Your Game

With your game now complete, you probably want to show some people. Luckily, we live in a time where putting your game out there is easier than ever before. There are many online platforms to publish to. Some are free and some are paid. Here's a list of those platforms, the requirements and how you can get started:

Desktop

  • Itch.io is a popular platform for indie developers. It's free to publish your game here.
  • Game Jolt is another popular platform for indie developers, allowing you to publish your game there for free.
  • Steam is the largest distributor of PC and VR games. $100 through Steam Direct.
  • Epic Games Store is a relatively new and growing PC game distributor, similar to Steam. Complete a form for Epic to consider your game.

Mobile

  • Google Play Store is a store for Android apps. There's a one-time $25 registration fee.
  • Apple's App Store is one of the largest mobile app distribution platforms. $99 a year to publish.

Console

  • Playstation Store is an online store for Playstation games. Free to apply.
  • Microsoft Store is an online store for Xbox and PC games. Free to apply.
  • Nintendo Game Store is an online store for Switch and DS games. Free to apply.

Virtual Reality

  • Oculus Store is an online store for VR games that use an Oculus headset. Free to apply.
  • Steam is an online store for VR games. $100 through Steam Direct.

Here's a list of resources which can help you deploy, publish, and market your game:

  • How to Market Your Indie Game! – by Jonas Tyroller
  • Making Your First Game: Launching! – by Extra Credits
  • How to Make and Self Publish a Game in 12 Months – by GDC
  • Git and Github – Version Control and Collaboration – by Zenva

Conclusion

Making a game is hard work and takes some time.  Learning these skills also won't come to you overnight.  Theory is one thing, but understanding what it takes to make a game is another thing entirely.  Even if you are an expert programmer or artist, certain phases and skills in the cycle of game development can't be skipped over no matter what you do.

But the best way to improve and learn how you make games is by making games.

So, start making games the first day you begin your learning journey, as I can guarantee it will excel your learning tremendously. There's a lot of technology out there for you to use, so don't hesitate to try different ones in order to find what serves you best.  However, the skills and resources provided here will give you a great stepping stone, and part of making is a game is how you plan to make that game.

Good luck out there, and I wish you the best of luck with your game development journey!

Don't miss out! Offer ends in

  • Access all 200+ courses
  • New courses added monthly
  • Cancel anytime
  • Certificates of completion

Related Posts

How to Design a Game Engine Using C++

Source: https://gamedevacademy.org/how-to-make-a-game/

0 Response to "How to Design a Game Engine Using C++"

Mag-post ng isang Komento

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel