Tôi nên xem xét các công cụ nào nếu mục đích của tôi là làm cho một trò chơi có sẵn cho nhiều nền tảng nhất có thể? [đóng cửa]


8

Chúng tôi đang lên kế hoạch phát triển một trò chơi giải đố dựa trên nền tảng 2D, và mặc dù vẫn còn rất sớm trong giai đoạn lập kế hoạch, chúng tôi muốn đưa ra quyết định của mình ngay từ đầu.

Chiến lược của chúng tôi sẽ là làm cho trò chơi có sẵn cho nhiều nền tảng nhất có thể, ví dụ như PC (Windows, Mac và / hoặc Linux), điện thoại di động (điện thoại iPhone và / hoặc Android), máy chơi game (XBLA và / hoặc PSN) PC sẽ có một điểm nhấn, nhưng tôi tin rằng đó là nền tảng linh hoạt nhất nên không phải là vấn đề.

Vậy, ngôn ngữ lập trình, công cụ trò chơi, khung và tất cả các công cụ xung quanh sẽ phù hợp nhất với mục tiêu của chúng tôi là gì?

Tái bút: Tôi đang đặt cược một bộ công cụ sẽ không bao gồm TẤT CẢ chúng, và vẫn sẽ có một số loại nỗ lực "dịch" cho một số nền tảng, nhưng chúng tôi muốn biết những gì vươn xa nhất.


Câu trả lời:


12

Chúng tôi có một khung C ++ dày trên lớp nền tảng mỏng, cũng là C ++. Chuyển một trò chơi sang một nền tảng mới là vấn đề triển khai một lớp nền tảng mới, bởi vì nó khá mỏng, nên nó khá nhanh để thực hiện.

Ngoài ra, tất cả các phụ thuộc của chúng tôi là các lib nguồn mở và đa nền tảng, chẳng hạn như SDL, Ogg, LibPNG, v.v.

Ví dụ: chúng tôi có nền tảng Win32 / DirectX, nền tảng SDL / OpenGL cho Linux và Mac, hoạt động trên nền tảng iOS cho iPhone / iPad và cũng có thể có cổng android. Trong một thời gian, chúng tôi đã có một nền tảng Playground, có nghĩa là khung của chúng tôi chạy trên công cụ Playground của PlayFirst. Cách tiếp cận nhiều lớp này cho phép bạn tận dụng bất kỳ giao diện nào bạn có với phần cứng / HĐH cơ bản, miễn là bạn có thể vẽ một hình tứ giác có kết cấu, nhận một số đầu vào và phát âm thanh, bạn đã thiết lập khá nhiều.

Tôi sẽ nổi bần bật vì điều này, nhưng C ++ có lẽ là ngôn ngữ đa nền tảng nhất. Mọi kiến ​​trúc và hệ điều hành rất có thể có trình biên dịch C ++ hoặc gcc có thể được chuyển đến nó.


3
Không có ngọn lửa, đó là một tuyên bố chính xác và một phần lý do tại sao chúng ta vẫn sử dụng nó.
Klaim

9

Chỉ cần sử dụng Unity


Ấn tượng chung dường như là Unity rất tuyệt cho 3D, nhưng không tuyệt vời cho 2D. Và câu hỏi là về một trò chơi 2D
bluescrn

6
Xem xét tôi đã chuyển một trò chơi 2D với Unity (và những người khác cũng vậy: unity3d.com/gallery/game-list ), tôi sẽ không đồng ý với ấn tượng chung. Có, không có xây dựng trong cách vẽ sprite hoạt hình batched, nhưng bạn có thể dễ dàng mở rộng các biên tập viên để làm điều đó cho mình. Điều đó, kết hợp với điều gần nhất với khả năng tương thích đa nền tảng nút nhấn thực sự và rào cản thấp để nhập cảnh khiến nó trở thành câu trả lời rõ ràng nhất.
Tetrad

Tôi phải đồng ý. Tôi đã đọc cái nàycái này và sử dụng Bộ công cụ 2D và tôi phải nói rằng làm 2D dễ dàng hơn nhiều so với tôi nghĩ.
NoobsAreP People2

1
Liên kết chỉ trả lời, nhận xét rằng tôi đủ. : /
MichaelHouse

6

Tôi mới tìm hiểu về NME vài ngày trước trong một câu hỏi khác và nghĩ rằng nó có thể đáng để truyền bá. Về chủ đề hỗ trợ đa nền tảng, frontpage nêu các nội dung sau:

Chọn NME mở ra cơ hội gần như vô tận. Tạo một ứng dụng và xuất bản lên Facebook, iOS App Store, Danh mục ứng dụng webOS, Android Market, Mac App Store, Ubuntu Marketplace, NOOK Apps, Chrome App Store, Steam và các thị trường khác mà không cần viết mã cụ thể cho từng nền tảng .

