2008-10-07 32 views
11

Tôi đang rối tung xung quanh với việc phát triển trò chơi 2D bằng cách sử dụng C++ và DirectX trong thời gian rảnh rỗi của tôi. Tôi thấy rằng phương pháp tiếp cận mô hình miền vấn đề enterprisey không giúp ích nhiều cho tôi;)Một số tài nguyên hay về thiết kế công cụ trò chơi 2D là gì?

Tôi đang tìm kiếm một "phương pháp hay nhất" tương đương với thiết kế công cụ trò chơi cơ bản. Làm thế nào các thực thể nên tương tác với nhau, làm thế nào hình ảnh động và âm thanh nên được đại diện trong một thế giới lý tưởng, và như vậy.

Bất kỳ ai có tài nguyên tốt mà họ có thể đề xuất?

Trả lời

15

Gamedev.net thường là nơi tôi chuyển sang nhận ý tưởng về những gì người khác trong cộng đồng phát triển trò chơi đang làm.

Điều đó nói rằng, tôi sợ rằng bạn sẽ thấy rằng ý tưởng "thực tiễn tốt nhất" trong phát triển trò chơi dễ bay hơi hơn hầu hết. Trò chơi có xu hướng là những ứng dụng chuyên biệt như vậy mà gần như không thể đưa ra bất kỳ câu trả lời "một kích thước nào phù hợp với tất cả". Những gì làm việc tuyệt vời cho Tetris là sẽ vô dụng với tiểu hành tinh, và một mô hình hoạt động hoàn hảo cho Halo có khả năng thất bại thảm hại cho Mario.

Bạn cũng sẽ tìm thấy nhanh chóng rằng không có thứ gì như "tiêu chuẩn ngành" cho các định dạng kết cấu, lưới, cấp, âm thanh hoặc hoạt ảnh. Mọi người chỉ cần cuộn của riêng mình hoặc sử dụng bất cứ điều gì là thuận tiện cho nền tảng này. Đôi khi bạn thấy những thứ như COLLADA, điều này rất hay, nhưng nó vẫn chỉ là định dạng trung gian được thiết kế để làm cho các nhà xuất bản viết dễ dàng hơn.

Nếu bạn chưa quen với phát triển trò chơi, lời khuyên của tôi sẽ là: Đừng tự mình giết cấu trúc mã của bạn trong lần đầu tiên. Hãy thử một trò chơi đơn giản, như tiểu hành tinh và chỉ cần hack cho đến khi nó hoạt động, bất kể mã "xấu xí" như thế nào. Sử dụng các định dạng đơn giản mà bạn đã quen thuộc mà không phải lo lắng về việc chúng sẽ nắm giữ như thế nào trong các dự án lớn hơn. Đừng lo lắng về các plugin, skin, editors, hoặc bất kỳ fluff nào khác. Chỉ cần làm cho nó hoạt động! Sau đó, khi bạn làm xong điều đó trước tiên, tất cả các trò chơi quan trọng, hãy chọn trò chơi khác và lần này dọn dẹp một hoặc hai khía cạnh của mã của bạn (nhưng đừng đi quá!) Từ đó, lặp lại!

Tôi hứa với bạn rằng điều này sẽ giúp bạn nhanh hơn nhiều so với bất kỳ số lượng poking xung quanh trực tuyến cho "đúng cách" bao giờ có thể (điều này đến từ một người đã thực hiện rất nhiều poking).

Và một ý nghĩ cuối cùng cho bạn: Nếu bạn cảm thấy thoải mái hơn khi làm việc trong một không gian được xác định rõ hơn, hãy xem XNA hoặc một thư viện tương tự. Họ sẽ xác định trước một số định dạng "tốt nhất" để sử dụng và cung cấp cho bạn các công cụ để làm việc với chúng, điều này sẽ đưa ra một số phỏng đoán ban đầu.

Chúc may mắn, và trên hết hãy nhớ: Trò chơi (và sự phát triển của chúng) được cho là FUN! Đừng quá bị cuốn vào những thứ nhỏ nhặt!

6

Tạo trò chơi. Sau khi bạn làm xong, hãy tạo một cái khác. Nhìn vào những gì bạn thích và những gì bạn không thích và sau đó tạo một cái khác.

Nghiêm túc, bạn có thể đọc tất cả các hướng dẫn "thực hành tốt nhất" để thiết kế trò chơi bạn muốn, nhưng cuối cùng là trải nghiệm. Cách duy nhất để có được kinh nghiệm là ngồi xuống và viết một trò chơi. Sau khi bạn làm điều này một vài lần, bạn sẽ nhận được nhiều ý tưởng tốt hơn về cách viết trò chơi.

