Công cụ / Khung và Ngôn ngữ trò chơi hay nhất dành cho diễn viên 2D / trò chơi chuyên sâu sprite [đã đóng]


7

Tôi mới tham gia vào thế giới dev game.

Tôi có một dự án khá lớn (tôi học bằng cách tự đặt ra thử thách: P) và tôi tự hỏi công cụ / khung / ngôn ngữ tốt nhất là gì cho một trò chơi 2D với hàng ngàn họa sĩ / diễn viên trên màn hình cùng một lúc. Loại kim loại trần. Tôi cần vẫn có thể phóng to và thu nhỏ với nhiều diễn viên cùng một lúc.

Trò chơi này sẽ không có yếu tố 3D.

Có suy nghĩ gì không?

Gợi ý?



1
Nền tảng gì.
Tetrad

3
Bằng kim loại trần, bạn có nghĩa là C / C ++? XNA SpriteBatch xử lý hàng ngàn sprite rất dễ dàng; nhưng nó không phải là kim loại trần. Ngoài ra +1 để đọc Câu hỏi thường gặp và hỏi có lẽ là câu hỏi 'tốt nhất' tốt nhất mà tôi đã thấy.
Jonathan Dickinson

@JonathanDickinson Tôi nói kim loại trần vì tôi thấy đây là bộ xử lý khá chuyên sâu. Hàng ngàn sprite tất cả làm một cái gì đó và tương tác. Và tôi muốn càng ít càng tốt. Hy vọng rằng có ý nghĩa. Nền tảng là PC
Grungetastic

Tôi nghĩ rằng XNA là tuyệt vời để xử lý tải các sprite 2d nếu bạn biết C #, và tất cả chúng đều có thể tương tác và các công cụ. Nếu bạn muốn 'kim loại trần' thì C ++ trên opengl hoặc directX có lẽ là cách tốt nhất. XNA chạy trên DirectX.
annonymously

Câu trả lời:


9

C # với XNA

Vì bạn chưa quen với điều này, XNA sẽ có lợi thế là một nơi rất tốt để bắt đầu. Từ việc tạo một dự án mới đến hiển thị một sprite 2D trên màn hình, phải mất 5 dòng mã:

private Texture2D texture;

texture = Content.Load<Texture2D>("sprite");

spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();

Nó không dễ dàng hơn thế này nhiều. Cũng có lợi thế là có vô số mẫu giáo dục có sẵn cho nó.

Vấn đề là yêu cầu hiệu suất của bạn. Nhưng tôi đã xoay sở để vẽ hàng ngàn họa tiết trước đó trong XNA mà không gặp vấn đề gì. Tuy nhiên không có mã trò chơi đằng sau nó, và máy tính của tôi là cao cấp nên kết quả sẽ bị sai lệch. Nhưng với tối ưu hóa cẩn thận, nó có thể sẽ làm việc ra. Vì vậy, đây là khuyến nghị của tôi.

C # với SharpDX hoặc SlimDX

Vẫn ở trong vương quốc C # được quản lý, bạn cũng có thể quay lại một bước và xem xét sử dụng SharpDX , một trình bao bọc được quản lý mới xung quanh DirectX và họ cho rằng nó nhanh hơn khoảng 6 lần so với XNA. Điều đó nên có đủ sức mạnh cho nhu cầu của bạn. Và đó là nền tảng chéo.

Cũng có SlimDX để xem xét.

C ++ với DirectX / OpenGL

Và nếu bạn tiếp tục đi xa hơn theo hướng đó, cuối cùng bạn sẽ đạt được C ++ thuần túy với vương quốc DirectX / OpenGL. Nếu bạn quyết định đi theo con đường đó (mà nhân tiện, sẽ khó đối phó hơn ở giai đoạn này), có một vài điều bạn có thể làm để làm cho cuộc sống của bạn dễ dàng hơn.

Chẳng hạn, bạn có thể sử dụng SDL để tạo cửa sổ cho bạn và chăm sóc đầu vào và FMOD để xử lý âm thanh, cả hai đều thấy chúng dễ làm việc hơn so với các đối tác gốc của chúng.

Tôi cũng không biết ngày nay nó như thế nào, nhưng lần trước tôi làm việc với những thứ này, tôi thấy việc thực hiện công cụ 2D trong DirectX khá dễ dàng nhờ vào lớp D3DXSprite mà IIRC khá giống với SpriteBatch của XNA, trong khi với OpenGL I đã phải thực hiện mọi thứ từ đầu (tức là làm rối tung với các hình tứ giác, các hình chiếu chính tả và thực hiện các đợt).


8

Tôi khuyên bạn nên SFML , vì nó cho phép bạn dễ dàng quản lý các họa tiết 2D và phóng to / thu nhỏ (nhờ một lớp "máy ảnh" hiện có). Với những tóm tắt này, tôi thấy việc sử dụng nó đơn giản hơn XNA. Tôi không có số liệu thống kê về hiệu suất, nhưng vì nó sử dụng C ++ và hiển thị thông qua OpenGL, tôi nghĩ rằng nó có thể nhanh hơn XNA.

Thật trùng hợp, tôi đang làm việc trên một trò chơi tương tự bằng SFML. Nó có thể quản lý hơn 1000 sprite di chuyển ở tốc độ 50 FPS trên máy tính xách tay của tôi, trong khi chạy logic trò chơi (va chạm giữa các sprite, v.v.).

Dưới đây là ảnh chụp màn hình của chương trình SFML này chạy trên máy tính xách tay 3 tuổi của tôi với đồ họa tích hợp, ở tốc độ 25 FPS (800x600):

nhiều sprite trong SFML

Tôi nghĩ rằng có hơn 1000 họa tiết được hiển thị.


+1 Tôi đã nghe những điều hay về SFML trước đây (thường là so với SDL).
David Gouveia

Đối với những người muốn đi theo con đường SFML, Code Blocks trông giống như một IDE đẹp hỗ trợ SFML
Grungetastic

Tôi đề nghị một liên kết đến SMFL nên được thêm vào!
Zolomon
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.