Cá nhân tôi chưa thử nghiệm nó, nhưng nó đã khiến tôi thấy thú vị vì nhiều lý do:

  • API rất giống với Flash , điều mà rất nhiều người đã quen thuộc. Cá nhân tôi đã từng làm nhiều trò chơi trong Flash / AS3 trước đây và nó khá dễ học và dễ làm việc.
  • Nó sử dụng một ngôn ngữ gọi là Haxe rất giống với ActionScript 3, nhưng có thể được biên dịch thành vô số định dạng , bao gồm cả C ++ bản địa.
  • Ở trên, kết hợp với một vài đường ống thông minh do NME thiết lập cho bạn, cho phép nó cực kỳ đa nền tảng . Trên PC, bạn có thể nhắm mục tiêu Windows, OS X và Linux và trên thiết bị di động, bạn có thể nhắm mục tiêu iOS, Android và webOS (trong khi vẫn có được hiệu suất gốc bằng cách sử dụng C ++ với OpenGL ES trong phần mềm). Cuối cùng, nó cũng cho phép phát triển trò chơi web bằng cách sử dụng Flash hoặc HTML5 canvas.
  • hoàn toàn miễn phí .

Tôi không có nhiều thời gian để thử nó vào lúc này, vì vậy nếu có ai đó, sẽ rất hữu ích nếu bạn có thể để lại một số phản hồi về nó.


1

Điều đó phụ thuộc, bạn có thể lập trình trong C / C ++, Obj-C và C # không?

Unity3D là kích thước 1 tốt nhất phù hợp với tất cả nhưng các trò chơi 2D trong đó có thể khá khó khăn (dù sao đối với trò chơi 2D).

Nếu bạn đang nhắm mục tiêu Xbox với XNA (còn gọi là cửa hàng độc lập) thì bạn phải sử dụng C #. Nhưng bạn không thể thực sự sử dụng C # với iOS (ngoại trừ sự thống nhất). Mặc dù bạn có thể sử dụng C / C ++ cho iOS, bạn vẫn cần sử dụng một chút Obj-C trừ khi bạn sử dụng một số loại kho trung gian.

Nếu bạn không sử dụng một công cụ, tôi nghĩ việc tốt nhất nên làm là viết một lớp trừu tượng của riêng bạn. Vì vậy, bất kỳ cuộc gọi nào đến thư viện của bạn đều phải đi qua lớp giữa này, vì vậy khi đến lúc chuyển sang cổng, bạn chỉ cần thay đổi việc thực hiện lớp trừu tượng và mã trò chơi của bạn còn nguyên vẹn ít nhiều.


1
Về mặt lý thuyết, xna touch cho phép các trò chơi xna được viết bằng c # chạy trên ios thru mono. xnatouch.codeplex.com
Steve H

@Steve H, Cuộc gọi tốt, mặc dù điều này có vẻ như sẽ khóa Android.
PhilCK

@PhilCK Mono có thể được tạo để chạy trên cả Android và iOS và MonoGame hỗ trợ cả hai. Tuy nhiên, bạn sẽ phải trả tiền cho một giấy phép từ Xamarin.
Cole Campbell

1

Các câu trả lời khác có các công cụ và ngôn ngữ khá tốt, nhưng về mặt đồ họa, tôi chắc chắn khuyên bạn nên làm đồ họa (2D) của mình ở định dạng vector và đảm bảo rằng chúng trông đẹp ở kích thước nhỏ và lớn. Quá nhiều chi tiết quy mô xuống kém, quá ít chi tiết quy mô kém.


1

Moai SDK là một khung mã nguồn mở và hiện có thể xuất bản lên Android, IOS và chrome. Moai sẽ có thể được mở rộng để bao gồm các máy chủ như máy chơi game, tùy thuộc vào kỹ năng và kiến ​​thức của bạn trong các lĩnh vực đó.


0

Tôi muốn nói lựa chọn ngôn ngữ tốt nhất của bạn sẽ là c #. Bạn có thể sử dụng nó để phát triển trong Unity cho một số nền tảng. c # cũng là ngôn ngữ được sử dụng trong MonoTouch (để phát triển cho iOS) và MondoDroid (chưa ra mắt nhưng sẽ cho phép bạn nhắm mục tiêu các nền tảng Android). Và, tất nhiên, c # có thể được sử dụng trong XNA cho phép bạn nhắm mục tiêu XBOX 360 và Windows Phone.

