Comments 27
Видел репост вашей новости вчера в ВК-группе Unity. Красивая игра получилась. Долго ли пришлось всё делать в одиночку?
+1
Спасибо за статью. Очень интересно и полезно (по крайней мере, для меня).
По поводу оптимизации согласен с автором: оптимизацию производительности действительно лучше выполнять на последнем прототипе. Просто следующий прототип может сильно отличатся от предыдущего и проводить оптимизацию производительности каждый раз – большая потеря времени. Но что если определённая оптимизация позволит ускорить процесс создания самого прототипа?
А в целом, автор молодец! У меня вот не получается работа с Unity. Видимо, без команды энтузиастов не обойтись.
По поводу оптимизации согласен с автором: оптимизацию производительности действительно лучше выполнять на последнем прототипе. Просто следующий прототип может сильно отличатся от предыдущего и проводить оптимизацию производительности каждый раз – большая потеря времени. Но что если определённая оптимизация позволит ускорить процесс создания самого прототипа?
А в целом, автор молодец! У меня вот не получается работа с Unity. Видимо, без команды энтузиастов не обойтись.
0
Спасибо! Конечно, разумная и целесообразная оптимизация всегда будет полезной.
0
Не даром Кнут сказал: «Преждевременная оптимизация — корень всех бед!».
Очень часто начинающие программисты страдают перфекционизмом (тот редкий случай, когда это больше плохо, чем хорошо). Это и побуждает тратить просто огромные усилия на оптимизации, забивая на прогресс и простоту. Я лично больше года себя тренировал, чтобы только отказаться от побуждений вроде «чета тормозит, вот щя я тут подпилю и будет нормально!». Лучше это время потратить на исправление багов и прогресс разработки.
Очень часто начинающие программисты страдают перфекционизмом (тот редкий случай, когда это больше плохо, чем хорошо). Это и побуждает тратить просто огромные усилия на оптимизации, забивая на прогресс и простоту. Я лично больше года себя тренировал, чтобы только отказаться от побуждений вроде «чета тормозит, вот щя я тут подпилю и будет нормально!». Лучше это время потратить на исправление багов и прогресс разработки.
0
Первым делом надо запустить Profiler. К сожалению, данная функция есть только в pro-версии юнити.А в какой версии Unity вы делаете / делали проект?
0
Начинал в 4.6, затем был довольно простой перенос в 5-ку. Сейчас последняя версия 5.3, это обоснованное требование издателя.
0
Начиная с 5й версии Unity для использования профайлера не требуется pro версия.
Мне ещё интересно — вы подписку оформляете или one-time покупку лицензии? Какой вариант по вашему мнению наиболее удобный в плане затрат / других параметров?
Мне ещё интересно — вы подписку оформляете или one-time покупку лицензии? Какой вариант по вашему мнению наиболее удобный в плане затрат / других параметров?
0
Насчет оптимизации теней можно также запекать тени.
docs.unity3d.com/410/Documentation/Manual/Lightmapping.html
docs.unity3d.com/410/Documentation/Manual/Lightmapping.html
0
Можно, данный метод хорош для статического окружения. Но в данной ситуации это оказалось неприменимым, я не нашел способ запечь тень от одного объекта в префабе.
0
А в чём вы делали 3D-модели? Блендер, да и 3D Max, я думаю, могут рендерить объект с тенью, не рендеря при этом фон.
0
Все модели делал в Unity из примитивов и использовал материалы для раскраски. Увы, редакторы пока не освоил.
0
Все модели делал в Unity из примитивов и использовал материалы для раскраски.
Забавно. А как же тогда получались более сложные формы — корона, звёзды, покерная фишка? Неужели в Юнити есть редактор?
А 3D-программу какую-нибудь советую освоить, это довольно просто, а возможности открываются гораздо шире.
0
Итог — увеличение скорости на 20% при появлении незначительных артефактов (при наложении и наслоении теней)
А что за артефакты появились? Вы говорите про то, что участки, где одна тень наложилась на другую, становятся ещё темнее?
0
а какая формула смешивания используется при наложении теней?
0
Давно хотел сделать ситибилдер+кликер. Но идея ничего не стоит как говорится) Удачи с проектом!
Интересно было бы глянуть код кодогенератора!
ЗЫ В закладках нашел еще одну статью(eng) про оптимизацию для мобилок.
Интересно было бы глянуть код кодогенератора!
ЗЫ В закладках нашел еще одну статью(eng) про оптимизацию для мобилок.
0
Спасибо! Код низкоуровневый и запутанный, проще алгоритм рассказать. По сути передается лишь одно число — код команды. Это 5 бит. Остальные биты — рандомный payload + хэш этого payload и команды. Таким образом сделана защита от модификации кода и повторной генерации одинаковых кодов. Длина кода 30 бит, что проецируется на пятизначный код с усеченным алфавитом (цифры и заглавные буквы без O и I).
Далее последовательность симметрично шифруется индексом получателя, чтобы только он мог дешифровать код. Дополнительно используется текущая дата как ключ, чтобы у кодов был срок действия. С этим все немного сложнее, но суть в том, чтобы вчерашний код нельзя было расшифровать завтра.
При всем этом механизм нельзя назвать безопасным, хотя безопасность может быть выше с увеличением длины кода. В игре есть таймауты и лимиты на случай перебора. Кроме того, на механизм завязаны лишь незначительные транзакции (можно отправлять мало ресурсов), которые бессмысленны при большом прогрессе в игре.
За статью благодарствую!
Далее последовательность симметрично шифруется индексом получателя, чтобы только он мог дешифровать код. Дополнительно используется текущая дата как ключ, чтобы у кодов был срок действия. С этим все немного сложнее, но суть в том, чтобы вчерашний код нельзя было расшифровать завтра.
При всем этом механизм нельзя назвать безопасным, хотя безопасность может быть выше с увеличением длины кода. В игре есть таймауты и лимиты на случай перебора. Кроме того, на механизм завязаны лишь незначительные транзакции (можно отправлять мало ресурсов), которые бессмысленны при большом прогрессе в игре.
За статью благодарствую!
0
Во вторых, суммарное количество вершин в общем не должно превышать 900
А вам нужно все таки лучше изучить как работает батчинг и какие у него ограничения. А так же в чем разница между Dynamic Batching и Static batching.
Указанные вами данные относятся к Vertex Data и относятся к Dynamic batchin (которые включают в себя не только Mesh Vertex, а и UV Vertex(а также UV2, UV3, UV4 и сколько их есть), Vertex Color Data, Skin и прочее что присутствует в модели). В реале же стоит рассчитывать на не более 300 вершин меша.
Статический же батчинг ограничен 2 в 16 степени (65536). На сколько мне известно это хардварное ограничение.
К тому же за счет того что статически батчинг ломает VBO — все комбайны становятся уникальными — то это раздувает размер билда до невообразимых высот. Используйте Static batching utility (описание найдете в script reference).
0
Ведь делать прототипы моделей в Unity гораздо удобнее, чем изучать моделирование. Если конечно, у вас в команде, нет моделлера, как у меня. У меня вообще никого не было).
Ccылка
на самом деле эту модельку можно еще как минимум оптимизировать в 1.5-2 раза (без потери качества) (зная маленькие азы 3д редактора, того же блендера).
Статистика показывала около 600 draw call (после работы автобатчинга) и 100.000 треугольников. Для сравнения — на текущий момент для сферической игры в вакууме рекомендуется иметь до 100 draw call и до 30.000 треугольников.
Я эту информацию 3 года назад слышал, сейчас слабые девайсы спокойно и 80к треугольников обработают)
0
К примеру возьмем самый дешевый телефон, основные параметры смотрим, до 60$, Android 4.0 + (меньше смысла нету, уже 4.0 вырезают с маркетов)
0
Вот к примеру этот, видеопроцессор Mali 400 (mp2) согласно открытым источникам Видеопроцессор на обычной рабочей частоте (275mhz) может обрабатывать 23млн треугольников в секунду. 23 000 000/30 = 766 666 треугольников в кадре (при частоте 30 кадров в секунду), турбо частота разгоняет до 400mhz (там еще больше будет обрабатывать в секунду). Конечно числа эти сугубо теоретические, есть много других факторов влияющие на производительность. но даже если брать в расчет что в полевых условиях цифры будут в 2-3 раза меньше, и брать расчет на бюджетные девайсы 3летней давности. думаю лимит в 80к-100к (по части треугольников) самое то. Лично запускал на бюджетном девайсе с Mali 400 (mp1) 70к спокойно тянуло, основная нагрузка была из за реалтайм теней-освещения, а так же шейдеров.
p.s Извиняюсь за оффтоп выше) путаю перенос строк и отправку текста на хабре)
Статья очень интересная и несомненно полезная получилась, особенно про опыт с издателем и оптимизацию кода. Вообщем благодарю за статью.
p.s Извиняюсь за оффтоп выше) путаю перенос строк и отправку текста на хабре)
Статья очень интересная и несомненно полезная получилась, особенно про опыт с издателем и оптимизацию кода. Вообщем благодарю за статью.
+1
Only those users with full accounts are able to leave comments. Log in, please.
Оптимизация игры на Unity и dev story Tap Tap Builder