TheFreedomAccord Logo. Learn. Explore. Create.

Game Development Roadmap

Hello and Welcome

If you are like me and you have trouble finding a general outline of where to start with game development. And you would like a more direct pathway of learning that you should be heading toward. Then this post may be for you.

 

This is by no means a comprehensive straight path to follow. There are plenty of better guides for doing each individual thing I’m laying out in my roadmap. But it can give oversight on things you’ll want to learn in the gaming world and some links to those places.

 

The links and sources are by no means the first port of call for all the topics. But can be a guide in starting your first step.

 

Research and Decisions

You have already decided to make a game or become a developer. Great, that’s the first level completed. Now, the second level. What path do you choose from here? There are a few decisions you can make from here and no one path is the right one. Everyone has a different method of learning.

 

Here are some steps you can start with to give you a kick start to developing your own game

 

Choose an engine to start with

If you want a tough challenge try to create your own engine. Learning an engine after you’ve gotten some basic software and game development knowledge is also a good idea. If you have coding experience already that is a bonus. The engine will throw you into a variety of parts of common game development components. And challenge you to work out how all those components function together and what can you do with them.

 

It’s especially useful in understanding what’s required to make your game idea. If you do start an engine from scratch, you can build out a small simple engine pretty fast. But the larger and more components it gets. It can quickly become complex. Lots of planning and development goes into creating engines with the requirements they need. Even large teams of people working on an engine will struggle to create one that has many bug-free features.

Choose a programming language. There are many languages you can code to create games. And sometimes in development, you can use more than one programming language. As many systems and server architectures run in different languages.

 

C# and C++ are some common languages used. Common examples are C++ in the Unreal Engine and C# in Unity. While some game engines only need to be coded in one language. Having a healthy understanding of coding, in general, will help you. Especially if you intend to create your own engine.

 

Choose a style of game you want to make:

There are so many games. And such a variety of genres, styles and types. You don’t have to choose a certain style of game to develop and stick with it. But it’s a good idea to know if you want to make 2D or 3D, Pixel or realistic games. Certain engines and languages may provide better support in development for those styles.

 

Check out the processes that you can go through in the life cycle of creating a game. Watching and listening to videos on the GDC can help give an idea of what it’s like to create a game. What’s involved in every process. There are also breakdowns of game developers’ projects and their process. It can delve deep into what it’s like to be a game development in this current day.

 

Think about what you can create by yourself. Or what sort of team you would need. Is it achievable? What resources will you need? How long will it take? Do I have what I need to create it?

 

Find Communities and Communicate

You will encounter many errors that leave you scratching your head for hours. Sometimes for the smallest thing which leads to many thrown things around the room. Be patient. Take a step back and see if there isn’t another way of fixing it.

 

Join communities that can offer you insight and answers to solutions. Some of these communities love seeing new projects developed, and may provide help. If not criticism.

 

There are more ways to find the solution to your problem than a google search. And even a google search can be an art to find exactly what you’re looking for.

 

Find answers to your questions

Microsoft Developer Network (MSDN) –

  • The developer network focuses on Microsoft-related products. It helps in providing technical documentation to clients and users. With a focus on their operating systems, Visual Studio, APIs and programming languages.

StackOverFlow

  • More for software development but a leader in community programming. You can find many answers to programming and language queries. Be aware when posting for help that you are clear about your question and what the problem is. What attempts you have made and what have you encountered so far.

– Google –

  • Finding the right answer to your query can be difficult. With so many results and the first page of search results not always giving you the answer you want. It can get very frustrating. Changing keywords until it lands on the most relevant information is a gamble. But it usually pays off.

 

Use Tools

There are some tips and guidelines for using google search as a developer. That may help you find specific solutions to the many errors you will come across developing. To those problems, I say. Not this day!

 

Web Developer Tools

  • There are a set of web developer tools that come with web browsers, such as Chromes Devtools and Firefox. They allow diagnosing, editing and other features focused on web building. But their functionality can be helpful if your game requires web interaction.
  • Alongside them, other similar tools can help with programming and development. Such as IDEs. The most popular one is Microsoft Visual Studio. 
 

