Cách dễ nhất, thú vị nhất để lập trình trò chơi 2D? Đèn flash? XNA? Một số động cơ khác? [đóng cửa]


20

đây là một bài viết chi tiết tìm kiếm của tôi cho cách thú vị nhất để một lập trình viên trò chơi có sở thích làm dịu thời gian rảnh của mình với việc làm một trò chơi.

Yêu cầu của tôi: Tôi đã xem Flash trước, tôi đã tạo ra một vài trò chơi nhỏ nhưng tôi nghi ngờ về hiệu suất. Tôi muốn làm một trò chơi chiến lược khá lớn, với hàng trăm đơn vị chiến đấu cùng lúc, bao gồm cả vụ nổ và hình ảnh động. Ngoài ra bản đồ có thể phóng to. Tôi thấy rằng Adobe có API 3D mới cho Flash, nhưng tôi không biết liệu điều đó có cải thiện hiệu suất 2D hay không, tôi không thể tìm thấy bất cứ điều gì liên quan đến câu hỏi đó trong các phiên MAX10 của họ. Bạn có nói rằng Flash là một công nghệ tốt để tạo các game 2D lớn một cách dễ dàng không? Tôi thực sự thích Actioncript và tôi thích mọi thứ trong Flash dễ dàng như thế nào. Có một số động cơ có sẵn mà làm cho nó thậm chí dễ dàng hơn.

Tôi chỉ làm điều này cho vui, và sẽ tốt hơn nữa nếu có sẵn các trình soạn thảo hoạt hình / hạt thích hợp và nếu công cụ tôi sử dụng, sẽ có sẵn cho nhiều nền tảng. (để nhiều người có thể chơi trò chơi của tôi sau khi hoàn thành). Tôi muốn có nó trên nhiều nền tảng di động. (vì tôi thích đầu vào cảm ứng vì một số lý do)

Tôi biết khung XNA khá tốt, nhưng không có công cụ tốt nào cho nó và nó sẽ chỉ chạy trên Windows, đây là một sự thay đổi lớn. Thậm chí lớn hơn là, bạn cần cài đặt XNA phân phối lại mỗi khi bạn muốn đưa trò chơi cho ai đó. Nếu tôi sử dụng XNA, tôi sẽ phải tự tạo tất cả các công cụ và có lẽ tôi phải tạo chúng bằng WPF. (Tôi thích tạo các công cụ với Adobe AIR, nhưng tiếc là API để xử lý hình ảnh, v.v. lại tệ hơn nhiều so với Flash, so với trong XNA / WPF.) Bây giờ, tôi biết rằng tôi có thể tạo công cụ của riêng mình hỗ trợ từng nền tảng đó, nhưng thật lòng mà nói, đó sẽ là quá nhiều công việc cày qua API. Rốt cuộc, tôi muốn làm một trò chơi, không phải là một công cụ.

Vì vậy, câu hỏi trở thành: Có thể có một công cụ đa nền tảng (miễn phí hoặc miễn phí để phát triển không?) Mà tôi có thể sử dụng để phát triển 2D? Tôi thích: C #, Actioncript. Tôi không phiền khi sử dụng c ++ nếu bộ công cụ trên mức trung bình, nhưng tôi rất nghi ngờ rằng có một cái gì đó như thế. Vui lòng chứng minh tôi sai :) Vì vậy, tóm tắt: Tôi muốn sử dụng Flash, nhưng tôi không biết liệu nó có đủ tốt không. Tôi không phải là người viết kịch bản, tôi muốn một số API thực sự mà tôi có thể làm việc với bên trong một IDE phù hợp.

