Để được giải thích chi tiết thực sự, tôi khuyên bạn nên đọc một và duy nhất kinh thánh Kiến trúc Game Engine của Jason Gregory. Tôi đoán nó là tác phẩm đầy đủ nhất về chủ đề này kể từ khi nó được xuất bản. Nó không chỉ xử lý phần C ++ mà còn quan trọng đối với mọi lập trình viên công cụ trò chơi, lý thuyết / kiến trúc đằng sau. Đó là một điểm khởi đầu tốt độc lập với ngôn ngữ. Để có cái nhìn tổng quan về những gì chúng ta đang nói đến là hình ảnh này từ cuốn sách
Hãy để tôi thử trả lời câu hỏi.
Bất cứ điều gì bạn viết nó sẽ là mã :-) sau nhiều năm kinh nghiệm, hãy viết những gì bạn cần và cách bạn cần nó hoặc sử dụng những gì cung cấp cho bạn những gì bạn cần.
Các thuật ngữ công cụ và khung đến từ kiến trúc phần mềm cùng với các điều khoản khác. Vì vậy, hãy bắt đầu với các điều khoản cơ bản không cho phép di chuyển lên trên.
Thư viện
Ví dụ điển hình: thư viện toán học cung cấp tất cả các loại và hàm cơ bản để tính toán toán học (Vector, Ma trận, ...) hoặc thư viện hình ảnh (jpeg hoặc png) cung cấp chức năng để viết hình ảnh jpeg hoặc png
Trong Unity 3D Math là một thư viện toán học.
Lý thuyết: một thư viện cung cấp các tính năng chuyên dụng xung quanh một chủ đề (ví dụ toán học) VÀ được lập trình viên gọi theo yêu cầu .
Một số bản xem trước: có thể có các thư viện chứa các khung hay còn gọi là thư viện khung.
Khung
Lý thuyết: Một khung giới thiệu một sự đảo ngược của kiểm soát . Điều này có nghĩa là nhà phát triển hầu hết thời gian không gọi các phương thức khung mà khung gọi là mã của nhà phát triển. Trường hợp ngoại lệ là khi bạn phải tích hợp thư viện khung trong mã của mình và phải bắt đầu khung. Một thư viện khung cung cấp tất cả các phương thức và chức năng và giao diện cho một khung với việc sử dụng chuyên dụng. Vì vậy, các khung có thể trong một thư viện.
Ví dụ điển hình: Unity 3D MonoBehaviour cung cấp các phương thức như Awake, Start, OnUpdate. Nhà phát triển thực hiện các phương thức này và sau đó các phương thức này được gọi bởi khung (quản lý đối tượng trò chơi) (đây là sự đảo ngược của điều khiển) . Tương tự với các phương thức OnCollision Entry, OnCollisionExit. Chúng ở cùng một Monobehaviour nhưng tôi cá là chúng được gọi theo khung vật lý.
Một bản xem trước: Engine, Runtime, Editor, SDK
Vì thuật ngữ động cơ luôn luôn mơ hồ và vẫn còn (và nó không trở nên tốt hơn với sự phát triển công nghệ hơn nữa) một số giải thích xem trước.
Thuật ngữ công cụ được sử dụng cho nhiều thứ và không thể nói duy nhất cái nào đúng. Trở lại năm 2004 khi lần đầu tiên tôi tiếp xúc với công cụ viết game, điều đó cũng mơ hồ. Bạn đã có một công cụ trò chơi theo nghĩa của một số loại mã tải dữ liệu được xác định trước và cho phép bạn chơi trò chơi. Vì nó tải dữ liệu được xác định trước, chúng được gọi là động cơ điều khiển dữ liệu. Bạn biên dịch chúng một lần và dữ liệu ngoài có thể là các trò chơi khác nhau mà không cần biên dịch lại. Tại một số thời điểm này giống như một thời gian chạy.
Các biên tập viên là rõ ràng. Nó cho phép bạn xác định dữ liệu được xác định trước được tải bởi công cụ / thời gian chạy.
Một công cụ có trình soạn thảo được gọi là SDK (ví dụ: SDK SDK).
Sau đó, đã có / là động cơ chuyên dụng. Một công cụ phyiscs, công cụ kết xuất, công cụ âm thanh, công cụ quản lý trò chơi, công cụ mạng, ....
Theo ý kiến cá nhân của tôi, đó không phải là các công cụ (đặc biệt là công cụ kết xuất KHÔNG phải là công cụ trò chơi vì nó chỉ hiển thị). Khi tôi google công cụ trò chơi, kết quả chứa 90% công cụ kết xuất thuần túy không phải là công cụ trò chơi. Tôi sẽ gọi tất cả các thư viện của họ nhưng vì họ có thể tải dữ liệu được xác định trước nên họ sẽ khớp với thuật ngữ điều khiển dữ liệu.
Một ghi chú ngắn cuối cùng trước khi chúng tôi đi vào chi tiết: Tôi đã tốt nghiệp thành công với bằng thạc sĩ về khoa học máy tính. Luận văn thạc sĩ của tôi đã xử lý chủ đề "làm thế nào để phát triển cốt lõi của một công cụ trò chơi". Có nghĩa là một phần của mã kết nối tất cả các công cụ khác, quản lý đối tượng trò chơi, vòng lặp trò chơi, v.v ...
Tôi đã xuất bản luận án thạc sĩ của tôi như một cuốn sách (ngắn). Nhận xét duy nhất về Amazon từ người mua / người đọc là (sau một vài năm): đây không phải là về một công cụ trò chơi. Vì tôi đã tốt nghiệp thành công và do đó đã bảo vệ luận án của mình trước 3 lập trình viên có kinh nghiệm (2 trong số đó dành riêng cho trò chơi và ứng dụng tương tác) Tôi đoán rằng tôi đã viết một công cụ trò chơi.
Biên tập viên
Dễ dàng: cho phép bạn xác định dữ liệu theo định dạng mà các phần khác yêu cầu chúng và do đó loại bỏ yêu cầu ghi các tệp đó bằng tay hoặc sử dụng các công cụ bên ngoài để tạo chúng.
Đây là những gì trình soạn thảo Unity 3D thực hiện.
Thời gian chạy
Thuật ngữ này thường được sử dụng như nhau với động cơ (có thể đúng hoặc không chính xác).
Thời gian chạy thực thi dữ liệu được tạo và thực hiện những gì nó phải làm với dữ liệu. Ví dụ: cho bạn xem trò chơi và cho phép bạn chơi trò chơi. Nó không tạo ra bất kỳ dữ liệu nào (ngoại trừ có thể lưu trò chơi) theo nghĩa bạn không thể tự sửa đổi trò chơi.
Unity Web Player là / là thời gian chạy cho phép bạn chơi các trò chơi Unity trong trình duyệt web.
Bạn có thể tải và thực thi nhiều trò chơi khác nhau với cùng thời gian chạy.
Trong trường hợp API kịch bản Unity 3D, có một sự cắt giảm giữa chức năng sẽ hoạt động trong trò chơi và chức năng sẽ chỉ hoạt động trong trình chỉnh sửa.
SDK
Thuật ngữ này thường được gọi là khung .
Trước đó, SDK đã là một gói các công cụ như trình soạn thảo, IDE (môi trường nhà phát triển tích hợp) cho các lập trình viên, nhà xuất khẩu cho định dạng dữ liệu và thời gian chạy / công cụ.
Vì vậy, SDK / framework cung cấp cho bạn quy trình làm việc và tiện ích được xác định trước và hiển thị cho bạn cách (được thiết kế tốt) để bạn có thể (dễ dàng) tạo trò chơi.
Về cơ bản, công cụ Unity 3D sẽ sai vì nó phù hợp hơn với hướng SDK. Nhưng vì Unity thậm chí còn nhiều hơn một từ / định nghĩa mới là cần thiết để phù hợp với những gì nó là.
Dù sao, để giới thiệu thuật ngữ khác, SDK / framework cung cấp cho bạn một đường truyền phát triển trò chơi được xác định trước (không chỉ là một đường dẫn tài sản mà có thể, như Unity, một đường dẫn cho tài sản, logic, xây dựng, triển khai, ....)
Động cơ
mỉa mai trên Được sử dụng cho tất cả mọi thứ vì mọi người đều muốn được mát mẻ bằng cách viết không chỉ thư viện, khung hoặc trò chơi mà tốt hơn là viết một công cụ hoàn chỉnh. mỉa mai
Hãy kích hoạt nó xuống:
Một động cơ
- là một đoạn mã / phần mềm
- nó nhằm mục đích được sử dụng lại trong nhiều dự án (bạn cũng có thể viết một công cụ trò chơi cho chỉ một trò chơi)
- để được tái sử dụng, công cụ trò chơi tách biệt phần có thể sử dụng lại từ phần cụ thể của trò chơi
- để có thể tái sử dụng (tùy thuộc vào cách nó được sử dụng lại), có những hương vị khác nhau như động cơ điều khiển dữ liệu tải dữ liệu ngoài
Một động cơ có thể bao gồm nhiều động cơ khác (vì ngày nay mọi thứ được gọi là động cơ). Một công cụ trò chơi có thể bao gồm
- một công cụ kết xuất thực hiện kết xuất (LẠI: thần, chết tiệt, địa ngục: mã chỉ hiển thị KHÔNG phải là một công cụ trò chơi)
- một công cụ vật lý làm vật lý (đó là một công cụ vật lý, không phải một công cụ trò chơi)
- một công cụ AI xử lý công cụ AI (đó là công cụ AI chứ không phải công cụ trò chơi)
- một công cụ mạng (ví dụ RakNet) làm công cụ mạng (đó là công cụ mạng, không phải công cụ trò chơi)
- một công cụ âm thanh làm công cụ âm thanh (đó là công cụ âm thanh chứ không phải công cụ trò chơi)
Một ví dụ cho một ứng dụng dựa trên công cụ cốt lõi cung cấp khung dựa trên trình cắm để kết nối mọi thứ lại với nhau trong mô hình quản lý đối tượng trò chơi dựa trên thành phần. Mỗi subengine (kết xuất âm thanh) là một mô-đun được thêm vào công cụ trò chơi dưới dạng cắm. Mỗi thành phần có thể là một phần của subengine / mô-đun. Và quản lý đối tượng trò chơi (dựa trên thành phần) là liên kết kết nối giữa các mô-đun tách biệt.
Definiton gần nhất cho Game Engine
Một công cụ trò chơi là một phần của mã nguồn của trò chơi của bạn mà cung cấp tất cả các chức năng được dự định sẽ được tái sử dụng trên nhiều trò chơi và cho phép bạn mã và thực hiện trò chơi của bạn. Do đó, nó kết hợp tất cả các phần khác của mã (kết xuất, âm thanh, vật lý, quản lý đối tượng trò chơi, mạng) là thư viện, khung hoặc công cụ chuyên dụng (kết xuất, vật lý, ...).
Công cụ trò chơi là sự lộn xộn ở giữa.