Słyszałem, że jeśli opracuję grę Android bez użycia NDK, wydajność jest znacznie niższa. Czy to prawda?Czy NDK jest wymagany do dobrej wydajności w tworzeniu gry na Androida?
Odpowiedz
widzę 3 główne powody, aby korzystać z NDK:
- chcesz ponownie użyć C/C++ kod podstawowy (np silnik gry napisane w języku C++, gry crossplatform)
- dostać więcej pamięci (można użyć dużo więcej pamięci poprzez NDK)
- Twoja gra jest bardzo obciążająca procesor i potrzebujesz całej mocy swojego urządzenia.
We wszystkich innych przypadkach możesz wybrać, co chcesz. SDK/Java pozwala używać OpenGL w taki sam sposób, jak NDK, więc twoja grafika nie będzie wolna. Powinieneś być ostrożny z GC, aby uzyskać płynną rozgrywkę. Jeśli twoja gra wymaga dużej mocy obliczeniowej, możesz napisać kilka metod w C++ i wywołać je przez JNI. Przy okazji, Dalvik ma JIT, więc kod Java może być równie szybki (czasem nawet szybciej) jak kod C.
Dziękuję za odpowiedź! – user1788012
Nie, nie trzeba korzystać z NDK, chyba że chcesz zrobić super-realistyczne gry 3D, takie jak Real Racing 3 jeśli jest to gra z prostą grafiką lub niewiele czasu krytyczne rzeczy Java jest ok
Nie, to po prostu nieprawda.
To zależy od tego, co robi konkretna gra. Podstawowe pytanie brzmi: to twoja gra będzie intensywnie CPU (lub wymagają większej ilości pamięci).
- Jeśli nie jest, trzymaj się zestawu SDK.
- Jeśli nie wiesz, ponieważ nie pisałeś jeszcze wiele gier w przeszłości, należy trzymać się SDK.
- Nawet jeśli okaże się, że są to części gry, które mogą zrobić z dodatkową mocą przetwarzania, zawsze można wyodrębnić te części do kodu natywnego podczas tworzenia w razie potrzeby.
Jednym z powodów, dla których warto wybrać pakiet NDK w SDK, jest ogromne tło w języku C++, które może zwiększyć produktywność w tym środowisku. Jednak biorąc pod uwagę obecny stan zestawów narzędzi (wygodne debugowanie, czasy kompilacji, łatwy dostęp do bibliotek SDK itp.), Rzadko jest to skuteczne.
Jak na ironię, jest jeszcze jeden powód, by trzymać się NDK: przenośny kod na różnych platformach. Jednak nawet to można osiągnąć (w jakiś sposób) przez HTML5 i JavaScript. –
- 1. Budowa OpenSSL na Androida NDK
- 2. RemoteControlClient - czy Audio Focus jest wymagany/wymagany?
- 3. Czy wymagany jest AssemblyInfo.cpp?
- 4. Stare wersje Androida NDK
- 5. Przenoszenie gry SDL 2.0 na Androida
- 6. Uprawnienia Androida do ograniczenia INSTALL_REFERRER do gry w sklepie
- 7. Najlepsze praktyki w tworzeniu większych aplikacji na Androida
- 8. Narzędzia do analizy pamięci/wydajności dla Androida
- 9. Czy href jest wymagany w linkach?
- 10. Usuwanie i odinstalowywanie Androida NDK
- 11. Czy wymagany jest NSNotificationCenterObserver w ARC?
- 12. Czy w Scali jest jakiś silnik gry?
- 13. Co powiecie o wydajności Gask Haskella do miękkich aplikacji w czasie rzeczywistym, takich jak gry?
- 14. Zmienna lub punkt stały dla aplikacji OpenGL na Androida NDK?
- 15. Czy można tworzyć gry Android w Go za pomocą NDK z cgo i/lub SWIG lub podobnym?
- 16. Czy NodeJS jest wymagany do budowy aplikacji Electron?
- 17. Ubuntu PPA dla Androida SDK/NDK?
- 18. Jak mogę użyć complex.h dla Androida NDK?
- 19. Czy wymagany jest operator sizeof dla malloc?
- 20. Gdzie można znaleźć starsze wersje Androida NdK
- 21. Błąd kompilacji Androida NDK NDK_PROJECT_PATH = null
- 22. Czy wymagany jest klucz SSH do sklonowania publicznego konta github?
- 23. Korzystanie z Google Breakpad dla Androida NDK?
- 24. Czy są jakieś wartości wydajności w tworzeniu lokalnych kopii funkcji Lua?
- 25. przy użyciu gotowych bibliotek statycznych do projektowania NDK dla Androida
- 26. AVPlayer nigdy nie jest gotowy do gry
- 27. Wymagany jest podwójny flush?
- 28. Struktura Z80 ASM BNF ... czy jestem na dobrej drodze?
- 29. Czy czasownik HTTP "HEAD" jest przydatny w tworzeniu stron internetowych?
- 30. Wzorce do tworzenia gier na Androida?
Deweloperzy Androida [post na blogu] (http://android-developers.blogspot.co.uk/2010/06/game-development-for-android-quick.html) od 2010 roku [wyspa repliki] (http : //replicaisland.net/) jako przykład dobrze napisanej gry java. – Chilledrat