Tại sao một công cụ như Unity3D được nhấn mạnh trên một thư viện gốc như OpenGL cho người mới bắt đầu? [đóng cửa]


25

Tôi chỉ là người mới bắt đầu chơi game 3D, nền tảng ưa thích của tôi là Android. Tôi đã đăng một câu hỏi trong một số diễn đàn khác về "Sử dụng cái gì: OpenGL hoặc Unity3d?" Tất cả họ đều nhấn mạnh Unity3D và sử dụng các tính năng và công cụ tích hợp sẵn, mà tôi sẽ phải tự viết mã nếu tôi sử dụng OpenGL. Nhưng sau đó ai đó nói rằng hầu hết các trò chơi phức tạp yêu cầu công cụ tùy chỉnh. Tại sao tôi nên sử dụng một công cụ như Unity3D trên OpenGL?


15
Hai từ: Sự hài lòng tức thì. Bạn có thể nhận được một cái gì đó "hữu ích" được thực hiện với sự thống nhất mà không cần biết nhiều, trong khi việc ứng dụng OpenGL sẽ mất khá nhiều dòng mã và hiểu về nhiều khái niệm.
Jari Komppa

5
Có lẽ chúng ta chỉ có thể giải thích nó trong một chủ đề này và tất cả các câu hỏi "tôi nên sử dụng công nghệ gì" sẽ biến mất mãi mãi. Ngoài ra tôi muốn có một con kỳ lân
jhocking

8
"Hầu hết các trò chơi phức tạp đều yêu cầu công cụ tùy chỉnh" - thực sự, một số lượng lớn các trò chơi AAA rất thành công đáng kinh ngạc được xây dựng trên các công cụ chứng khoán như công cụ Unreal .
Philipp

2
Thêm vào đó, một người mới bắt đầu sẽ không thể làm cho một trò chơi phức tạp đến mức dù sao nó cũng cần một công cụ tùy chỉnh.
Christian

Điều này chỉ xuất hiện trên Gamasutra và mặc dù nó không trực tiếp trả lời cho câu hỏi này, nhưng nó có liên quan: gamasutra.com/bloss/ChrisDeLeon/20140426/215519/, - đặc biệt, sẽ rất khó cho một dự án bạn xây dựng từ khởi đầu w / OpenGL để trở thành một dự án đầu tiên 'khiêm tốn'.
Steven Stadnicki

Câu trả lời:


30

Tôi nghĩ bạn đã tự trả lời câu hỏi này rồi. Bạn nói "Tôi chỉ là người mới bắt đầu chơi game 3D" . Hơn nữa bạn đã nói "... Unity3D và sử dụng các tính năng và công cụ tích hợp, tôi sẽ phải tự viết mã nếu tôi sử dụng OpenGL" .

Về cơ bản, điều này có nghĩa là nếu bạn đang sử dụng OpenGL một mình, bạn sẽ viết một công cụ trò chơi, sau đó, có khả năng nhiều năm sau, viết trò chơi của bạn. Nếu bạn muốn tập trung vào một trò chơi, hãy sử dụng các tài nguyên có sẵn cho bạn để đưa bạn đến gần mục tiêu đó nhất có thể. Sử dụng công cụ trò chơi là cách tốt nhất tập trung nỗ lực của bạn vào việc tạo trò chơi, thay vì viết tất cả nội dung cần thiết để tạo trò chơi.

Xem câu hỏi liên quan này: Sự khác biệt giữa Thư viện và Động cơ và câu hỏi này Khung trò chơi so với công cụ trò chơi là gì?


vậy OpenGL chỉ dành cho đồ họa và unity3d là một khung hoàn chỉnh có yêu cầu về đồ họa cũng như vật lý cho trò chơi của tôi?
Aman Grover

1
Unity còn nhiều hơn thế, nhưng vâng, đó là sự khác biệt khá nhiều.
jhocking

3
@AmanGrover: cũng nhận ra rằng với GL "chỉ dành cho đồ họa" thực sự "chỉ để gửi lệnh cho GPU." Tất cả các công việc khó khăn thực sự của đồ họa vẫn phải được lập trình viên thực hiện, trong khi Unity có tất cả các tính năng và thuật toán đồ họa quan trọng đi kèm và sẵn sàng sử dụng.
Sean Middleditch

2
Đừng viết Động cơ, viết trò chơi. Đó là những gì tôi đã nói để tiếp cận. Ý tôi là ai đó tạo ra một công cụ trò chơi trong khi bạn đang tạo ra trò chơi thực tế. Vì vậy, đó là điểm tôi không đồng ý với Byte.
LaVolpe

