Всем добрый день, вопрос немного теоретический, но все же.
Я начал изучать Java, а конкретно программирование в android studio.
Суть в том, что имея на руках не самый слабый девайс Samsung M31, моя простая с точки зрения графики и вычислений игра уже начинает тормозить.
При этом в загрузка ЦП телефона на уровне 20% а ОЗУ используется и вовсе около 100мб.
Чтобы не углублятся в код, я просто скажу что у меня на данный момент отрисовывается все через Layout, примерно 128 объектов каждую итерацию , все объекты для отрисовки хранятся в двух массивах типа ArrayList по 64 объекта в каждом.
Но мне кажется проблема в том, что весь код выполняется в одном треде, и чем больше различных вычислений тем больше времени уходит на каждую итерацию треда.
Правильно ли я понимаю что можно создать два или более потока, и это ускорит работу программы?
Что вообще можно предпринять для ускорения работы программы, и где можно почитать?
Буду благодарен за ответ.
Мобильное железо очень медленное, да и остальные, софтварно выводить графику не так просто, поэтому работать нужно с gpu ускорителем. Кстати даже в этом случае неправильная реализация положит любое железо.
Например прозрачные прямоугольные спрайты не могут бесконечно накладываться друг на друга, и речь идет о единицах - максимум десятках объектов.
Либо берите готовый движок либо изучайте Opengl ES и шейдеры (миниатюрные продпрограммы, выполняющиеся на gpu с большим количеством потоков, в сотни и даже тысячи)
Добрый день!
Если вас интересует именно разработка игр на Android & iOS, то начинать стоит не с Java, а с C# (напримре, Unity) или C++ (например, движок - Unreal Engine)
Но если вы решили писать игры именно на Java, то посмотрите в сторону готовых движков или фреймворков. https://libgdx.badlogicgames.com/ https://www.lwjgl.org/ https://jmonkeyengine.org/