Điểm quan trọng đầu tiên cần thực hiện là không có câu trả lời 'tốt' cho câu hỏi này.
Điều gần nhất với một câu trả lời đúng sẽ là một cái gì đó như: Nó phụ thuộc rất nhiều vào loại trò chơi, nền tảng mục tiêu, các ràng buộc (thời gian), v.v.
Điều đó nói rằng có một số bài viết thực sự tốt trên mạng sẽ cho bạn thấy những người khác đã cố gắng trả lời vấn đề này như thế nào (vì tôi đã cố gắng tìm thông tin về vấn đề này trong quá khứ).
Như con vịt cộng sản đã đề cập đến bài viết hăng hái về nhà phát triển trò chơi đã giúp tôi hiểu một số phần của kiến trúc trò chơi.
Thiết kế hiện tại của tôi là sự kết hợp của Quake3 / Doom3 và một chút của thư viện lớp .NET :)
Tôi có hai thư viện (tĩnh hoặc động tùy thuộc vào cách bạn muốn xây dựng / phân phối) Framework
và Library
.
Thư viện chứa tất cả các lớp trợ giúp có mặt để hỗ trợ sản xuất phần mềm trò chơi nhưng không giới hạn ở loại sản phẩm này. tức là nó có triển khai danh sách liên kết được tối ưu hóa cho mã trò chơi nhưng có thể được sử dụng bởi bất kỳ thứ gì cần dịch vụ của danh sách được liên kết.
Khung là can đảm của 'công cụ' nếu bạn muốn gọi nó là. Rất nhiều điều này tuân theo các triết lý thiết kế của Quake3 (chỉ theo một cách hướng đối tượng hơn). Nó chứa CLI , quản lý thời gian, mã cụ thể của hệ điều hành và cuối cùng là các lớp kết nối mạng, v.v.
Hai cái này sau đó được liên kết với ứng dụng thực tế đang được sản xuất. Các Game
nếu bạn thích, trong đó có chứa mã trò chơi cụ thể. Theo cách tương tự, Quake3 tải DLL tùy thuộc vào 'mod' nào đang được phát.
Để cung cấp cho bạn một ý tưởng về cấu trúc ở đây là phân tích nhanh các thư mục và nội dung cho mỗi lib:
- Khung
- IO (Các lớp quản lý tệp chuyên gia, các lớp In văn bản (ví dụ: CLI) và ghi nhật ký, v.v.)
- Mạng
- Máy khách (các lớp đại diện cho những gì Khung công tác coi là 'người chơi / kết nối với trò chơi')
- Máy chủ (các lớp để quản lý kết nối vào khung và quản lý (các) trình phát)
- Nền tảng (Các lớp xử lý bàn phím / chuột / bộ điều khiển, các thói quen cụ thể của hệ điều hành như getTime ())
- Hệ thống (các lớp mức rất thấp như một lớp lỗi để hỗ trợ in các thông báo lỗi, các lớp thời gian và chính CLI.)
- Trình kết xuất (tự giải thích)
- v.v.
- Thư viện
- Bộ sưu tập (các lớp đại diện cho bộ sưu tập dữ liệu, danh sách / hashtables được liên kết, v.v.)
- Toán học (các lớp trợ giúp toán học cơ bản như vectơ và ma trận)
- v.v.
HTH! Sẽ cung cấp cho bạn một số gợi ý ...