28

Bởi vì người mới bắt đầu, theo định nghĩa, không biết họ đang làm gì .

OpenGL có một đường cong học tập rất lớn . Chắc chắn, bạn có thể đưa ra một vài lệnh glBegin, rất hào hứng với việc đưa một số hình tam giác lên màn hình, sau đó đi đến tận cùng với một thứ phức tạp hơn mà bạn chưa sẵn sàng để tiếp tục. Đó không phải là một cách tuyệt vời để học hỏi. Một sự tương tự (hơi phóng đại) có thể là học một số vật lý trung học cơ bản sau đó được giao phụ trách Máy Va chạm Hadron Lớn. Nó không phải là chìm hay bơi, nó là bơi hoặc để lại một lỗ phóng xạ lớn trên mặt đất.

Người ta cho rằng hầu hết mọi người hỏi "Tôi muốn làm một trò chơi, tôi nên sử dụng cái gì?" câu hỏi thực sự muốn tạo ra một trò chơi (nếu không họ chắc chắn đã hỏi một câu hỏi khác, chắc chắn phải không?) Vì vậy, câu trả lời được điều chỉnh cho câu hỏi và sử dụng bộ công cụ, khung hoặc công cụ có sẵn là một cách giúp họ đạt được tham vọng đó mà không bị phân tâm bằng cách thống nhất xem liệu các cuộc gọi UBO hoặc glUniform có thích hợp hơn để cập nhật một ma trận hay không.

Đây là tất cả về việc thực hiện từng bước một, làm cho quá trình học tập dễ dàng hơn và cung cấp cho bạn một cái gì đó bổ ích vào cuối của nó. Cố gắng học cách tạo trò chơi cách sử dụng API 3D trưởng thành và mạnh mẽ cùng một lúc có lẽ là quá nhiều đối với người mới bắt đầu. Điều này giống như hiệu ứng Dunning của Kruger trừ đi những ý nghĩa tiêu cực. Bạn không biết những gì bạn không biết, vì vậy bạn thực sự không có bất kỳ loại hình ảnh thực tế nào về chính xác những gì bạn đang thực hiện.

Mặt khác, nếu mục tiêu của bạn là học OpenGL, thì bạn không thực sự muốn tạo ra một trò chơi! Bạn muốn học OpenGL và thực hiện nó trong bối cảnh tạo ra một trò chơi có thể là một cách học thú vị, nhưng làm cho trò chơi là một phương tiện để kết thúc, chứ không phải là kết thúc (và chắc chắn không phải là cách duy nhất để học OpenGL ). Có lẽ bạn sẽ không bao giờ phát hành nó, và bạn gần như chắc chắn sẽ nhìn lại nó trong một vài năm và bị bối rối khủng khiếp bởi một số điều ngu ngốc bạn đã làm.


22

Nó thực sự phụ thuộc vào những gì bạn muốn ra khỏi dự án này. Nếu mục tiêu chính của bạn là tập trung vào thiết kế trò chơi, thì có lẽ bạn sẽ tốt hơn với một công cụ được xây dựng sẵn, bởi vì điều đó sẽ đưa bạn đến phần làm trò chơi nhanh hơn rất nhiều. Nếu mục tiêu của bạn là tìm hiểu về phần lập trình của việc tạo trò chơi (đặc biệt là nếu bạn đang cố gắng chuẩn bị cho một công việc trong ngành), thì có lẽ bạn sẽ thấy làm việc với OpenGL sẽ là một kinh nghiệm quý giá hơn. Hãy nhớ rằng cả hai câu trước đều không đúng 100%.

Thực sự không có quy tắc khi quyết định loại điều này. Hầu hết các câu trả lời bạn nghe trong loại câu hỏi đó là ý kiến, và rất ít trong số đó sẽ hoàn toàn phù hợp với dự án và bộ kỹ năng của riêng bạn.


Cảm ơn bạn, và vâng, tôi đang tìm kiếm một công việc trong lĩnh vực này, và vì vậy tôi sẽ đi với OpenGL.
Aman Grover

9
Tôi hoàn toàn không đồng ý rằng làm việc với OpenGL 'trần trụi' sẽ có giá trị hơn đối với ai đó xâm nhập vào ngành công nghiệp trò chơi. Unity cung cấp một ví dụ tuyệt vời về một công cụ trò chơi hiện đại, tương đối trưởng thành; hiểu chức năng mà nó cung cấp (với mục đích tìm hiểu cách bạn có thể tự cung cấp chức năng tương tự) là một cách tuyệt vời để hiểu quá trình phát triển trò chơi, trong khi OpenGL không phải là đặc thù của trò chơi theo bất kỳ ý nghĩa nào.
Steven Stadnicki