Game websites and forums to guide you in development

 

 

You should gain a basic understanding of these things before you delve deeper

Learn C/C++ & C# – As these languages contribute a lot to game development and used often with large communities. Studying the internal structure and understanding the basics of the languages will help. It will aid in deciding which language to focus on and the engine to choose.

 

Learn Data Structures – Knowing how data structure and behavior works are important. Get in the mindset of thinking how the data property works. Make sure to focus on concepts instead of time complexity.

 

Learn Algorithms – Understanding code instead of memorizing it will be beneficial. Once you understand the structure and how algorithms behave. Then move onto practicing solving algorithmic problems.

 

 

Version Control

Version control and tools like Git & GitHub can be very helpful in your game development road. Perforce is a great choice for the Unreal Engine.

 

Software development of any kind may develop alongside a version control system. It gives you a great source control of your project. And Revision control allows you to track changes to documentation and config files. The real meat of the idea is to have many versions or copies of your project. With the ability to rollback changes from your trunk, or merge new bits of code through branches.

 

With software development getting more complex over time, and some projects becoming massive. It is good practice to manage it through version control. Why have a tree without branches?

 

GitHub is a great way to get involved in other projects people have made available. People can contribute to the works of others. Helping to create awesome projects and software. It allows you to look under the software’s surface to see the code behind it. And everything involved in compiling it together. It’s also a perfect place to contribute to communities and project work to gain experience. Some people think software development is an inclusive career. It’s much more social and reliant on others than some realize.

 

Game Mathematics

Maths!? in my video games!?

 

Numbers. Calculations. Angles. Using all your brainpower to make that cube move in the right direction. Guess I’m out of luck… There are many articles and help for those having trouble understanding math. And for those good at it, there is still plenty more methods and specifics to learn in game development.

 

Coding with IDEs, the engine and plugins, can reduce a lot of the actual calculating of the equations. Leaving you to find the correct, or best piece of that math pie to insert into your code without having to solve it. So far, on my game development journey as someone only a few months in. While I have had to learn new math I’m unfamiliar with, leading to a few question marks popping above my head. It hasn’t been that bad. So far.

 

It will get harder and more difficult as development gets more complex. But even though I was bad at math in high school due to daydreaming and distractions about games. Combining something I’m passionate about, like games, with math. It makes it more interesting and fun to do. Which has allowed me to become more motivated and focused.

 

Find out what you love about game development, and if you don’t have a love for math as I do yet. Finding new techniques and ways to incorporate them into your projects. Is a good way to go.

 

Here are some of the main branches of math you may use during game development

Algebra

Trigonometry

Calculus

Linear Algebra

Discrete Mathematics

Applied Mathematics

Engineering Mathematics

– Numerical Analysis

Probability and Statistics

 

You may not always be using these types of math to apply to your game. In my current Unity learning, already I have come across math methods I have now used many times already such as:

 

Delta Time

Unit and scaling vectors

Dot and cross

Scalar manipulation

Matrices

 

Game Physics

You know those hilarious videos and gifs of characters and objects flying around. Behaving opposite to their intention. You can thank game physics for that. Although some of those broken physics make for great laughs.

 

The laws of physics applied into a game ground your characters and allow motion of rigid bodies and more. In your development, you will come across the need to apply physics to appease some function. Ground your world and the objects inside it. So your game doesn’t end up in those videos.

 

Unless of course, you want all your objects flying around with no physics attached to them. Goat simulator is a great game example of physics in action.

 

One common piece of physics I have encountered so far is Collision detection. Very handy for stopping objects from going through each other.

 

Game Physic topics you should learn

Classical Mechanics

Optics

Fluid Mechanics

 

Programming Languages

The blocks behind the building. Programming languages are the foundations of computer and software development. They allow us to create amazing applications, games and many other great gadgets. All by writing beautiful code. It’s like a spoken language. But in the forms of algorithms, computations, numbers, syntax and more.

 

