Tôi thích C / C ++ hơn Unity và các công cụ khác: nó có phải là một nhược điểm lớn đối với một nhà phát triển trò chơi không? [đóng cửa]


35

Chúng tôi có một dự án trò chơi lớn sử dụng Unity ở trường. Có 12 người chúng tôi làm việc trên đó. Giáo viên của tôi dường như bị thuyết phục rằng đó là một công cụ quan trọng để dạy học sinh, vì nó làm cho học sinh nhìn từ cấp cao đến cấp thấp hơn.

Tôi có thể hiểu quan điểm của anh ấy, và tôi tự hỏi: Liệu sự thống nhất có phải là một công cụ quan trọng trong các công ty phát triển trò chơi không? Có nhiều công ty sử dụng nó bởi vì họ không đủ khả năng để sử dụng cái gì khác? Anh ấy đang nói như Unity là một người chơi lớn trong việc làm game, nhưng tôi chỉ thấy nó phù hợp với các công ty game nhỏ độc lập muốn làm một trò chơi nhanh nhất có thể.

Bạn có nghĩ rằng Unity có tầm quan trọng lớn trong ngành không? Liệu nó có gây nguy hiểm cho giá trị của các kỹ năng C ++?

Không phải là tôi không thích Unity, chỉ là tôi không học được gì với nó, thay vào đó tôi thích đạt được những bước nhỏ hơn với Ogre hoặc SFML.

Ngoài ra, chúng tôi cũng có các bài tập thực hành C ++, nhưng đó chỉ là thực hành với lý thuyết, không có gì nhiều.


9
Điểm của C ++ và OOP là sử dụng lại đối tượng. Unity là một ví dụ điển hình về điều đó và tính di động đa nền tảng. Họ cung cấp tất cả các công cụ bạn cần để khởi chạy một trò chơi trên XBox hoặc iPhone hoặc Wii. Bạn có nghiêm túc nói với tôi rằng bạn muốn viết lại tất cả những điều đó trong C ++ từ đầu không?
Stephen Furlani

2
Hoàn toàn không, đó không phải là điều tôi muốn nói. Tôi chỉ nói rằng tôi không thích những ngôn ngữ được thu gom rác mà nó được vận chuyển cùng với thực tế là bạn không thể thay đổi mã vì nó là độc quyền: bạn không thể điều chỉnh nó nhiều như bạn có thể điều chỉnh một công cụ hiện có khác . Quan điểm của bạn là hợp lệ, nhưng nếu tôi theo bạn, các công ty cũng có thể sử dụng lại công cụ trước đó của họ thay vì chỉ chuyển sang Unity. Với Unity, bạn dính vào thứ gì đó mà bạn không thể thực sự thay đổi, đó luôn là điều khiến tôi thất vọng nhất khi tôi nghĩ về những công cụ như vậy: Một công cụ độc quyền không có vấn đề đó.
jokoon

2
Vâng, bạn có thể thay đổi Unity giả sử bạn có giấy phép nguồn (đắt tiền, giống như hầu hết các giấy phép nguồn chuyên nghiệp khác). Nó cũng được cập nhật khá thường xuyên nên không thực sự tĩnh về mặt tính năng.
Tetrad

Đây về cơ bản là một câu hỏi "sử dụng công nghệ gì". Ngoài ra, đó là thảo luận nhiều hơn / định hướng ý kiến. Đáng buồn là tôi không thể bỏ phiếu để đóng lần thứ hai ...
bummzack

Câu trả lời:


34

Unity là một giải pháp hoàn toàn hợp lệ trong bối cảnh này. Hãy tưởng tượng trong một giây có 12 người, hầu hết trong số họ vẫn đang trong quá trình học C ++, viết một ứng dụng trò chơi lớn và phức tạp bằng cách sử dụng nó. Trong khoảng thời gian gỡ lỗi một mình, có lẽ bạn sẽ có thể viết một trò chơi khác trong Unity.

