2012-04-10 40 views
5

Trong tất cả các trò chơi iOS trước đây của tôi, tôi đã cài đặt trò chơi dưới dạng Ứng dụng xem đơn giản với một bộ điều khiển chế độ xem, tệp .h và tệp .m. Tôi thiết lập NSTimer đặt ở 30, 40 hoặc 60 khung hình/giây được gọi là vòng lặp chạy chính. Sau đó phát triển, tôi chia nhỏ cập nhật đồ họa (ở FPS cao hơn) và tính toán trò chơi (FPS thấp hơn) để giảm độ trễ. Tôi chưa bao giờ hiểu cách thực hiện đa luồng/đồng thời trong trò chơi vì đồ họa và tính toán phụ thuộc vào nhau ...Trò chơi được thiết lập như thế nào?

Cho rằng tôi chưa bao giờ có cơ hội đọc mã nguồn của trò chơi "thực", Tôi thiết lập nó trong một thời trang hợp lý, hoặc tôi đang sử dụng một cách tiếp cận hoàn toàn sai đến khung chính của trò chơi và chạy vòng lặp?

Tôi hỏi điều này vì tôi nhận thấy rằng ứng dụng của tôi có độ trễ thấp so với các ứng dụng khác trên App Store (ví dụ: ứng dụng của tôi thua khủng khiếp trên iPhone 3G, nhưng Doodle Jump, Fruit Ninja, Cắt Dây thừng, vv chạy tương đối thuận lợi).

Trả lời

9
  1. Bạn muốn sử dụng CADisplayLink thay vì NSTimer cho vòng lặp chạy của bạn.
  2. Bạn muốn vẽ càng nhiều GPU càng tốt. Điều này sẽ giải phóng các chu kỳ CPU và phần cứng tăng tốc rất nhiều tính toán mà bạn hiện đang làm trong phần mềm. Bạn làm điều này bằng cách vẽ sprites của bạn trong OpenGL như kết cấu OpenGL. Có các thư viện thực hiện việc này cho bạn như Cocos2D. Cocos2D cung cấp một API đơn giản để tạo và tạo hoạt ảnh sprites, và nó thực hiện tất cả OpenGL dưới mui xe, do đó bạn không phải làm như vậy.
Các vấn đề liên quan