Useful Tips

Econ dude


The development of computer games can be done by one person or the company (development team). Commercial games are created by development teams hired by one firm. Firms may specialize in the production of games for personal computers, game consoles or tablet computers. Development can be financed by another, larger firm - the publisher. The publisher at the end of the development is engaged in the distribution of the game and incurs the associated costs. The opposite approach is such a development, when a company distributes copies of games on its own (without the participation of publishers), for example, by means of digital distribution.

The development of the largest budget games can cost tens of millions of US dollars, and over the past decades [ when? ] these budgets have been steadily growing, as have the number of development teams and development timelines. So, in the late nineties, a game for the PlayStation console for the end customer could be made by a team of 10 people per year, for PlayStation 2 (the first half of the 2000s) a team of 30-50 people and two years of development were needed, by 2012 it’s It was already about teams of more than 100 developers and a term of about three years. According to Alex Moore, a game designer from Sumo Digital, if the price of the game for the end consumer would increase in the same proportion, games in 2012 would cost $ 1800, in other words, to recoup the increased budgets while maintaining the same prices in stores, publishers must sell a lot more copies of games.

A big-budget game for two platforms - the Xbox 360 and PlayStation 3 - cost an average of $ 20 million in 2012, and in order to pay off, it was necessary to sell about two million copies.


In the early 1980s, after the first home computers and game consoles appeared, one programmer could manage almost all the tasks associated with developing a game. The development of modern games requires a wide range of skills and support staff. To work on one project, entire teams are required, which usually include representatives from a number of specializations.

How to create a game yourself?

To create a game you need to know the programming language, and now they are all in English, and they are complex, they have their own, so-called syntax, which you also need to know. So you imagine creating a game, right?

Of course, almost all high-budget games are made using one of the key languages, but for a beginner, even this is not necessary to know.

There are special programs for creating games, one of which is Game Maker. They were created specifically for creating games (the program is called the game creator). Personally, I work in Game Maker and it allows me to make quite high-quality games for any platform, from android to ios.

You can also advise Unity or Construct 2, as good alternatives.

All these tools are developing, and for Game Maker Studio 2 the second part has recently been released, about which I wrote here: What's new in Game Maker Studio 2? GMS 2 review

My personal opinion is that Game Maker is one of the most convenient programs for creating games specifically for beginners, while mastering Unity from scratch can take much more time.

If you choose Game Maker, then my blog and channel will significantly help you in its development, but if you decide on Unity or something else, there are also a huge amount of free high-quality educational materials in Russian.

In any case, the first (zero :) stage is the choice of a program for creating games.

The first stage is the design document

Next you need to create a design document for the new game. In other words, you need an idea for the game. What will the game be about? What will happen there? What kind of genre will it be? How much time and money will development take? There are a lot of such questions, and before starting to create a game it is very useful to make some kind of rough plan.

Basic things about how to write a design document for the game, you can find here:

  • How to write a paper game design

Believe me, without a preliminary plan and purely on enthusiasm with a high probability you will not finish the game.

The main and main part of creating a game is, in fact, its creation, writing code. It all depends on the environment and the program in which you make the game, however in the Game Maker and for beginners there is a drug and drop system - drag and drop.

A similar system is not only in GM, but also it is, for example, in map editors and designers for popular games. By the way, it is with mods for popular games that I recommend you start making games.

  • Where to start game development

To make your first game from scratch you do not need to know the programming language, just use the drug and drop system, which looks something like this:

A remarkable feature of Game Maker Studio 2 is that there all these elements are automatically decrypted into the program code that the developer sees.

This allows you to gradually learn the code and move from drug and drop to coding.

Specific questions like: how to make a movement, how to make a shot, what are the effects and all that jazz, you can find on my youtube channel in the form of special lessons on the basics of creating games.

How long does it take to create a game?

The question is complex, it all depends on your skills, on what kind of game it is and other factors.

Sometimes an experienced person can make a simple phone game in a couple of weeks, sometimes medium-quality games are made by a small team of several people in 6-12 months, but large projects are made by large studios and development can take 1-2 or more years, while work a team of 100 or more people.

According to approximate data, the creation of one major game takes about 2-3 years for a team of 200 people, if we are talking about serious projects such as GTA 5.

At the same time, do not forget that there are exceptions to the rules. Notch wrote the first version of Minecraft in a week and this version already had most of the basic structures. but in the end, the development took several years, although unlike GTA, a very small team worked on Minecraft, and the revenues from Minecraft were very serious.

Although this is more an exception, not a rule. Now the competition is much higher and such super successful and super cheap projects appear less and less.

The third stage - graphics

Graphics are usually done in parallel with the process of developing and writing code, and usually it is the individual. It is very difficult to combine the work of not only a programmer, but also a designer, but sometimes it can be done alone, in addition, some projects do not require very high-quality graphics, or ready-made pictures and sprites are taken.

  • Read: Where to get sprites for games?

Graphics and drawing is a very expensive process.

