Who is involved in the development of computer games. Game developer: resourceful programmer

  • 29.11.2020

Game developer is another highly paid profession that is in great demand today. Let's try to figure out how difficult it is to master it.

How much does a game developer earn?

Many people choose their future work not only by vocation, but also by the level of salary. You need to decide on the vocation yourself, but you need to think about the level of salary even before you start to master the profession. The first screenshot is a vacancy found on rabota.yandex.ru, the second is three more vacancies from hh.ru.




When looking for vacancies, use several resources. For example, for the query "game developer" there are few vacancies on Yandex, but on hh.ru there are many (218 only in Moscow) with a salary ranging from 80 to 200 thousand rubles.

What languages ​​are games written in?

The complexity of this profession lies in the fact that the developer needs to be a real polyglot - you need to know 2-3 programming languages, since there is no single correct answer to this question. Unfortunately, there is no universal programming language like G # in which all games are written.

First you need to decide what kind of game you want to write. Games for mobile devices are written in Java (for Android) and Swift and Objective-C for iOS. For simple browser games, HTML, JavaScript and RoR (Ruby on Rails) will suffice.

Create simple game for a computer you can use Python or C #. In support of my words, here is a link to the "Snake", written in Python. Note that this is a complete game with a graphical interface.

Large games are often written using their own engine. Very often the entire engine or most of it is written in C ... So, the developers of the famous Call of Duty use their own Treyarch NGL engine. Language C- difficult and few people start learning it from the very beginning. First, you need to learn simpler languages, for example, the same C #, which appeared later, but is easier to learn than C ++.

Python is often used not as the main, but as an auxiliary programming language for game development. It is often used to describe the series game processes... Therefore, it is important to know at least two programming languages ​​- C # and Python. Knowledge of the basics of databases and the SQL language will also come in handy - often the results of gameplay have to be stored somewhere, and the database is one of the most effective repositories for all kinds of information.

Where to study?

The first problem a novice game developer faces is the choice of a programming language. As already noted, everything here depends on the desired specifics - there is no point in learning Java if you want to create games for desktop computers.

The second problem is that this profession is not taught anywhere. Most universities that teach programming do not have such a specialty. Maybe, of course, 2-3 lectures will be devoted to creating a game, and you will write a simple console game in the style of "Guess the Number".

An alternative is attending special courses that will make you not just a programmer, but. The stages of mastering the profession look as shown in the graph. In four months, you will complete five practical courses:

  • basic C # course;
  • advanced C # course;
  • Unity Beginner Course;
  • development mobile games using Unity;
  • video course - the basics of databases.


As a result, you will have a resume, portfolio, certificate, two months of experience, as well as team development skills. But the main thing is that you will learn how to create multiplayer games using Unity3D. The salary level of a Unity3D developer is shown, by the way, in the first illustration.

You can familiarize yourself with the content of each course and apply for participation. The training time will be six months (together with the internship).

Many players at some point ask themselves the question "How to become a game developer?" They ask what is needed for this, whether this requires some kind of special talent or deposit, whether it was necessary to lean on mathematics at school, and so on. I'm telling you!

Hi guys!

Frequently asked questions I received from you: What does it take to become a game developer? How to become a game developer? What do you need to learn? Where to begin?

* For those who are not familiar with me in a nutshell: I am programming gameplay in a large game studio in St. Petersburg, I am interested.

I decided to answer your questions in detail. First of all, a "game developer" is not necessarily a programmer. Game developer is a generic name for many professions that are involved in game development. These are game designers, and artists (from the English. Artists), and programmers, and managers and testers. And each of these professions, you will be surprised, is not the final specialization of the developer.

For example, artists are 3d-modelers, artists and animators. Programmers are gameplay programmers, graphics programmers, and tool programmers. And, as they say, in a nursery rhyme - all professions are needed, all professions are important!

Where to start?

First of all: think about it, when you imagine the bright prospects of your dream job, what exactly would you like to do "developing a game"? What exactly do you think you will like the most? Write a script / plot? Draw characters? Planning levels?

I'm just a word of caution: when you equate "game developer" and "game programmer" you might be wrong. Choosing the wrong profession, spending months or even years moving in the wrong direction.

Why programming? Did someone tell you that programmers get paid big money? Good people get paid. As in any other profession in game development. Both modelers and artists, if they are good specialists, receive excellent salaries.

How to become a game developer quickly and easily?

