Sự khác biệt giữa khung trò chơi và công cụ trò chơi là gì?


23

Sự khác biệt giữa khung trò chơi (ví dụ: XNA với C #, SDL cho c ++) và công cụ trò chơi là gì?

Các khung trò chơi có sử dụng công cụ không? Liệu một công cụ trò chơi đóng gói các công cụ phụ như công cụ vật lý, công cụ hạt vv? Chúng nên được sử dụng cùng nhau, hoặc chúng là độc quyền lẫn nhau?

Tôi có nó có động cơ riêng cho cả 2D và 3D không?


Câu trả lời:


21

Thực sự không có định nghĩa chặt chẽ cho "động cơ" hoặc "khung."

Nói chung, một công cụ được coi là "làm nhiều hơn" hoặc có nhiều công cụ và hỗ trợ liên quan hơn một khung, bản thân nó thường chỉ là một tập hợp lỏng lẻo của các chức năng liên quan được thể hiện thông qua một số API hợp nhất.

Cuối cùng, những thứ được coi là động cơ có thể sử dụng những thứ được coi là khung để đạt được chức năng, nhưng điều đó không phải lúc nào cũng cần phải như vậy. Tương tự, một thứ tự xưng là công cụ trò chơi có thể khẳng định rằng các bộ phận cấu thành của nó (vật lý và kết xuất, et cetera) được thực hiện với một công cụ vật lý hoặc khung vật lý. Các loại công nghệ được gọi bằng cả hai thuật ngữ có thể được sử dụng thay thế cho nhau hoặc không.

Có thể có "động cơ" hoặc "khung" cho mọi thứ - vật lý, âm thanh và có, thậm chí cả đồ họa 2D hoặc 3D.

Nó thực sự chỉ là một vấn đề thuật ngữ, và nó thường không quan trọng lắm. Từ góc độ chức năng, một viễn cảnh tập trung vào việc tạo ra trò chơi của bạn, điều quan trọng là liệu công nghệ trong câu hỏi có cung cấp những gì bạn cần để làm cho trò chơi của bạn hay không. Cho dù nó tự gọi mình là động cơ hay khung sẽ không có bất kỳ ảnh hưởng nào đến điều đó.


11

Định nghĩa đơn giản mà tôi sử dụng: bạn có thể xây dựng một công cụ trên một khung nhưng bạn sẽ không bao giờ xây dựng một khung trên một công cụ. Một là bộ xương xác định lưu lượng kiến ​​trúc và chương trình, hai là cơ làm việc.

Ví dụ cụ thể, Artemis là một khung nhỏ gọn để xây dựng các hệ thống thành phần nhưng bạn sẽ không bao giờ gọi nó là động cơ. Bạn có thể xây dựng Hệ thống Artemis và các thành phần tiêu chuẩn để tạo ra một động cơ từ nó.


1
Trong công ty của tôi, ai đó đã thiết kế một khung trên động cơ. khung này phục vụ như một bộ sưu tập các bộ phận bị thiếu mà động cơ không cung cấp, thống nhất các công cụ có một chút không gọn gàng trong động cơ (cũ) của chúng tôi. Và cung cấp người trợ giúp để tạo điều kiện cho dev.
v.oddou

2

Khung là một tập hợp (thường) các thư viện cấp thấp hơn và các công cụ trợ giúp mà bạn có thể sử dụng để làm bất cứ điều gì bạn muốn (đồ họa, âm thanh, v.v.). Không có gì liên quan đến trò chơi về một khung trừ việc chúng thường được tối ưu hóa hoặc được thiết kế để làm những việc phổ biến trong trò chơi.

Ví dụ: một công cụ cho phép bạn có một danh sách các thực thể, mỗi thực thể có một vị trí trên bản đồ. Một khung cho phép bạn kết xuất một đối tượng 3d ở một vị trí nhất định.

Vì vậy, bạn kết nối chúng bằng cách cung cấp cho mỗi thực thể của bạn một đối tượng 3d và hiển thị chúng khi cần.

Và ta-da, bạn có một trò chơi.


2

Để đượ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ụ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ơ

  1. là một đoạn mã / phần mềm
  2. 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)
  3. để đượ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
  4. để 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.

nhập mô tả hình ảnh ở đây


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.



0

Như @Josh đã nêu, không có định nghĩa chặt chẽ về khung hoặc động cơ, nhưng theo nghĩa khái niệm, cả hai đều là những công cụ rất khác nhau.

Một khung chứa một khả năng rút gọn API cơ bản để làm việc, cung cấp cho người dùng các công cụ cấp độ higer để tương tác với nền tảng hoặc chức năng mà không phải lo lắng về hiệu suất, tính tương thích, v.v. Trong các ví dụ bạn đã đưa ra, SDL là một khung, nó mang lại bạn bỏ qua nền tảng và bạn có thể xây dựng phần mềm của mình đằng sau lớp đó mà không phải lo lắng về quản lý cửa sổ, nội dung cụ thể của hệ điều hành, v.v. Nếu bạn muốn xây dựng toàn bộ phần mềm, bạn sẽ cần các khung khác nhau, SDL để quản lý phương tiện và công cụ nền tảng, Box2D để quản lý vật lý, v.v.

Một công cụ khác, trong trường hợp này, công cụ vận chuyển mọi thứ cần thiết cho sự phát triển, một công cụ vật lý sẽ cung cấp cho bạn mọi thứ cần thiết để quản lý vật lý và sẽ gửi một API dễ sử dụng, vì vậy, nếu bạn muốn xây dựng một mô phỏng vật lý cho bạn không cần bất kỳ thư viện bên thứ ba nào khác Động cơ không chỉ là một bộ sưu tập các khung, các công cụ, giao diện, đoạn mã và mã chung khác, những người cung cấp mọi thứ cần thiết để hoàn thành dự án mà không cần các bên thứ 3 khác cũng không lo lắng về các công cụ cấp thấp hơn.

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.