Tôi không nói rằng việc sử dụng C ++ không quan trọng - đó là, đặc biệt nếu bạn dự định tham gia vào ngành công nghiệp game 'chính thống'. Nhưng có lẽ người hướng dẫn của bạn là chính xác trong trường hợp này - sử dụng dự án này như một kinh nghiệm học tập trong cách suy nghĩ về kiến ​​trúc một trò chơi, và vui vẻ thực hiện nó. Trong quá trình này, hãy cố gắng trau dồi các kỹ năng C ++ của bạn bằng các bài tập hoặc thậm chí đi xa hơn để viết các trò chơi nhỏ trong khi chờ đợi bằng cách sử dụng SFML hoặc một số khung cơ bản khác.

Khi hoàn thành, bạn sẽ học được rất nhiều, có thể trở thành một lập trình viên giỏi hơn và dự án tiếp theo của bạn có thể được giải quyết trong C ++ với sự tự tin hơn rất nhiều.


2
Thật thú vị, có những trường dạy hoàn toàn C ++ và mong đợi học sinh xây dựng toàn bộ công cụ trò chơi và trò chơi từ đầu mặc dù vẫn đang trong quá trình học C ++. Tất nhiên, thực sự rèn luyện một kỹ năng là cách bạn học nó (không phải bài giảng trên lớp và các dự án bài tập nhỏ, bởi các dự án lớn hơn trong học kỳ hoặc năm), đó là lý do tại sao các trường học tạo ra các lập trình viên hàng đầu. Các lập trình viên có khả năng chọn các công cụ như Unity rất nhanh hoặc bất kỳ công cụ nào khác. Tốt hơn là bắt học sinh học những thứ khó, vì những thứ dễ dàng sẽ không còn là vấn đề sau đó.
Sean Middleditch

Không phải tất cả sự phát triển trò chơi đều là lập trình và sử dụng Unity không nhất thiết phải là "tránh những thứ khó khăn". Nó chỉ nhấn mạnh những thứ cứng khác nhau hơn là thực hiện từ đầu. Đã thiết kế thay vì lập trình. Nếu một trò chơi được thực hiện từ đầu, tôi sẽ mong đợi "nghệ thuật lập trình" nguyên thủy hơn nhiều và không có nhân vật hay cốt truyện.
wrosecrans

43

Unity đang phát triển phổ biến trong ngành, chủ yếu ở các công ty nhỏ hơn. Tuy nhiên, nó là một môi trường giảng dạy tuyệt vời. Nó là một công cụ giảng dạy quan trọng, nhưng không đặc biệt phổ biến trong các công ty chính thống. Không sao mà bạn không thích nó.

Tuy nhiên, để tôi lưu ý điều gì đó ở đây, vì tôi thường thấy một sự nhầm lẫn giữa các sinh viên lập trình. "Kỹ năng C ++" về lâu dài không hữu ích. Những gì bạn nên tìm kiếm là "kỹ năng lập trình" và "kỹ năng thiết kế." Nếu bạn hiểu các khái niệm ngôn ngữ lập trình và cách hệ thống phần mềm được kết hợp với nhau, thì ngôn ngữ không thực sự quan trọng. Tôi không coi mình là một nhà phát triển tuyệt vời, nhưng tôi có thể chọn một ngôn ngữ mới và tạo mã hữu ích trong một hoặc hai ngày, vì tôi hiểu các nguyên tắc cơ bản.

Học Unity sẽ giúp bạn trở nên tốt hơn tại C ++.


Gameforge và BigPoint là những công ty hàng đầu thế giới và họ sử dụng Unity :)
daemonfire300