Answer: No way! No courses - all the more trashy from geekbrains, or courses from "game developers" who do not practice development themselves, can teach a newbie from scratch AT ALL! And even more so - quickly.

If you watch Unity courses on how to make a snake, a shooter, etc., you will not learn anything beyond the scope of this tutorial. And such courses are full of YouTube.

So how do you become a game developer?

Answer: By hard work, diligence. Whichever field / profession you choose. If you're still in school, great! You can still choose the desired branch of development in this RPG :) Choose a university or college with the appropriate specialty and get ready for admission.

If not, look first for books and English-language courses (Russian-language courses are mostly rare shit). and move towards the goal.

But what about indie? How to make an indie game?

Yes, this is completely different. Unlike industrial developers, indie is a man-orchestra. He programs and draws and tests. And, don't be embarrassed by this romanticism, he also pays his own salary (or eats Rollton, his beloved ver-michel) and is very, very at risk.

After reading several books and looking at good courses:
- Try to develop the game yourself. If everything works out, fill up your own portfolio, and after a while try to remake it, make it better. Show employers your potential. Experience, not a degree, is the key factor in many places. And the best demonstration of experience is the portfolio. So you will break the chain: “We only need workers with work experience, but where can we get it if experience is needed everywhere?”.

- Create game mods, ask stupid questions in game making groups like ours.

- Learn some free engine like Defold, Unity or GameMaker.

- Try to learn the basics as early as possible.

- Try to get a job as an intern in some studio. In some game studios there is an opportunity to take training courses and internship after them.

- Try to endure the falls stoically! The battle is lost, but the war is yet to come!

Interview with game developers: bright professionals, representatives of professions

I ask fellow professional representatives (modelers, artists, testers, animators) about what you need to study in order to master the subject. Where to go to study and so on.

How do you like this idea? After all, the coolest representatives of their professions work in my studio! And I can catch someone out of my former colleagues, now they work in the most famous studios: Nival, Wargaming, Saber.

So, with this post, I want to start a new round of interaction with you guys and my coolest colleagues. I will write about how to become a game programmer myself, and at the same time, here is a list of topics that we can analyze together with you!

Professions in game development

Professions considered
Screenwriters Maria Kochakova's story about the profession
3D Modelers
Alena Bulgar from the Berlin studio Airborn spoke about herself and her interesting profession
Technical Artists
Georgy Matsnev told about himself and the cool Tech. arte
QA engineers QA Professionals' Stories:
Sergey Prazdnichnov -
and Yaroslav Ruzanov -
We expect great specialists
Game designers Pros' stories about game design:
Shamil Yanbukhtin -

    Game development is the process of creating computer games. Contents 1 Overview 2 Specializations ... Wikipedia

    - "Opposition" is the Russian name for a number of computer games in the real-time strategy genre, developed by the companies "Our Games", "Fireglow Games" and "Red Ice". The trade mark Opposition now belongs to the Russobit M company. Originally in ... Wikipedia

    - ... Wikipedia

    Corsairs Genre RPG Developers ... Wikipedia

    Sudden Strike Genre RTS, Real Time Strategy Developer "Fireglow Games" Publishers ... Wikipedia

    Below is a list of games ever released under one of the Dungeons Dragons settings. Game Series Setting Platforms Developer Release Date Engine dnd PLATO Gary Weisenhunt, Ray Wood 01975 1975 Dungeon ... Wikipedia

    Star Trek Games: Year Platform Name Developer / Publisher 1971 Star Trek ( text game) a lot of Mike Mayfield 1972 Star Trek (script game) PDP 10 Don Daglow 1979 Apple Trek Apple II c. 1980 3 D Star Trek Atari 800 Color ... ... Wikipedia

    This term has other meanings, see SWAT (disambiguation). SWAT (Game Series) Cover for SWAT 4 Genres ... Wikipedia

    This term has other meanings, see Confrontation. Opposition is the Russian name for a number of real-time strategy computer games developed by Our Games, Fireglow Games and Red Ice. Trading ... ... Wikipedia

    Not to be confused with computer the Fallout game FlatOut Genre Arcade car simulator Developers ... Wikipedia

Books

  • Quorum. Prove your case and decide the fate of the universe! , Sawyer Alexey. About the game In this game you have to represent your race at a meeting of the main space QUORUM ...
  • Gop with a bow. Series Ironic thriller, Sergei Baranov. The book was published in 2001, 448 pages. A cunning and daring bank robbery, fleeting fights on the city streets, ...




