Tôi sẽ viết một câu trả lời thích hợp vì tôi đã ở giai đoạn của bạn khoảng 2 tháng trước.
Tôi đã bắt đầu viết một công cụ trò chơi rất đơn giản để tôi có thể học OpenGL 3.x tốt hơn nhưng vì sự thiếu kinh nghiệm và kiến thức thưa thớt của tôi về cách thiết kế một trò chơi 3D, tôi thường gặp vấn đề khi nhận ra rằng tôi nên thiết kế các lớp học của mình khác nhau
Đừng lo lắng về nó. Với sự thiếu kinh nghiệm của bạn, bạn sẽ không bao giờ có thể nghĩ về tất cả các khả năng và cách thức mà một lớp nhất định sẽ được sử dụng trong công cụ của bạn. Tốt nhất là bạn xem xét các tính năng chính của lớp, thực hiện nó và tái cấu trúc sau. Đừng cố gắng lật đổ mọi thứ, bạn sẽ lãng phí thời gian của mình ở giai đoạn này. Trò chơi đầu tiên của tôi là một mớ hỗn độn, tôi chắc chắn đó là trường hợp của hầu hết mọi người.
Các vấn đề khác tôi gặp phải là làm thế nào để theo dõi thời gian một cách ngắn gọn trong trò chơi và cập nhật chuyển động khi cần thiết và làm thế nào để nói với trình kết xuất rằng nó cần vẽ lại.
Những gì bạn cần là kiến thức về vòng lặp trò chơi là gì. Đây là một nơi tốt để bắt đầu. Khi bạn bắt đầu viết mã phức tạp hơn như xử lý vật lý thì bạn có thể muốn xem xét các vòng lặp với thời gian khung thay đổi, nhưng bắt đầu nhỏ. Một vòng lặp trò chơi khung cố định đơn giản sẽ đủ cho bạn bây giờ.
Ngoài ra, tôi tiếp tục cần thực hiện các chức năng Nhận và Đặt để chuyển các cờ khác nhau từ đối tượng này sang đối tượng khác, đó có phải là một thực tiễn xấu?
Đây là nhiều hơn một câu hỏi kỹ thuật phần mềm. Theo thời gian, bạn sẽ thấy dữ liệu nào bạn cần bảo vệ và dữ liệu nào an toàn. Có lẽ tốt nhất nếu bạn chỉ thực hiện một tính năng và sau đó xem những gì không được hiển thị bên ngoài tính năng đó và có thể được coi là dữ liệu công khai.
Tất cả chỉ là vấn đề kinh nghiệm. Bạn sẽ viết một lớp máy ảnh, sau đó bạn sẽ thấy chức năng nào bạn muốn từ nó bên cạnh các ma trận biến đổi. Nếu bạn muốn bất kỳ lời khuyên ngay lập tức, tôi phải nói, thực hiện xương trần, mở rộng sau.
Bài viết và sách:
- Phát triển công cụ trò chơi
Những cuốn sách này nói về kiến trúc của các công cụ và đường ống trò chơi hiện đại. Họ sẽ cung cấp cho bạn một cái nhìn tổng quan tốt về công nghệ cơ bản. Tôi khuyên bạn nên chọn cuốn sách đầu tiên nếu bạn phải chọn, nó ít "thiên vị" đối với một số công nghệ nhất định, mặc dù cuối cùng bạn có thể muốn vượt qua cả hai vì chúng là nguồn kiến thức tuyệt vời.
http://www.amazon.com/Game-Engine-Arch architecture-Jason-Gregory / dp / 1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http: //www.arcsynt tổng hợp.org / gltut / index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/ con/collision/collision.pdf
(Tôi đang liên kết điều này vì tôi thấy khó tìm thấy các bài viết về cách phát hiện va chạm 3D đúng cách.)
Có nhiều sách hơn, nhưng vào thời điểm bạn hoàn thành việc này (đặc biệt là Kiến trúc công cụ trò chơi), bạn sẽ biết rõ hơn những gì bạn muốn.
Btw, tôi vẫn đang sử dụng freeglut, bạn có khuyên tôi nên chuyển sang một hệ thống cửa sổ tốt hơn trước khi tiến triển hoặc sau khi tôi hiểu rõ hơn về OpenGL không?
WinAPI, nếu bạn cảm thấy rằng bạn có thời gian và sẽ học lập trình Windows (nếu bạn đang phát triển cho Windows). FreeGLUT tốt cho việc học, nhưng cuối cùng bạn sẽ muốn nhiều chức năng hơn. Mặc dù vậy, nếu bạn muốn đi theo con đường hoàn toàn khác, bạn có thể khởi chạy OpenGL với các thư viện như SFML hoặc SDL. Hãy gắn bó với FreeGLUT, trừ khi bạn bướng bỉnh như tôi. Tôi đã đi thẳng cho WinAPI.