HTML Diff
2 added 2 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#Руководства</a></p>
1 <p><a>#Руководства</a></p>
2 <ul><li>10 янв 2019</li>
2 <ul><li>10 янв 2019</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>На каких языках программирования пишут игры</h2>
4 </ul><h2>На каких языках программирования пишут игры</h2>
5 <p>Новички часто спрашивают, на каком языке программирования можно создать игру. Поставим точку в этом вопросе.</p>
5 <p>Новички часто спрашивают, на каком языке программирования можно создать игру. Поставим точку в этом вопросе.</p>
6 <p> vlada_maestro / shutterstock</p>
6 <p> vlada_maestro / shutterstock</p>
7 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
8 <p>Ориентироваться лучше на то, что хотите реализовать и на какой платформе:</p>
8 <p>Ориентироваться лучше на то, что хотите реализовать и на какой платформе:</p>
9 <ul><li>Swift - игры на iOS или macOS.</li>
9 <ul><li>Swift - игры на iOS или macOS.</li>
10 <li>PHP и JavaScript - браузерные игры.</li>
10 <li>PHP и JavaScript - браузерные игры.</li>
11 <li>C# - игры на Unity.</li>
11 <li>C# - игры на Unity.</li>
12 <li>С или C++ - большие требовательные игры.</li>
12 <li>С или C++ - большие требовательные игры.</li>
13 </ul><p>Если создаёте игру впервые, воспользуйтесь каким-нибудь движком:</p>
13 </ul><p>Если создаёте игру впервые, воспользуйтесь каким-нибудь движком:</p>
14 <ul><li>Unreal Engine;</li>
14 <ul><li>Unreal Engine;</li>
15 <li>Unity;</li>
15 <li>Unity;</li>
16 <li>CryEngine.</li>
16 <li>CryEngine.</li>
17 </ul><p>У каждого языка свои преимущества и назначение, поэтому не стоит думать, что какой-то лучше остальных - все они для решения разных задач. Многие, например, пишут большую часть проекта на одном, а высоконагруженную - на другом.</p>
17 </ul><p>У каждого языка свои преимущества и назначение, поэтому не стоит думать, что какой-то лучше остальных - все они для решения разных задач. Многие, например, пишут большую часть проекта на одном, а высоконагруженную - на другом.</p>
18 <p>Чтобы выбрать, какой язык подойдёт вам, давайте разберемся в нескольких моментах. А для совсем новичков мы предлагаем курс "<a>Профессия Разработчик игр на Unreal Engine 4</a>".</p>
18 <p>Чтобы выбрать, какой язык подойдёт вам, давайте разберемся в нескольких моментах. А для совсем новичков мы предлагаем курс "<a>Профессия Разработчик игр на Unreal Engine 4</a>".</p>
19 <p>Они хоть и не такие крутые, как игры для консолей и компьютеров, но тоже затягивают. Причина в умелой работе гейм-дизайнеров - они продумывают механики так, чтобы вы тратили на игру больше времени и денег.</p>
19 <p>Они хоть и не такие крутые, как игры для консолей и компьютеров, но тоже затягивают. Причина в умелой работе гейм-дизайнеров - они продумывают механики так, чтобы вы тратили на игру больше времени и денег.</p>
20 <p>Если вы играли хотя бы в одну крупную браузерную игру, то знаете: игровой процесс дозируют, чтобы игроку не наскучило. А чтобы продолжить игру, приходите на следующий день либо платите.</p>
20 <p>Если вы играли хотя бы в одну крупную браузерную игру, то знаете: игровой процесс дозируют, чтобы игроку не наскучило. А чтобы продолжить игру, приходите на следующий день либо платите.</p>
21 <p>Тут уже можно подключить<em>JavaScript</em> - он позволяет хранить в переменных данные персонажа, а графику обрабатывать с помощью<em>Canvas</em>. Если прикрутить PHP, получится создать базу данных, построить защиту и реализовать многопользовательский режим. А это уже полноценная браузерная игра.</p>
21 <p>Тут уже можно подключить<em>JavaScript</em> - он позволяет хранить в переменных данные персонажа, а графику обрабатывать с помощью<em>Canvas</em>. Если прикрутить PHP, получится создать базу данных, построить защиту и реализовать многопользовательский режим. А это уже полноценная браузерная игра.</p>
22 <p>Многие из таких игр создаются на Flash, который работает на языке<em>ActionScript</em>. Мы не рекомендуем изучать эту технологию, потому что скоро её поддержка будет прекращена, а на <em>HTML5</em> появится ещё больше возможностей, чтобы полностью её заменить.</p>
22 <p>Многие из таких игр создаются на Flash, который работает на языке<em>ActionScript</em>. Мы не рекомендуем изучать эту технологию, потому что скоро её поддержка будет прекращена, а на <em>HTML5</em> появится ещё больше возможностей, чтобы полностью её заменить.</p>
23 <p>Мобильные игры превосходят браузерные, но не сильно. Маленький экран и небольшая мощность не позволяют создавать крутую графику. И ещё нельзя реализовать такое же удобное управление, как на компьютерах и приставках.</p>
23 <p>Мобильные игры превосходят браузерные, но не сильно. Маленький экран и небольшая мощность не позволяют создавать крутую графику. И ещё нельзя реализовать такое же удобное управление, как на компьютерах и приставках.</p>
24 <p>Это компенсируется простотой разработки. Можно скачать популярный движок и за несколько недель выпустить готовое приложение - это программы, которые предоставляют готовые решения для работы с графикой и физикой. Разработчику остается только добавить спрайты или модели, а потом прописать несколько скриптов на одном из предложенных языков. Можно даже не заморачиваться из-за всех ресурсов - они скачиваются или покупаются в интернете.</p>
24 <p>Это компенсируется простотой разработки. Можно скачать популярный движок и за несколько недель выпустить готовое приложение - это программы, которые предоставляют готовые решения для работы с графикой и физикой. Разработчику остается только добавить спрайты или модели, а потом прописать несколько скриптов на одном из предложенных языков. Можно даже не заморачиваться из-за всех ресурсов - они скачиваются или покупаются в интернете.</p>
25 <p>Unity, один из самых популярных движков, даёт возможность писать на <em>C#</em>и <em>JavaScript</em>. Подключаете скачанные файлы, пишете несколько команд - и простенькая игра готова.</p>
25 <p>Unity, один из самых популярных движков, даёт возможность писать на <em>C#</em>и <em>JavaScript</em>. Подключаете скачанные файлы, пишете несколько команд - и простенькая игра готова.</p>
26 <p>Тут настоящий размах. Реалистичная графика, VR, большой игровой мир, поддержка огромного количества игроков онлайн и так далее. Можно создавать проекты вроде Limbo или Super Meat Boy в одиночку, а можно в команде разрабатывать новый Fortnite.</p>
26 <p>Тут настоящий размах. Реалистичная графика, VR, большой игровой мир, поддержка огромного количества игроков онлайн и так далее. Можно создавать проекты вроде Limbo или Super Meat Boy в одиночку, а можно в команде разрабатывать новый Fortnite.</p>
27 <p>Но и сложность возрастает. Чем масштабнее вы мыслите, тем больше работы предстоит проделать. Вот неполный список аспектов разработки, над которыми следует потрудиться:</p>
27 <p>Но и сложность возрастает. Чем масштабнее вы мыслите, тем больше работы предстоит проделать. Вот неполный список аспектов разработки, над которыми следует потрудиться:</p>
28 <ul><li>механика;</li>
28 <ul><li>механика;</li>
29 <li>графика;</li>
29 <li>графика;</li>
30 <li>анимация;</li>
30 <li>анимация;</li>
31 <li>физика;</li>
31 <li>физика;</li>
32 <li>музыка;</li>
32 <li>музыка;</li>
33 <li>озвучка;</li>
33 <li>озвучка;</li>
34 <li>скрипты;</li>
34 <li>скрипты;</li>
35 <li>сюжет.</li>
35 <li>сюжет.</li>
36 - </ul><p>В таких играх ведется работа над освещением, тенями, частицами, разрушаемостью - всем, что важно для конкретного проекта. Один человек не потянет всё это за год или даже два, поэтому такое под силу только крупным студиям. Конечно, многое решается в движках, но работа всё равно колоссальная.</p>
36 + </ul><p>В таких играх ведется работа над освещением, тенями, частицами, разрушаемостью - всем, что важно для конкретного проекта. Один человек не потянет всё это за год или даже два, поэтому такое под силу только крупным студиям. Конечно, многое решается в движках, но рабта всё равно колоссальная.</p>
37 <p>Без движков тоже можно обойтись: World of WarCraft был написан на <em>C++</em>, а MineCraft создан одним человеком на <em>Java</em>, после чего игру купила компания Microsoft за 2,5 миллиарда долларов.</p>
37 <p>Без движков тоже можно обойтись: World of WarCraft был написан на <em>C++</em>, а MineCraft создан одним человеком на <em>Java</em>, после чего игру купила компания Microsoft за 2,5 миллиарда долларов.</p>
38 <p>Даже Super Mario написали на <em>ассемблере</em>, когда о движках никто и не задумывался.</p>
38 <p>Даже Super Mario написали на <em>ассемблере</em>, когда о движках никто и не задумывался.</p>
39 <p>Если постараться, то сделаете крутую игру без написания кода - есть специальные движки и заготовки. Но чтобы понять, как всё работает, выясните, какую роль играет программирование.</p>
39 <p>Если постараться, то сделаете крутую игру без написания кода - есть специальные движки и заготовки. Но чтобы понять, как всё работает, выясните, какую роль играет программирование.</p>
40 <p>Представьте, что у вас есть 3D-модель персонажа. Пока от неё нет толка. Если хотите, чтобы она двигалась, нужен код. Этот скрипт должен отлавливать действия игрока, а потом передавать команду модели персонажа.</p>
40 <p>Представьте, что у вас есть 3D-модель персонажа. Пока от неё нет толка. Если хотите, чтобы она двигалась, нужен код. Этот скрипт должен отлавливать действия игрока, а потом передавать команду модели персонажа.</p>
41 - <p>Например, вы ловите все нажатия, а потом определяете, что это была за кнопка. Если это стрелочка влево - персонаж должен идти алево. Рассмотрим на примере<em>JavaScript</em>.</p>
41 + <p>Например, вы ловите все нажатия, а потом определяете, что это была за кнопка. Если это стрелочка влево - персонаж должен идти налево. Рассмотрим на примере<em>JavaScript</em>.</p>
42 function playerMove(direction) {//Функция движения if(direction == “right”) {//Проверяем направление player.x++; //Меняем координаты } else { player.x--; } playerAnimate(player.x); //Вызываем функцию анимации } function controlChar(e) {//Создаем функцию, которая будет обрабатывать все нажатия switch(e.keyCode){ //Проверяем, какую кнопку нажал пользователь case 38: //У каждой кнопки есть свой код. 38 - стрелочка влево playerMove(“left”); //Вызываем функцию движения break; case 39: //Стрелочка вправо playerMove(“right”); //Вызываем функцию движения break; } } document.getElementById(“game”).onkeydown = controlChar; //При нажатии вызываем функцию<p>Если пользователь нажмёт нужную кнопку, то его персонаж передвинется на другие координаты, а потом будет вызвана функция анимации. На <em>JavaScript</em>в основном работают с 2D или псевдо-3D, поэтому останавливаться на моделях мы не будем.</p>
42 function playerMove(direction) {//Функция движения if(direction == “right”) {//Проверяем направление player.x++; //Меняем координаты } else { player.x--; } playerAnimate(player.x); //Вызываем функцию анимации } function controlChar(e) {//Создаем функцию, которая будет обрабатывать все нажатия switch(e.keyCode){ //Проверяем, какую кнопку нажал пользователь case 38: //У каждой кнопки есть свой код. 38 - стрелочка влево playerMove(“left”); //Вызываем функцию движения break; case 39: //Стрелочка вправо playerMove(“right”); //Вызываем функцию движения break; } } document.getElementById(“game”).onkeydown = controlChar; //При нажатии вызываем функцию<p>Если пользователь нажмёт нужную кнопку, то его персонаж передвинется на другие координаты, а потом будет вызвана функция анимации. На <em>JavaScript</em>в основном работают с 2D или псевдо-3D, поэтому останавливаться на моделях мы не будем.</p>
43 <p>Программный код также запускает музыку в нужный момент:</p>
43 <p>Программный код также запускает музыку в нужный момент:</p>
44 If(eventHappend == true) { //Если событие произошло audio.play(); //Запустить аудио }<p>Или даёт толчок развитию событий. Например, если пользователь нажмёт клавишу<em>E</em>, указав мышью на NPC, то откроется диалоговое окно, в котором можно поторговать или узнать слухи.</p>
44 If(eventHappend == true) { //Если событие произошло audio.play(); //Запустить аудио }<p>Или даёт толчок развитию событий. Например, если пользователь нажмёт клавишу<em>E</em>, указав мышью на NPC, то откроется диалоговое окно, в котором можно поторговать или узнать слухи.</p>
45 <p>В играх почти всё завязано на скриптах:</p>
45 <p>В играх почти всё завязано на скриптах:</p>
46 <ul><li>NPC нападет, если увидит вас, а до тех пор он будет патрулировать местность по заданному маршруту.</li>
46 <ul><li>NPC нападет, если увидит вас, а до тех пор он будет патрулировать местность по заданному маршруту.</li>
47 <li>Мина взорвется, если вы на неё наступите.</li>
47 <li>Мина взорвется, если вы на неё наступите.</li>
48 <li>Верёвочный мост раскачается, если по нему пробежать.</li>
48 <li>Верёвочный мост раскачается, если по нему пробежать.</li>
49 <li>Враги включат тревогу, если услышат выстрел.</li>
49 <li>Враги включат тревогу, если услышат выстрел.</li>
50 <li>Кат-сцена запустится, если вы войдёте в какую-то область.</li>
50 <li>Кат-сцена запустится, если вы войдёте в какую-то область.</li>
51 </ul><p>Событий может быть очень много, но большая зависимость от скриптов приводит к излишней линейности игры.</p>
51 </ul><p>Событий может быть очень много, но большая зависимость от скриптов приводит к излишней линейности игры.</p>
52 <p><em><strong>Вывод - без программирования персонажи не будут ходить, а вы не сможете с ними взаимодействовать.</strong></em></p>
52 <p><em><strong>Вывод - без программирования персонажи не будут ходить, а вы не сможете с ними взаимодействовать.</strong></em></p>
53 <p>Допустим, вы создаёте многопользовательскую браузерную игру. Когда количество пользователей вырастет, вместе с ним увеличится и нагрузка на сервер.</p>
53 <p>Допустим, вы создаёте многопользовательскую браузерную игру. Когда количество пользователей вырастет, вместе с ним увеличится и нагрузка на сервер.</p>
54 <p>Если до этого всё отлично работало на <em>PHP</em>, то с появлением новых игроков часть проекта может подвисать. Чтобы исправить эту проблему и не потерять пользователей, выясните, какая именно функция работает медленно. Возможно, её получится переписать, повысив скорость. С большой нагрузкой справляются<em>C</em>или<em>C++</em>.</p>
54 <p>Если до этого всё отлично работало на <em>PHP</em>, то с появлением новых игроков часть проекта может подвисать. Чтобы исправить эту проблему и не потерять пользователей, выясните, какая именно функция работает медленно. Возможно, её получится переписать, повысив скорость. С большой нагрузкой справляются<em>C</em>или<em>C++</em>.</p>
55 <p>Когда вы увидите результат труда, то получите больше мотивации продолжать. Каждая новая строчка кода будет отражаться на игре, а это чувство можно сравнить с созданием чего-то прекрасного. Это чувство не оставит, пока вы подходите к делу с душой - а это главное в любом начинании.</p>
55 <p>Когда вы увидите результат труда, то получите больше мотивации продолжать. Каждая новая строчка кода будет отражаться на игре, а это чувство можно сравнить с созданием чего-то прекрасного. Это чувство не оставит, пока вы подходите к делу с душой - а это главное в любом начинании.</p>
56 <a><b>Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞</b>Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Узнать больше</a>
56 <a><b>Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞</b>Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Узнать больше</a>