Who Works in the Game Development Industry

A wide variety of specialists are engaged in the development of the game in a large company, and now we will try to introduce you to most of the specialties involved in this process. All developers can be divided into groups, each of which has its own area of ​​responsibility. V general case this is:
  • design (game design)
  • programming
  • graphic content
  • testing

Design

Game design- the process of working out the basic concepts of the future game, its rules, content, game world, mechanics and gameplay. A game designer must have both artistic, technical and writing skills (for documentation, design docs).

Lead Designer, Lead Game Designer- the leader and coordinator of the rest of the design team, his responsibilities include defining and working out the key elements of the future game, interacting with other heads of other departments (art director, lead programmer, etc.), solving other design problems that cannot be or for reasons to instruct subordinate designers. V general view it is the lead designer who is the person who determines the final appearance of the game, its "essence" at the level of gameplay.

Game Mechanics Designer- a person whose responsibilities include determining the needs of the software code for the implementation of ideas and gameplay developed by the design team. A designer of game mechanics must have some technical skills in the field of programming in order to competently set tasks for the implementation of gameplay through program code for programmers.

Level designer, level designer- a person whose tasks include the creation and assembly of game levels, maps, locations, etc. A level designer can be either a highly specialized person who is only engaged in assembling locations from ready-made elements (models), or combine this position with another - for example, a level designer can also be a 3D artist.

Interface designer, UI designer- develops a user interface, all kinds of menus, HUDs, windows, etc. It is not at all necessary for him to draw them on his own, but in general it would be a plus.

Screenwriter- the person who is responsible for the textual component of the game. His duties include drawing up dialogues, working out the plot, describing all kinds of scenes, events, possible options for their development, filling in-game literature, if any, etc. - in general, everything that will make the gameplay organically fit into the game world. There is a fashion among beginners to call themselves "scriptwriters", but the real content of this word is much more voluminous than just writing a plot for a game. A much more difficult task can be drawing up consistent, logical missions and tasks, writing realistic lines for different characters - all this requires high artistic skill, language proficiency and a certain amount of talent.

Programming

Game programming- the process of creating a program code in order to visualize the game world, the player's interaction with this world and movement around it. Video game programming is divided into a large number of specialized areas, each of which is responsible for some functional part of the future game (artificial intelligence, physics, visualization, etc.).

Lead coder- the most experienced and technically savvy specialist, whose task is to bring all subsections of the game engine in the broadest sense of the word into a single working system. A leading programmer can be engaged in programming for a lesser part of his time, because its main duty is still precisely the coordination and connection of all systems into a single whole. Also, the lead programmer can write the "skeleton" of the game engine for all subsystems that other people will already be doing.

Game Mechanics Programmer- the person responsible for the software implementation of all elements of the gameplay. For example, if a game designer has provided for the possibility of using boxes as throwing projectiles, the task of the game mechanics programmer will be to make sure that the player can take these boxes and throw them.

3D engine programmer, graphics engine programmer- a specialist responsible for displaying the game world on the player's screen, shaders, graphic effects, etc.

AI programmer(artificial intelligence) - its tasks include software implementation of various models of enemy behavior, a system of triggers, conditions and other elements that control the behavior of in-game objects from the computer.

UI programmer- is responsible for the user's interaction with the game world through the user interface (UI), various HUDs, menus, etc.

Toolkit Programmer- its tasks include the creation of all kinds of utilities, editors and other tools that are designed to help artists and designers complete their tasks faster, more conveniently and better. Convenient toolkit can significantly reduce the time for creating individual elements of the game.

Network Code Programmer- is responsible for the interaction of the game via the Internet (or local network) with update servers, other players (multiplayer), etc.

Graphic content

Graphic content, assets- a set of objects in the game world that the player sees on the screen. This includes character models, environmental items, terrain, and more.

Art Director- the head of the art department, usually the most experienced employee of the art department, is responsible for coordinating the work of subordinate 2D and 3D artists, controlling the quality, making sure that the general style is maintained in all works.

2D artist- a generalized name for a number of narrower specialties. The task of a 2D artist is usually to create graphic content in 2D editors (usually Photoshop) in the form of sketch drawings, textures for 3D models, various kinds of splash screens, background images, etc. The narrower specialties of 2D artists are: concept artist, texture artist, background artist.

