Trò chơi Java trong một hoặc hai ngày [đóng]


9

Chúng tôi là ba người sẽ tạo ra một trò chơi đơn giản trong Java như một dự án trường học (Đại học, năm đầu tiên). Trò chơi phải hướng đối tượng. Chúng tôi không có nhiều thời gian, 10-20 giờ ngọn. Không ai trong chúng tôi có bất kỳ kinh nghiệm nào trong việc phát triển trò chơi, nhưng tất cả chúng tôi đều có các kỹ năng công bằng về Java.

Chúng ta có thể chọn chính xác loại trò chơi nào, và đó là vấn đề nằm ở đâu. Chúng ta nên nhắm mục tiêu cao như thế nào? Có một cuộc thi liên quan, vì vậy chúng tôi muốn tạo ra trò chơi hay nhất trong thời gian chúng tôi có. Là một trò chơi 3d không thực tế? Chúng ta có nên sử dụng bất kỳ công cụ trò chơi / thư viện nào không? Những loại chức năng chúng ta nên tránh?


4
3D đang nhắm mục tiêu hơi cao bất kể thời gian, xem xét bạn không có kinh nghiệm gamedev. ; P
Vịt Cộng sản

buồn thay, tôi đã tìm ra rằng: P
Øyvind

PONG! mái chèo, bóng có đối tượng riêng, thêm điểm. quả bóng đập vào một mái chèo bạn nhân với hướng -1. nếu bóng đi qua điểm chèo của đội khác, hãy đưa bóng đến cầu thủ khác. hoặc điều đó quá dễ dàng?>
Spooks

Tôi nghĩ có lẽ chúng ta nên nhắm đến một khái niệm tốt hơn, sáng tạo hơn, mặc dù một khái niệm dễ phát triển ...
Øyvind

1
Làm thế nào về việc chia sẻ trò chơi của bạn với chúng tôi? :)
tro999

Câu trả lời:


23

Tránh 3D , vì bạn sẽ cần biết cách tạo mô hình 3D hoặc tìm mô hình tốt, bạn sẽ cần biết cách tải các mô hình đó (thường là một nhiệm vụ hoành tráng), và cách vẽ chúng trên màn hình (ví dụ: OpenGL hoặc DirectX tốn rất nhiều công sức để kiếm được ít tiền và thậm chí một công cụ như jMonkeyEngine yêu cầu kiến ​​thức về cách sử dụng công cụ, cùng với kiến ​​thức 3D cơ bản). Làm mờ hình ảnh 2D trên màn hình và di chuyển chúng xung quanh đơn giản hơn nhiều so với xử lý các đỉnh, vật liệu, xem ma trận, biến đổi, v.v. Tôi nghĩ bạn sẽ hiểu được.

Gắn bó với các thư viện và lớp Java tích hợp: Graphics2D, ImageIO, trình nghe chuột và bàn phím AWT, Canvas, API âm thanh Java, v.v. Lợi ích của việc gắn bó với chúng thay vì tìm một số thư viện khác bao gồm: bạn đã biết chúng (ở một mức độ nào đó), bạn biết rằng chúng đã được kiểm tra tốt và ổn định và thường có ý nghĩa, tài liệu và tài nguyên trực tuyến rất phong phú, và chúng có thể mang theo được bạn không phải lo lắng về việc cài đặt thêm thư viện với thư viện riêng và tất cả những thứ đó.

Xây dựng một thư viện nhỏ các đoạn mã trước thời hạn. Chúng bao gồm những thứ như tải hình ảnh, vẽ hình ảnh đến một vị trí trên màn hình, chia tỷ lệ hình ảnh và các hiệu ứng khác, phát âm thanh, lặp nhạc nền, phát hiện va chạm hộp giới hạn, vẽ văn bản. Ngoài ra, có một ứng dụng bộ xương mở Khung (hoặc Applet), thêm Canvas vào nó, và các phương thức sơn và vẽ lại của khung vẽ sẽ được ghi đè và một luồng nên lặp lại phương thức sơn lại canvas (hoặc bộ đếm thời gian gọi nó). Bạn có thể học những điều này nếu bạn tìm kiếm xung quanh Java 2D game programming. Giả sử bạn có quyền truy cập vào thư viện của trường đại học, bạn nên có một số sách trò chơi Java hay theo ý của bạn; kiểm tra chúng và lướt qua chúng để biết các đoạn trích nói trên và những đoạn khác tôi đã bỏ lỡ.

