Добро пожаловать в удивительный мир игрового дизайна. Если вы одиноки в этом страшном путешествии, вам нужно научиться программировать. Если вы не воссоздаете Neopets, HTML, CSS и Javascript вам здесь не помогут. У вас больше шансов добиться успеха с Java, C++ или, если вы смотрите на Unity, с C#. Иногда вы делаете игру настолько уникальной, что вам недостаточно базовых инструментов. Возможно, вам придется создать свой собственный язык, такой как RuneScript для RuneScape.

Если вы думаете о создании копии Skyrim в качестве своей первой игры, сделайте шаг назад. Skyrim создавался не одним человеком в свободное время. Вам нужно начать с простого. Если у вас есть персонаж на экране, может ли он двигаться? Вот некоторый базовый код C++ для перемещения персонажа с помощью клавиш «WASD»:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    char ch=0;
    cout << "Press Q to quit\n";
    do
    {
        ch = getch();
        switch(ch)
        {
            case 'W':
            case 'w':
                cout << "W was pressed \n";
                break;
            case 'A':
            case 'a':
                cout << "A was pressed \n";
                break;
            case 's':
            case 'S':
                cout << "S was pressed \n";
                break;
            case 'D':
            case 'd':
                cout << "D was pressed \n";
                break;
        }
    }while (ch != 'Q' && ch!='q');
}

Отлично, вы заставили своего персонажа двигаться. Вы начинаете учиться ползать. Теперь приступайте к поиску дополнительных функций. Вы хотите, чтобы ваш персонаж прыгал? Вы хотите, чтобы ваш персонаж взял предмет? Подождите, как нам прикрепить коробку к рукам вашего персонажа? Интернет — ваш самый ценный инструмент в обучении созданию игр. Вот пример ветки форума от 2014 года, в которой показано, как решить этот вопрос в Unreal Engine.

Если вы знаете, как правильно задать вопрос, вы будете знать, как получить желаемые ответы. В Super Mario Bros есть таймер на 300 секунд. Заметьте, я не сказал секунды. В свое время у программистов Nintendo не было причудливых функций/методов даты/времени для отображения приращений времени, поэтому они создали свои собственные. Вместо того, чтобы спрашивать Google «как мне получить таймер в Марио», вам может быть лучше спросить «таймер обратного отсчета c++», и результат сразу приведет нас к подходящему ответу:
```

//Please note that this is Windows specific code
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
    int counter = 60; //amount of seconds
    Sleep(1000);
    while (counter >= 1)
    {
        cout << "\rTime remaining: " << counter << flush;
        Sleep(1000);
        counter--;
    }
}

```

Итак, у вас есть персонаж, перемещающийся по экрану, собирающий коробки, и у вас есть таймер обратного отсчета. Что теперь? Это решать вам. Может возникнуть соблазн начать мечтать о квестах, коэффициентах опыта и значениях ГСЧ. Держите свое видение основанным на реальности. Начните с малого. Сможет ли ваш персонаж добраться из точки А в точку Б? Здорово. Теперь, когда вы научились это делать, начните сначала.
Возможно, вам покажется нелепым начинать заново то, чем вы так гордитесь, но это часть вашего роста.

Как только вы освоите новый навык, совершенствуйте его. Воссоздайте ту игру, которую вы только что сделали. Теперь вы должны быть в состоянии сделать это более эффективно. Можно начинать усложнять. Можете ли вы донести красную коробку до финиша и получить текст, отображающий «Вы выиграли», в то время как поднятие фиолетовой коробки приводит к тому, что на экране появляется сообщение «игра окончена», когда вы поднимаете ее? Как бы вы это запрограммировали? Я бы рекомендовал написать оператор «если, то» и применить его к персонажу.

Цитируя Extra Credits: Fail Faster.
https://www.youtube.com/watch?v=rDjrOaoHz9s&ab_channel=ExtraCredits

Серьезно, проверьте этих парней. Ваш разум будет открыт для мира просветления. Ваши проекты — это только начало. Они должны меняться и адаптироваться. Ваше эго не может быть хрупким. Вы должны быть готовы разрушить то, что вы создали, и улучшить его на каждом этапе пути к созданию проекта своей мечты. Возможно, вы подумали об игре, в которой рыцарь входит в замок с подъемного моста через ров, чтобы убить летящего в небе дракона. Только тогда вы понимаете, что не совсем научились опускать разводной мост. Теперь вы воссоздаете игру с уже опущенным подъемным мостом. Может быть, ИИ, который вы написали, почти никогда не приближается к рыцарю, чтобы атаковать его мечом. Может быть, теперь дракон сидит на вершине замка. Как рассчитать ущерб?

В 2012 году RuneScape решили, что им не нравится их боевая система, поэтому они воссоздали ее с нуля. Им потребовалось около 7 лет после того, как он был реализован, чтобы довести его до состояния, когда им были довольны и нынешние игроки, и разработчики. Однако многим это изменение не понравилось, и в 2013 году была создана новая игра со старой боевой системой. Если на поиск хорошего баланса уходят миллионы долларов за полвека, поймите, что вы тоже будете совершать ошибки на этом пути. Вот почему вы заканчиваете проект, просматриваете его, а затем начинаете заново, больше и лучше, чем раньше. Вы не создадите идеальную боевую систему за одну ночь. Начните с того, что дракон скажет «ой», когда меч соприкоснется с ним.

Я надеюсь, что это поможет вам на вашем пути к тому, чтобы стать разработчиком игр.

источники:
http://www.cplusplus.com/forum/general/55170/

https://unity.com/how-to/beginner-game-coding-resources

https://runescape.wiki/w/RuneScript

https://gaming.stackexchange.com/questions/356813/how-long-is-a-mario-second-and-is-there-a-reason-why-it-seems-to-be-shorter-th

https://stackoverflow.com/questions/54019545/создание таймера обратного отсчета в c

https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/21261-how-do-i-attach-an-actor-to-an-actor