Concept artist- is responsible for the creation of various kinds of sketches, sketches of characters, buildings, decorations, locations, etc. - in other words, in a visual form it represents the images and ideas of the future game. The concept artist's work serves as a source of coordination of the actions of the other members of the art department, serves to demonstrate ideas to management, investors, etc.

Texture artist- his responsibilities include the creation of various textures for 3D models created by 3D artists, in accordance with concept drawings.

3D Artist- a generalized name for a number of narrower specialties. The task of a 3D artist in general is to create 3D content in the form of models of characters, equipment, architecture and other game objects. Narrower specializations of 3D artists are: character modeler, environment artist, animator.

Character Modeler- engaged in the creation of a model in a 3D package game characters, their clothes, weapons, armor, etc. However, characters can be both organic (humanoids) and inorganic (various kinds of technology), so many modelers consider themselves to be organic modelers or inorganic surface modelers, depending on their skills and preferences.

Environment Modeler- his tasks include modeling objects of the surrounding world, landscape, buildings, etc.

Animator- animators can be separated into a separate category of specialties; are engaged in animation (revitalization) of 3D models, most often characters. The tasks of the animator include creating movements of walking, running, jumping, attacking and similar movements depending on the requirements of the gameplay.

Testing

Testing, quality control (QA, Quality Assurance)- the process of identifying various kinds of errors and defects in the game content. Testing must be carried out in order to avoid partial or complete inoperability of the game by the end consumer.

Testing can be carried out by the game publisher's testing department, developer testers, independent testers, as well as during public beta testing by regular users. The testing process boils down to conducting and checking a number of standard scenarios (for example, does the game freeze when exiting the desktop), testing gameplay, various situations, etc.

Sound

Sound- the sound department provides the game with sound effects, music and voices for the game characters.

Composer- his task is to write music (soundtrack) for the game.

Sound engineer- is looking for ready-made sound effects for the game or creating new ones by synthesizing several sounds or recording original ones.

Voice actors- voiced game characters.

These are the major majors in the game development industry. Of course, there are many more specialties that were not mentioned (for example, producers or special effects artists), but the main people involved in the development of games were listed.

Basics of programming
The basics of programming, basic terms and concepts

The video course will acquaint students with the basics of programming, basic terms and concepts. It will teach you how to develop algorithms and give you real experience in creating web products. Lessons include an overview of current programming languages ​​and directions, help students choose the most interesting for themselves and provide materials and instructions for further professional development.

Lesson 3. First program

Choice of programming language. Preparing the browser. The program "Hello, world!"

Lesson 4. Variables

Installing a convenient code editor. Familiarity with variables. Simple calculator.

Lesson 5. Data Types

Data types. Operations with different types of data. Data type conversion.

Lesson 6. Algorithms and Flowcharts

Algorithmic thinking. Visual flowcharts.

Lesson 7. The branch operator if

Choice of options in the program. Branching operator if. A game of riddles.

Lesson 8. Logical operations

Complex conditions of choice. Logical AND, OR. Game "Angry Birds".

Lesson 9. Loops do, while

Do and while loops. Russian roulette game.

Lesson 10. The for loop

For loop. Financial calculator.

Lesson 11. Arrays

Large datasets and arrays. Roulette game.

Lesson 12. Functions

Functions. Preparing to write a game " Black jack(21) ".

Lesson 13. Game "Black Jack". Part 1

Writing a full-fledged game. The basis is dealing cards and scoring.

Lesson 14. Game "Black Jack". Part 2

Completion of writing the game. Determination of the results and the winner.

Lesson 15. Programmer career

Review of the main directions in programming. How to choose a programming language? What to learn next?

C #. Fast start
The basics of C # on the example of developing a small game

A video course for those who are interested in programming in the C # language and want to know the possibilities and benefits that it offers. The course consists of 7 lessons, during which you will gain experience in programming in this language and write a small game with a graphical interface. For effective mastering of the material, minimal programming experience is required, so we recommend that completely novice developers first take the free online course "Fundamentals of Programming".

Lesson 1. Introduction to the C # language

Why learn C #? What is being developed with its help?

Lesson 2. Variables, data types

Lesson 3. Branching. Whole numbers.

Lesson 4. Loops

Let's get acquainted with graphics library SmallBasic. Let's take a look at the while loop using the example of controlling a turtle.

Lesson 5. Functions

Let's examine the for loop. Let's write the word "Cake" using a turtle. We will use functions.