1
+1 vì là một câu trả lời rất hay. Công cụ học tập trò chơi là một điều rất quan trọng đối với các trường học phải làm bởi vì 99% thời gian bạn sẽ không làm một lần nữa. Có thể đi sâu vào một công cụ hiện có và nhận ra các bộ phận của nó, phân biệt luồng dữ liệu và đó là những điều rất quan trọng. Như đã đề cập ở trên, ngôn ngữ không thành vấn đề mặc dù nó là C / C ++ 99% thời gian, nhưng có thể hiểu được công cụ, hay nói chung chỉ là mã của người khác, là một kỹ năng vô giá trong bất kỳ lĩnh vực lập trình nào ... đặc biệt là thời gian căng thẳng cao từ đó là trò chơi điện tử :)
James

1
Tôi không đồng ý với câu trả lời này. Đối với tôi có sự khác biệt giữa người viết kịch bản và lập trình viên. Các nhà phát triển của Unity là lập trình viên, người dùng của Unity là những người viết kịch bản. Kết quả là như nhau, họ tạo ra các trò chơi, nhưng về lâu dài, sử dụng Unity có thể là một vấn đề. Ngành công nghiệp trò chơi rất phong phú và hiện cho phép các công cụ như Unity, nhưng với tôi đó là vì máy tính nhanh hơn. vì vậy bạn có thể ném rất nhiều mã, nó hoạt động: Unity rõ ràng được tạo ra cho tốc độ phát triển, thứ mà thị trường thích vì đô la, nhưng tôi không nghĩ đó là một điểm cộng thực sự.
jokoon

14
jokoon: sự khác biệt giữa kịch bản và lập trình là gì? Một người sử dụng năng lượng của Unity viết shader, quản lý thứ tự kết xuất và viết mã AI. "Kịch bản" của Unity được biên dịch và nó có thể được mở rộng bằng mã hóa cấp thấp thành thật với nữ thần nếu bạn muốn. Và mã hóa Unity tốt tuân theo các nguyên tắc giống như mã hóa Unity tốt. Không có sự khác biệt kỳ diệu giữa hai mô hình.
Gregory Avery-Weir

9

Có nhiều công ty sử dụng nó bởi vì họ không đủ khả năng để sử dụng cái gì khác?

Có, nhưng "đủ khả năng" không chỉ đơn thuần là tăng giá trị đồng đô la.

Có, bộ tính năng mà Unity Pro cung cấp cho bạn với chi phí họ tính là vô lý, đặc biệt là xem xét thực tế rằng đó là giấy phép chỗ ngồi thay vì giấy phép theo tiêu đề.

Nhưng trên hết, nó là một công cụ thực sự dễ sử dụng. Bạn sẽ không dành nhiều thời gian đào tạo nghệ sĩ và nhà thiết kế cách sử dụng đường ống nghệ thuật. Thật dễ dàng để nói "chỉ cần kéo vào kết cấu và mô hình của bạn và chúng rất tốt để đi.

Trên hết, đó là một trong số rất ít công cụ thực sự cho phép bạn thực hiện 3D trong trình duyệt với bất kỳ loại thông thường nào. Chúng hỗ trợ khá nhiều nền tảng shader từ chức năng cố định đến DX9 + cũng như Mac và Windows. Chỉ riêng công nghệ đó là vô giá nếu bạn muốn nhắm mục tiêu thị trường "trò chơi dựa trên trình duyệt" đang phát triển.

Từ khía cạnh lập trình của mọi thứ, những gì bạn nhận được từ Unity là nắm vững thiết kế thành phần (so với việc cuộn công cụ C ++ của bạn, vốn thường quá nặng về mặt thừa kế), cũng như môi trường trực quan rất nhanh để thử ra mã game. Hy vọng bạn sẽ học được các thực hành thiết kế tốt bằng cách sử dụng Unity, mà bạn có thể tiếp quản các công cụ C ++ trong tương lai.

Chắc chắn, sẽ tốt hơn nếu có một sở thích của một ngôn ngữ hơn ngôn ngữ khác. Cá nhân tôi thích C # hơn C ++. Nhưng ngôn ngữ bạn sử dụng thực sự được thúc đẩy bởi các yêu cầu của dự án nhiều hơn bất kỳ thứ gì khác. Các nhà phát triển thực sự không đủ khả năng để trở thành fanboy vì bạn không muốn tự mình rời khỏi thị trường vì bạn không thích các công cụ hoặc ngôn ngữ vì lý do này hay lý do khác.

