2009-07-16 26 views
14

Tôi không biết nếu đó là một câu hỏi lạ nhưng làm thế nào tôi có thể chạy một trò chơi được thực hiện với XNA trên iPhone/iTouch? Các bước/công cụ nào (các công cụ hiện có hoặc tưởng tượng ...) nên được sử dụng?XNA trên iPhone

lưu ý: Mục đích là để tránh thay đổi hiện mã C#

UPDATE:
Nếu tôi hiểu đúng, tôi phải có khả năng:
1) Khởi mã XNA của tôi trên Mono (monoxna hoặc SilverSprite , hứa hẹn?)
2) Run Mono trên iPhone (MonoTouch)

+1

Tôi đã cố gắng giải quyết vấn đề này. http://rockethub.com/projects/752-exen-xna-for-iphone-android-and-silverlight –

+0

Ở đây tôi nghĩ đây là một câu hỏi đùa, nhưng chưa có một số thảo luận thực sự và các giải pháp khả thi. Tôi thích cách tính toán đến nay. – Cheezmeister

Trả lời

6

Tôi không tin rằng có một câu trả lời hay cho câu hỏi của bạn. XNA không nhắm vào iPhone, do đó, cơ hội để có thể có hiệu quả cổng một trò chơi XNA mà không sửa đổi mã nguồn C# không có khả năng xảy ra.

Thay vào đó, tôi khuyên bạn nên xem xét các khuôn khổ khác nhau tồn tại để giúp bạn tạo các trò chơi đa nền tảng. Unity thường xuất hiện trong các cuộc thảo luận này, nhưng không miễn phí.

Nếu nền tảng chéo không phải là mục tiêu của bạn, nhưng phát triển iPhone miễn phí, thì tôi khuyên bạn nên xem Cocos.

Chỉnh sửa: Dự án MonoTouch có thể hỗ trợ bạn trong tương lai nhưng không giúp bạn ngay bây giờ. Tuy nhiên, đó là một cái gì đó để giữ một mắt trên.

Chỉnh sửa: Cảnh quan đã thay đổi rất nhiều trong ~ 5 năm kể từ khi câu hỏi này được đăng. Nếu bạn có một dự án XNA mà bạn muốn chạy trên iOS, thì Xamarin.iOS (trước đây là MonoTouch) cộng với MonoGame là một sự phù hợp gần như hoàn hảo. MonoGame đang thiếu một đoạn lớn của đường dẫn nội dung XNA, có nghĩa là bạn sẽ phải từ bỏ nó hoặc có một cá thể VS2010 ở đâu đó để biên soạn nội dung của bạn.

+0

Bạn có thể thêm hỗ trợ Java hoặc .NET trên nền tảng iPhone là rất khó xảy ra. Để xây dựng trên đó (mặc dù tôi có thể sai ở đây), Apple dường như muốn hoàn toàn kiểm soát phát triển cho iPhone, có nghĩa là bạn phải trả một khoản phí giấy phép để triển khai C/C++/Objective-C chương trình với nó; trong khi .NET và Java cung cấp nhiều khả năng lập trình của người dùng cuối hơn so với Apple. –

0

Đối với người mới bắt đầu, bạn sẽ cần một việc thực hiện CLR trên iPhone, mà nai không tồn tại vào lúc này, nhưng có vẻ như ai đó đang cố gắng: MonoTouch.

6

MonoTouch project cuối cùng có thể trợ giúp ở đây, vì nó cho phép bạn viết C# nhắm mục tiêu iPhone (nó được biên dịch tĩnh thành mã gốc).

+0

Nhưng nếu anh ta nhắm mục tiêu XNA, anh ấy sẽ sửa đổi mã. Tôi nghĩ dự án đó rất tuyệt vời và là một hướng đi đáng giá. Và OMG trên mệnh đề no-JIT. Thậm chí còn tệ hơn quyết định của Android để không sử dụng JIT cho Java. –

+0

Tôi không nghĩ Apple cho phép thông dịch viên ngoài chính họ. Đó có phải là lý do tại sao không có JIT, tôi tự hỏi? – Nosredna

+0

Tôi chỉ đọc trang gỡ lỗi cấp thấp MonoTouch. Yikes. – Nosredna

2

Tôi tin rằng XNA phụ thuộc vào Direct3D 9 (xem http://msdn.microsoft.com/en-us/xna/aa937793.aspx), có thể gợi ý những rào cản mà người ta có thể gặp phải trong cả việc chuyển sang mono cũng như có đủ mã lực đồ họa trên iPhone.

+0

XNA tùy thuộc vào DirectX, tôi đồng ý, là rào cản lớn nhất. .Net trên iPhone là có thể. Để có được XNA trên iPhone yêu cầu thực hiện ngăn xếp đồ họa XNA trên iPhone. –

1

Mọi người đều nói rằng điều này là có thể bởi vì có thư viện CLR cho Mono, thậm chí không nghĩ về thực tế rằng XNA là một tập hợp KHÁC WHOLE khung:

"Thư viện XNA lớp Framework là một thư viện các lớp học , giao diện và các loại giá trị được bao gồm trong XNA Game Studio. "

Như một người trả lời khác đã lưu ý, điều này cho đến nay không xảy ra nó thậm chí không buồn cười. Nếu bạn thực sự muốn viết một trò chơi, tôi sẽ kiểm tra Unity. Đó là thương mại, nhưng nó trông hoàn toàn ấn tượng và bạn có thể script logic trò chơi của bạn trong Javascript hoặc (đây là phần vui nhộn) C#! Có, thay vì phải trải qua một tấn công việc để chuyển toàn bộ khung công tác vì bạn muốn viết một trò chơi trong C#, tại sao không chỉ sử dụng một khung công tác cho phép bạn làm điều đó ngày hôm nay?

+0

Thx cho câu trả lời. Dự án của tôi gần như đã hoàn thành nên tôi đã tự hỏi nếu có một cách để làm cho nó di động với nỗ lực tối thiểu;) (viết lại không phải là một lựa chọn) – Jodi