Lesson 6. Developing a Game: Part 1

Let's start developing the game. Let's learn how to control the turtle from the keyboard.

Lesson 7. Developing a Game: Part 2

Let's finish the game. Let's teach your turtle to chase food.

Git. Fast start
Git Basics

The video course provides an experience of team development using Git. Teaches you to organize a shared code repository from scratch and use it effectively. Students master git clients with a graphical and console interface, learn to control the release of program versions and "roll back" to previous versions. The common mistakes of team development are discussed in detail: when merging branches, creating commits, storing executable files in the repository.

Lesson 1. Purpose and opportunities

We will find out why git is needed and what opportunities it opens up for programmers.

Lesson 2. Basic operations

We create a code repository available to all contributors over the network. We master basic operations: Clone, Commit, Push, Pull.

Lesson 3. Rolling Back Code Changes

Learn to roll back changes in code using git. We master the operations Discard, Revert, Reset.

Lesson 4. Working with branches

Working with branches.
In parallel, we are developing several versions of the program. We master the operations Add branch, Checkout, Merge.

Lesson 5. Conflicts

Learn to resolve conflicts when merging branches.

Lesson 6. Common mistakes. Part 1

Fear of creating new branches. Storing executable files in the repository.

Lesson 7. Common mistakes. Part 2

Errors when working with branches. Errors while creating commit-s.

Lesson 8. Pull Request. Working with open-source projects

We master Pull Requests by the example of working with Open-Source projects.

Lesson 9. Pull Request. Delivery of homework.

Submitting homework to GeekBrains using Pull Request.

Lesson 10. Console git client. Basic operations

We master the basic operations in the console git client.

Lesson 11. Console git client. Working with branches

Learn to work with branches in a console git client.

Lesson 12. Working with program versions

Learn to release different versions of a software product using git.

Lesson 13. Summary

Summing up the results of the work done.

The course is intended for beginners in programming who would like to master the modern C # language, which is currently one of the most popular development languages ​​and has a number of undoubted advantages. It is well organized, strict, most of its designs are logical and convenient. Advanced diagnostics and code editing tools make the programming process pleasant and efficient, and the powerful class library of the .NET platform takes on a lot of routine operations, which makes it possible to solve complex problems using ready-made "building blocks". All this allows us to regard C # as an effective replacement for the Pascal, Basic and C ++ languages ​​when teaching programming. The possibilities of C # are truly endless, because it covers almost all modern technologies. And a large number of offered vacancies in the IT services market makes it easy for a C # programmer to find a job and get a high income! A basic programming course based on C # will allow you to quickly reach the level of a demanded professional specialist. In the learning process, we will use a large number of real programs. Particular attention is paid to object-oriented programming (OOP), which most often causes difficulties in learning for beginners. Once you have obtained the necessary theoretical foundation, you will move on to problem solving practice, the main goal of which is to learn to think like a C # programmer.

Lesson 1. Introduction. Basic data types. Console. Classes and Methods.

What is the .NET Framework; We create a console application in VisualStudio. Variables. Data types and their conversion. We display and enter data through the console. First acquaintance with methods and classes.

Lesson 4. Arrays. Text files

From objects to arrays. From arrays to "complex" tasks. Text files

Lesson 5. Characters, strings, regular expressions

Symbols and strings; immutable strings; StringBuilder, StringReader and StringWriter; regular expressions; practice.

Lesson 6. Delegates, Files, Collections

Delegates; organization of the input-output system; working with the file system; collections; practice.

Lesson 7. Introduction to Windows Forms

From a console application to Windows Forms; events and their handlers; Form class; we create the first application.

Lesson 8. Adult Programming

Reflection; what is XML; serialization and deserialization; creating a question editor for the game "I believe - I do not believe".

OOP basics
Complex concept in simple words