In my experience, if you make the game alone, it can take 40-60% of the total time spent on graphics. Essentially, for an indie lone developer, good graphics can double the total time it takes to create a game. And if doubling from 1 month to 2 is not scary, then doubling from 2 to 4 years is a lot.

Therefore, it is highly recommended for novice developers to use all possible ways to get free graphics (maybe take an artist / designer as a share) or to make the graphic design minimal as the first games.

In extreme cases, you can order graphics separately on the side, using outsourcing.

However, if you want to do everything yourself, there are many ways to learn how to draw. I am also learning (recently bought the tablet) and for teaching drawing I can advise you some good YouTube channels:

  • Good YouTube channels about Gamedev and Graphics

How long does it take to study drawing?

In general, like any business, you can and should learn all your life, but there is no limit to perfection. However, look again my drawings.

Well, horror isn’t direct, is it? Bad of course, but not straight here?

Well, I drew this with a computer mouse in a very simple graphic editor, and I learned to draw for 1-2 months, drawing 1 picture a week, maximum.

I think in a year you can reach a very good level if you devote 1-3 hours a day to drawing and studying the theoretical base.

I have a video (16 minutes):

Project selection

So where do you start? It’s easier to answer where to start is not worth it, namely with large projects, such as full 3D FPS, MMO or even a long platform game of the 16-bit era. The most common mistake of novice developers is to start with a big project based on the Cool Idea or take a project that seems simple and end with a half-finished bunch of spaghetti code. Initially, small projects should be created.

In early projects, your main goal is to study, not to implement Cool Ideas. By keeping the project small, you can focus on learning new techniques, rather than spending a ton of time managing code and refactoring. Despite the fact that your Cool Idea can be drop dead awesome, the reality of the development industry is that the larger the project, the more likely it is to make a mistake in the architecture. And the larger the project, the more expensive this error is. Remember the story of Daedalus and his son Icarus? Daedalus created wings of wax and feathers for his son. He warned Icarus not to fly too close to the sun. But Icarus ignored the warning and the wings melted, and then gravity overtook him.

Therefore, remember: do not fly too close to the sun on your new programmer wings.

Considering all the above, here are a couple of tips on where to start.

Graphics and event processing

If you have never programmed anything related to graphics or a GUI, you should start with something small to “wet your feet”. My first project was tic-tac-toe, so even I had a modest start. A couple of ideas for the first project:

  • Simulator one-armed bandit

  • Black jack

  • Tic Tac Toe

  • Four in a row

The goal of your first project is to move from console development to event-driven graphics applications. He will also teach you the fundamentals of game logic and architecture. I recommend something step-by-step, because motion games are a completely different beast.

Try to keep the project simple so that you can complete it and not lose interest halfway, never ending the game. It is important to complete the game because you are not learning the development process if you have several unfinished games on your hard drive.

There is one point that I want to point out to those who will make tic-tac-toe or four in a row. Do not worry much about artificial intelligence now. To make a game for only two players or to play with a computer that makes random moves is enough for a start.

If before that you dealt with graphics and event processing and feel comfortable in this area, you can proceed directly to the next step.

Synchronization, movement, collisions, animation

Now that you've got enough of the graphics, it's time to do something in real time. Here are a couple of suggestions:

  • Duck hunt

  • Pong

  • Space invaders

  • Galaga

  • Tetris

Here you will get acquainted with movement, time, animation, collision detection, the game cycle, calculation of points, victories and defeats and other important basic concepts used in each game.

Duck Hunt and Pong are good projects for those who already have experience in programming graphics and events. They have simple collision detection and all the important basics of real-time games.

Space Invaders and Galaga are good choices for the second / third project. They have levels, so you will need to learn how to move from level to level using a state machine. You can read about finite state machines here. Games in the style of “shoot them all” also require the creation of simple patterns of behavior for enemies, which is a step towards artificial intelligence.

Tetris is good for a second / third project. It has very little logic needed to create a puzzle game. This is a decent-sized game, so you'll have to learn how to split your program into multiple source files, which you can read more about here. Do not underestimate Tetris. I underestimated and just look at this creepy mess in the Lazy Blocks code.


A typical newbie mistake is trying to make the Best Game of All Time, ending with reengineering. That is, when he tries to write the best game / engine and it all ends up using only a small part of what has been written.

When I was a beginner, I reengineered AI for tic-tac-toe. I wanted to make a game with invincible AI. I managed to achieve this by programming a computer to know all the possible traps. Sounds cool right? It took almost 40,000 thousand lines of mostly copied code and a month of my free time.
Later I learned data structures and learned about the Minimax algorithm, which, with a smaller code size, not only did the right thing, but also did it better.

So learn from my mistakes and do not be too ambitious. Focus on learning how to make games, not just make them.

Planning, collision analysis, physics, levels, artificial intelligence

Now that you have two or three small games behind you, it's time to make your first major project.

So far, you have probably programmed as you have to. It will end at this point. In the real world, most development processes are completed before the first line of code is written. Nothing could be worse than the realization that in order to add to your game what you want, you will have to throw out all the written code because you did not plan everything in advance. Now that you have experience creating games, you know what the development process consists of. Now you can plan the games before you start making them.