Ngoài ra, một khi bạn thực sự học một ngôn ngữ thứ hai, bạn có thể thấy rằng chủ yếu chỉ là chọn các cú pháp và mô hình mới, và thực sự không khó để thêm các công cụ mới vào vành đai công cụ của bạn. Vâng, bạn nên học và hiểu C ++, nhưng ở mức độ cao, bạn cần hiểu thiết kế tốt trước tiên.


làm rõ: Bạn có nghĩa là giấy phép của Unity Pro có giá trị so với Unity cũ không? Nhận xét của bạn là một chút không rõ ràng với tôi.
Kyle C

7
Tôi đã không sử dụng bản miễn phí, chỉ là giấy phép $ 1500 / chỗ ngồi rất rẻ so với các giấy phép động cơ thương mại khác.
Tetrad

Hiện tại không có vấn đề gì khi sử dụng phiên bản miễn phí, chỉ có những hạn chế nhỏ.
XandruCea

9

Vấn đề cốt lõi, từ những gì tôi có thể thấy, không phải là C ++ hay Unity3D, mà là bạn cần một giải pháp cấp cao hay giải pháp cấp thấp .

Một giải pháp cấp thấp là một giải pháp mà bạn bị bẩn với các quy trình xử lý đầu vào, quản lý bộ nhớ hoặc tải các mô hình. Một giải pháp cấp cao là bạn có được một gói gọn gàng, như Unity3D.

Đối với tôi, việc sử dụng Unity3D (hoặc bất kỳ công cụ trò chơi nào khác) hoặc C ++ tùy thuộc vào mục tiêu của trò chơi và dự án của bạn.

  • Sử dụng Unity3D, nếu thời gian phát triển phải nhanh chóng và / hoặc trò chơi của bạn không chuyên sâu về hiệu năng hoặc không ở mức cao về hiệu suất đồ họa / tính toán. Nếu bạn muốn tập trung vào trò chơi và các công cụ mặc định mà Unity3D cung cấp hoàn toàn ổn, bạn có thể cân nhắc sử dụng Unity3D

  • C ++ với các thư viện khác, nếu bạn có thời gian phát triển lâu hơn, trò chơi đòi hỏi sức mạnh tính toán / đồ họa nhiều hơn hoặc sử dụng một số công nghệ mà Unity3D không thể kết hợp.