Thực hành kiểm soát nguồn và phân chia công việc với nhóm của bạn trước thời hạn.Bạn sẽ sử dụng Subversion, Git, Mercurial, hoặc cái gì khác? Các máy tính của mọi người có được đặt cùng một phiên bản cập nhật của Java không? Tạo kho lưu trữ của bạn, cam kết / đẩy một số tệp, đảm bảo mọi người đều kiểm tra kho lưu trữ và sẵn sàng truy cập hệ thống của bạn. Có thể cam kết một ứng dụng 'hello world' và đảm bảo mọi người đều có thể kéo và sửa đổi và cam kết nó; và đảm bảo bạn biết cách xử lý việc hợp nhất (cho dù bạn tránh hoàn toàn với giao tiếp tốt hay lập trình cặp hoặc bạn biết cách sử dụng công cụ hợp nhất). Hoặc, nếu bạn không quen với kiểm soát nguồn, hãy đảm bảo bạn tìm ra giải pháp hiệu quả; cho dù đó là lập trình cặp trong khi người thứ ba làm nghệ thuật hay âm thanh, hoặc thứ gì khác, chỉ cần đảm bảo được tổ chức ngay từ đầu hoặc bạn sẽ lãng phí hàng tấn thời gian.

Bookmark liên kết đến các trang web cung cấp phương tiện truyền thông miễn phí. Đã có khá nhiều loại trang web được liệt kê trong các câu hỏi khác ở đây; các trang web như freesoundlà hoàn hảo để nhanh chóng tìm phương tiện hữu ích để sử dụng trong trò chơi của bạn khi bạn không có thời gian để làm cho nó từ đầu. Đánh dấu trang này tất nhiên, vì vậy bạn có thể đặt câu hỏi nếu bạn gặp khó khăn về điều gì đó. Đánh dấu các diễn đàn như diễn đàn gamedev.net để bạn có thể tìm kiếm chúng để tìm câu trả lời. Nếu bạn chọn sử dụng thư viện của bên thứ ba, hãy đánh dấu trang web của họ. Sắp xếp các dấu trang này vào các thư mục và lấy càng nhiều càng tốt và đảm bảo chia sẻ chúng để cả ba bạn có cùng một thư viện dấu trang hữu ích. Sẽ không mất nhiều thời gian để đi xung quanh và thu thập các dấu trang này và sắp xếp chúng theo loại / chủ đề, nhưng nó giúp bạn tiết kiệm rất nhiều thời gian khi bạn không phải nhớ tất cả các trang web ở giữa dự án của mình.

Để có thêm gợi ý, hãy xem câu trả lời cho câu hỏi của tôi "Làm thế nào để chuẩn bị cho một cuộc thi phát triển trò chơi?" .


Để giải quyết phần còn lại của câu hỏi của bạn ... Lời khuyên chung là: đừng nhắm cao . Tuy nhiên, nó có thể khác nhau tùy thuộc vào mức độ bạn chuẩn bị (ví dụ như các đề xuất ở trên của tôi) và các kỹ năng của bạn về Java. Đây phần lớn là một đánh giá cá nhân dựa trên lịch sử của bạn, nhưng vì không ai trong số bạn có lịch sử làm game (và do đó không thể phán đoán thời gian cần thiết), nên mục tiêu thực sự rất thấp . Hãy đưa ra một ý tưởng thực sự cơ bản có thể dễ dàng thực hiện trong 2D mà không cần bất kỳ khái niệm nâng cao nào (ví dụ: tránh va chạm theo pixel, tính toán vật lý điên, hiệu ứng hạt, v.v.). Nhưng sau đó tạo một danh sách ưu tiênvề các tính năng của trò chơi, càng chi tiết càng tốt (ví dụ: chia từng tính năng thành nhiều nhiệm vụ riêng biệt nhất có thể). Bằng cách này, bạn chỉ cần làm việc theo cách của bạn xuống danh sách càng nhiều càng tốt, và nếu bạn không nhận được một số nhiệm vụ ưu tiên thấp, thì đó không phải là vấn đề lớn. Điều này phải được thực hiện cẩn thận (bạn vẫn cần một trò chơi chức năng vào cuối thời gian, vì vậy có một nhóm nhiệm vụ tối thiểu cần phải thực hiện và một số nhiệm vụ phụ thuộc vào các nhiệm vụ khác), nhưng nói chung tôi nghĩ rằng đây là Cách tiếp cận tốt nhất khi bạn không biết mọi thứ sẽ mất bao lâu.


Đó là lời khuyên tuyệt vời.
Alexander Gessler