Điều này chỉ để cho thấy làm thế nào thực sự không có quy tắc về những điều này, chỉ là ý kiến. Tất cả phụ thuộc vào những gì bạn cần / muốn.
jhocking

5
@AmanGrover - sau đó đừng tạo trò chơi! Bạn sẽ có một thời gian dễ dàng hơn để học từng điều một. Làm một mô phỏng hệ mặt trời. Tìm hiểu cách vẽ nguyên thủy cơ bản, tìm hiểu cách dịch và xoay chúng, đưa các hành tinh vào VBO để vẽ chúng nhanh hơn, sử dụng một số shader để tạo ra các đám mây hoạt hình trên chúng và bạn có khoảng cách tốt để hiểu các nguyên tắc cơ bản.
Maximus Minimus

3
@KamikazeSoctsman Một lần nữa, không đồng ý ở đây. Tôi không nói OGL là vô dụng - xa nó! - nhưng trong thập kỷ qua, tôi đã sử dụng kiến ​​thức OpenGL của mình chỉ một vài lần trong những lần bắt đầu ngắn gọn và bắt đầu. Ngược lại, vì các công cụ đồ họa trò chơi có xu hướng rất nhạy cảm về hiệu năng, theo kinh nghiệm của tôi, chúng là một trong những nơi ít phổ biến nhất để một lập trình viên mới bắt đầu. Bạn hoàn toàn nên biết toán học 3d, và bạn nên hiểu các nguyên tắc kết xuất - nhưng đó là một điều rất khác so với việc học OGL.
Steven Stadnicki

6

Sự khác biệt là đơn giản. Unity là một cỗ xe với bốn bánh xe tròn có thể giúp bạn có chỗ. OpenGL là mùn cưa mà bạn có thể thiết lập một cửa hàng và có khả năng sử dụng để đúc một cỗ xe và bánh xe cải tiến và hiện đại hơn. Đó là nếu bạn đầu tư nhiều giờ để học những gì mọi người trước khi bạn làm trước.

Mục tiêu của bạn khi mới bắt đầu nên là đầu tiên nghiên cứu các toa xe hiện có và thiết kế của chúng. Không có điểm nào trong việc ném mọi thứ ra khỏi cửa sổ và bắt đầu lại từ đầu. Trước tiên hãy tìm hiểu những gì đã tồn tại và có được kiến ​​thức kỹ lưỡng về nó. Nếu bạn không biết, làm thế nào để bạn biết về những hạn chế của nó và nếu bạn không biết những hạn chế đó, làm thế nào bạn có thể vượt qua chúng? Điểm quan trọng trong việc tạo ra thứ gì đó tầm thường là vô dụng và không biết gì về tất cả các công cụ hiện có đang tồn tại là gì?

Imho các bước của một dev trò chơi còn non trẻ là:

  1. Nắm vững một khung / Engine hiện đại và hiểu sâu về nó (Điều này cũng sẽ giúp bạn tìm hiểu về các khía cạnh khác nhau của thiết kế trò chơi, đồ họa và OpenGL không phải là tất cả).
  2. Tạo một trò chơi nhỏ với nó và tìm hiểu thêm trong quá trình này.
  3. Tổ chức gặp trở ngại và hạn chế trong động cơ.
  4. Tìm hiểu thêm về chủ đề.
  5. Làm việc để cải thiện các lĩnh vực mà bạn thấy cần cải thiện.

Tự mình làm việc một mình để tạo ra thứ gì đó đã được tạo ra sẽ không biến bạn thành nhà phát triển có giá trị cho bất kỳ ai vì bạn sẽ không làm việc hiệu quả hoặc là người học giỏi về vấn đề đó, bạn sẽ chỉ sao chép các đoạn mã hiện có và có thể học đọc và hiểu chúng Như Pokemon cũ đã nói, "Nó không hiệu quả lắm ...".

Điều tồi tệ nhất là cách tiếp cận này không dễ theo kịp vì không có sự hài lòng trong đó nên bạn đang chạy theo sức mạnh ý chí thô đã được khoa học chứng minh là nguồn lực hạn chế đối với con người. Bạn cần phải làm một cái gì đó cung cấp sự hài lòng hàng ngày hoặc bạn có thể sẽ không thể theo kịp.

