2013-03-15 2 views
6

Я слышал, что если я разрабатываю Android-игру без использования NDK, производительность значительно ниже. Это правда?Требуется ли NDK для хорошей производительности при разработке Android-игры?

+0

Разработчик Android [сообщение в блоге] (http://android-developers.blogspot.co.uk/2010/06/game-development-for-android-quick.html) с 2010 года дает [Остров Replica] (http : //replicaisland.net/) в качестве примера хорошо написанной Java-игры. – Chilledrat

ответ

14

Я вижу 3 основных причины для использования NDK:

  • вы хотите использовать C/C++ код базы (например, игровой движок написано на C++, кроссплатформенная игра)
  • получить больше памяти (вы можете использовать много больше памяти через NDK)
  • ваша игра очень интенсивна и требует всей мощности вашего устройства.

Во всех остальных случаях вы можете выбрать все, что захотите. SDK/Java позволяет использовать OpenGL так же, как NDK, поэтому ваша графика не будет замедляться. Вы должны быть осторожны с GC, чтобы получить гладкий геймплей. Если ваша игра очень интенсивна, вы можете написать некоторые методы на C++ и вызвать их через JNI. Кстати, у Dalvik есть JIT, поэтому код Java может быть таким же быстрым (даже быстрее, иногда), как код C.

+0

Спасибо за ваш ответ! – user1788012

1

Нет, вам не нужно использовать НКА, если вы не хотите, чтобы сделать супер-реалистичные 3D-игры, такими как Real Racing 3, если это игра с простой графикой или не так много времени критических вещей Java нормально

7

Нет, Это просто не соответствует действительности.

Это очень зависит от того, что делает ваша конкретная игра. Существенный вопрос: - ваша игра будет интенсивной в CPU (или потребует больших объемов памяти).

  • Если это не так, придерживайтесь SDK.
  • Если вы не знаете, потому что вы еще не писали много игр в прошлом, обязательно используйте SDK.
  • Даже в этом случае оказывается частью игры, которая может работать с дополнительной вычислительной мощностью, вы всегда можете извлечь эти части в собственный код во время разработки по мере необходимости.

Одна из причин выбора NDK над SDK имеет огромный фон на C++, что может сделать вас более продуктивным в этой среде. Однако, учитывая текущее состояние наборов инструментов (удобная отладка, время сборки, легкий доступ к библиотекам SDK и т. Д.), Это редко бывает эффективным.

+0

По иронии судьбы есть еще одна причина придерживаться NDK: портативный код на разных платформах. Однако даже это может быть достигнуто (каким-то образом) с помощью HTML5 и Javascript. –

Смежные вопросы