Điểm hay của Unity3D là nó vẫn sử dụng các ngôn ngữ kịch bản phản ánh sự phát triển của thế giới thực (C # hoặc JavaScript). Các khái niệm OOP và kỹ thuật phần mềm bạn học (Singletons, mặt tiền, máy trạng thái, trang trí, sáng tác) có thể được áp dụng trong Unity3D. Nó giúp chăm sóc các quy trình cắt cookie như quản lý tài nguyên, biểu đồ cảnh, tải mô hình, kết xuất, lưu cảnh và v.v. Thậm chí tốt hơn, nếu có một chức năng bạn cần mà Unity3D không cung cấp, bạn có thể làm Mã hóa DLL.

Trường hợp đó rời khỏi C ++? C ++ là một ngôn ngữ và có nhiều khái niệm lập trình bạn làm trong C ++ mà bạn có thể thực hiện trong Unity3D, quản lý bộ nhớ sans hoặc có lẽ các mẫu (ví dụ với Unity 3.2, thông số kỹ thuật ngôn ngữ đã được cải thiện để bao gồm các lần đóng cửa).

Vì vậy, như tôi đã nói, nó không thực sự là C ++ so với Unity3D. Nó giống với "C ++ cộng với thư viện / SDK hoặc cuộn công cụ của riêng bạn" so với Unity3D. Nó phụ thuộc vào mục đích và mục tiêu của bạn. Đối với các trò chơi hoặc trò chơi cao cấp mà bạn cần kiểm soát đường truyền kết xuất hoặc đầu vào, bạn có thể muốn sử dụng C ++ cộng với một công cụ cho phép bạn lộn xộn dưới mui xe. Nếu không, tôi chọn Unity3D làm lựa chọn mặc định cho các trò chơi 3D.

Tuy nhiên, kiến ​​thức với Unity3d không thuộc kinh nghiệm, nhưng đó là một nơi tốt để bắt đầu tìm hiểu quá trình phát triển trò chơi tổng thể. Chẳng hạn, có lẽ bạn sẽ cần một học kỳ đáng để nghiên cứu để viết trình kết xuất và tải một mô hình trong OpenGL, cộng với một sơ đồ cơ bản và đầu vào. Bạn hoàn thành nó trong Unity3D sau chưa đầy một ngày.


hoặc làm việc với Ogre3d!
jokoon

Lần cuối cùng tôi làm việc với Ogre3D là lâu rồi; Tôi nghĩ rằng nó đòi hỏi nhiều công việc hơn Unity3D để có được một trò chơi, và đó là một cơ sở tốt để có một cái nhìn sơ lược về cách thức hoạt động của các công cụ ngầm.
Extrakun

+1 trên cái này. Bạn không thể thích C / C ++ và Unity per se vì đó là một thứ táo và cam. Điều bạn có thể thích hơn là ý tưởng làm việc ở cấp độ phát triển thấp hơn được cung cấp bởi C / C ++ hoặc phát triển cấp cao hơn mà Đơn vị cho phép.
Tim Holt

8

Không, Unity3D hoàn toàn không gây nguy hiểm cho các kỹ năng C ++. Trong thực tế, biết C ++ là cách quan trọng hơn đối với một lập trình viên trò chơi.

Unity3D là một công cụ thực sự tuyệt vời để phát triển trò chơi. Tôi thực sự thích nó và muốn giới thiệu nó cho hầu hết mọi trò chơi, đặc biệt là cho các đội nhỏ. Nhưng bản thân Unity3D được viết bằng C ++; và bạn phải biết C ++ (và cũng là một loạt các công cụ cấp thấp khác) để thực sự hiểu cách thức hoạt động của nó.

Ngay cả khi bạn sử dụng Unity3D, chỉ những kỹ năng C ++ và sự hiểu biết ở mức độ thấp về các nguyên tắc và thuật toán có liên quan mới cho phép bạn sử dụng hết tiềm năng của nó. Điều này cũng áp dụng cho các công cụ trò chơi khác.

Và để thực hiện công việc thực sự tốt, để loại bỏ mọi hiệu suất cuối cùng ra khỏi nền tảng bạn chọn và nhồi nhét càng nhiều hiệu ứng và thuật toán tiên tiến nhất có thể, bạn không thể sử dụng bất cứ thứ gì ngoài C / C ++. Với bit của trình biên dịch, có lẽ.


Đây là câu trả lời tôi đang chờ đợi +1:]
Notabene

3

Theo như tôi có thể nói, nó phụ thuộc vào nền tảng mục tiêu của bạn, các trò chơi và bảng điều khiển AAA (XBOX, Wii, v.v.) thường sẽ có trong C ++ để có hiệu suất tối đa, tuy nhiên nếu bạn viết một trò chơi dựa trên trình duyệt thì Unity cũng thường xuyên đã sử dụng.

Tuy nhiên, đối với câu hỏi của bạn, tôi nghĩ đơn giản chỉ cần làm với các công cụ như Unity cung cấp cho bạn một khung chuẩn hóa lớn để làm việc, trong một dự án kéo dài nửa năm có thể tạo ra sự khác biệt giữa một nửa nguyên mẫu nướng và trò chơi khá xác thịt.


3