Vì vậy, để tổng hợp mọi thứ, một Engine được nhấn mạnh bởi vì bạn có thể hoàn thành công việc với Engine và bạn có nhiều khả năng thành công theo cách đó. Ngay cả những người sáng tạo trò chơi tuyệt vời cũng dựa vào công việc trước đây của người khác và đó là bản chất của sự tiến bộ. Bạn cần hiểu bức tranh lớn và biết cách chơi với những mảnh Lego do người khác cung cấp trước khi bạn tự tạo ra những mảnh Lego tùy chỉnh.


4

Giả sử mục tiêu của bạn là tạo ra một trò chơi, anh chàng nói về công cụ tùy chỉnh được yêu cầu là sai. Nếu bất cứ điều gì, các trò chơi phức tạp đòi hỏi một công cụ trưởng thành được thiết kế, thực hiện, tối ưu hóa, thử nghiệm và được duy trì bởi các chuyên gia lâu năm trong ngành - hoặc một trò chơi có thể phù hợp với chất lượng của chúng (ít nhất là cho các mục đích của một trò chơi nhất định) , nếu điều đó có thể.

Các nhà phát triển trò chơi lớn xây dựng các công cụ nội bộ, nhưng họ vẫn tái sử dụng chúng rất nhiều cho các trò chơi trong tương lai của họ. Nhưng hãy nhớ rằng ngân sách và quy mô nhóm của họ và rất nhiều yếu tố khác khác rất nhiều so với các nhà phát triển độc lập '- điều đó có thể có ý nghĩa kinh doanh hơn đối với họ khi chế tạo động cơ của riêng họ, ngay cả khi những công cụ hiện tại không bị thiếu công nghệ.

Tất nhiên, vẫn còn quan niệm sai lầm, bởi vì rất nhiều tính năng không tồn tại bên ngoài trong các công cụ hiện có, rằng chúng không thể được thực hiện trong công cụ đó, nhưng điều đó thường không chính xác.

Hãy nhớ rằng một số trò chơi hiện đại sáng tạo nhất, như Portal và Antichamber, được xây dựng bằng các công cụ hiện có. Một số trò chơi trực tuyến khá phức tạp, như Aion và TERA được xây dựng bằng các công cụ hiện có. Một số trò chơi trực quan đẹp nhất, như Bioshock Infinite và Thief, được xây dựng bằng các công cụ hiện có. Và, tất nhiên, một số không. Nhưng vấn đề là: không có gì tôi từng thấy thực sự cần một công cụ tùy chỉnh.

Mặt khác, nếu mục tiêu của bạn là tìm hiểu các khái niệm về lập trình đồ họa, tất nhiên OpenGL là con đường để đi. Nhưng ngay cả khi đó, hãy nhớ rằng việc làm quen với một vài động cơ hiện có sẽ giúp bạn rất nhiều trong việc hiểu những gì bạn đang làm và những gì bạn nên hướng tới.


1
-1. Những khẳng định khá lớn về ngành công nghiệp game. Hầu hết trong số họ không chính xác. Tôi ước tôi có thể rắc bài viết của bạn với khoảng một chục citation neededs
Panda Pyjama

1
@PandaPajama Có khá nhiều chỉ một khẳng định về ngành công nghiệp game trong câu trả lời của tôi. Nếu điều đó làm phiền bạn nhiều, bạn có thể sửa nó hoặc thậm chí loại bỏ nó hoàn toàn.
TC

Kinh nghiệm (hạn chế) của tôi đã cho tôi thấy rằng nếu có một thứ gì đó người ta không thể khái quát hóa là ngành công nghiệp game. Mỗi công ty có một cách nhìn khác nhau, thậm chí các nhóm khác nhau trong một công ty có thể có những chính sách cực kỳ khác nhau về mọi thứ. Trong trường hợp cụ thể này, động cơ trong nhà tạo ra chi phí và mang lại một số lợi thế và bất lợi. Cho dù kết quả ròng là tiết kiệm hay chi phí là cực kỳ khó tính, và sẽ khác nhau giữa các dự án. Ngoài ra, ngân sách, trong khi quan trọng, không phải là yếu tố duy nhất được xem xét khi làm trò chơi.
Panda Pyjama

@PandaPajama Cấp, xem chỉnh sửa của tôi. Tôi chỉ đơn giản nói rằng nó có thể có ý nghĩa kinh doanh hơn đối với họ nói chung, bao gồm yếu tố ngân sách và bất cứ điều gì khác giúp định hình quyết định của họ, chỉ ra rằng đó có thể không phải là giới hạn kỹ thuật của các động cơ hiện có.
TC
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.