Tài nguyên để giúp nghiên cứu động cơ Quake 3 [đóng]


14

Có tài nguyên tốt (hướng dẫn sử dụng, hướng dẫn, v.v.) để bắt đầu nghiên cứu mã của công cụ Quake 3 ngoài chính mã không?

Tôi rất quan tâm đến việc làm thế nào nó được cấu trúc cho mục đích giáo dục và có thể thực hiện một số sửa đổi.

Câu trả lời:


13

Vì vậy, bạn nên bắt đầu bằng cách xem bài viết của Wikipedia về id Tech 3 . Điều đó có thể được tăng cường bằng bản tóm tắt cuộc nói chuyện GDC của Brian Hook và một số nội dung cũ trên blog Element 61 . Ngoài ra, bạn sẽ phải duyệt qua một loạt các hướng dẫn mod cũ mà bạn có thể tìm thấy để thử và xây dựng lại những gì đang diễn ra.

Tôi khuyên bạn nên bắt đầu từ bản phát hành nguồn gốc từ id, thay vì ioquake3 hoặc những gì bạn có, để thực sự thấy bối cảnh của những gì đang diễn ra (cách xử lý đầu vào và hướng vào bên trong động cơ, loại sự kiện cơ bản nào cấu trúc được sử dụng, vv).

Một số điểm chính đã giúp tôi khi tôi làm việc với nó:

  • Luôn có một máy chủ; cũng có thể có logic máy khách ngồi trên đầu xử lý một khung.
  • Đầu vào được hướng đầu tiên đến một bàn điều khiển, nếu quan tâm, sau đó đến GUI, sau đó đến trò chơi thích hợp.
  • Bản thân cỗ máy được tách (cứng!) Khỏi logic trò chơi, sử dụng các chức năng bẫy. Nhìn vào (nếu bộ nhớ phục vụ) cgame và kết xuất dự án để tìm mã công cụ thực tế.
  • Logic trò chơi có thể được viết hoàn toàn để chạy trong máy ảo Quake 3. Khi sửa đổi và sử dụng các dll gốc, bạn sẽ phải chạy trò chơi như quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0để cho phép công cụ chạy mã gốc thay vì mã VM.
  • Giao diện người dùng cho hệ thống menu là một cấu trúc và các cuộc gọi lại kỳ lạ, xấu xa, xoắn. Nó có thể sử dụng được một khi bạn giải đố, nhưng điều đó có thể gây ra một số thử nghiệm và sai sót. Hãy nhớ rằng, đó là một chồng.
  • Nếu bạn đang viết mã bằng các tệp gốc, hãy thoải mái phân bổ bộ nhớ, viết bằng C ++ hoặc bất cứ thứ gì khác làm nổi thuyền của bạn. Bạn cũng có thể sử dụng STL - không có lý do gì để cứng nhắc tuân theo các thành ngữ C ngoại trừ nơi bạn trực tiếp giao tiếp với động cơ.

Một số thứ gọn gàng tôi đã làm cho nó với đồng nghiệp:

  • Giao diện dòng lệnh đơn giản để gọi các lệnh shell từ bàn điều khiển và chuyển các luồng stdout / stderr trở lại bàn điều khiển (bàn điều khiển Quake).
  • Giao diện với cơ sở dữ liệu SQL để kéo và hiển thị các bản ghi.
  • Bộ công cụ tiện ích và cửa sổ linh hoạt để hiển thị linh hoạt trên máy khách (sử dụng biểu đồ thanh, hộp văn bản, hộp hình ảnh, menu ngữ cảnh, cửa sổ có thể thay đổi kích thước, v.v.).
  • Tên lửa chậm. :)

Cá nhân, tôi thấy rằng động cơ là sự kết hợp tuyệt vời của những thứ thực sự thông minh được thực hiện theo những cách thực sự ngu ngốc, những thứ thực sự ngu ngốc được thực hiện theo những cách thực sự thông minh và những điều thực sự thông minh được thực hiện theo những cách thực sự thông minh. Đó là một ví dụ tuyệt vời về cách có mô-đun và thiết kế có cấu trúc tốt trong dự án C quy mô trung bình.

Cuối cùng, đừng cảm thấy tồi tệ nếu phải mất một thời gian để mò mẫm. Tôi phải mất một tháng để thực sự có thể biết nơi để tìm thấy những gì tôi đang tìm kiếm trong động cơ; nếu vẫn thất bại, hãy bắt đầu tại ứng dụng init và chỉ đi sâu vào các chức năng, để lại nhận xét cho chính bạn dưới dạng các biển chỉ dẫn. Màn hình của tôi cuối cùng được bao phủ trong các ghi chú sau màu hồng với tên hàm, số dòng và mô tả ngắn về những gì họ đã làm.



1

Chắc chắn rồi.

http://en.wikipedia.org/wiki/Quake_engine là một tổng quan tốt về những gì ở ngoài đó, nhưng bạn có thể đi vào chi tiết kiến ​​trúc của nó khá nhanh chóng thông qua các trích dẫn của nó.

Tôi có thể đề xuất một vài cuốn sách về kiến ​​trúc công cụ trò chơi có thể phù hợp hơn với những gì bạn đang tìm kiếm. Mặc dù không cụ thể về Quake, họ đi sâu vào chi tiết thiết kế động cơ và chạy song song với nhiều khía cạnh của động cơ Quake:

  • Kiến trúc công cụ trò chơi 3D - 980-0122290640
  • Lập trình công cụ trò chơi 3D - 980-1592003518

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.