When I started software development less than a year ago. Before my path into game development, I started learning Python and JavaScript. As I got more into game development, my main focus became C#. And now it’s all C++.

Some programming languages are more complex than others. With many differences in how they get written and read. Find the correct language you would like to use. Be aware that certain languages need a specific engine or development. Don’t start with Assembly though… Unless you like pain.

 

Some common and popular languages:

– C/C++

– Assembly

– C#

– Lua

– Python

– HTML5

 

More Game Engine information

Construction, but for nerds. You could try to build your own as a start. It would be very hard, and it would lead to a good understanding of how engines work and run. But it’s not recommended unless you can’t find an engine that has the mechanisms that you want. But people new to development, in general, should understand that you don’t need to reinvent the wheel. I started with Unity, which to me was the right choice I made.

 

I would love to one day develop my own engine for my own games. But since I’m self-learning and working on other projects. Getting to understand a popular engine with all the helpful resources at my side has been a great boon.

 

You’ll find many game engines differ in how their framework runs. And each one may have pros and cons to them, which is up to you to find what ones work best for what you want to achieve.

 

Some common and popular engines:

Unity

Unreal

GameMaker

Construct

CryEngine

Godot

Cocos2d-x

 

Graphics

The technology that allows you to enjoy beautiful spells cast across your screen. View the wonderous sceneries and spectacular cinematics conjuring up in your video games. Gives you those goosebumps when something epic occurs. Graphics are great.

 

They allow your computer to run graphical applications. Rendering the graphics to your screen. There is a variety of graphics software used in the graphics department. Game developers can choose which method to go with to deploy in their game. Some engines support specific graphical processes, so finding the right one for your development is key.

 

Common graphic software:

Vulkan

WebGL

OpenGL

Metal

DirectX

 

Computer Theory

A theoretical computing branch involving science and mathematics. It involves the logic of computation, automation, and algorithms. It has a lot to do with creating video games. Some major aspects involved include things like:

 

Operating systems: Windows, Linux, Mac

Artificial Intelligence

Computer Graphics

System Programming

Database Management

Computer Architecture

 

The fundamentals of these topics can help increase the complexity in your projects. And further your understanding of your computing at the same time.

 

Game AI

How do you like your NPCs? Do you like them to be able to walk at your speed? or would you rather they decide for themselves? Want them to knockout your character and steal all your items as he’s walking behind you?

 

Artificial intelligence paves the way for how NPCs interact within your game. A game with good AI can change how the game plays, and with it, your enjoyment. AI plays an important role in game development trends currently. It’s evolving as technology gets better. And its use in games expands to more than NPCs.

 

Some things you’ll have to understand with AI in game dev is:

Decision Making

Movement

Pathfinding

Strategic and Tactical AI

Execution Management

Event Management

Creating content

Knowledge about board games

AI Learning

 

Graphics Theory

This the difficult work behind the 2d and 3d graphics we see on the screen. There are many moving complex parts. All which you should get an understanding of if you want to create your own game. Depending on what type of game you want to make like, 2d or 3d.

 

Creating things like 3d characters, drawing models and environments. Shading. Lighting and rendering. Collision Detection and techniques used. There are many facets to creating graphics in games. An understanding of 3d in general and lighting can help with how you illuminate and create in your game.

 

I can’t delve too deep into this yet as I have a limited understanding of it all. My foray into Maya and other software has only started recently. And with minor attempts in texturing and shading. It’s going to be a long, but well worth it process.

 

A list of techniques and topics common in game development:

Polygonal Techniques

Image-Based effects

Pipeline Optimization

Intersection Test Methods

Curves and Curved surfaces

Transformations

Collision Detection

Shading

Texturing

Lighting

Algorithms

 

That’s all for now. There is so much information out there for learning game development. So make sure to check it all out to see if the material is right for you. 

This post will be revised in the future with better information and a more streamlined process. Cheers.