Chỉ để biết thông tin, tôi đã xem xét một số lựa chọn thay thế, tôi thực sự đang tìm kiếm trong một thời gian dài. Bạn sẽ giúp tôi rất nhiều để đưa ra quyết định cuối cùng.

  • Tính năng thông minh, động cơ Flatredball sẽ là lý tưởng. Nhưng tôi đã thử các công cụ của họ, và thật lòng mà nói, chúng thật kinh khủng. Hoàn toàn không thể sử dụng được, tôi cần phải tự làm cho chắc chắn. Tôi đã không nhìn vào API của họ, nhưng nếu công cụ của họ quá tệ, tôi không có xu hướng tìm kiếm thêm.

  • Unity3D. Cái này khá hay, nhưng tôi thực sự không cần 3D , và nó khá ... nhiều việc phải học. Tôi cũng không thích rằng nó quá đắt để sử dụng cho các nền tảng khác nhau và tôi chỉ có thể viết mã cho nó thông qua kịch bản. Bạn phải mua riêng từng nền tảng. Khả năng sử dụng của biên tập viên là trung bình, tổng thể sản phẩm đủ tốt cho hầu hết các mục đích, nhưng bản thân việc học nó sẽ là quá mức cần thiết.

  • Shiva 3D. Nó có vẻ đủ tốt, nhưng một lần nữa: tôi không thực sự cần 3D. Theo tôi, khả năng sử dụng trình soạn thảo kém hơn một chút so với Unity3D và theo tôi thì không rõ cách bắt đầu lập trình. Tôi nghĩ rằng nó đòi hỏi C ++ để mã hóa, vì vậy đó cũng là một tiêu cực. Tôi muốn vui chơi, và c # là niềm vui;)

  • SDL. Thẳng thắn mà nói, tôi vẫn cần chuyển đến tất cả các triển khai SDL khác nhau. Và tôi không thích lập trình kiểu OpenGL, nó thật đơn giản. Và nó cần c ++, tôi biết rằng có thể có một số hàm bao có sẵn, nhưng tôi không thích sử dụng các hàm bao, bởi vì ...

  • Irrlicht. Rất nhiều tính năng, nhưng sự hỗ trợ dường như còn thấp và nó nhắm đến những người đam mê. Các ràng buộc C # bị giảm liên tục. Tôi không phải là người đam mê động cơ, tôi chỉ muốn làm một trò chơi. Tôi không thấy điều này xảy ra với Irrlicht.

  • Ogre3D. Quá nhiều công việc, nó chỉ là một công cụ đồ họa. Ngoài ra không có nhiều nền tảng hỗ trợ và c ++.

  • Mô-men xoắn2D. Chi phí một cái gì đó để sử dụng, và tôi đã không nghe thấy nhiều điều tốt về hỗ trợ và tài liệu. Cũng chi phí thêm cho mỗi nền tảng.


Công cụ SDK FRB rất tệ (cụ thể là Keo, tôi không sử dụng nó) nhưng giúp bạn tiết kiệm thời gian viết chúng và các định dạng tệp đơn giản nếu việc viết công cụ của riêng bạn là bắt buộc. API không tệ và có vẻ phù hợp với phạm vi này, vấn đề lớn nhất hiện nay là thiếu cổng XNA 4.0 cho PC và Xbox. Ngoài ra, XNA redist và các điều kiện tiên quyết khác có thể là một phần của quá trình cài đặt - và sử dụng clickonce, bạn có thể tự động cập nhật và triển khai.
Oskar Duveborn

Chà, quan điểm của tôi là tôi sẽ không sử dụng chúng, và do đó các công cụ này là vô dụng. Họ liên tục đâm sầm vào tôi ngoài giao diện người dùng / cảm giác chung xấu. Điều gì xảy ra nếu họ bỏ lỡ một tính năng nhất định? Ngay cả khi chúng là nguồn mở, tôi sẽ không muốn đi bất cứ nơi nào gần các cơ sở mã đó. Có vẻ khắc nghiệt, nhưng tôi thực sự chỉ muốn một số chương trình thoải mái, và FRB có vẻ như một bánh trái của sự thất vọng. Chỉ cần tưởng tượng: Tôi đã thử trình soạn thảo hạt và thậm chí không thể tìm thấy nút để mở tệp hình ảnh. Đây được coi là tính năng quan trọng nhất mọi thứ khác được xây dựng dựa trên.
Tối đa