In continuation of the course ["Fundamentals of Programming"] (http: // https: // site / courses / 58), students will master the most widespread and demanded paradigm, which is used in almost all modern languages ​​- object-oriented programming. The principles of OOP are learned through practice: the development of a game "Snake" in C # using the Git version control system.

Lesson 1. Setting goals

Preparatory work. Installing the Visual Studio development environment, getting started with Git.

Lesson 2. Procedural approach

Displaying points on the screen without using OOP.

Lesson 3. Classes and Objects

We create the first class "Point".

Lesson 4. Constructors. Encapsulation

We create constructors of the "Point" class. We study one of the key principles of object-oriented programming - encapsulation.

Lesson 5. Random access memory: view from the inside

What happens in RAM when class variables and objects are created and assigned?

Lesson 6. Mastering the List Class

We are learning to use the C # class "List" in practice. Create a list of "Points".

Lesson 7. Class "Horizontal lines"

We create new class responsible for displaying horizontal lines on the playing field.

Lesson 8. Class "Vertical lines" and "Shape"

We create a new class responsible for displaying vertical lines on the playing field. Create class "Shape" - base for "Horizontal line" and "Vertical line".

Lesson 9. Class "Snake"

We create a new class responsible for displaying and controlling the snake on the playing field. We apply the principles of inheritance. We create an enum that is responsible for the direction of the snake.

Lesson 10. "Snake" in motion

We teach the "Snake" to move around the playing field.

Lesson 11. Controlled "Snake"

We control the "Snake" from the keyboard.

Lesson 12. "Snake" with a good appetite

Teaching the Snake to survive in the real world - nutrition and growth!

Lesson 13. Class "Obstacles". Polymorphism

We create a class that is responsible for the obstacles in the path of the snake. We master the principle of object-oriented programming - polymorphism.

Lesson 14. Action adventure "Get food, get away from obstacles"

We train the snake to react to obstacles while hunting for food.

Lesson 15. Summary

Summing up, enjoying the game.

The C # Level 2 Advanced Course is a continuation of the C # Basic Course. The course provides a deeper understanding of the principles of object-oriented programming. There is nothing more fun than developing your own game, so the course explains the principles of OOP as you write an arcade game. This approach, on the one hand, gives a good understanding of the principles of OOP, on the other hand, it allows you to study the technology of writing programs under Windows. In the second part of the course, the emphasis is on learning the use of various technologies .NET Framework, without knowledge of which it is impossible to become a professional Microsoft developer: LINQ, ADO.NET, WCF, WPF, etc. Students will develop an application for Dekstop in WPF.

Lesson 1. Object-oriented programming. Part 1

Structure. Class. An object. Encapsulation. Constructors. Properties. Indexers. Inheritance and polymorphism.

Lesson 2. Object-oriented programming. Part 2

Abstract methods and classes. Interfaces. Standard interfaces. Exceptions.

Lesson 3. Object-oriented programming. Part 3

Generalizations. Delegates and Events. Observer pattern.

Lesson 4. Object-oriented programming. Part 4

Lists. Generalized lists. Lambda expressions. Linq.

Lesson 5. Acquaintance with WPF technology.

Features of the WPF platform. An introduction to the XAML language. Styles. Overview of controls and their properties.

Lesson 6. Data binding. Triggers.

Data binding. Triggers. Exception Handling. ListView. Virtualization.

Lesson 7. Interaction with the database.

Interaction with the database. Overview of ADO.Net technology.

Lesson 8. Overview of Service Oriented Application Architecture (SOA).

The asmx web service. WCF service. Web api service.

Database Basics. 20 lessons.
Database design and SQL queries

Databases (DB) are data storage and processing systems, for access to which the SQL (Structured Query Language) language is used. Any modern website, game or desktop application needs data storage. At the moment there are many different database management systems (DBMS), the most popular is MySQL. “Database Basics” is 20 intensive video lessons (10 minutes each), where together we will go through all the stages of database design using the example of an online store using the SQL query language. After this course, you will be able to use various databases such as MS SQL and Postgre Sql, since the syntax of the SQL language is practically the same for them.

Lesson 1. Relational Databases

What is the difference between a DB and a DBMS; what databases are called relational; overview of modern DBMS.

Lesson 2. Installing the DBMS

Installing MySql DBMS and Mysql Workbench graphical application.

Lesson 3. Database Design, Normal Forms

Data design in Excel; normal forms; primary key.

Lesson 4. The SQL CREATE Command

Creating tables in the MySql Workbench GUI; CREATE command; data types; work in the console.

Lesson 5. SQL INSERT Command

Filling tables with data using a graphical interface; INSERT command; AUTO INCREMENT.

Lesson 7. SQL Commands DISTINCT, ORDER BY, LIMIT

Retrieving and filtering data using the DISTINCT and LIMIT SQL commands; sorting using the ORDER BY command.

Lesson 9. Data Consistency

The concept of consistency or consistency of data.

Lesson 10. Foreign key

The concept of a foreign key and constraints on column values; FOREIGN KEY CONSTRAINTS.

Lesson 11. Creating tables with a many-to-many relationship

Adding a cart to the online store database.

Lesson 12. Composite Primary Key

Using a composite primary key when designing a many-to-many table.

Lesson 13. Combining data from multiple tables

Retrieving data from several interconnected tables; inconsistency of the approach using several SELECTs.

Lesson 14. INNER JOIN Statement

Joining data from multiple tables using the INNER JOIN statement.

Lesson 15. LEFT JOIN, RIGHT JOIN Statements

Joining data from multiple tables using the LEFT JOIN and RIGHT JOIN statements.

Lesson 16. The UNION Operator

Combining the results of multiple SQL queries using the UNION operator.

Lesson 17. Aggregate Functions

Aggregating functions COUNT, SUM, MIN, MAX.

Lesson 18. The GROUP BY Statement

Group a selected rowset using the GROUP BY clause.

Lesson 19. Indexes

Filtering in GROUP BY using HAVING; increasing the speed of execution of queries using indexes.

Lesson 20. Transactions

Transaction concept; the TRANSACTION statement; ACID requirements for the transactional system.

Unity is a 2D and 3D game development tool. Applications created with Unity run on Windows, OS X, Windows Phone, Android, Apple iOS, Linux, and also on game consoles Wii, PlayStation 3, PlayStation 4, Xbox 360, Xbox One. Also, this game engine allows you to run games in browsers using a special plug-in Unity Web Player and WebGL technologies. In the course, we explore the basic tools of the Unity editor, as well as the approaches that are used in game development. In addition, we will walk you through the entire process of creating a single-player 2D and 3D game. After training, you will not only understand the principles of most of the existing game mechanics, but also be able to put them into practice. We will develop our own 3D shooter. To successfully complete the course “Unity. Level 1 ”requires knowledge of the C # language, which you can acquire on the Basic Course“ C #. Level 1 ”.

Lesson 1. Introducing Unity

Unity as an ecosystem; history of creation, versions; scope of application; creating a new project; editor interface, Layout, main windows; game objects, primitives, components; scene navigation; prefab concept; Hotkeys; assembly of the project; asset store.

Lesson 2. Introducing Components

Build your first game from components, sprites and scripts.

Lesson 3. Scripting in Unity.

The main methods of the MonoBehaviour class. Access to game objects and components. Move and turn. Project Settings. Physics.

Lesson 4. Scripting in Unity. Part 2

Immediate Mode GUI. Classes Mathf, Random, Invoke. Coroutines. Triggers and collisions. Special project folders.

Lesson 5. Building an AI and a simple interface

Immediate Mode GUI. Classes Mathf, Random, Invoke. Coroutines. Simple AI obstacle handling.

Lesson 6. Animation, audio and visual effects

Legacy animation system, Mecanim based animation, Character Controller component. Components AudioListener, AudioSource. Visual effects (particle system, camera effects)

Lesson 7. Development of the interface

Objects and components for user interface development: Canvas, Canvas Scaler, Graphic Raycaster, Rect Transform, Text, Image, Raw Image, Button, Toggle, Toggle Group, Slider, Scroll View, Scroll Rect, Scroll Bar, Dropdown, Input Field. Event System. Event Trigger.

Lesson 8. Development for mobile devices.

Development for a mobile platform

Unity. Level 2.1 month.
3D game development

This course is a continuation of the basic course on Unity and includes the study of issues without which it is difficult to develop high-quality and advanced games. The course explores the concepts of object-oriented programming and how they are used to create games in Unity. The implementation of such methods as pathfinding, enemy visibility zone, object tracking using standard methods is considered. Consider creating your own plugin to make things easier and less time-consuming when developing games. We will also learn how to save the output of our own games. Let's get acquainted with optimization and physical components of Unity3d. We will develop our own 3D shooter.

Lesson 1. Principles of OOP in Unity. Part 1

Namespace; classes, fields, methods, properties; constructors; inheritance, polymorphism; virtual methods; method overloading.

Lesson 2. Principles of OOP in Unity. Part 2

Collections; abstract classes and methods; interfaces; exceptions; events and delegates; coroutines.

Lesson 3. Creating a simple AI. Part 1

Familiarity with the NavMesh family. NavMeshAgent, OffMeshLink, NavMeshObstacle.

Lesson 4. Creating a simple AI. Part 2

Creating a character, setting the field of view, patrolling the territory, introducing the patrol action component: pursuit and attack.

Lesson 5. Working with the Editor class. Saving data

Personalization of Unity3D, adding your own buttons and functionality.

Lesson 6. Physical components. Saving data.

Physics Joints (FixedJoint, SpringJoint and others). Cloth (Cloth simulation). Creation of a mini map. Saving data (JSON, XML, PlayerPrefs).

Lesson 7. Basics of Optimization

Rendering Statistics; Profiler; Debugging; Frame Debugger; Quality Settings; Optimization (Frustum Culling, Occlusion Culling, LOD group, Textures and materials, lighting and shadows, scripts).

Lesson 8. Summing up.

General principles of multiplayer; summing up the results.

How to become a programmer. 13 lessons.
Step-by-step instructions for finding a job

A programming career is an exciting journey into the world of modern technology. Each developer has their own story and experience. However, there is a basic algorithm that will help you take the first steps correctly and lead to your goal. We have prepared 13 video tutorials in which we answered the most pressing questions about the career of a programmer in companies and in the freelance market. Do you often think about getting a job and feel that you are ready to start earning money? Then this video course is for you.

Lesson 1. Profession "Programmer"

Features of the profession; FAQ; demand in the labor market.

Lesson 2. Career guidance

Will I Become a Successful Programmer? Success factors.

Lesson 3. Getting started writing a resume

The most important thing is the first impression; what to name the position.

Lesson 4. Choosing a Programming Language: Web Development

Overview of languages ​​for website development: HTML, CSS, JavaScript, PHP, Python, Ruby, C #, Java; right choice.

Lesson 5. Mobile development. Universal programming languages

Overview of languages: Java, Objective-C, Swift; C #, C ++, Python: the right choice.

Lesson 6. Rules for an effective resume

List of technologies; portfolio; diplomas and certificates; personal qualities. Technical and HR perspective.

Lesson 7. Job search: what, where, when

Dream job, psychological aspects; request technique.

Lesson 8. Interview and trial period

Interviews for programmers: how to behave, what to say, what to listen to; probationary period and rules for its passage.

Lesson 9. Freelance: First Steps

Review of sites for freelancing; registration features; registration of an account; how to stand out from the majority of performers.

Lesson 10. Freelancing: Getting Started and Finding Orders

Order search strategy; priority of orders: what to take to work; Negotiation; tasks and pitfalls of TK; methods of contacting the client; writing answers and attracting the attention of clients; the right questions.

Lesson 11. Freelance: order fulfillment and payment

Payment methods: non-cash or cash payment; prepayment or postpaid; an overview of situations in which each method will work best; preparation for work and binding agreements with the client; features of the work process; final stages of cooperation; exchange of reviews; technique "consult".

Lesson 12. Specialties in the field of IT

How is development going in large companies? Who are analysts, designers, testers, architects, projectmanagers, team leads, etc.

Lesson 13. IT Career Ladder

What does the IT career ladder look like? In what specialties is it easier to start your journey? What are the development prospects?

The course, developed in conjunction with the EnglishDom school, will help you master key English-language topics that are relevant for beginner IT specialists. Maximum practice and focus on IT vocabulary. In 10 lessons, the preparation of CVs, terms of reference and business letters, interviews and negotiations, international communication when promoting your project is understood. In live dialogues in English, students will consolidate phrases that will be useful for developers and testers, marketers and designers.

Lesson 10. Start up

We tell about our project and introduce the team in English.

Internship. 2 months.
Webinar format

The internship at GeekBrains will be conducted in a webinar format. From the very beginning of the class, you will start collaborative development under the guidance of a teacher. At each lesson, we will conduct a meeting as in real IT companies. Analyze the work done, discuss the received code, determine the volume of tasks for the next week.

Lesson 1. Statement of the problem

Formulation of the problem. Working with Bug-tracker.

Lesson 2. Analysis of development tools

MS Visual Studio 2015, TortoiseHg, Mercurial, BitBucket

Lesson 3. Object-oriented paradigm of software design and development

Principles of building programs (DRY, KISS, YAGNI, SOLID)

Good code rules

Lesson 5. Delegates, events. Application localization

Delegates and Events. Create your own events. Application localization basics

Lesson 6. Optimization. Image post-processing

Graphic techniques. Rendering and scripting optimizations. Parsing plugins