Có phải là một ý tưởng tốt để phát triển trò chơi 2d không tầm thường trong python? [đóng cửa]


10

Tôi đang lên kế hoạch phát triển game nhập vai không gian 2D và tôi đang phải đối mặt với sự lựa chọn: ngôn ngữ tốt nhất để viết nó là gì? Ứng cử viên của tôi là C ++, Java và Python. Rõ ràng, tôi muốn viết trò chơi bằng Python vì tính biểu cảm, tốc độ phát triển và sự đơn giản của việc thêm hỗ trợ kịch bản. Nhưng tôi lo lắng:

  • Python không quá chậm? Trò chơi sẽ không tầm thường (ví dụ như Tetris), có thể cần phải tính toán các nhiệm vụ cho hàng ngàn tàu trong vũ trụ (mặc dù AI của chúng có thể được đơn giản hóa rất nhiều nếu những tàu đó không được nhìn thấy cho người chơi). Tất nhiên tôi có thể viết một số phần quan trọng bằng C, nhưng nó sẽ ngay lập tức làm phức tạp việc xây dựng và triển khai.
  • Giả sử trò chơi trở nên phổ biến và tôi trở thành siêu sao. Người dùng Windows hiếm khi có Python (may mắn thay, chúng tôi có py2exe). Python trên Mac OS X có thể bị lỗi thời và trò chơi có thể bị lỗi với ngoại lệ tối nghĩa. Sẽ không khó để triển khai trò chơi trong Python?
  • Do thiếu thư viện cho Python 3, tôi sẽ phải viết trò chơi bằng Python 2. Việc chuyển sang Python 3 trong vài năm có quá đau đớn và mất thời gian không?

Đối với câu hỏi thứ hai của bạn, tôi khá chắc chắn rằng cũng có một py2app bạn có thể sử dụng để triển khai khá dễ dàng.
thedaian

1
Nếu bạn quyết định làm điều này trong Python, bạn có thể muốn xem liệu bạn có thể thực hiện bất kỳ phần "chậm" nào bằng cách sử dụng numpy (nhưng nó có thể không cần thiết).
Brendan Long

Câu trả lời:


8

Python không quá chậm? Trò chơi sẽ không tầm thường (ví dụ như Tetris), có thể cần phải tính toán các nhiệm vụ cho hàng ngàn tàu trong vũ trụ (mặc dù AI của chúng có thể được đơn giản hóa rất nhiều nếu những tàu đó không được nhìn thấy cho người chơi). Tất nhiên tôi có thể viết một số phần quan trọng bằng C, nhưng nó sẽ ngay lập tức làm phức tạp việc xây dựng và triển khai.

Thật khó để nói, nhưng hầu hết thời gian, yếu tố hạn chế cho hiệu suất là khả năng / kinh nghiệm của một người với tư cách là nhà phát triển, không phải ngôn ngữ. Lưu ý rằng EVE sử dụng Stackless Python (xem tại đâytại đây để tải xuống bản trình bày liên quan). Tôi không nhớ các chi tiết chính xác, nhưng rõ ràng hầu hết các cụm máy chủ của họ đang chạy Python . Do đó tôi sẽ tưởng tượng rằng nó có thể xử lý các yêu cầu về khả năng mở rộng của bạn, mặc dù việc tạo mẫu để chắc chắn sẽ tốt.

Người dùng Windows hiếm khi có Python (may mắn thay, chúng tôi có py2exe). Python trên Mac OS X có thể bị lỗi thời và trò chơi có thể bị lỗi với ngoại lệ tối nghĩa. Sẽ không khó để triển khai trò chơi trong Python?

Hầu hết người dùng hiếm khi có các phụ thuộc nhị phân thích hợp cho các trò chơi, bất kể các trò chơi đó được viết bằng công nghệ nào (ngay cả C yêu cầu một thành phần thời gian chạy được phân phối). Triển khai thông qua py2exe hoặc tương đương, hoặc đơn giản là triển khai sự phụ thuộc thích hợp, là một điều gì đó thực tế của cuộc sống. Mặc dù nó không bao giờ là điều dễ dàng nhất (hầu hết các công nghệ cài đặt đều gây đau đớn), nhưng nó không thể thực hiện được và không phải là lý do để tránh ngôn ngữ - như tôi đã nói, bạn có thể sẽ cần phải xử lý một cái gì đó tương tự.

Do thiếu thư viện cho Python 3, tôi sẽ phải viết trò chơi bằng Python 2. Việc chuyển sang Python 3 trong vài năm có quá đau đớn và mất thời gian không?

Điều này tôi không biết nhiều, chưa bao giờ thực sự sử dụng Python 3. Tuy nhiên, tôi không mong đợi Python 2.X sẽ biến mất bất cứ lúc nào, vì vậy tôi thậm chí không nghi ngờ rằng thời gian chơi game của bạn sẽ như vậy Bạn cần phải chuyển đổi nếu bạn không muốn, điều này khiến vấn đề này không thành vấn đề.

Như những người khác đã nói, bạn đang lo lắng quá nhiều về khía cạnh lựa chọn ngôn ngữ trong dự án của bạn. Python là một công cụ hữu ích, mạnh mẽ để phát triển trò chơi và nếu bạn biết và thích nó, bạn nên phát triển cùng với nó. Không quan trọng trò chơi của bạn chạy nhanh như thế nào nếu nó không bao giờ kết thúc vì bạn lo lắng quá nhiều về ngôn ngữ.


Đã sử dụng python 2.7 khá rộng rãi, bạn không thể làm gì nhiều với python 3.2+ mà bạn không thể làm với 2.7. Điều đó sẽ thay đổi theo thời gian, nhưng cũng sẽ hỗ trợ thư viện. =)
Ken

14

Đến điểm đầu tiên của bạn, bạn sẽ chỉ cần xây dựng một nguyên mẫu và xem. Ngay cả khi bạn nói với chúng tôi tất cả các chi tiết sẽ không thực sự thay đổi mọi thứ.

Đối với hai điểm khác, tôi cảm thấy như bạn đang đặt xe ngựa trước ngựa. Từ câu hỏi của bạn, có vẻ như bạn chưa quen với việc phát triển trò chơi, trong trường hợp đó bạn thực sự chỉ cần chọn một công cụ và đi với nó. Nỗ lực vượt qua những ưu và nhược điểm của các công cụ hầu như không kém phần hữu ích là một sự phân tâm khỏi thách thức thực sự của bạn: học phát triển trò chơi.


0

re # 3, Python 2.x sẽ thấy hỗ trợ nhà phân phối trong ít nhất 5-10 năm nữa. Nếu bạn sử dụng phiên bản khá gần đây (2.7 hoặc có thể 2.6), đường dẫn di chuyển khá dễ dàng nếu bạn viết mã được chứng minh trong tương lai (đối tượng kiểu mới, unicode ở mọi nơi, v.v.). Nỗi đau chủ yếu dành cho những thứ dựa vào những hành vi cũ, bị phá vỡ.


Để giúp xác định các hành vi cũ sẽ cắn bạn, hãy chạy trò chơi của bạn python -3 filename.py, nó sẽ in ra các cảnh báo cho những thứ không còn được hỗ trợ trong Python 3
spiffytech 18/03/2016
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.