Không phải là một câu trả lời đầy đủ, nhưng Flash có tỷ lệ tốt hơn bạn nghĩ. Nếu bạn làm mờ một khung vẽ bitmapdata thay vì sử dụng ngăn xếp hiển thị và thực hiện một số tối ưu hóa đơn giản khác, bạn có thể vắt kiệt nhiều thứ hơn so với giải pháp ngây thơ hơn.
Gregory Avery-Weir

Listitem trong Particle Editor được gọi đơn giản là "texture" trên bảng thuộc tính bộ phát ^^ Có hướng dẫn về tất cả các công cụ để người tạo nội dung không mã hóa có thể giúp đỡ. Nhưng vâng, các UI thực sự khủng khiếp từ quan điểm thiết kế tương tác.
Oskar Duveborn

1
Đối với XNA là chỉ dành cho Windows, có một thực hiện mã nguồn mở của API XNA được gọi là MonoGame mà sẽ chạy trên tất cả các loại nền tảng không phải Windows: cocoa-mono.org/archives/400/... tôi đã không sử dụng nó bản thân mình nhưng nó tồn tại
hỗn loạn Kỹ thuật viên

Câu trả lời:


10

Pygame là xa yêu thích của tôi. Vì lập trình trong python có nghĩa là bạn sẽ lập trình nhanh và vì mọi thứ 2D rất nhanh, nên pygame sẽ rất vui ...


Như một phần thưởng nếu bạn quyết định rằng bạn muốn chuyển đến thế giới 3d, có một con trăn quấn GL trong da rắn;)
Wayne Werner

9

Tôi đã sử dụng LÖVE một thời gian và tôi rất thích nó. Bạn sẽ phải học Lua, nhưng dù sao nó cũng là một ngôn ngữ nhỏ thú vị. Những người ở diễn đàn là vô cùng hữu ích.


Hiệu suất là gì? Tôi có thể sử dụng IDE gì?
Tối đa

1
Tôi thứ hai này. Chúng tôi đã sử dụng Lua và LOVE cho trò chơi Global Game Jam của chúng tôi và nó đã hoạt động rất tuyệt vời. Họ đã tập hợp rất nhiều thư viện nguồn mở thực sự tuyệt vời theo một API chung và mọi bản phát hành đều trở nên tốt hơn. Hiệu suất rất tuyệt (Lua rất nhanh!) Và rất nhiều tính năng OpenGL tiên tiến như FBO được phơi bày, điều này rất hiếm đối với nhiều động cơ 2D. Trên hết, đó là nền tảng chéo (Win / Mac / Linux). Tôi chắc chắn sẽ cho nó một cái nhìn tốt.
Bob Bolog

1
@Maxi: Với tình yêu, bạn chỉ cần một biên tập viên và bảng điều khiển nơi bạn có thể viếtlove .
egarcia

2
Người Nga đã làm một trò chơi với điều đó? Nó sẽ đến từ nước Nga với tình yêu: P
Bart van Heukelom

5

Tôi quyết định đi với Flash. API Molehill 3D mới có thể được sử dụng để vẽ các họa tiết 2D trong không gian 3D nhanh hơn rất nhiều. Tôi thấy không có lý do tại sao Flash không đủ nhanh cho trò chơi mà tôi đã mô tả trước đó. Tôi sẽ phải tự xây dựng các công cụ, nhưng dù sao thì tôi cũng cần phải làm điều đó. Theo tôi, sử dụng AIR để xây dựng các công cụ cũng khá gọn gàng. Flash cũng có phạm vi tiếp cận rộng nhất với các nền tảng, rất tuyệt.


Hãy thử Cocos2d-x . Đó là những gì tôi đang sử dụng để phát triển game indie.
Stephen Furlani

