Hiệu suất Python vs Trình tạo trò chơi [đã đóng]


14

Ban đầu tôi đã nghĩ đến việc tạo ra một trò chơi với Python và SFML. Tôi hiểu Python chậm so với C ++, nhưng nó được so sánh với Game Maker như thế nào?

Lý do chính tôi hỏi là gần đây tôi đã chơi một trò chơi Game Maker (The Iconoclasts) chạy ở tốc độ khung hình khá tệ trên máy tính của tôi (GMA 950). Tôi lo lắng tôi sẽ gặp vấn đề về hiệu năng tương tự với Python / SFML.


Đã có những phát triển lớn trong Game Maker mà bạn có thể muốn xem xét
Jeff

Câu trả lời:


50

Có thể nói "Python chậm so với C ++" là một khái quát mà bỏ qua rất nhiều thực tiễn trong thế giới thực và thường là một loại phán đoán kém để dựa vào. Những gì bạn thực sự muốn làm là nhìn vào những gì một ngôn ngữ hoặc công nghệ cụ thể có thể mang lại cho bảng về nhu cầu của bạn và, tương tự, đánh giá bất kỳ nhược điểm tiềm năng nào của công nghệ đó so với nhu cầu của bạn.

Nếu bạn phải hỏi loại câu hỏi này, rất có khả năng yếu tố giới hạn về hiệu suất của bất kỳ trò chơi nào bạn thực hiện sẽ là bạn chứ không phải là sự lựa chọn công nghệ. Do đó, sự lựa chọn tối ưu là lựa chọn trao quyền cho bạn nhiều nhất, nói cách khác, công nghệ hoặc ngôn ngữ bạn đã biết rõ nhất.

Đối với hiệu suất kém của trò chơi Game Maker mà bạn đã chơi, có thể do một số yếu tố, một số yếu tố cụ thể cho trò chơi đó, chẳng hạn như mã kém cụ thể có thể được viết thông qua các công cụ hoặc ngôn ngữ kịch bản của Game Maker. Đó không hẳn là lỗi của chính Game Maker.


2
@Nevermind, bạn có thể - google cho sockpuppets . :) Đùa thôi - Tôi sẽ thêm phiếu bầu cho bạn. 5001 - tuyệt vời, giờ đây anh ta có thể bỏ phiếu cho các chỉnh sửa thẻ-wiki ...
Cyclops

1
Trên GMA 950, tôi sẽ không ngạc nhiên nếu trò chơi bị ràng buộc GPU chứ không phải bị ràng buộc bởi CPU.
Adam

4

Nếu tôi phải đoán lý do lớn nhất là trò chơi bạn chơi chạy quá chậm thì đó không phải là trò chơi của nhà sản xuất trò chơi, mà là nhà sản xuất trò chơi đó tiếp thị riêng cho những người không lập trình. Bởi vì bạn không có lập trình viên làm game nên rất có thể trò chơi đang nói đến sử dụng một số thuật toán rất kém hiệu quả khiến nó chạy chậm.

Như trong hầu hết các trường hợp, tốc độ của ngôn ngữ sẽ chỉ ảnh hưởng nhẹ đến hiệu suất chung của chương trình. Khi mọi người nói "omg ngôn ngữ này chậm hơn 50% so với ngôn ngữ khác" và tốc độ vẫn nhanh chóng ngu ngốc trong cả hai trường hợp, sau đó bạn sẽ thấy rất ít sự khác biệt rõ rệt với người dùng cuối.


3

Game Maker là một công cụ tốt cho người mới bắt đầu. Nhưng tôi khuyên bạn nên chuyển lên các chương trình lớn hơn và tốt hơn nếu bạn có bất kỳ kinh nghiệm lập trình nào trước đó. Tôi đã sử dụng GameMaker cho một khóa học phát triển trò chơi 2D đại học, nó có một hệ thống kéo và thả đẹp, dễ sử dụng. Tuy nhiên, vấn đề là kéo và thả chương trình không sử dụng các lệnh hiệu quả nhất (hoặc logic). Cộng với việc kéo và thả không hỗ trợ rất nhiều lệnh nâng cao mà chương trình có khả năng thực thi, do đó, lập trình viên phải sáng tạo với nó hoặc học cách viết mã. Tuy nhiên, nếu bạn học cách sử dụng mã GameMaker, thì bạn có thể dễ dàng khắc phục điều đó.

Nhưng, thật khó để học mã cho một chương trình duy nhất với lịch trình bận rộn mà tất cả chúng ta có, rất có thể là lý do tại sao bạn trải nghiệm hiệu suất chậm.

Nhưng như Kort Pleco đã tuyên bố trước đây, hầu hết tốc độ ngôn ngữ không khác biệt đáng kể .. Tất cả phụ thuộc vào cách viết mã và thực thi. Rất nhiều dư thừa có thể làm cho nó chậm hơn đáng kể, điều này thường là do thiếu kinh nghiệm trong mã hóa.


2

Đối với trò chơi tôi đang làm việc, tôi sử dụng thuật toán hình vuông kim cương để tạo ngẫu nhiên địa hình khi bắt đầu trò chơi mới. Để quyết định giữa việc sử dụng python với pygame cho dự án hoặc GameMaker, tôi đã triển khai trình tạo địa hình trong cả hai. Pygame thực hiện nhanh hơn một chút, nhưng sự khác biệt là không đáng kể. Cuối cùng, tôi đã chọn GameMaker vì tôi có thể làm việc nhanh hơn nhiều trong đó.


1

Câu trả lời được chấp nhận đã chết nhưng tôi chỉ muốn thêm 2 xu của mình với tư cách là người dùng GM trong gần 8 năm.

GM đã có nhiều vấn đề với việc tối ưu hóa nên có một số lo ngại chính đáng. Có một nhóm các phương thức không dùng nữa * _variable_exists? đã từng tồn tại trong studio tiền chế Gamemaker. Do phương pháp tiện lợi này, nó đã được tận dụng trong hầu hết mọi thư viện và phần mở rộng có thể tưởng tượng được viết cho GM. Hóa ra các phương pháp này rất tốn kém và gây ra vấn đề lớn khi chạy các trò chơi quy mô lớn.

Vì vậy, có nhiều trường hợp GM có thể thực sự tồi tệ nhưng với kiến ​​thức đúng đắn và sử dụng cẩn thận, nó không kém phần hợp pháp so với bất kỳ phương pháp nào khác (unity2d, pygame, v.v.). Chỉ cần làm game và vui chơi.

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.