2011-11-28 20 views
6

Tôi đã sử dụng thành công Farseer để phát triển một trong các trò chơi của tôi bằng cách sử dụng XNA. Trò chơi chạy như một sự quyến rũ trong Windows và WP7. Tôi hiện đang làm việc để chuyển trò chơi của mình theo số IOS sử dụng MonotouchMonogame. Tôi đã thành công biên soạn và sử dụng Farseer cũng trên phiên bản đầu tiên của trò chơi của tôi được chuyển qua Monotouch và Monogame. Tất cả đều hoạt động tốt ngoại trừ buổi biểu diễn. Trò chơi chạy chậm hơn nhiều trên thiết bị iPhone. Tôi đã thực hiện một số điều tra mã và có vẻ như nút cổ chai chính là Farseer. Nó trở nên thực sự chậm khi nó phải quản lý nhiều hơn 5-6 cơ quan với một vật cố định gắn liền (vòng tròn).Thay đổi Farseer Physics Cài đặt động cơ để cải thiện hiệu suất

Đọc các tài liệu tôi nhận thấy rằng để điều chỉnh Farseer tôi có thể thay đổi giá trị từ lớp tĩnh Thiết:

Performance

Để nhận được nhiều nhất của động cơ, bạn nên cố gắng và làm theo hướng dẫn bên dưới:

Bật chế độ ngủ Ngủ cho phép bạn có số lượng lớn thi thể trên thế giới. Nó cũng có thể làm tăng sự ổn định của động cơ vì các chuyển động nhỏ trong một chồng các thân không lan rộng trong ngăn xếp. Một cơ thể ngủ có ít chi phí, vì vậy cho phép nó được khuyến khích.

Disable CCD tục Collision Detection ngăn chặn đường hầm nhưng với chi phí thực hiện. Nếu bạn không gặp vấn đề với đường hầm, bạn nên tắt tất cả CCD.

Giảm thiểu số lượng các vị trí và vận tốc lặp Một số lượng lớn các lần lặp làm cho động cơ ổn định hơn với chi phí hiệu quả. Bạn nên tinh chỉnh các giá trị để phù hợp với trò chơi của bạn.

Tin xấu là nếu tôi thay đổi bất kỳ giá trị nào của lớp đó, dường như không có gì xảy ra. Tôi cố gắng để thay đổi các giá trị như sau:

EnableDiagnostics = false 
VelocityIterations = 6 
PositionIterations = 2 
ContinuousPhysics = false 

Tôi cũng thử với giá trị thấp như VelocityIterations = 1 nhưng không dường như thay đổi ....

Bất cứ ai đã thay đổi giá trị lớp Settings để cải thiện màn trình diễn?

+1

Bạn có thể thử đặt câu hỏi này trên http://gamedev.stackexchange.com/. Vì cộng đồng của nó tập trung đặc biệt vào phát triển trò chơi (với sự tập trung dường như cao của các nhà phát triển XNA), bạn có thể nhận được câu trả lời tốt hơn ở đó. –

+0

Mono rất chậm.Có rất tốt có thể không có bất kỳ cách nào để thay đổi các thiết lập đủ để tiết kiệm cho mình. – ClassicThunder

+0

Không đúng sự thật ClassicThunder, Mono và Monotouch thực sự có hiệu suất ngay cả trên iOS. Tôi đã giải quyết được vấn đề và tôi phát hiện ra rằng Farseer không phải là vấn đề lớn nhất về vấn đề này. – John

Trả lời

1

Ok,

Tôi đã quản lý việc này. Các bottlenek lớn không liên quan đến Farseer. Khi tôi giải quyết tất cả các vấn đề về hiệu suất liên quan đến "mã xấu" của tôi, điều chỉnh Farseer như mô tả ở trên hoạt động rất tốt để đạt được 5-10% các buổi biểu diễn.

Trò chơi của tôi được viết bằng XNA, được chuyển đến iOS một Android với monotouch và mono4android thành công.

+0

Bạn nên biết về SlimTune (hoặc nProf) - Rất hữu ích trong việc tìm ra các tắc nghẽn trong mã của bạn. – jgallant

+0

Bạn có thể nhận xét cách bạn cải thiện hiệu suất không? Nó hoạt động tốt trên thiết bị 3GS? – Notbad

+0

Hi Notbad. Bạn đang hỏi về việc cải thiện màn trình diễn của Farseer hay MyGame/MonoTouch/Monogame? Có nó chạy trên 3GS. Bạn có thể thử trò chơi của tôi một mình. Nó được gọi là "Smashing Planets" và nó hoàn toàn miễn phí trên AppStore – John

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