1
Flash có lẽ là một lựa chọn tốt, vì có những công cụ và thư viện rất tốt cho người dùng flash. API Molehill sẽ giảm tải CPU (trước đây mọi thứ đã được CPU xử lý). Bạn phải suy nghĩ về việc phân phối trò chơi của bạn mặc dù. Flash thường có nghĩa là một trò chơi dựa trên trình duyệt ...
bummzack

Và hãy quan tâm về chơi game di động, flash và điện thoại di động là một sự kết hợp kém.
Gustavo Maciel

" Và hãy quan tâm đến việc chơi game trên thiết bị di động, đèn flash và điện thoại di động là một sự kết hợp kém. " @Gtoknu, có lý do gì không?
NemoStein

@NemoStein Hãy thử tìm kiếm trên youtube một số đèn flash đang chạy trong điện thoại di động. Ngoài ra, adobe đã ngừng phát triển flash sang Android và không có flash cho iOS.
Gustavo Maciel

4

Hãy thử SFML


Mặc dù hữu ích, SFML chỉ là một API đồ họa / mạng / âm thanh, không hoàn toàn là một công cụ trò chơi đầy đủ tính năng (mặc dù nó khá gần).
a_m0d

2

Hãy thử Cocos2d-x . Đó là những gì tôi đang sử dụng để phát triển game indie.

Đây là một nền tảng OpenGL (ES) đã được thử nghiệm và thực sự, có âm thanh, vật lý và thậm chí là một chút 3D đã được phát hành cho iPhone trong một thời gian và hiện đang đến với các nền tảng khác.


2

Vì bạn nói rằng bạn thích Actioncript nhưng đang tìm kiếm nền tảng chéo, hãy xem HaXe + NME . HaXe là một ngôn ngữ tương tự như Actioncript , nhưng có thể biên dịch thành Flash, Javascript, PHP hoặc C ++. NME là một thư viện tương tự như thư viện đồ họa của Flash, nhưng cũng chạy trên các nền tảng khác. Sự kết hợp này cho phép bạn biên dịch sang nhiều nền tảng khác nhau.

Tôi chưa sử dụng NME nhưng thử nghiệm đầu tiên của tôi với HaXe + Molehill (chỉ vài ngày trước) đã tạo ra 60fps khi hiển thị 10.000 sprite xoay 16x16 trên máy tính xách tay của tôi. Tôi mới chỉ sử dụng HaXe trong một vài ngày và không có đủ kinh nghiệm với nó để chắc chắn rằng đó là điều phù hợp với bạn, nhưng nó đáng để xem xét.


1

Cá nhân tôi là một fan hâm mộ lớn của Allegro 5 , nhưng nó là API C. Tuy nhiên, tất cả, đó là một API đơn giản giúp bạn tránh xa và cung cấp quyền truy cập vào:

  • Đồ họa 2D (được hỗ trợ bởi OpenGL hoặc D3D, tùy thuộc vào platfom)
  • Âm thanh
  • Phông chữ (bao gồm cả bitmap và TTF)
  • Đầu vào (chuột và bàn phím)
  • Vật lý (ảo hóa hệ thống tệp)
  • Tải hình ảnh

5.1 cũng sẽ được thêm hỗ trợ shader.

SDL 1.3 cũng được định hình khá tốt. Sam dường như đã hoàn thành việc thực hiện các thay đổi API lớn và những gì đã có là khá ổn định. Tuy nhiên ... nó thậm chí chưa phải là bản beta và Allegro 5.0 đã được phát hành.

Cấp, cho các trò chơi phức tạp và nâng cao hơn, có lẽ bạn muốn ghép Allegro 5 với một loại thư viện vật lý nào đó ( ví dụ Box2D ). Tuy nhiên, bạn có thể đi một chặng đường rất dài và có rất nhiều niềm vui, không có gì hơn ngoài Allegro 5, thư viện chuẩn C hoặc C ++ và mã của riêng bạn.

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.