0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>24 фев 2020</li>
2
<ul><li>24 фев 2020</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
<p>Из-за этого у многих разработчиков складывается мнение, что оптимизация - дело десятое. Зачем стараться, если у игрока достаточно мощный комп и он даже не заметит разницы?</p>
9
<p>Из-за этого у многих разработчиков складывается мнение, что оптимизация - дело десятое. Зачем стараться, если у игрока достаточно мощный комп и он даже не заметит разницы?</p>
10
<p>Однако плохая оптимизация может привести к тому, что на слабых компьютерах, а может, даже и на мощных игры будут тормозить и вылетать. В этой статье я расскажу об основных способах повышения производительности.</p>
10
<p>Однако плохая оптимизация может привести к тому, что на слабых компьютерах, а может, даже и на мощных игры будут тормозить и вылетать. В этой статье я расскажу об основных способах повышения производительности.</p>
11
<p>В <a>статье про гонку на Unity</a>я использовал генерируемую дорогу, чтобы сделать игру бесконечной. Для этого перед игроком добавлялись новые дорожные блоки, а когда игрок проезжал определённое расстояние от блока, тот удалялся.</p>
11
<p>В <a>статье про гонку на Unity</a>я использовал генерируемую дорогу, чтобы сделать игру бесконечной. Для этого перед игроком добавлялись новые дорожные блоки, а когда игрок проезжал определённое расстояние от блока, тот удалялся.</p>
12
<p>Если бы этого не происходило, то через несколько минут (зависит от объёма оперативной памяти) игра начала бы сильно тормозить, а потом и вовсе бы вылетела.</p>
12
<p>Если бы этого не происходило, то через несколько минут (зависит от объёма оперативной памяти) игра начала бы сильно тормозить, а потом и вовсе бы вылетела.</p>
13
<p>Даже если локация не генерируется, всё равно найдётся что удалить:</p>
13
<p>Даже если локация не генерируется, всё равно найдётся что удалить:</p>
14
<ul><li>осколки;</li>
14
<ul><li>осколки;</li>
15
<li>гильзы;</li>
15
<li>гильзы;</li>
16
<li>трупы;</li>
16
<li>трупы;</li>
17
<li>щепки;</li>
17
<li>щепки;</li>
18
<li>кровь и тому подобное.</li>
18
<li>кровь и тому подобное.</li>
19
</ul><p>Тут важно ориентироваться на особенности вашей игры. В <strong>Counter-Strike</strong>гильзы можно смело удалять. Но в игре про детективов или снайперов они могут быть важной частью геймплея.</p>
19
</ul><p>Тут важно ориентироваться на особенности вашей игры. В <strong>Counter-Strike</strong>гильзы можно смело удалять. Но в игре про детективов или снайперов они могут быть важной частью геймплея.</p>
20
<p>Проблема слишком большого количества объектов будет существовать до тех пор, пока мы не научимся производить оперативную память с бесконечным объёмом. Так что оптимизация нам нужна будет ещё очень и очень долго.</p>
20
<p>Проблема слишком большого количества объектов будет существовать до тех пор, пока мы не научимся производить оперативную память с бесконечным объёмом. Так что оптимизация нам нужна будет ещё очень и очень долго.</p>
21
<p>Иногда эту проблему невозможно решить. Например, если в вашей игре предусмотрена механика перемотки времени, тогда вы, наоборот, должны хранить всю информацию за то время, на которое игрок может переместиться в прошлое.</p>
21
<p>Иногда эту проблему невозможно решить. Например, если в вашей игре предусмотрена механика перемотки времени, тогда вы, наоборот, должны хранить всю информацию за то время, на которое игрок может переместиться в прошлое.</p>
22
<p>Тут можно либо сделать количество объектов минимальным, либо использовать "грязные" трюки, как это<a>сделали</a>разработчики игры<strong>Super Time Force</strong>.</p>
22
<p>Тут можно либо сделать количество объектов минимальным, либо использовать "грязные" трюки, как это<a>сделали</a>разработчики игры<strong>Super Time Force</strong>.</p>
23
<p>Некоторые объекты, например статичные части игрового мира, нельзя удалять. Но вместо этого их можно отключать. Чаще всего это используется в играх с большим открытым миром:</p>
23
<p>Некоторые объекты, например статичные части игрового мира, нельзя удалять. Но вместо этого их можно отключать. Чаще всего это используется в играх с большим открытым миром:</p>
24
<p>Можно отключать только рендеринг объекта, а можно и весь объект. В этом случае снизится нагрузка не только на графическую карту, но и на центральный процессор, потому что игра не будет проверять коллизии и физику.</p>
24
<p>Можно отключать только рендеринг объекта, а можно и весь объект. В этом случае снизится нагрузка не только на графическую карту, но и на центральный процессор, потому что игра не будет проверять коллизии и физику.</p>
25
<p>Но вот с физикой всё же нужно быть осторожнее. Если игрок отвернётся от объекта, пока тот падал, а вы его (объект) отключите, то получится странный эффект. Объект никогда не упадёт, пока игрок снова на него не посмотрит.</p>
25
<p>Но вот с физикой всё же нужно быть осторожнее. Если игрок отвернётся от объекта, пока тот падал, а вы его (объект) отключите, то получится странный эффект. Объект никогда не упадёт, пока игрок снова на него не посмотрит.</p>
26
<p>Впрочем, это можно использовать как особенность игры. Хороший пример: в сериале "Доктор Кто" есть существа, называемые плачущими ангелами. На вид это обычные статуи, но, когда на них никто не смотрит, они могут перемещаться.</p>
26
<p>Впрочем, это можно использовать как особенность игры. Хороший пример: в сериале "Доктор Кто" есть существа, называемые плачущими ангелами. На вид это обычные статуи, но, когда на них никто не смотрит, они могут перемещаться.</p>
27
Не моргайте)<p>Отсылка к этим ангелам есть в игре<strong>The Witcher 3:</strong></p>
27
Не моргайте)<p>Отсылка к этим ангелам есть в игре<strong>The Witcher 3:</strong></p>
28
<p>Тут можно подойти по-разному:</p>
28
<p>Тут можно подойти по-разному:</p>
29
<ul><li>снижать разрешение текстур;</li>
29
<ul><li>снижать разрешение текстур;</li>
30
<li>снижать количество полигонов у объектов;</li>
30
<li>снижать количество полигонов у объектов;</li>
31
<li>отключать шейдеры и так далее.</li>
31
<li>отключать шейдеры и так далее.</li>
32
</ul><p>В более старых играх можно заметить, что объекты и вовсе исчезают, а вместо них появляются текстуры.</p>
32
</ul><p>В более старых играх можно заметить, что объекты и вовсе исчезают, а вместо них появляются текстуры.</p>
33
В GTA: Vice City кусты всё время были обычными текстурами<p>Всегда старайтесь использовать ассеты, которые меньше весят: то есть low-poly (англ. низкополигональные) объекты, сжатые текстуры и так далее. Как правило, почти любой ассет можно оптимизировать так, что он по-прежнему будет хорошо выглядеть. И если с текстурами вы можете сделать это сами, то оптимизировать объекты может только опытный 3D-художник.</p>
33
В GTA: Vice City кусты всё время были обычными текстурами<p>Всегда старайтесь использовать ассеты, которые меньше весят: то есть low-poly (англ. низкополигональные) объекты, сжатые текстуры и так далее. Как правило, почти любой ассет можно оптимизировать так, что он по-прежнему будет хорошо выглядеть. И если с текстурами вы можете сделать это сами, то оптимизировать объекты может только опытный 3D-художник.</p>
34
<p>Вот пример неплохой низкополигональной (по современным меркам) модели:</p>
34
<p>Вот пример неплохой низкополигональной (по современным меркам) модели:</p>
35
<p>Если добавить хорошую текстуру, то такая модель подойдёт в качестве декорации для проекта с хорошей графикой:</p>
35
<p>Если добавить хорошую текстуру, то такая модель подойдёт в качестве декорации для проекта с хорошей графикой:</p>
36
<p>Кстати о декорациях: не все игровые объекты должны быть высокого качества. Например, главный герой должен быть как можно более проработанным. Но, скажем, цветы, траву и камни можно сделать низкого разрешения.</p>
36
<p>Кстати о декорациях: не все игровые объекты должны быть высокого качества. Например, главный герой должен быть как можно более проработанным. Но, скажем, цветы, траву и камни можно сделать низкого разрешения.</p>
37
На момент выхода Fallout 4 детализация головы персонажа была такой высокой, что низкое разрешение одежды замечалось не сразу<p>Рассчитывание и отрисовка света, теней и отражений потребляют очень много ресурсов. В то же время эти эффекты делают визуал выразительнее. Тут можно посоветовать делать как можно меньше источников света и отражающих поверхностей.</p>
37
На момент выхода Fallout 4 детализация головы персонажа была такой высокой, что низкое разрешение одежды замечалось не сразу<p>Рассчитывание и отрисовка света, теней и отражений потребляют очень много ресурсов. В то же время эти эффекты делают визуал выразительнее. Тут можно посоветовать делать как можно меньше источников света и отражающих поверхностей.</p>
38
<p>Что касается теней, то тут лучше всего поможет ограничение числа объектов с динамичными тенями.</p>
38
<p>Что касается теней, то тут лучше всего поможет ограничение числа объектов с динамичными тенями.</p>
39
<p>Современные процессоры оснащены как минимум двумя ядрами. Однако будут ли эти дополнительные ядра использоваться, зависит от разработчика. То есть если у вас в игре есть какие-то сложные вычисления, которые не зависят от движка, то старайтесь выполнять их параллельно.</p>
39
<p>Современные процессоры оснащены как минимум двумя ядрами. Однако будут ли эти дополнительные ядра использоваться, зависит от разработчика. То есть если у вас в игре есть какие-то сложные вычисления, которые не зависят от движка, то старайтесь выполнять их параллельно.</p>
40
<p>Как это сделать, зависит от выбранной технологии.</p>
40
<p>Как это сделать, зависит от выбранной технологии.</p>
41
<p>Если в игре вы неоднократно используете какое-то значение, которое рассчитывается скриптами, то его лучше сохранить, а не использовать несколько раз.</p>
41
<p>Если в игре вы неоднократно используете какое-то значение, которое рассчитывается скриптами, то его лучше сохранить, а не использовать несколько раз.</p>
42
<p>Так же и с графикой: если вы с помощью кода отрисовываете спрайт, который будете использовать несколько раз, то его нужно сохранить в файл или в память, чтобы не тратить ресурсы на отрисовку каждый раз.</p>
42
<p>Так же и с графикой: если вы с помощью кода отрисовываете спрайт, который будете использовать несколько раз, то его нужно сохранить в файл или в память, чтобы не тратить ресурсы на отрисовку каждый раз.</p>
43
<p>При оптимизации важнее всего - понимать, что<em>нельзя делать это бесконечно</em>. Как бы вы ни старались, вы не сможете портировать<strong>Death Stranding</strong>на современные мобильные устройства без потери качества.</p>
43
<p>При оптимизации важнее всего - понимать, что<em>нельзя делать это бесконечно</em>. Как бы вы ни старались, вы не сможете портировать<strong>Death Stranding</strong>на современные мобильные устройства без потери качества.</p>
44
<p>Поэтому ещё во время разработки нужно определиться, для каких устройств и для какой аудитории будет ваша игра. Возможно, простая графика и низкие требования к железу станут вашими фишками?</p>
44
<p>Поэтому ещё во время разработки нужно определиться, для каких устройств и для какой аудитории будет ваша игра. Возможно, простая графика и низкие требования к железу станут вашими фишками?</p>
45
<p>Также очень важны навыки разработчика: профессионал пишет более производительный код и лучше работает с движком. Если вы хотите хорошо освоиться с движком Unity, то вам стоит<a>пройти курс</a>, на котором вы не только овладеете всеми необходимыми для разработчика навыками, но и создадите первые проекты.</p>
45
<p>Также очень важны навыки разработчика: профессионал пишет более производительный код и лучше работает с движком. Если вы хотите хорошо освоиться с движком Unity, то вам стоит<a>пройти курс</a>, на котором вы не только овладеете всеми необходимыми для разработчика навыками, но и создадите первые проекты.</p>
46
<a><b>Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞</b>Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Узнать больше</a>
46
<a><b>Кто вы в мире геймдева? Узнайте на бесплатном курсе ➞</b>Вы на практике попробуете 3 профессии: геймдизайнера, 2D-художника и разработчика на Unity. Создадите свою первую игру в стиле Mario. Узнать больше</a>