2009-08-11 38 views
9

Tôi đến từ một nền tảng chủ yếu là phát triển trang web và có thể là một số ứng dụng dựa trên biểu mẫu đơn giản. MVC hoạt động tốt cho điều đó, nhưng tôi hoàn toàn không thấy cách áp dụng cho trò chơi. Vậy các bạn làm thế nào?Cách bố trí mã của một trò chơi đơn giản?

Tôi đang phát triển với Qt và OpenGL, nếu điều đó có liên quan. Tôi có một QGLWidget mà tôi về cơ bản đang sử dụng như một trung tâm trung tâm vào lúc này. Nó có nên truyền đầu vào cho một đối tượng Trình phát để nó có thể xử lý nó hoặc nó có nên điều khiển trực tiếp trình phát không? Các đối tượng có nên tự vẽ hay không, hoặc có trình xử lý nào khác không? Về cơ bản, cái gì xảy ra ở đâu? Ai xử lý cái gì?

Liên kết đến bài viết có liên quan, câu trả lời cho một số câu hỏi, mẹo hoặc cấu trúc tệp này đều được đánh giá cao. Tôi không thực sự quan tâm về cách lập trình nó, chỉ cần làm thế nào để mô-đun hóa độc đáo.

Cảm ơn :)

Trả lời

6

Nhìn vào hướng dẫn này:

http://ezide.com/games/writing-games.html

Nó được viết cho python và giải thích MVC cho các trò chơi rất tốt.

Chúc may mắn!

+0

Có! Cảm ơn bạn! Bây giờ đây là chủ đề và rất có liên quan. Gần gũi hơn với những gì tôi đang tìm kiếm. – mpen

5

Vâng, điểm bắt đầu phát triển trò chơi có vẻ là gamedev. Có một số hướng dẫn và bài viết để bắt đầu từ đó. Nó cũng có một diễn đàn khá tích cực. Ngoài ra còn có cuốn sách, "Lập trình Linux Trò chơi" (Tôi giả sử thông qua Qt rằng bạn đang sử dụng Linux), nhưng tôi tin rằng nó chi phí tiền bạc. Tuy nhiên, một số sách có thể được tìm thấy trên internet và có thể là một trong số đó.

Ngoài ra còn có "nghệ thuật lập trình trò chơi đen", một wiki có tiêu đề chương thực sự đáng sợ. Đây là một liên kết đến một chương đặc biệt có liên quan, mặc dù tất nhiên bạn có thể xem toàn bộ điều: Chapter 2. (archive.org backup link)

Hope this helps, - Agor

+0

Tôi đã hy vọng cho một cái gì đó một ít cụ thể hơn "gamedev". Đó là nghệ thuật đen của chương trình trò chơi ... là khá khủng khiếp. Nó chủ yếu mô tả cách thức trò chơi sẽ xuất hiện cho người dùng cuối, và trong một thời trang khá cứng nhắc (chơi một hình ảnh động chết với rất nhiều âm thanh và các công cụ, sau đó hiển thị một màn hình điểm số cao!). Nó mô tả một vòng lặp sự kiện cơ bản, nhưng tôi đã hy vọng điều gì đó phức tạp hơn một chút so với cách viết một trò chơi 200 dòng trong một tệp duy nhất. Điều đó tôi có thể làm. Tôi không hoàn toàn có nghĩa là nó đơn giản. Tôi không thể nói nó được viết bởi một giáo sư 15 tuổi hay 60 tuổi cố gắng hành động "teh" tuyệt vời. – mpen

+0

Tôi đoán tôi có một chút mang đi đó. Tôi sẽ đào sâu hơn một chút, có thể có một số đá quý sau này, nhưng bit đầu tiên không được sử dụng nhiều. Có, tôi đang lập trình trên Linux cho dự án cụ thể này ... nó dễ dàng hơn nhiều để có được các thư viện tôi cần được cài đặt đúng cách. Nhưng tôi nhảy qua lại nhưng giữa các cửa sổ và Ubuntu ... nhưng nguyên tắc thiết kế không thực sự phụ thuộc vào hệ điều hành. Dù sao .. cảm ơn, tôi sẽ xem xét nó nhiều hơn nữa. – mpen

+0