1
Điểm tốt. Mặc dù tôi nghĩ rằng kiểm soát nguồn cũng có thể khiến mọi thứ trở nên phức tạp hơn đối với người mới bắt đầu (hãy tưởng tượng ai đó làm hỏng repo). Khi thời gian quan trọng, người ta không nên bắt đầu sử dụng các công cụ mới. Nhưng nếu bạn đã quen thuộc với một VCS thì nó chắc chắn nên được sử dụng.
bummzack

4
Lời khuyên của Ricket về việc nhắm mục tiêu thấp và sử dụng danh sách ưu tiên là rất tốt - chúng là về việc giảm thiểu rủi ro và tăng số lần lặp. Bạn muốn tránh các tình huống mà bạn phải làm việc trong 8 giờ trước khi bạn chạy bất cứ thứ gì. Nếu nó không hoạt động hoặc nếu mất nhiều thời gian hơn thì bạn có thể không có gì. Thay vào đó, hãy cố gắng để trò chơi chạy trong vòng dưới 1 giờ và sau đó dành 10 giờ còn lại để thêm mọi thứ, chơi thử, tinh chỉnh. Khi bạn chơi, bạn sẽ tiếp tục tìm thấy nhiều thứ để thêm.
amitp

@bummzack Đồng ý! Nó có thể thực sự cản trở, do đó thực hành và chắc chắn về nó là chìa khóa, nhưng nó cũng có thể siêu tuyệt vời và hữu ích nếu được sử dụng đúng cách.
Ricket

Điều tốt nhất để làm cho mọi thứ hoạt động nhanh là làm điều đó theo kiểu lập trình cực đoan (tốt hơn svns), điều đó có nghĩa là cả đội ngồi cùng nhau trước một máy tính. Nó hoạt động tuyệt vời trong các nhóm nhỏ (tối đa 2-3). Bạn hỗ trợ lẫn nhau và các vấn đề được giải quyết nhanh hơn - bạn không cảm thấy thất vọng.
Notabene

2

Đừng đặt mục tiêu quá cao. Chọn một cái gì đó bạn quan tâm và xây dựng một cái gì đó đơn giản xung quanh đó. Ví dụ: Có thể bạn thực sự thích tìm hiểu về động cơ vật lý. Tại sao không xây dựng một câu đố vật lý như vật hủy diệt vật tổ hoặc tương tự? Cố gắng xoay quanh một yếu tố cốt lõi và không bao gồm những thứ phức tạp khác như AI, kết xuất / đồ họa / đổ bóng phức tạp, v.v.

Tập trung vào một khía cạnh và cố gắng tìm một cơ chế trò chơi phù hợp với điều đó. Nếu bạn quan tâm đến 3D, trò chơi của bạn có thể đơn giản như tic-tac-toe, nhưng tập trung vào việc có được đồ họa 3D tốt trên màn hình.

Đừng cố học quá nhiều thứ mới cùng một lúc. Sử dụng các khung / công cụ hiện có càng nhiều càng tốt.

Để làm tròn vấn đề này, đây là một số ý tưởng cho trò chơi "bắt đầu": Những trò chơi hay để "kiếm đôi cánh" của bạn là gì?

Cập nhật: Vì bạn thực sự thiếu thời gian, tôi sẽ giảm "công cụ mới để học" xuống mức tối thiểu. Một động cơ vật lý có thể đã quá mức nếu bạn chưa từng sử dụng nó trước đây. Cũng chọn một cơ chế trò chơi mà bạn đã biết, tốt nhất là với một quy tắc nhỏ được xác định rõ và nhỏ và số lượng trạng thái trò chơi hạn chế.


2

Nếu bạn không có kinh nghiệm trước khi viết trò chơi 3D, tôi sẽ bỏ ý tưởng 3D ngay lập tức. Thay vào đó, hãy tập trung vào một khái niệm chơi trò chơi đơn giản và cố gắng thực hiện nó bằng đồ họa 2D đơn giản. Hãy chắc chắn rằng bạn triển khai cơ chế trò chơi trước - nếu bạn hoàn thành sớm hơn, bạn vẫn có thể thêm các hiệu ứng hình ảnh tinh vi.

Nhưng một trò chơi không có trò chơi không phải là một trò chơi trong khi một trò chơi không có đồ họa tuyệt đẹp vẫn có thể thú vị.

20-30 giờ làm việc là rất ít thời gian cho một trò chơi hay, vì vậy bạn thực sự cần lập kế hoạch và ưu tiên các nhiệm vụ của mình một cách cẩn thận hoặc bạn sẽ không bao giờ có được kết quả phù hợp.


Một điểm tốt thực sự :)
yvind
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.