Tôi đã đến Chương trình Thạc sĩ Công nghệ Trò chơi và Đồ họa Máy tính của Đại học Pennsylvania, nơi chúng tôi đã thực hiện tất cả các dự án của mình ở mức thấp nhất, với các dự án trong C ++, OpenGL, CUDA, v.v. Các dự án của chúng tôi bao gồm hoạt hình dựa trên vật lý, hoạt hình nhân vật kiến ​​trúc và IK, đại diện cho các dạng đường cong Bezier khác nhau ... bạn biết đấy, những thứ thực sự cơ bản thúc đẩy chuyên môn về lập trình, đại số tuyến tính và tính toán.

Sau đó, tôi đã tải xuống Unity và thấy rằng mọi thứ mà tôi đã làm việc để tạo ra đều được đóng chai trong bộ miễn phí này mà bất cứ ai cũng có thể sử dụng.

Tôi có bị làm phiền bởi nó không? Một chút, thừa nhận, nhưng tôi thấy rằng có được sự hiểu biết đó từ trường học khiến tôi nguy hiểm hơn nhiều khi tôi sử dụng các công cụ như Unity. Tôi hiện đang làm việc trong các trò chơi, nơi chúng tôi mang các trò chơi từ ý tưởng ra thị trường trong vòng chưa đầy một năm và tôi vẫn là người thích nói về "thứ toán học đó". Lời khuyên của tôi cho bạn là trải qua các chuyển động; bạn sẽ hoàn toàn vô giá khi bạn gia nhập ngành.


Về mặt lý thuyết, bạn có thể lấy một huy hiệu từ nó. :)
Cyclops

Không có hoại tử ở đây, bởi vì các câu hỏi không bị cũ và "chết" như trong các diễn đàn. :) Câu trả lời muộn luôn OK.
doppelgreener

0

Tôi có thể chậm trả lời nhưng điều này sẽ giúp một số người có sự nhầm lẫn này ..

Ban đầu tôi là một lập trình viên c ++, người thường ghét sử dụng các công cụ của bên thứ ba (ví dụ như sự thống nhất) vì tôi không cảm thấy có nhiều quá trình học tập liên quan đến lập trình cấp thấp.

Sau khi thử thống nhất, tôi đã tìm thấy những điều sau đây dành cho nhà phát triển Trò chơi. Tôi đang liệt kê không đặc biệt để thống nhất nhưng liệt kê những lợi thế của việc đi theo Phối cảnh CAO CẤP.

  1. Hiểu cách thiết kế ở mức cao quan trọng hơn là bận tâm về tối ưu hóa mức thấp.
  2. Các công cụ có hệ thống kiến ​​trúc Entity (kiến trúc dựa trên thành phần) sẽ giúp tìm hiểu chính xác kiến ​​trúc này sẽ hữu ích như thế nào.
  3. Bạn sẽ biết công nghệ mới nhất (ít nhất là thuật ngữ) và ít nhất bạn sẽ cập nhật với ngành liên quan đến Đồ họa.- đây là lý do chính khiến tôi chọn thử thống nhất!
  4. Bỏ qua thời gian dành cho các công cụ nhập khẩu tài nguyên khác nhau (tất nhiên tôi vẫn sẽ thích viết các nhà nhập khẩu 3d của riêng mình trong c ++ vì nó sẽ vui hơn khi rảnh rỗi)

Trên đây là một số lý do để chọn động cơ cấp cao. Nhưng đồng thời, bạn không nên ngừng học C ++ vì đây là ngôn ngữ hữu ích và cần thiết nhất cho một nhà phát triển trò chơi hoàn hảo.

Trước tiên hãy hiểu trực quan ở cấp độ cao và thực hiện một số nguyên mẫu nhanh với Unity và sử dụng kinh nghiệm đó trong việc thiết kế một trò chơi hay trong c ++.

Tôi sẽ sớm trở lại c ++ vì tôi đã có được trải nghiệm tốt ở cấp độ cao hơn với sự thống nhất :)

Chúc may mắ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.