Điều đó khá nhiều bao gồm tất cả mọi thứ. Vẫn còn nhiều việc phải làm trong thực tế là bạn sẽ sử dụng các công cụ khác nhau để thao túng nội dung trò chơi, nhưng logic trò chơi cốt lõi của bạn không cần phải thay đổi nếu tất cả chỉ có trong c #.

oh và tất nhiên c # được sử dụng trong Silverlight cho phép bạn cũng nhắm mục tiêu vào web.


2
Mặc dù nó là một ngôn ngữ tốt, nhưng C # có vẻ là một lựa chọn khá kém cho nhà phát triển trò chơi đa nền tảng, thực sự. Cũng như các vấn đề về hiệu suất trên các nền tảng không phải PC, hãy nhớ rằng bạn chỉ có sẵn XNA trên một vài nền tảng và bạn sẽ bỏ lỡ một số lượng lớn các thư viện đa nền tảng hữu ích có sẵn nếu bạn sử dụng C / C ++. Đúng, điều này có nghĩa là không hỗ trợ Windows Phone hoặc Xbox Indie Games mà không có cổng hoàn chỉnh (nhưng đó có thực sự là một mất mát lớn, từ quan điểm bán hàng, khi bạn có thể hỗ trợ khá nhiều thứ khác không?)
bluescrn

0

Bước một có lẽ là làm cho trò chơi, ít nhất là một nguyên mẫu tốt, sử dụng các công cụ / công nghệ yêu thích của bạn, cho một nền tảng duy nhất (hoặc số lượng nhỏ nền tảng).

Rất dễ bị sa lầy vào các công cụ / phát triển công nghệ đa nền tảng. Tập trung quá nhiều vào tính đa nền tảng trước khi có một trò chơi giống như tối ưu hóa sớm. Chắc chắn bạn nên suy nghĩ sớm, nhưng đừng dành hết thời gian cho nó cho đến khi bạn thực sự có một trò chơi.

Cố gắng hỗ trợ mọi nền tảng trước khi biết liệu trò chơi có thành công hay không có vẻ là một chiến lược rủi ro cao - đặc biệt nếu đó là một trò chơi ngân sách thấp đơn giản (trong đó chi phí phát triển hệ thống đa nền tảng có thể vượt quá chi phí phát triển trò chơi chinh no?).

Sẽ không có ý nghĩa gì khi khởi chạy nó trên một số ít nền tảng, xem nó hoạt động tốt như thế nào và xác định xem có đáng để hỗ trợ các nền tảng khó khăn hơn không (ví dụ: các hệ thống ít mạnh hơn, những hệ thống có thiết bị đầu vào Arkward hoặc những thiết bị cần hoàn thành cổng tới C # hoặc Java)


0

Tôi biết nó không phổ biến, nhưng AS3 với Starling có thể là câu trả lời của bạn cho thiết bị di động, máy tính để bàn và web. Đó là TUYỆT VỜI và thực hiện theo những cách đáng ngạc nhiên. Tôi đã tạo và trò chơi iOS kinect cũng chạy trên windows và android. Không có gì khác có thể đáp ứng nhu cầu tính toán và đó là nền tảng chéo. Ngoài ra - bạn có thể nối liền với bất kỳ dự án Arduino nào. Hầu hết mọi người không nhận thấy những gì Adobe đã làm với các công cụ xây dựng flash / flash vào cuối ....


-3

Flash và Java có hỗ trợ rất rộng rãi; chúng hoạt động trên tất cả các PC (nhiều hơn hoặc ít hơn) và nhiều thiết bị di động (nhiều hơn hoặc ít hơn) và tôi chắc chắn rằng chúng dễ dàng chuyển sang bảng điều khiển như bất kỳ dự án nào khác có ảnh hưởng của PC.


3
Bạn sẽ không nhận Java trên nền tảng 360 hoặc PS3 hoặc iOS. Tương tự như vậy đối với đèn flash. Đối với ngôn ngữ có liên quan, tôi cho rằng C ++ dễ mang theo hơn trong trường hợp chung, ngoài XNA cụ thể (nhưng không phải XBLA).
Tetrad

Flash đôi khi được sử dụng cho những thứ như UI và minigame với phần mềm trung gian như Scaleform ( scaleform.com/products/gfx ). Tôi không thể tìm thấy nhiều thông tin về Java cho các bảng điều khiển, mặc dù hỗ trợ Bluray của PS3 dường như liên quan đến một JVM đơn giản. Bất kể, bạn phải thực hiện một loạt công việc để chuyển bất cứ thứ gì sang bàn điều khiển (ít hơn cho 360 nếu ban đầu là trong XNA). Nếu bạn thiết kế mã cho tính di động, ngay cả việc chuyển đổi ngôn ngữ trong một cổng là không khả thi.
Gregory Avery-Weir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.