Now about your next game. Break Out and Puzzle Bobble are good for the third project because they include advanced collision recognition and physics. Physics is important because it gives the game a realistic feel. Even Super Mario Brothers has a sense of gravity and inertia. Billiards is an excellent project for those who want to strain gyrus with physics.

In games like billiards, you need to not only detect collisions, but also process them in a specific order. Collision handling is dramatically different from its detection. Although creating billiards or a 2D platformer may seem easy, collision analysis in the correct order is a confusing process and should not be underestimated.

Break out and Puzzle Bobble also include level design and require loading and releasing their resources. Creating a level editor for the game is a good experience. Editors allow you to easily create levels and do not force them to solder into the application. I have an article (eng.) About creating a level editor.

You might also want to practice writing artificial intelligence (AI). One option is to return to tic-tac-toe or four in a row and write an invincible AI. Now you should already know the data structures and be able to use the knowledge of trees to use the Minimax algorithm. With this algorithm, you can calculate all the possible outcomes of tic-tac-toe and create an invincible AI. It's funny to upset your friends with it. You may also want to do different levels of difficulty. A game does not bring joy if it cannot be won.

Pac Man is a great way to practice writing AI. You will need to know the tree / graph structures and search algorithms, such as A *, so that the ghosts can go through the maze. It will also be necessary to make the ghosts work in a team. All this comes in handy when you make games with complex AI, such as real-time strategies. You can read about the basics of AI here.

Platformers, Action / Adventure, RPG, RTS, engines

Now that you have gained the experience of creating a well-planned game, you are ready to create an Action / Adventure / Platform. It will be the culmination of graphics, motion, animation, collision analysis / detection, physics, AI, software architecture and everything else that you will learn at this point. For those who are more ambitious, you can suggest making a real-time strategy (RTS) or role-playing game (RPG). Be careful, because RPG and RTS are really huge projects.

RPGs have a complex architecture and require a lot of planning. You will need to plan each weapon, armor, accessory, attack, item, spell, summon, enemy, card, boss, dungeon, etc. to the smallest detail. This should all work in harmony, and to put it mildly, this is not an easy task. So if your design project looks like a script or a comic, you will need to do more a lot of work.

RTSs are also architecturally complex and also require a lot of AI. You will need to do a search for the path for the units, receiving commands by them, different behavior depending on the commands received. If you've never done AI before, it would be best to start with the Pac Man clone to get started.

You will probably have to make an engine for your game for the first time. What should be avoided is the creation of a universal engine. When creating an engine, do not try to make it suitable for any game. Если ваша игра требует x, y и z, делайте движок который умеет x, y и z. Движки создают исходя из того что нужно для конкретной игры, а не из того что любой игре может потенциально понадобится.

Другая распространенная среди новичков ошибка — это попытка создать движок в качестве первого проекта. И обычно это универсальный движок. Вам не нужен движок с фантастической графикой для создания Pong'а или Space Invaders. Программируя, легко закопаться в деталях. Концентрируйтесь на общей картине и завершайте свои игры.

It seems everyone wants to do the next big MMO. Creating online games is not something you can quickly understand. I realized this when I tried to do online poker right after the completion of tic-tac-toe.

Adding a network greatly complicates the game. When one player does something, you should send information about it to everyone else. It's like if your right hand did not know what the left is doing. You will also have to choose between loading the server and what it can control. The more the server part does, the less opportunities there are to cheat on the client, but this also means a greater load on the server. For action and other high-paced games, you'll have to worry about network latency and packet loss.

You should completely finish at least one well-planned game before you try to make a network game. As the first network project, try to do something that is not critical to speed. For example, a simple chat server / client would be good practice. You can also return to the tic-tac-toe / four in a row and add the ability to play online on them. Alternatively, try making a network card or board game.

After your first network project is ready, try to do something in real time. In your first network application, you probably used TCP to make sure that the data you receive arrives in the order in which you sent it. For games in which there is a lot of action, the delays created by TCP will probably be too large, so you will have to use UDP. UDP does not guarantee the delivery order as well as the delivery itself in general. Since UDP does not do additional integrity checks, it is faster. You will have to sacrifice the ease of using TCP in exchange for UDP speed and the need to independently verify the integrity of the data when creating the game.

Before making 3D games, you should make at least one well-planned game and have a good understanding of three-dimensional vector mathematics, linear and Newtonian physics. Here you have to deal with vertices, textures, lighting, shadows, determining the interaction with objects in three-dimensional space, loading models and other difficult-sounding things.

The good news is that if you have already made 4 or 5 games, you already know the basics necessary to create a game. You are already familiar with the development process and know your abilities as a programmer. No matter a three-dimensional shooter or two-dimensional, he is still a shooter. 2D RPG or 3D RPG is still an RPG.

Do not consider this an excuse to skip 2D and go straight to 3D. Before you learn to run, you need to learn to walk.