+0

Tôi sẽ suy nghĩ nghiêm túc nếu tôi là bạn. Bạn có lẽ có thể tái sử dụng tất cả các tài sản đồ họa của bạn, và kể từ khi kịch bản là trong C# Tôi sẽ đặt cược rất nhiều logic trò chơi của bạn sẽ cổng là tốt. Nếu đó là một trò chơi hay, bạn có thể nhận được khá nhiều người dùng trên iPhone. –

1

Từ miệng the horse 's:

MonoTouch + SilverSprite = XNA 2D game trên iPhone? :)

Bill có nghĩa là nó cuối cùng sẽ có tính khả thi để viết một trò chơi 2D XNA, sau đó sử dụng SilverSprite để chạy nó trên Silverlight, sau đó sử dụng MonoTouch để chạy nó trên iPhone

+0

Đó là tin tốt! Thật tuyệt khi biết những người tài năng quan tâm đến việc mang XNA đến iPhone! – Jodi

11

Không chỉ là nó có thể nhưng đây là một đoạn video của một người nào đó làm XnaTouch trên MonoTouch: First game to IPhone build with XnaTouch (XNA for IPhone)

Dưới đây là bài viết mono về làm việc đó http://www.mono-project.com/MonoTouch

+0

Bạn sẽ cần một số #if trong mã nguồn của mình để thay đổi các không gian tên, nhưng XnaTouch khá dễ sử dụng từ trải nghiệm của tôi. – jjxtra

1

Không gian này chắc chắn nóng lên . Hiện tại có một dự án XNA Touch trên codeplex nhằm mục đích đưa API XNA lên nền tảng iPhone/iPad:
http://xnatouch.codeplex.com/

0

Một người bạn của tôi đang phát triển cổng kiến ​​trúc XNA 4.0 cho nền tảng iOS. Tất nhiên nó được viết trong Objective-C, nhưng nó có cảm giác của XNA. Ông đã xuất bản nguồn theo LGPL tại http://code.google.com/p/xni/.

1

'Có thể' bạn chỉ có thể thay đổi không gian tên của XnaTouch để khớp với không gian tên của mã Xna hiện tại (ví dụ: Microsoft.Xna.Framework. *), Khi phát triển dự án MonoTouch? Điều này có thể được thực hiện trên một nhà cung cấp (bản sao) của mã XnaTouch, dễ quản lý bằng Git, Mercurial hoặc Piston vv.

Tôi không chắc liệu nhóm XnaTouch có thực hiện thay đổi trên codebase của riêng mình hay không , do đó, điều này có thể được thực hiện tốt nhất trên các chi nhánh mã, cá nhân, riêng của bạn (thú vị, Mono.xna project uses the original Microsoft.Xna.Framework.* namespaces, tôi không chắc chắn tại sao XnaTouch chọn không làm như vậy).

JFYI, XnaTouch hiện tại (v1.0) theo Xna 4.0 khá trung thực. Tôi đã tìm thấy một cuộc gọi phương thức thiếu [nhỏ] mà tôi đã thực hiện để không thực hiện các ngoại lệ (?). Mã gốc-xna4-and-đổi-XNA chạm không biên dịch, bây giờ tôi cần phải thực hiện gui iphone cụ thể và xử lý, vv

Hope this helps một ai đó.

Cheers

Giàu

5

MonoGame là một thực hiện OpenGL miễn phí của 4,0 XNA Framework. Nó được xây dựng dựa trên phạm vi tuyệt vời của trình biên dịch Mono và tương thích với MonoTouch (iOS), Mono cho Android (Android), MonoMac (Mac OS X), Mono cho Windows và giờ là Linux!

Một danh sách 12 trò chơi hiện đang sử dụng MonoGame có trên Apple iOS App Store có thể tìm thấy @

http://monogame.codeplex.com/

https://github.com/mono/MonoGame/wiki/Released-Games

0

XNA không hỗ trợ chính thức trên iPhone; tuy nhiên, bạn có thể sử dụng ExEn (http://exen.codeplex.com/) hoặc MonoGame (http://monogame.codeplex.com/) để chuyển các trò chơi Xna của mình. Tiền thưởng khi sử dụng một trong hai cách này là họ hỗ trợ Mono cho Android.

0

Nếu bạn đang tìm kiếm một loại nền tảng đa nền tảng miễn phí, bạn có thể kiểm tra điện thoại. Tôi không có bất kỳ kinh nghiệm với nó nhưng có vẻ mát mẻ. http://phonegap.com/