2013-03-15 26 views
6

Tôi nghe nói nếu tôi phát triển Trò chơi Android mà không sử dụng NDK, hiệu suất sẽ thấp hơn đáng kể. Đây có phải là sự thật không?NDK có cần thiết cho hiệu suất tốt trong việc phát triển Trò chơi Android không?

+0

Nhà phát triển Android [bài đăng blog] (http://android-developers.blogspot.co.uk/2010/06/game-development-for-android-quick.html) từ năm 2010 cung cấp cho [Đảo Replica] (http : //replicaisland.net/) làm ví dụ về trò chơi java được viết tốt. – Chilledrat

Trả lời

14

Tôi thấy 3 lý do chính để sử dụng NDK:

  • bạn muốn sử dụng C/C++ cơ bản (ví dụ như công cụ trò chơi viết bằng C++, trò chơi crossplatform)
  • có được nhiều bộ nhớ hơn (bạn có thể sử dụng nhiều nhiều bộ nhớ hơn thông qua NDK)
  • trò chơi của bạn rất chuyên sâu về CPU và bạn cần tất cả sức mạnh thiết bị của mình.

Trong tất cả các trường hợp khác, bạn có thể chọn bất cứ thứ gì bạn muốn. SDK/Java cho phép bạn sử dụng OpenGL theo cách tương tự như NDK, vì vậy đồ họa của bạn sẽ không bị chậm. Bạn nên cẩn thận với GC để có được lối chơi mượt mà. Nếu trò chơi của bạn rất chuyên sâu về CPU, bạn có thể viết một số phương thức trong C++ và gọi chúng qua JNI. Bằng cách này, Dalvik có JIT vì vậy mã Java có thể nhanh (thậm chí nhanh hơn đôi khi) là mã C.

+0

Cảm ơn bạn đã trả lời! – user1788012

1

Không bạn không cần phải sử dụng ndk trừ khi bạn muốn thực hiện một trò chơi 3d siêu thực tế như Real Racing 3 nếu nó là một trò chơi với đồ họa đơn giản hoặc không có nhiều thời gian thứ quan trọng java là ok

7

Không, Đó chỉ đơn giản là không đúng sự thật.

Điều đó phụ thuộc rất nhiều vào những gì trò chơi cụ thể của bạn đang làm. Câu hỏi cần thiết là: là trò chơi của bạn sẽ là CPU chuyên sâu (hoặc yêu cầu bộ nhớ lớn hơn).

  • Nếu không, hãy liên kết với SDK.
  • Nếu bạn không biết, bởi vì bạn chưa viết nhiều trò chơi trong quá khứ, bằng mọi cách, hãy liên kết với SDK.
  • Ngay cả khi nó trở thành một phần của trò chơi có thể làm với sức mạnh xử lý bổ sung, bạn luôn có thể trích xuất các phần đó thành mã gốc trong khi phát triển nếu cần.

Một lý do để chọn NDK trên SDK là có nền tảng lớn trong C++, điều này có thể giúp bạn làm việc hiệu quả hơn trong môi trường đó. Tuy nhiên, với trạng thái hiện tại của các bộ công cụ (gỡ lỗi thuận tiện, thời gian xây dựng, truy cập dễ dàng vào thư viện SDK, v.v), điều này hiếm khi hiệu quả.

+0

Trớ trêu thay có một lý do khác để dính vào NDK: mã di động trên nền tảng. Tuy nhiên, ngay cả điều này có thể đạt được (bằng cách nào đó) bởi HTML5 và Javascript. –

Các vấn đề liên quan