+3

Cũng giống như xây dựng một ngôi nhà. làm cho người đầu tiên cho kẻ thù tồi tệ nhất của bạn, tiếp theo cho một người bạn và thứ ba cho chính mình. :-) – KPexEA

3

Khá nhiều cuốn sách có Andre Lamothe là một trong những người đóng góp.

GameDev cũng có rất nhiều bài viết.

0

Vì chưa được đề cập, tại sao không bắt đầu bằng cách xem một công cụ hiện có đã được phát hành cho cộng đồng? Vì bạn đang nói 2D, tôi sẽ quay trở lại và đề xuất một cái gì đó như Abuse. Có, nó cổ xưa và hầu hết các bit thú vị là trong Lisp - nhưng trò chơi đã rất phổ biến trong một thời gian có nghĩa là họ đã làm điều gì đó đúng.

Khi điều đó xảy ra, tôi nghĩ thực tế là phần lớn trò chơi gốc ở Lisp là một bài học rất hữu ích. Chọn ngôn ngữ/công cụ mạnh mẽ nhất và đừng lo lắng về hiệu suất. Bạn luôn có thể tối ưu hóa các phần chậm trong C sau này.

1

Tôi không thể đồng ý với bạn nhiều hơn: ứng dụng doanh nghiệp không chuẩn bị cho bạn lập trình trò chơi.

Tôi đã tạo một vài trò chơi quy mô nhỏ trong python, java, html/php và perl. Cấu trúc cơ bản của một trò chơi, như bạn đã biết, là:

Main Loop:
    handleInput()
    updateGameLogic()
    renderImages()

Bây giờ, đó là tất cả tốt và tốt cho một màn hình, trò chơi đơn luồng, giống như bất cứ điều gì từ những năm 70 hoặc 80. Nhưng tôi không tìm thấy cấu trúc này đặc biệt phù hợp cho các trò chơi đa màn hình (như RPG) hay bất kỳ thứ gì kỳ lạ hơn. Nó không chạy rất tốt. Mã được khá funky như bạn cần phải xử lý một loạt các yếu tố đầu vào. Nó không mở rộng tốt.

Tuy nhiên, trước khi tôi bash ẩn dụ này quá nhiều, xin lưu ý rằng đây là một nơi tuyệt vời để bắt đầu. Tôi sẽ đi xa như vậy để khuyên bạn nên học Python/Pygame và bắt đầu xây dựng trò chơi bằng công cụ đó thay vì C++, điều này làm phức tạp quá trình thiết kế và thực hiện. Khi bạn thử nghiệm trong python, bạn sẽ thấy trò chơi có hình dạng nhanh hơn nhiều và chạy vào các vấn đề độc lập về ngôn ngữ.

Đối với tôi, các khía cạnh khó nhất, tốn thời gian nhất trong lập trình trò chơi là nội dung đồ họa và âm thanh. Trong khi tôi là một chút của một nhạc sĩ nerd và nghiệp dư, tạo ra âm nhạc đáng tin cậy và thích hợp và SFX là một dự án tất cả ngày của riêng mình. Tôi không có tài năng đồ họa, vì vậy tôi phải dựa vào sửa đổi hình ảnh exisitng hoặc sử dụng những hình ảnh miễn phí. May mắn thay, có một phông chữ miễn phí rộng rãi có thể được sử dụng cho các trò chơi (và ít khác, vì chúng hầu như không phổ biến).

Cuối cùng, không có gì giống như nguồn mở để xem các dự án khác xử lý như thế nào. Trận Westnoth là một trò chơi có kích thước trung bình, trưởng thành. Bạn có thể muốn xem những gì đang xảy ra ở đó. Một lần nữa, trò chơi trong python thường xuyên làm cho mã nguồn của họ có sẵn, vì vậy bạn có thể xem qua hàng trăm dự án ở đó. Bạn cũng có thể dịch ngược atari 2600 ROM, nhưng điều đó sẽ không cho bạn biết nhiều về lập trình ngày hôm nay. VCS cũ là một thiết bị chuyên dụng xử lý các ứng dụng của nó theo một cách rất phụ thuộc vào hệ thống. :-D

Cuối cùng, tôi cũng thích Andre LaMothe. Tôi có cuốn sách năm 1993 cũ của anh ấy dày đến hàng triệu trang. Mặc dù nó vẫn là một tài liệu tham khảo tốt đẹp về một số ý tưởng trò chơi chung chung, rất nhiều nó được obviated bởi sự sẵn có của các thư viện có sẵn miễn phí và khuôn khổ mà không tồn tại trở lại sau đó.

Chúc bạn may mắn với dự án của mình.

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