Không phải lo lắng. Nếu bạn đang tìm kiếm mức độ chi tiết hơn, có thể hữu ích khi cung cấp thêm thông tin về * loại trò chơi mà bạn tạo ra. Tôi tưởng tượng rằng, các trò chơi chiến lược thời gian thực có cấu trúc mã hoàn toàn khác với những người bắn súng đầu tiên, hoặc trò chơi giải đố, hay bất cứ thứ gì. Như một gợi ý khác: có (tất nhiên) các trò chơi mã nguồn mở thuộc bất kỳ thể loại nào, vì vậy bạn có thể xem chúng để được hướng dẫn. Cá nhân, tôi không bao giờ có thể làm cho người đứng đầu hoặc đuôi của mã nguồn, nhưng có lẽ bạn là chuyên nghiệp hơn. :) [Và vâng, tôi đã xấu hổ bởi điều "nghệ thuật đen", nhưng nó có vẻ thích hợp vào thời điểm đó? :)] – agorenst

0

Đây có thể là cơ bản hơn bạn đang tìm kiếm, nhưng tôi đã được học tập với pygame, và họ là một cuốn sách của Apress về nó mà dạy gamedev cơ bản nếu những người khác quan tâm.

+0

Mọi người tiếp tục đề xuất trò đùa ... Tôi không thực sự quan tâm đến việc chuyển đổi hoặc học một thư viện mới, * nhưng * Tôi sẽ xem qua tài liệu để xem cách họ cấu trúc mọi thứ. Nếu nó thực sự là tuyệt vời, nó * phải * được thiết kế tốt phải không? Cảm ơn. – mpen

+0

Làm xước điều đó. Nó không giống như pygame cung cấp bất kỳ cấu trúc ... nó chỉ là một thư viện tiện ích lớn phải không? Không hấp dẫn chút nào với tôi. – mpen

0

Tôi gần như muốn hét lên trùng lặp của my question nhưng điều đó sẽ không đáng kể. :)

Dù sao, hãy xem qua các câu trả lời đó. Tôi nghĩ nếu bạn không có nhiều kinh nghiệm trong game dev, hãy nhảy vào nó. Đừng nghĩ nhiều về giai đoạn lập kế hoạch, chỉ cần lo lắng về việc làm gì đó trên màn hình, làm việc gì đó, sau đó refactor và mess với mã của bạn (mà không thay đổi đầu ra của bạn) và bạn sẽ tìm ra những gì làm việc và những gì có vẻ tốt nhất.

Tôi là một người hâm mộ lớn viết bài gì đó hoạt động, sau đó quay lại và tái cấu trúc. Bạn có thể học rất nhiều theo cách đó, và bạn dành ít thời gian hơn vào các vòng tròn giả định cố gắng tìm ra mọi thứ trong đầu và không làm gì cả. (Và đừng nói rằng đó là những gì bạn sẽ làm, có thể bạn là một người lập kế hoạch xuất sắc, nhưng cá nhân tôi đã làm rất nhiều lần.)

+2

Đó là vấn đề. Tôi luôn luôn * làm * nhảy ngay và không bao giờ lên kế hoạch, và sau đó tôi gió lên với một mớ hỗn độn lớn trên bàn tay của tôi mà phiền heck ra khỏi tôi và sau đó tôi "refactor" toàn bộ chương trình trở lại vào hư vô. Tốt hơn là bắt đầu với một số cấu trúc để tôi không bị cám dỗ để tách nó ra. Tôi có ít kinh nghiệm chơi game, nhưng không phải là không. Tôi đã có một bản sao Mario cơ bản siêu, và một trò chơi khác ... nhưng khi bạn cố gắng thêm nhiều yếu tố hơn (giống như một màn hình menu) tất cả mọi thứ chỉ sụp đổ. Giống như nếu người chơi của bạn là đối tượng duy nhất xử lý đầu vào ... điều gì xảy ra khi anh ta chết? – mpen

+0

Dù sao, bạn nói đúng. Nó khá giống với câu hỏi của bạn, tôi cũng sẽ đọc qua những câu trả lời đó. Cảm ơn :) – mpen

+0

http://dev.koonsolo.com/9/model-view-controller-for-games/ Đó là một điều tốt. Tôi luôn luôn nghĩ về "Model" là "database" và Controller như ... Tôi không biết, xử lý dữ liệu post và như vậy và gửi nó đến model, và Views là views .... phải xoay đầu tôi một chút để xem làm thế nào tôi có thể áp dụng điều này cho một trò chơi. Hữu ích :) – mpen

0

Hãy chắc chắn để nhìn vào hiện đại thành phần theo định hướng (đọc: pluggable) phương pháp tiếp cận, như tán thành bởi PushButtonEngine và được mô tả trong ngắn (5 phút) video này:

http://www.youtube.com/watch?v=auaqZzcjl-Y

Các vấn đề liên quan